Make the modules transfer a module protocol version composed of a major, a minor and a patch number.

This commit is contained in:
László Monda
2017-12-15 01:28:13 +01:00
parent c1b887cea8
commit d59ba83d99
3 changed files with 11 additions and 3 deletions

View File

@@ -10,10 +10,17 @@
#include "bool_array_converter.h" #include "bool_array_converter.h"
#include "bootloader.h" #include "bootloader.h"
#include "module.h" #include "module.h"
#include "versions.h"
i2c_message_t RxMessage; i2c_message_t RxMessage;
i2c_message_t TxMessage; i2c_message_t TxMessage;
static version_t moduleProtocolVersion = {
MODULE_PROTOCOL_MAJOR_VERSION,
MODULE_PROTOCOL_MINOR_VERSION,
MODULE_PROTOCOL_PATCH_VERSION,
};
void SlaveRxHandler(void) void SlaveRxHandler(void)
{ {
if (!CRC16_IsMessageValid(&RxMessage)) { if (!CRC16_IsMessageValid(&RxMessage)) {
@@ -57,7 +64,7 @@ void SlaveTxHandler(void)
break; break;
} }
case SlaveProperty_ModuleProtocolVersion: { case SlaveProperty_ModuleProtocolVersion: {
TxMessage.data[0] = MODULE_PROTOCOL_VERSION; memcpy(TxMessage.data, &moduleProtocolVersion, sizeof(version_t));
TxMessage.length = 1; TxMessage.length = 1;
break; break;
} }

View File

@@ -113,7 +113,7 @@ status_t UhkModuleSlaveDriver_Update(uint8_t uhkModuleDriverId)
case UhkModulePhase_ProcessModuleProtocolVersion: { case UhkModulePhase_ProcessModuleProtocolVersion: {
bool isMessageValid = CRC16_IsMessageValid(rxMessage); bool isMessageValid = CRC16_IsMessageValid(rxMessage);
if (isMessageValid) { if (isMessageValid) {
uhkModuleState->protocolVersion = rxMessage->data[0]; memcpy(&uhkModuleState->moduleProtocolVersion, rxMessage->data, sizeof(version_t));
} }
status = kStatus_Uhk_NoTransfer; status = kStatus_Uhk_NoTransfer;
*uhkModulePhase = isMessageValid ? UhkModulePhase_RequestModuleId : UhkModulePhase_RequestModuleProtocolVersion; *uhkModulePhase = isMessageValid ? UhkModulePhase_RequestModuleId : UhkModulePhase_RequestModuleProtocolVersion;

View File

@@ -5,6 +5,7 @@
#include "fsl_common.h" #include "fsl_common.h"
#include "crc16.h" #include "crc16.h"
#include "versions.h"
// Macros: // Macros:
@@ -62,7 +63,7 @@
typedef struct { typedef struct {
uint8_t moduleId; uint8_t moduleId;
uint8_t protocolVersion; version_t moduleProtocolVersion;
uhk_module_phase_t phase; uhk_module_phase_t phase;
uhk_module_vars_t sourceVars; uhk_module_vars_t sourceVars;
uhk_module_vars_t targetVars; uhk_module_vars_t targetVars;