 #if defined I2C_T3_H 
   Serial.printf("Using i2c_t3 I2C library for Teensy\r\n");
 #endif
-   
+
+
+
+fru.setup (I2C_FRU);                // POWER FRU
+fru.begin ();
+if (SUCCESS == fru.init ())
+{
+  Serial.printf("Power FRU init OK/r/n");
+}
+else
+{
+  Serial.printf("Power FRU init failed");
+}
+
+
+PCA9548A_70.setup (PCA9548A_SLAVE_ADDR_0, Wire1, (char*)"Wire1");
+PCA9548A_70.begin (I2C_PINS_29_30, I2C_RATE_100);
+PCA9548A_70.init ();
+
+/**
+TMP102 on board SALT has same address as TMP275 0 so don't use that
+*/
+
+/**
+  MUX channel is not opened to every temp sensor so we cannot init them all since that requires
+  actual access of the TMP275.
+  Here all we can do is setup and begin which just get I2C ready for that sensor instance.
+*/
+Mux1Temp1.setup (TMP275_SLAVE_ADDR_1, Wire1, (char*)"D1-C1");	// initialize this sensor instance
+Mux1Temp1.begin (I2C_PINS_29_30, I2C_RATE_100);
+
+
+Mux1Temp2.setup (TMP275_SLAVE_ADDR_2, Wire1, (char*)"D1-C2");	// initialize this sensor instance
+Mux1Temp2.begin (I2C_PINS_29_30, I2C_RATE_100);
+
+
+Mux1Temp3.setup (TMP275_SLAVE_ADDR_3, Wire1, (char*)"D1-C3");	// initialize this sensor instance
+Mux1Temp3.begin (I2C_PINS_29_30, I2C_RATE_100);
+
+
+Mux0Temp1.setup (TMP275_SLAVE_ADDR_1, Wire1, (char*)"ECTop");	// initialize this sensor instance
+Mux0Temp1.begin (I2C_PINS_29_30, I2C_RATE_100);
+
+
+Mux0Temp2.setup (TMP275_SLAVE_ADDR_2, Wire1, (char*)"ECBot");	// initialize this sensor instance
+Mux0Temp2.begin (I2C_PINS_29_30, I2C_RATE_100);
+
+
+Mux2Temp1.setup (TMP275_SLAVE_ADDR_1, Wire1, (char*)"D2-C1");	// initialize this sensor instance
+Mux2Temp1.begin (I2C_PINS_29_30, I2C_RATE_100);
+
+
+Mux2Temp2.setup (TMP275_SLAVE_ADDR_2, Wire1, (char*)"D2-C2");	// initialize this sensor instance
+Mux2Temp2.begin (I2C_PINS_29_30, I2C_RATE_100);
+
+
+Mux2Temp3.setup (TMP275_SLAVE_ADDR_3, Wire1, (char*)"D2-C3"); // initialize this sensor instance
+Mux2Temp3.begin (I2C_PINS_29_30, I2C_RATE_100);
+
+
+  uint8_t iter = 0;
+
+  uint8_t stat = 0;
+
+  pinMode(LED_BUILTIN,OUTPUT);    // LED
   
