Make slaves send their protocol version to the master.

This commit is contained in:
László Monda
2017-10-05 17:55:59 +02:00
parent bd76fb44c2
commit 96eb2ef7a3
5 changed files with 34 additions and 1 deletions

View File

@@ -87,11 +87,31 @@ status_t UhkModuleSlaveDriver_Update(uint8_t uhkModuleDriverId)
bool isSyncValid = memcmp(rxMessage->data, SlaveSyncString, SLAVE_SYNC_STRING_LENGTH) == 0;
status = kStatus_Uhk_NoTransfer;
*uhkModulePhase = isSyncValid && isMessageValid
? UhkModulePhase_RequestModuleId
? UhkModulePhase_RequestProtocolVersion
: UhkModulePhase_RequestSync;
break;
}
// Get protocol version
case UhkModulePhase_RequestProtocolVersion:
txMessage.data[0] = SlaveCommand_RequestProperty;
txMessage.data[1] = SlaveProperty_ProtocolVersion;
txMessage.length = 2;
status = tx(i2cAddress);
*uhkModulePhase = UhkModulePhase_ReceiveProtocolVersion;
break;
case UhkModulePhase_ReceiveProtocolVersion:
status = rx(rxMessage, i2cAddress);
*uhkModulePhase = UhkModulePhase_ProcessProtocolVersion;
break;
case UhkModulePhase_ProcessProtocolVersion:
if (CRC16_IsMessageValid(rxMessage)) {
uhkModuleState->protocolVersion = rxMessage->data[0];
}
status = kStatus_Uhk_NoTransfer;
*uhkModulePhase = UhkModulePhase_RequestModuleId;
break;
// Get module id
case UhkModulePhase_RequestModuleId:
txMessage.data[0] = SlaveCommand_RequestProperty;

View File

@@ -26,6 +26,11 @@
UhkModulePhase_ReceiveSync,
UhkModulePhase_ProcessSync,
// Get protocol version
UhkModulePhase_RequestProtocolVersion,
UhkModulePhase_ReceiveProtocolVersion,
UhkModulePhase_ProcessProtocolVersion,
// Get module id
UhkModulePhase_RequestModuleId,
UhkModulePhase_ReceiveModuleId,
@@ -54,6 +59,7 @@
typedef struct {
uint8_t moduleId;
uint8_t protocolVersion;
uhk_module_phase_t phase;
uhk_module_vars_t targetVars;
i2c_message_t rxMessage;