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:
37
CLS.c
37
CLS.c
@@ -2,18 +2,33 @@
|
|||||||
#include "CLS.h"
|
#include "CLS.h"
|
||||||
#include "CLSAddress.h"
|
#include "CLSAddress.h"
|
||||||
#include "cmsis_os2.h"
|
#include "cmsis_os2.h"
|
||||||
|
#include "version_info.h"
|
||||||
|
|
||||||
osTimerId_t CLS_HeatbeatTimerId; // Timer ID
|
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) {
|
void CLS_Heatbeat(void *argument) {
|
||||||
// Code to be executed every 500ms
|
// 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_1);
|
|
||||||
cls_hartbeat_counter++;
|
|
||||||
CLS_BSP_CAN_AddMessageToSend(&cls_hartbeat_header, &cls_hartbeat_counter);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
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) {
|
void CLS_Init(void) {
|
||||||
osTimerAttr_t timerAttr;
|
osTimerAttr_t timerAttr;
|
||||||
@@ -22,10 +37,18 @@ void CLS_Init(void) {
|
|||||||
timerAttr.cb_mem = NULL;
|
timerAttr.cb_mem = NULL;
|
||||||
timerAttr.cb_size = 0U;
|
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);
|
CLS_HeatbeatTimerId = osTimerNew((osTimerFunc_t)CLS_Heatbeat, osTimerPeriodic, NULL, &timerAttr);
|
||||||
if (CLS_HeatbeatTimerId != NULL) { // Timer object created
|
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
|
// Timer started successfully
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
53
CLS.h
53
CLS.h
@@ -1,7 +1,60 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
|
#define CLS_HEARTBEAT_INTERVAL_MS 1000
|
||||||
|
|
||||||
|
|
||||||
|
typedef enum CLS_Type {
|
||||||
|
CLS_TYPE_LIGHT = 0x00,
|
||||||
|
CLS_TYPE_SWITCH = 0x01,
|
||||||
|
CLS_TYPE_SWITCHED_LIGHT = 0x02,
|
||||||
|
CLS_TYPE_SENSOR = 0x03,
|
||||||
|
CLS_TYPE_DISPLAY = 0x04,
|
||||||
|
CLS_TYPE_MASTER = 0x0F,
|
||||||
|
}CLS_Type_t;
|
||||||
|
|
||||||
|
typedef enum CLS_Position_Type {
|
||||||
|
CLS_POSITION_TOP = 0x00,
|
||||||
|
CLS_POSITION_BOTTOM = 0x01,
|
||||||
|
CLS_POSITION_LEFT = 0x02,
|
||||||
|
CLS_POSITION_RIGHT = 0x03,
|
||||||
|
CLS_POSITION_CENTER = 0x04,
|
||||||
|
CLS_POSITION_FRONT = 0x05,
|
||||||
|
CLS_POSITION_REAR = 0x06,
|
||||||
|
CLS_POSITION_BACK = 0x07,
|
||||||
|
CLS_POSITION_FLOOR = 0x08,
|
||||||
|
CLS_POSITION_CEILING = 0x09,
|
||||||
|
CLS_POSITION_ENGINE = 0x0A,
|
||||||
|
CLS_POSITION_TRUNK = 0x0B,
|
||||||
|
// more TBD
|
||||||
|
CLS_POSITION_INSIDE = 0x0E,
|
||||||
|
CLS_POSITION_OUTSIDE = 0x0F,
|
||||||
|
} CLS_Position_Type_t;
|
||||||
|
|
||||||
|
typedef struct CLS_Position {
|
||||||
|
CLS_Position_Type_t p0:4;
|
||||||
|
CLS_Position_Type_t p1:4;
|
||||||
|
} CLS_Position_t;
|
||||||
|
|
||||||
|
#pragma pack(1) // 1 byte alignment
|
||||||
|
typedef struct CLS_HeatbeatData
|
||||||
|
{
|
||||||
|
struct
|
||||||
|
{
|
||||||
|
uint8_t major;
|
||||||
|
uint8_t minor;
|
||||||
|
uint8_t patch;
|
||||||
|
uint8_t count;
|
||||||
|
}firmware_version;
|
||||||
|
|
||||||
|
CLS_Type_t type;
|
||||||
|
uint8_t id;
|
||||||
|
uint8_t counter;
|
||||||
|
CLS_Position_t position;
|
||||||
|
} CLS_HeatbeatData_t;
|
||||||
|
|
||||||
extern uint8_t gCLS_DEVICE_ADDRESS;
|
extern uint8_t gCLS_DEVICE_ADDRESS;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void CLS_Init(void);
|
void CLS_Init(void);
|
||||||
|
|||||||
@@ -14,5 +14,5 @@ target_sources(${PROJECT_NAME}
|
|||||||
${CMAKE_CURRENT_LIST_DIR}/CanDataHandler.h
|
${CMAKE_CURRENT_LIST_DIR}/CanDataHandler.h
|
||||||
)
|
)
|
||||||
|
|
||||||
target_include_directories(${PROJECT_NAME} INTERFACE ${CMAKE_CURRENT_LIST_DIR})
|
target_include_directories(${PROJECT_NAME} PUBLIC ${CMAKE_CURRENT_LIST_DIR})
|
||||||
target_link_libraries(${PROJECT_NAME} PRIVATE CLS_BSP)
|
target_link_libraries(${PROJECT_NAME} PRIVATE Revision CLS_BSP)
|
||||||
Reference in New Issue
Block a user