@@ -39,26 +39,32 @@ void PacketCommander::run() {
3939 handleRegisterPacket (!_io->is_complete (), curRegister);
4040 lastcommanderror = commanderror;
4141 lastcommandregister = curRegister;
42+ if (commanderror) {
43+ _io->in_sync = false ;
44+ // *_io << START_PACKET(PacketType::ALERT, 1) << '?' << END_PACKET;
45+ }
4246 }
4347 else if (curr_packet.type == PacketType::SYNC) {
4448 *_io << START_PACKET (PacketType::SYNC, 1 );
4549 *_io << (uint8_t )0x01 ;
4650 *_io << END_PACKET;
4751 // TODO flush packet
4852 }
49- else
50- _io->in_sync = false ; // TODO flag in another way?
53+ else {
54+ _io->in_sync = false ; // TODO it would be better just to reset the buffer, since we just saw a newline
55+ }
5156
5257 if (! _io->is_complete ())
5358 _io->in_sync = false ;
5459 }
5560};
5661
5762
63+
5864void PacketCommander::handleRegisterPacket (bool write, uint8_t reg) {
5965 if (write) {
6066 bool ok = commsToRegister (reg);
61- commanderror = commanderror && !ok;
67+ commanderror = commanderror || !ok;
6268 }
6369 if (!write || echo) {
6470 uint8_t size = SimpleFOCRegisters::regs->sizeOfRegister (reg);
@@ -70,7 +76,7 @@ void PacketCommander::handleRegisterPacket(bool write, uint8_t reg) {
7076 // TODO flush packet
7177 }
7278 }
73- }
79+ };
7480
7581
7682
@@ -87,23 +93,22 @@ bool PacketCommander::commsToRegister(uint8_t reg){
8793 default :
8894 return SimpleFOCRegisters::regs->commsToRegister (*_io, reg, motors[curMotor]);
8995 }
90- }
96+ };
9197
9298
9399
94100bool PacketCommander::registerToComms (uint8_t reg){
95101 switch (reg) {
96- case REG_STATUS:
102+ case SimpleFOCRegister:: REG_STATUS:
97103 // TODO implement status register
98104 return true ;
99- case REG_MOTOR_ADDRESS:
105+ case SimpleFOCRegister:: REG_MOTOR_ADDRESS:
100106 *_io << curMotor;
101107 return true ;
102- case REG_NUM_MOTORS:
108+ case SimpleFOCRegister:: REG_NUM_MOTORS:
103109 *_io << numMotors;
104110 return true ;
105111 default :
106112 return SimpleFOCRegisters::regs->registerToComms (*_io, reg, motors[curMotor]);
107113 }
108- }
109-
114+ };
0 commit comments