added more device info into hartbeat

fw_version+id+type+postion
slowed down to 1000ms

now depends on libRevision to get the FW version information
This commit is contained in:
2024-04-29 01:06:00 +02:00
parent 5535393c23
commit 7dc557c9a7
3 changed files with 85 additions and 9 deletions

37
CLS.c
View File

@@ -2,18 +2,33 @@
#include "CLS.h"
#include "CLSAddress.h"
#include "cmsis_os2.h"
#include "version_info.h"
osTimerId_t CLS_HeatbeatTimerId; // Timer ID
static uint8_t cls_hartbeat_counter = 0;
static CLS_HeatbeatData_t cls_heatbeat_data = {
.firmware_version.major = 0,
.firmware_version.minor = 0,
.firmware_version.patch = 0,
.firmware_version.count = 0,
.id = 0,
.type = CLS_TYPE_LIGHT,
.counter =0,
.position.p0 = 0,
.position.p1 = 0,
};
_Static_assert(sizeof(cls_heatbeat_data) == 8, "CLS_HeatbeatData_t is not 8 bytes");
void CLS_Heatbeat(void *argument) {
// Code to be executed every 500ms
CLS_BSP_TxHeaderType cls_hartbeat_header = CREATE_BSP_CAN_HEADER(GENERATE_CLS_ADDRESS(CLS_CODE_STATUS,gCLS_DEVICE_ADDRESS,CLS_CH_STA_HEATBEAT), CLS_BSP_DLC_BYTES_1);
cls_hartbeat_counter++;
CLS_BSP_CAN_AddMessageToSend(&cls_hartbeat_header, &cls_hartbeat_counter);
}
// Code to be executed every CLS_HEARTBEAT_INTERVAL_MS
CLS_BSP_TxHeaderType cls_hartbeat_header = CREATE_BSP_CAN_HEADER(GENERATE_CLS_ADDRESS(CLS_CODE_STATUS,gCLS_DEVICE_ADDRESS,CLS_CH_STA_HEATBEAT), CLS_BSP_DLC_BYTES_8);
cls_heatbeat_data.counter++;
CLS_BSP_CAN_AddMessageToSend(&cls_hartbeat_header, (uint8_t*)&cls_heatbeat_data);
}
void CLS_Init(void) {
osTimerAttr_t timerAttr;
@@ -22,10 +37,18 @@ void CLS_Init(void) {
timerAttr.cb_mem = NULL;
timerAttr.cb_size = 0U;
cls_heatbeat_data.firmware_version.major = VERSION_INFO.major;
cls_heatbeat_data.firmware_version.minor = VERSION_INFO.minor;
cls_heatbeat_data.firmware_version.patch = VERSION_INFO.patch;
cls_heatbeat_data.firmware_version.count = VERSION_INFO.count;
cls_heatbeat_data.id = gCLS_DEVICE_ADDRESS;
cls_heatbeat_data.type = CLS_BSP_GetDeviceType();
cls_heatbeat_data.counter = 0;
cls_heatbeat_data.position = CLS_BSP_GetPosition();
CLS_HeatbeatTimerId = osTimerNew((osTimerFunc_t)CLS_Heatbeat, osTimerPeriodic, NULL, &timerAttr);
if (CLS_HeatbeatTimerId != NULL) { // Timer object created
if (osTimerStart(CLS_HeatbeatTimerId, 500) == osOK) { // Timer started
if (osTimerStart(CLS_HeatbeatTimerId, CLS_HEARTBEAT_INTERVAL_MS) == osOK) { // Timer started
// Timer started successfully
}
}