|
|
@@ -4,20 +4,39 @@
|
|
|
|
|
|
|
|
|
// LocalPort
|
|
|
-
|
|
|
-
|
|
|
- byte PCF8574_PORSTATUS = B00000000;
|
|
|
+ int drvfound = 0;
|
|
|
+ int drvindex = 0;
|
|
|
+ int freeindx = -1;
|
|
|
+ for(int drv = 0 ; drv<2 ; drv++ ) {
|
|
|
+
|
|
|
+ if(PCF8574_PORSTATUS_DRIVER_A[drv].I2C_ADDRESS_A == Slave_Ports_Status_A[i].Address) {
|
|
|
+ drvfound ++;
|
|
|
+ drvindex = drv ;
|
|
|
+
|
|
|
+ }
|
|
|
+ if(PCF8574_PORSTATUS_DRIVER_A[drv].I2C_ADDRESS_A == 0) freeindx = drv ;
|
|
|
+ }
|
|
|
+ if(drvfound==0) {
|
|
|
+ PCF8574_PORSTATUS_DRIVER_A[freeindx].I2C_ADDRESS_A = Slave_Ports_Status_A[i].Address ;
|
|
|
+ PCF8574_PORSTATUS_DRIVER_A[freeindx].PCF8574_PORSTATUS_A = B00000000 ;
|
|
|
+ drvindex = freeindx ;
|
|
|
+ } else {
|
|
|
+
|
|
|
+ }
|
|
|
|
|
|
- if(Slave_Ports_Status_A[i].Exp_state_level_A == 0) { //Address
|
|
|
- bitWrite(PCF8574_PORSTATUS,Slave_Ports_Status_A[i].LocalPort,0 );
|
|
|
+
|
|
|
+ Serial.print(" PCF8574[ ind");Serial.print(drvindex);Serial.print("] ");
|
|
|
+ Serial.print(String(PCF8574_PORSTATUS_DRIVER_A[drvindex].PCF8574_PORSTATUS_A,BIN));
|
|
|
+ if(Slave_Ports_Status_A[i].Exp_state_level_A == 0) { //
|
|
|
+ bitWrite(PCF8574_PORSTATUS_DRIVER_A[drvindex].PCF8574_PORSTATUS_A,Slave_Ports_Status_A[i].LocalPort,0 );
|
|
|
} else {
|
|
|
- bitWrite(PCF8574_PORSTATUS,Slave_Ports_Status_A[i].LocalPort,1 );
|
|
|
+ bitWrite(PCF8574_PORSTATUS_DRIVER_A[drvindex].PCF8574_PORSTATUS_A,Slave_Ports_Status_A[i].LocalPort,1 );
|
|
|
}
|
|
|
|
|
|
Serial.print(" PCF8574[");
|
|
|
- Serial.print(String(PCF8574_PORSTATUS,BIN));
|
|
|
- Wire.beginTransmission(PCF8574_PORSTATUS);
|
|
|
- Wire.write(PCF8574_PORSTATUS);
|
|
|
+ Serial.print(String(PCF8574_PORSTATUS_DRIVER_A[drvindex].PCF8574_PORSTATUS_A,BIN));
|
|
|
+ Wire.beginTransmission(Slave_Ports_Status_A[i].Address);
|
|
|
+ Wire.write(PCF8574_PORSTATUS_DRIVER_A[drvindex].PCF8574_PORSTATUS_A);
|
|
|
Wire.endTransmission();
|
|
|
//byte write_cmd = PCF8574_PORSTATUS | Slave_Ports_Status_A[i].LocalPort
|
|
|
|