From 5f2c9e6a4a15640ce20116f7237a9055418d53c1 Mon Sep 17 00:00:00 2001 From: YunHorn Technology Date: Tue, 12 Nov 2024 14:08:04 +0800 Subject: [PATCH 1/2] add color_occupy_vacant p cmd parse --- STM32CubeIDE/.settings/language.settings.xml | 4 ++-- STM32CubeIDE/Release/WLE5CC_NODE_STS.elf | Bin 166612 -> 166612 bytes STM32CubeIDE/Release/makefile | 3 --- STM32CubeIDE/Release/sources.mk | 3 --- STS/Core/Inc/yunhorn_sts_sensors.h | 2 +- STS/Core/Src/yunhorn_sts_process.c | 19 +++++++++++++++---- 6 files changed, 18 insertions(+), 13 deletions(-) diff --git a/STM32CubeIDE/.settings/language.settings.xml b/STM32CubeIDE/.settings/language.settings.xml index 0ec3934..4b0e6ff 100644 --- a/STM32CubeIDE/.settings/language.settings.xml +++ b/STM32CubeIDE/.settings/language.settings.xml @@ -5,7 +5,7 @@ - + @@ -16,7 +16,7 @@ - + diff --git a/STM32CubeIDE/Release/WLE5CC_NODE_STS.elf b/STM32CubeIDE/Release/WLE5CC_NODE_STS.elf index d89f2a8ccaa86173b602f9cf09bc17b1282c27be..32d6d216b201c574355c6d3e6ac427d3362b9db4 100644 GIT binary patch delta 33406 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 bvHb@*GIEXDT?VaDz1-=MfJx=xcg6n$+m`6= diff --git a/STM32CubeIDE/Release/makefile b/STM32CubeIDE/Release/makefile index db0fb8f..db9d122 100644 --- a/STM32CubeIDE/Release/makefile +++ b/STM32CubeIDE/Release/makefile @@ -14,9 +14,6 @@ RM := rm -rf -include Middlewares/LoRaWAN/subdir.mk -include Drivers/STM32WLxx_HAL_Driver/subdir.mk -include Drivers/CMSIS/subdir.mk --include Drivers/BSP/STM32WLxx_Nucleo/subdir.mk --include Drivers/BSP/Components/subdir.mk --include Drivers/BSP/53L8A1/subdir.mk -include Application/User/Startup/subdir.mk -include Application/User/STS/TOF/vl53l1x_uld/subdir.mk -include Application/User/STS/TOF/Target/subdir.mk diff --git a/STM32CubeIDE/Release/sources.mk b/STM32CubeIDE/Release/sources.mk index cfb8dcf..709eaad 100644 --- a/STM32CubeIDE/Release/sources.mk +++ b/STM32CubeIDE/Release/sources.mk @@ -30,9 +30,6 @@ Application/User/STS/TOF/App \ Application/User/STS/TOF/Target \ Application/User/STS/TOF/vl53l1x_uld \ Application/User/Startup \ -Drivers/BSP/53L8A1 \ -Drivers/BSP/Components \ -Drivers/BSP/STM32WLxx_Nucleo \ Drivers/CMSIS \ Drivers/STM32WLxx_HAL_Driver \ Middlewares/LoRaWAN \ diff --git a/STS/Core/Inc/yunhorn_sts_sensors.h b/STS/Core/Inc/yunhorn_sts_sensors.h index 8dc2ce4..24d6ac6 100644 --- a/STS/Core/Inc/yunhorn_sts_sensors.h +++ b/STS/Core/Inc/yunhorn_sts_sensors.h @@ -163,7 +163,7 @@ typedef struct sts_cfg_nvm { uint8_t length; // length of following parameters except AC CODE(20bytes) uint8_t p[STS_CFG_PCFG_SIZE]; - uint8_t reserve02; + uint8_t color_occupy_vacant; // occupy color and vacant color define, C_OCCUPY<<4|C_VACANT uint8_t reserve03; uint8_t sensor_install_height_in_10cm; uint8_t alarm_parameter05; diff --git a/STS/Core/Src/yunhorn_sts_process.c b/STS/Core/Src/yunhorn_sts_process.c index 0d6bcc7..f55988b 100644 --- a/STS/Core/Src/yunhorn_sts_process.c +++ b/STS/Core/Src/yunhorn_sts_process.c @@ -105,7 +105,7 @@ volatile sts_cfg_nvm_t sts_cfg_nvm = { 0x00, //reserve --P[19] #endif }, // above 20 bytes - 0x00, //reserve2 + 0x21, // color occupy (red:2) | color vacant (green:1) or other 0x10 occupy(red:1) | color vacant (dark:0) 0x00, //reserve3 0x20, //sensor install height in dm =10 cm, default 32*10=320cm, 3.2meter @@ -656,8 +656,19 @@ void USER_APP_Parse_CMD_P(uint8_t *parse_buffer, uint8_t parse_buffer_size) break; } break; + // P 1 1 N C, P 1 1 0 C CHANGE network color code case 5: + break; + + // P 1 1 M C1 C2 Change default OCCUPANCY AND VACANT COLOR CODE + case 6: + + if (sts_work_mode == 1) + { + sts_cfg_nvm.color_occupy_vacant = ((uint8_t)(parse_buffer[CFG_CMD5]-0x30)<<4)|((uint8_t)(parse_buffer[CFG_CMD6]-0x30)); + } + break; case 12: break; case 13: @@ -1557,7 +1568,7 @@ void OnStoreSTSCFGContextRequest(void) to_store__value[i++] = (sts_cfg_nvm.p[j]); } - to_store__value[i++] = sts_cfg_nvm.reserve02; + to_store__value[i++] = sts_cfg_nvm.color_occupy_vacant; to_store__value[i++] = sts_cfg_nvm.reserve03; to_store__value[i++] = sts_cfg_nvm.sensor_install_height_in_10cm; to_store__value[i++] = sts_cfg_nvm.alarm_parameter05; @@ -1654,8 +1665,8 @@ void STS_REBOOT_CONFIG_Init(void) sts_cfg_nvm.p[j] = (uint8_t)nvm_store_value[NVM_CFG_START+j]; } - sts_cfg_nvm.reserve02 =(uint8_t)nvm_store_value[NVM_RESERVE02]; - sts_cfg_nvm.reserve03 =(uint8_t)nvm_store_value[NVM_RESERVE03]; + sts_cfg_nvm.color_occupy_vacant =(uint8_t)nvm_store_value[NVM_RESERVE02]; + sts_cfg_nvm.reserve03 =(uint8_t)nvm_store_value[NVM_RESERVE03]; sts_cfg_nvm.sensor_install_height_in_10cm =(uint8_t)nvm_store_value[NVM_SENSOR_INSTALL_HEIGHT]; sts_cfg_nvm.alarm_parameter05 =(uint8_t)nvm_store_value[NVM_ALARM_PARAMETER05]; sts_cfg_nvm.alarm_mute_reset_timer_in_10sec = (uint8_t)nvm_store_value[NVM_ALARM_MUTE_RESET_TIMER]; From 1629badd857d251d7070b81d3ea05a0f2c747fc8 Mon Sep 17 00:00:00 2001 From: YunHorn Technology Date: Tue, 12 Nov 2024 16:12:32 +0800 Subject: [PATCH 2/2] add lamp bar occupy vacant color config --- STS/TOF/App/app_tof_peoplecount.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/STS/TOF/App/app_tof_peoplecount.c b/STS/TOF/App/app_tof_peoplecount.c index e7b8503..ba9fe55 100644 --- a/STS/TOF/App/app_tof_peoplecount.c +++ b/STS/TOF/App/app_tof_peoplecount.c @@ -659,9 +659,9 @@ void STS_TOF_VL53LX_PresenceDetection_Process_Start(void) status = sts_tof_vl53lx_presence_detection_start(); if (sts_tof_presence_state ==1) { - sts_lamp_bar_color = STS_RED; + sts_lamp_bar_color = (sts_cfg_nvm.color_occupy_vacant>>4)&0x0f; //STS_RED; } else if (sts_tof_presence_state ==0) { - sts_lamp_bar_color = STS_GREEN; + sts_lamp_bar_color = (sts_cfg_nvm.color_occupy_vacant)&0x0f; //STS_GREEN; } sts_people_count_sensor_data.Count_Valid = (status ==0)? 1:0; //APP_LOG(TS_OFF, VLEVEL_M,"############### SUB-PROCESS running .... \r\n");