-  // start PCA9548A library
-//  PCA9548A_70.begin();
-
   config_value = PCA9548A_PORT_0_ENABLE;  // 
 
   // initialize MUX Channel 0, don't proceed unless succeeds

    if (verbose) Serial.printf("OK control=0x%.2X\r\n", control_read_val);
  }

  // ------------------------------
  // Init Mux0Temp7 Sensors
  stat = Mux0Temp7.init(TMP275_CFG_RES12);
  if (SUCCESS != stat) Serial.printf(" Mux0Temp7 init failed with return of 0x%.2X: %s\r\n", Mux0Temp7.error.error_val, Mux0Temp7.status_text[Mux0Temp7.error.error_val]);

  // leave the pointer set to read temperature
  stat = Mux0Temp7.pointer_write(TMP275_TEMP_REG_PTR);
  if (SUCCESS != stat) Serial.printf(" Mux0Temp7 ptr write failed with return of 0x%.2X: %s\r\n", Mux0Temp7.error.error_val, Mux0Temp7.status_text[Mux0Temp7.error.error_val]);    

  // Read Temp on Mux0Temp7
  rawtemp=0;
  temp=0.0;
  stat = Mux0Temp7.register16_read (&rawtemp);
  if (stat != SUCCESS) Serial.printf("Mux0Temp7 error, stat=0x%.2X\r\n", stat);
  temp = Mux0Temp7.raw12_to_f(rawtemp);
  Serial.printf ("Mux0Temp7 %6.4f F\r\n", temp);

    // ------------------------------
  // Init Mux0Temp6 Sensors
  stat = Mux0Temp6.init(TMP275_CFG_RES12);
  if (SUCCESS != stat) Serial.printf(" Mux0Temp6 init failed with return of 0x%.2X: %s\r\n", Mux0Temp6.error.error_val);

  // leave the pointer set to read temperature
  stat = Mux0Temp6.pointer_write(TMP275_TEMP_REG_PTR);
  if (SUCCESS != stat) Serial.printf(" Mux0Temp6 ptr write failed with return of 0x%.2X: %s\r\n", Mux0Temp6.error.error_val);  

  // Read Temp on Mux0Temp6
  rawtemp=0;
  temp=0.0;
  stat = Mux0Temp6.register16_read (&rawtemp);
  if (stat != SUCCESS) Serial.printf("Mux0Temp6 error, stat=%u\r\n", stat);
  temp = Mux0Temp6.raw12_to_f(rawtemp);
  Serial.printf ("Mux0Temp6 %6.4f F\r\n", temp);  

  // ------------------------------
  // Init Mux0Temp5 Sensors
  stat = Mux0Temp5.init(TMP275_CFG_RES12);
  if (SUCCESS != stat) Serial.printf(" Mux0Temp5 init failed with return of 0x%.2X: %s\r\n", Mux0Temp5.error.error_val);

  // leave the pointer set to read temperature
  stat = Mux0Temp5.pointer_write(TMP275_TEMP_REG_PTR);
  if (SUCCESS != stat) Serial.printf(" Mux0Temp5 ptr write failed with return of 0x%.2X: %s\r\n", Mux0Temp5.error.error_val);  

  // Read Temp on Mux0Temp5
  rawtemp=0;
  temp=0.0;
  stat = Mux0Temp5.register16_read (&rawtemp);
  if (stat != SUCCESS) Serial.printf("Mux0Temp5 error, stat=%u\r\n", stat);
  temp = Mux0Temp5.raw12_to_f(rawtemp);
  Serial.printf ("Mux0Temp5 %6.4f F\r\n", temp);  

  // ------------------------------
  // Init Mux0Temp4 Sensors
  stat = Mux0Temp4.init(TMP275_CFG_RES12);
  if (SUCCESS != stat) Serial.printf(" Mux0Temp4 init failed with return of 0x%.2X: %s\r\n", Mux0Temp4.error.error_val);

  // leave the pointer set to read temperature
  stat = Mux0Temp4.pointer_write(TMP275_TEMP_REG_PTR);
  if (SUCCESS != stat) Serial.printf(" Mux0Temp4 ptr write failed with return of 0x%.2X: %s\r\n", Mux0Temp4.error.error_val);  

  // Read Temp on Mux0Temp4
  rawtemp=0;
  temp=0.0;
  stat = Mux0Temp4.register16_read (&rawtemp);
  if (stat != SUCCESS) Serial.printf("Mux0Temp4 error, stat=%u\r\n", stat);
  temp = Mux0Temp4.raw12_to_f(rawtemp);
  Serial.printf ("Mux0Temp4 %6.4f F\r\n", temp);    


  // ------------------------------
  // Init Mux0Temp3 Sensors
  stat = Mux0Temp3.init(TMP275_CFG_RES12);
  if (SUCCESS != stat) Serial.printf(" Mux0Temp3 init failed with return of 0x%.2X: %s\r\n", Mux0Temp3.error.error_val);

  // leave the pointer set to read temperature
  stat = Mux0Temp3.pointer_write(TMP275_TEMP_REG_PTR);
  if (SUCCESS != stat) Serial.printf(" Mux0Temp3 ptr write failed with return of 0x%.2X: %s\r\n", Mux0Temp3.error.error_val);  

  // Read Temp on Mux0Temp3
  rawtemp=0;
  temp=0.0;
  stat = Mux0Temp3.register16_read (&rawtemp);
  if (stat != SUCCESS) Serial.printf("Mux0Temp3 error, stat=%u\r\n", stat);
  temp = Mux0Temp3.raw12_to_f(rawtemp);
  Serial.printf ("Mux0Temp3 %6.4f F\r\n", temp);  


  // ------------------------------
  // Init Mux0Temp2 Sensors
  stat = Mux0Temp2.init(TMP275_CFG_RES12);
  if (SUCCESS != stat) Serial.printf(" Mux0Temp2 init failed with return of 0x%.2X: %s\r\n", Mux0Temp2.error.error_val);

  // leave the pointer set to read temperature
  stat = Mux0Temp2.pointer_write(TMP275_TEMP_REG_PTR);
  if (SUCCESS != stat) Serial.printf(" Mux0Temp2 ptr write failed with return of 0x%.2X: %s\r\n", Mux0Temp2.error.error_val);

  // Read Temp on Mux0Temp2
  rawtemp=0;
  temp=0.0;
  stat = Mux0Temp2.register16_read (&rawtemp);
  if (stat != SUCCESS) Serial.printf("Mux0Temp2 error, stat=%u\r\n", stat);
  temp = Mux0Temp2.raw12_to_f(rawtemp);
  Serial.printf ("Mux0Temp2 %6.4f F\r\n", temp);

  // ------------------------------
  // Init Mux0Temp1 Sensors
  stat = Mux0Temp1.init(TMP275_CFG_RES12);
  if (SUCCESS != stat) Serial.printf(" Mux0Temp1 init failed with return of 0x%.2X: %s\r\n", Mux0Temp1.error.error_val);

  // leave the pointer set to read temperature
  stat = Mux0Temp1.pointer_write(TMP275_TEMP_REG_PTR);
  if (SUCCESS != stat) Serial.printf(" Mux0Temp1 ptr write failed with return of 0x%.2X: %s\r\n", Mux0Temp1.error.error_val);

  // Read Temp on Mux0Temp1
  rawtemp=0;
  temp=0.0;
  stat = Mux0Temp1.register16_read (&rawtemp);
  if (stat != SUCCESS) Serial.printf("Mux0Temp1 error, stat=%u\r\n", stat);
  temp = Mux0Temp1.raw12_to_f(rawtemp);
  Serial.printf ("Mux0Temp1 %6.4f F\r\n", temp);  



