From 4620d0a7ede7812eb1e1cbcf5ba6528e494ceab8 Mon Sep 17 00:00:00 2001 From: Oliver Walter Date: Tue, 28 May 2024 03:45:00 +0200 Subject: [PATCH] added vehicle status message --- CLS.c | 29 +++++++++++++++++++++++++++++ CLS.h | 14 +++++++++++++- CLSAddress.h | 2 +- 3 files changed, 43 insertions(+), 2 deletions(-) diff --git a/CLS.c b/CLS.c index 1ec7420..8d8ed27 100644 --- a/CLS.c +++ b/CLS.c @@ -6,7 +6,9 @@ #include "CanDataHandler.h" osTimerId_t CLS_HeatbeatTimerId = NULL; // Timer ID +osTimerId_t CLS_VehicleTimerId = NULL; // Timer ID static CLS_HeatbeatData_t cls_heatbeat_data = {0}; +static CLS_VehicleStatus_t cls_vehicle = {0}; static uint8_t EventChangeTypeData[2] ={0}; static CLS_Type_t newType = 0; static CLS_Position_t newPostion = {0}; @@ -28,6 +30,10 @@ void CLS_Heatbeat(void *argument) { } } +__weak void CLS_VehicleHeatbeat(void *argument) { + +} + void CLS_SendEventChangeTypePostion(CanDataId canid, CLS_Type_t newType, CLS_Position_t newPostion) { const uint16_t cls_address = GENERATE_CLS_ADDRESS(CLS_CODE_CONFIG,canid,CLS_CHANNEL7); EventChangeTypeData[0] = (uint8_t)newType; @@ -36,6 +42,12 @@ void CLS_SendEventChangeTypePostion(CanDataId canid, CLS_Type_t newType, CLS_Pos CLS_BSP_CAN_AddMessageToSend(&cls_hartbeat_header, (uint8_t*)&EventChangeTypeData); } +void CLS_OnVehicleStatus(CanDataId canid, uint8_t* data, uint8_t len) { + if(len == 8) { + memcpy((uint8_t*)&cls_vehicle, data, 8); + } +} + void CLS_OnEventChangeTypePostion(CanDataId canid, uint8_t* data, uint8_t len) { if(len >= 2) { @@ -70,8 +82,25 @@ void CLS_Init(void) { } } + + if (cls_heatbeat_data.type == cls_device_Type_MASTER) { + timerAttr.name = "CLS_Vehicle_Heatbeat"; + CLS_VehicleTimerId = osTimerNew((osTimerFunc_t)CLS_VehicleHeatbeat, osTimerPeriodic, NULL, &timerAttr); + if (CLS_VehicleTimerId != NULL) { // Timer object created + + if (osTimerStart(CLS_VehicleTimerId, 100) == osOK) { // Timer started + // Timer started successfully + + } + + } + } + uint16_t cls_address = GENERATE_CLS_ADDRESS(CLS_CODE_CONFIG,gCLS_DEVICE_ADDRESS,CLS_CHANNEL7); //setup endpoint for changing the Device Type/Position CanData_regEventMsg(cls_address, CLS_OnEventChangeTypePostion); + + uint16_t cls_vehicle_address = GENERATE_CLS_ADDRESS(CLS_CODE_STATUS,0,CLS_CH_STA_VEHICLE); + CanData_regEventMsg(cls_vehicle_address, CLS_OnVehicleStatus); } \ No newline at end of file diff --git a/CLS.h b/CLS.h index d4662e1..5cf93e9 100644 --- a/CLS.h +++ b/CLS.h @@ -30,8 +30,20 @@ typedef struct CLS_HeatbeatData CLS_Position_t position; } CLS_HeatbeatData_t; + +typedef struct CLS_VehicleStatus { + uint8_t k15; + uint8_t headlight; + uint8_t engine; + uint8_t speed; + uint8_t reserved[4]; +} CLS_VehicleStatus_t; + extern uint8_t gCLS_DEVICE_ADDRESS; void CLS_Init(void); -void CLS_SendEventChangeTypePostion(uint16_t canid, CLS_Type_t newType, CLS_Position_t newPostion); \ No newline at end of file +void CLS_SendEventChangeTypePostion(uint16_t canid, CLS_Type_t newType, CLS_Position_t newPostion); + + +void CLS_VehicleHeatbeat(void *argument); \ No newline at end of file diff --git a/CLSAddress.h b/CLSAddress.h index b223c37..d001e12 100644 --- a/CLSAddress.h +++ b/CLSAddress.h @@ -39,7 +39,7 @@ typedef enum { typedef enum { CLS_CH_STA_HEATBEAT = 0, // 0b000 - CLS_CH_STA_1 = 1, // 0b001 + CLS_CH_STA_VEHICLE = 1, // 0b001 CLS_CH_STA_2 = 2, // 0b010 CLS_CH_STA_3 = 3, // 0b011 CLS_CH_STA_4 = 4, // 0b100