Skip to content

Commit fe7a3ab

Browse files
committed
working on I2CCommander
1 parent 0ac82c8 commit fe7a3ab

File tree

2 files changed

+11
-7
lines changed

2 files changed

+11
-7
lines changed

src/comms/i2c/I2CCommander.cpp

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -237,9 +237,11 @@ bool I2CCommander::sendRegister(uint8_t motorNum, uint8_t registerNum) {
237237
case REG_STATUS:
238238
_wire->write(curMotor);
239239
_wire->write((uint8_t)lastcommandregister);
240-
_wire->write((uint8_t)lastcommanderror);
241-
for (int i=0;(i<numMotors && i<28); i++) // at most 28 motors, so we can fit in one packet
242-
_wire->write(getMotorStatus(i));
240+
_wire->write((uint8_t)lastcommanderror+1);
241+
for (int i=0;(i<numMotors && i<28); i++) { // at most 28 motors, so we can fit in one packet
242+
uint8_t status = (uint8_t)getMotorStatus(i);
243+
_wire->write(status);
244+
}
243245
break;
244246
case REG_MOTOR_ADDRESS:
245247
_wire->write(curMotor);

src/comms/i2c/I2CCommanderMaster.cpp

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ void I2CCommanderMaster::init(){
1616
};
1717

1818

19-
19+
// TODO handle multiple motors per target
2020
void 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

3232
int 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

4141
int 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

Comments
 (0)