Make the modules transfer a module protocol version composed of a major, a minor and a patch number.
This commit is contained in:
@@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
Reference in New Issue
Block a user