From c8d0fd1d878bedb83b7140145b86f018abd44442 Mon Sep 17 00:00:00 2001 From: Oliver Walter Date: Mon, 29 Apr 2024 04:18:37 +0200 Subject: [PATCH] more CLS device info --- Application/CLS_BSP/CLS_BSP.c | 17 +++++++++++++++++ Application/CLS_BSP/CLS_BSP.h | 9 ++++++++- Application/CLS_BSP/CMakeLists.txt | 3 ++- Application/CMakeLists.txt | 2 +- Application/Tasks/CMakeLists.txt | 2 +- Application/Tasks/CanDataTask.c | 27 ++++++++++++++++++++++++--- CMakeLists.txt | 2 +- STM32H723VGTX_FLASH.ld | 9 +++++++++ proto | 2 +- 9 files changed, 64 insertions(+), 9 deletions(-) diff --git a/Application/CLS_BSP/CLS_BSP.c b/Application/CLS_BSP/CLS_BSP.c index 439d6a6..9be6043 100644 --- a/Application/CLS_BSP/CLS_BSP.c +++ b/Application/CLS_BSP/CLS_BSP.c @@ -26,3 +26,20 @@ HAL_StatusTypeDef CLS_BSP_CAN_SetUniversalFilter(const CLS_BSP_CAN_UniversalFilt +CLS_Type_t CLS_BSP_GetDeviceType(void) { + return CLS_TYPE_MASTER; +} + + +void CLS_BSP_SetDeviceType(CLS_Type_t type) { +} + +CLS_Position_t CLS_BSP_GetPosition(void) { + CLS_Position_t position; + position.p0 = CLS_POSITION_FRONT; + position.p1 = CLS_POSITION_CENTER; + return position; +} + +void CLS_BSP_SetPosition(CLS_Position_t position) { +} \ No newline at end of file diff --git a/Application/CLS_BSP/CLS_BSP.h b/Application/CLS_BSP/CLS_BSP.h index f8fbcda..f8248bf 100644 --- a/Application/CLS_BSP/CLS_BSP.h +++ b/Application/CLS_BSP/CLS_BSP.h @@ -5,6 +5,7 @@ #ifdef CLS_BSP_FDCAN #include "fdcan.h" +#include "CLS.h" typedef FDCAN_TxHeaderTypeDef CLS_BSP_TxHeaderType; @@ -50,4 +51,10 @@ typedef struct { HAL_StatusTypeDef CLS_BSP_CAN_AddMessageToSend(CLS_BSP_TxHeaderType * header, uint8_t * data); -HAL_StatusTypeDef CLS_BSP_CAN_SetUniversalFilter(const CLS_BSP_CAN_UniversalFilter * filter); \ No newline at end of file +HAL_StatusTypeDef CLS_BSP_CAN_SetUniversalFilter(const CLS_BSP_CAN_UniversalFilter * filter); + +CLS_Type_t CLS_BSP_GetDeviceType(void); +void CLS_BSP_SetDeviceType(CLS_Type_t type); + +CLS_Position_t CLS_BSP_GetPosition(void); +void CLS_BSP_SetPosition(CLS_Position_t position); diff --git a/Application/CLS_BSP/CMakeLists.txt b/Application/CLS_BSP/CMakeLists.txt index 92b833b..72395eb 100644 --- a/Application/CLS_BSP/CMakeLists.txt +++ b/Application/CLS_BSP/CMakeLists.txt @@ -11,4 +11,5 @@ target_sources(${PROJECT_NAME} ${CMAKE_CURRENT_LIST_DIR}/CLS_BSP.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) \ No newline at end of file diff --git a/Application/CMakeLists.txt b/Application/CMakeLists.txt index e6f5431..5f46ae4 100644 --- a/Application/CMakeLists.txt +++ b/Application/CMakeLists.txt @@ -1,4 +1,4 @@ add_subdirectory(Tasks) -add_subdirectory(CLS_BSP) add_subdirectory(CLS) +add_subdirectory(CLS_BSP) add_subdirectory(BSP) \ No newline at end of file diff --git a/Application/Tasks/CMakeLists.txt b/Application/Tasks/CMakeLists.txt index 84bde4e..897c7a8 100644 --- a/Application/Tasks/CMakeLists.txt +++ b/Application/Tasks/CMakeLists.txt @@ -20,4 +20,4 @@ target_sources(${PROJECT_NAME} target_include_directories(${PROJECT_NAME} INTERFACE ${CMAKE_CURRENT_LIST_DIR}) target_link_libraries(${PROJECT_NAME} PUBLIC PROTOS CLS) -target_link_libraries(${PROJECT_NAME} PRIVATE CLS_BSP BSP) \ No newline at end of file +target_link_libraries(${PROJECT_NAME} PRIVATE Revision CLS_BSP BSP) \ No newline at end of file diff --git a/Application/Tasks/CanDataTask.c b/Application/Tasks/CanDataTask.c index 18b0b33..54d4691 100644 --- a/Application/Tasks/CanDataTask.c +++ b/Application/Tasks/CanDataTask.c @@ -7,7 +7,7 @@ #include "firmware.pb.h" #include "cls_device.pb.h" #include "usb.pb.h" - +#include "version_info.h" // Define thread flags #define FLAG_FDCAN_RX_FIFO0 (1<<0) #define FLAG_FDCAN_RX_FIFO1 (1<<1) @@ -133,22 +133,43 @@ extern uint8_t gCLS_DEVICE_ADDRESS; void DataClbk_cls_device_RequestList(void* msg, uint32_t length) { memset(&list,0,sizeof(list)); // add yourself + + CLS_Position_t position = CLS_BSP_GetPosition(); + CLS_Type_t type = CLS_BSP_GetDeviceType(); + uint32_t fw32 = (VERSION_INFO.major<<24) +(VERSION_INFO.minor<<16) + (VERSION_INFO.patch<<8) +VERSION_INFO.count ; + uint16_t pos16 = (position.p1<< 4) + position.p0; + uint16_t type16 = type; + list.devices[list.devices_count].available = true; list.devices[list.devices_count].canid = GENERATE_CLS_ADDRESS(CLS_CODE_STATUS, gCLS_DEVICE_ADDRESS, CLS_CH_STA_HEATBEAT); list.devices[list.devices_count].device = gCLS_DEVICE_ADDRESS; - list.devices[list.devices_count].counter = (osKernelGetTickCount()/500)%256; + list.devices[list.devices_count].type_position = (type16<<16) + pos16; + list.devices[list.devices_count].fw_version = fw32; + list.devices_count++; for (size_t i = 0; i < 16; i++) { uint16_t canid = (GENERATE_CLS_ADDRESS(CLS_CODE_STATUS, i, CLS_CH_STA_HEATBEAT)); const CanDataMessage * msg =CanData_getDataMessage(canid); + if(msg) { if(msg->data_length > 0) { + + CLS_HeatbeatData_t data = {0}; + memcpy(&data, msg->data, msg->data_length); + + CLS_Position_t position = data.position; + CLS_Type_t type = data.type; + uint32_t fw32 = (data.firmware_version.major<<24) +(data.firmware_version.minor<<16) + (data.firmware_version.patch<<8) +data.firmware_version.count ; + uint16_t pos16 = (position.p1<< 4) + position.p0; + uint16_t type16 = type; + list.devices[list.devices_count].available = true; list.devices[list.devices_count].canid = canid; list.devices[list.devices_count].device = i; - list.devices[list.devices_count].counter = msg->data[0]; + list.devices[list.devices_count].type_position = (type16<<16) + pos16; + list.devices[list.devices_count].fw_version = fw32; list.devices_count++; } } diff --git a/CMakeLists.txt b/CMakeLists.txt index 468acdb..9fdd35e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -115,7 +115,7 @@ include_directories( $<$: ${include_asm_DIRS}> ) - +add_subdirectory("Revision") add_subdirectory("lib") add_subdirectory("Application") diff --git a/STM32H723VGTX_FLASH.ld b/STM32H723VGTX_FLASH.ld index e820d09..1baeedf 100644 --- a/STM32H723VGTX_FLASH.ld +++ b/STM32H723VGTX_FLASH.ld @@ -135,6 +135,15 @@ SECTIONS _edata = .; /* define a global symbol at data end */ } >RAM_D1 AT> FLASH + .version : + { + . = ALIGN(4); + _sversion = .; /* create a global symbol at data start */ + *(.version) /* .data sections */ + *(.version*) /* .data* sections */ + } > FLASH + + /* Uninitialized data section */ . = ALIGN(4); .bss : diff --git a/proto b/proto index 3937207..e4c5d99 160000 --- a/proto +++ b/proto @@ -1 +1 @@ -Subproject commit 39372077447287e4d26aa4b2cfcdc70999f7cc81 +Subproject commit e4c5d996046b7d9f15a95f48e47a8b52198d57b4