@@ -16,7 +16,7 @@ void I2CCommanderMaster::init(){
1616};
1717
1818
19-
19+ // TODO handle multiple motors per target
2020void I2CCommanderMaster::addI2CMotors (uint8_t i2cAddress, uint8_t motorCount, TwoWire *wire){
2121 for (int i=0 ;i<motorCount;i++){
2222 if (numMotors<maxMotors){
@@ -31,7 +31,7 @@ void I2CCommanderMaster::addI2CMotors(uint8_t i2cAddress, uint8_t motorCount, Tw
3131
3232int I2CCommanderMaster::writeRegister (int motor, I2CCommander_Register registerNum, void * data, uint8_t size){
3333 motors[motor].wire ->beginTransmission (motors[motor].address );
34- motors[motor].wire ->write (registerNum);
34+ motors[motor].wire ->write (( uint8_t ) registerNum);
3535 motors[motor].wire ->write ((uint8_t *)data, size);
3636 motors[motor].wire ->endTransmission ();
3737 return size;
@@ -40,9 +40,11 @@ int I2CCommanderMaster::writeRegister(int motor, I2CCommander_Register registerN
4040
4141int I2CCommanderMaster::readRegister (int motor, I2CCommander_Register registerNum, void * data, uint8_t size){
4242 motors[motor].wire ->beginTransmission (motors[motor].address );
43- motors[motor].wire ->write (registerNum); // TODO check return value
43+ int numWrite = motors[motor].wire ->write (( uint8_t ) registerNum); // TODO check return value
4444 motors[motor].wire ->endTransmission ();
45- return readLastUsedRegister (motor, data, size);
45+ if (numWrite==1 )
46+ return readLastUsedRegister (motor, data, size);
47+ return 0 ;
4648};
4749
4850
0 commit comments