From 56274d7cb827ed75142ade8e3969f58043117c6e Mon Sep 17 00:00:00 2001 From: YunHorn Technology Date: Tue, 29 Oct 2024 12:28:36 +0800 Subject: [PATCH 1/3] wip --- LoRaWAN/App/lora_app.c | 2 +- LoRaWAN/App/lora_app.h | 2 +- LoRaWAN/Target/lorawan_conf.h | 2 +- .../Release/Drivers/BSP/53L8A1/subdir.mk | 18 -------- .../Release/Drivers/BSP/Components/subdir.mk | 43 ------------------ STM32CubeIDE/Release/WLE5CC_NODE_STS.elf | Bin 168380 -> 168324 bytes STM32CubeIDE/Release/makefile | 2 + STM32CubeIDE/Release/sources.mk | 2 + 8 files changed, 7 insertions(+), 64 deletions(-) diff --git a/LoRaWAN/App/lora_app.c b/LoRaWAN/App/lora_app.c index 6032670..1df666d 100644 --- a/LoRaWAN/App/lora_app.c +++ b/LoRaWAN/App/lora_app.c @@ -1124,7 +1124,7 @@ static void OnJoinRequest(LmHandlerJoinParams_t *joinParams) APP_LOG(TS_OFF, VLEVEL_H, "###### U/L FRAME:JOIN | DR:%d | PWR:%d\r\n", joinParams->Datarate, joinParams->TxPower); } - UTIL_TIMER_Start(&YunhornSTSWakeUpScanTimer); + //UTIL_TIMER_Start(&YunhornSTSWakeUpScanTimer); /* USER CODE END OnJoinRequest_1 */ } diff --git a/LoRaWAN/App/lora_app.h b/LoRaWAN/App/lora_app.h index 52f4d16..ae4a403 100644 --- a/LoRaWAN/App/lora_app.h +++ b/LoRaWAN/App/lora_app.h @@ -68,7 +68,7 @@ extern "C" { /*! * LoRaWAN default class */ -#define LORAWAN_DEFAULT_CLASS CLASS_C +#define LORAWAN_DEFAULT_CLASS CLASS_A /*! * LoRaWAN default confirm state diff --git a/LoRaWAN/Target/lorawan_conf.h b/LoRaWAN/Target/lorawan_conf.h index 1706743..9ddccb0 100644 --- a/LoRaWAN/Target/lorawan_conf.h +++ b/LoRaWAN/Target/lorawan_conf.h @@ -109,7 +109,7 @@ extern "C" { * - CHANNEL_PLAN_GROUP_AS923_4 (Freq offset = -5.90 MHz / Freq range = 917-920MHz) * - CHANNEL_PLAN_GROUP_AS923_1_JP (Freq offset = 0.0 MHz / Freq range = 920.6-923.4MHz) */ -#define REGION_AS923_DEFAULT_CHANNEL_PLAN CHANNEL_PLAN_GROUP_AS923_1 +#define REGION_AS923_DEFAULT_CHANNEL_PLAN CHANNEL_PLAN_GROUP_AS923_1_JP /*! * @brief Limits the number usable channels by default for AU915, CN470 and US915 regions diff --git a/STM32CubeIDE/Release/Drivers/BSP/53L8A1/subdir.mk b/STM32CubeIDE/Release/Drivers/BSP/53L8A1/subdir.mk index 6e429c3..acbe69a 100644 --- a/STM32CubeIDE/Release/Drivers/BSP/53L8A1/subdir.mk +++ b/STM32CubeIDE/Release/Drivers/BSP/53L8A1/subdir.mk @@ -4,24 +4,6 @@ ################################################################################ # Add inputs and outputs from these tool invocations to the build variables -C_SRCS += \ -/53l8a1_ranging_sensor.c - -OBJS += \ -./Drivers/BSP/53L8A1/53l8a1_ranging_sensor.o - -C_DEPS += \ -./Drivers/BSP/53L8A1/53l8a1_ranging_sensor.d - # Each subdirectory must supply rules for building sources it contributes -Drivers/BSP/53L8A1/53l8a1_ranging_sensor.o: /53l8a1_ranging_sensor.c Drivers/BSP/53L8A1/subdir.mk - arm-none-eabi-gcc "$<" -mcpu=cortex-m4 -std=gnu11 -DSTS_R4 -DCORE_CM4 -DUSE_HAL_DRIVER -DSTM32WLE5xx -c -I../../Core/Inc -I../../STS/Core/Inc -I../../STS/TOF/App -I../../STS/TOF/Target -I../../STS/TOF/vl53l1x_uld -I../../STS/TOF/vl53l0x -I../../LoRaWAN/App -I../../LoRaWAN/Target -I../../../../../../../Drivers/STM32WLxx_HAL_Driver/Inc -I../../../../../../../Drivers/STM32WLxx_HAL_Driver/Inc/Legacy -I../../../../../../../Utilities/trace/adv_trace -I../../../../../../../Utilities/misc -I../../../../../../../Utilities/sequencer -I../../../../../../../Utilities/timer -I../../../../../../../Utilities/lpm/tiny_lpm -I../../../../../../../Middlewares/Third_Party/LoRaWAN/LmHandler/Packages -I../../../../../../../Drivers/CMSIS/Device/ST/STM32WLxx/Include -I../../../../../../../Middlewares/Third_Party/LoRaWAN/Crypto -I../../../../../../../Middlewares/Third_Party/LoRaWAN/Mac/Region -I../../../../../../../Middlewares/Third_Party/LoRaWAN/Mac -I../../../../../../../Middlewares/Third_Party/LoRaWAN/LmHandler -I../../../../../../../Middlewares/Third_Party/LoRaWAN/Utilities -I../../../../../../../Middlewares/Third_Party/SubGHz_Phy -I../../../../../../../Middlewares/Third_Party/SubGHz_Phy/stm32_radio_driver -I../../../../../../../Middlewares/ST/STM32_Cryptographic/include -I../../../../../../../Drivers/CMSIS/Include -I../../../../../../../Drivers/BSP/STM32WLxx_Nucleo -I../../../../../../../Drivers/BSP/Components/vl53l8cx/porting -I../../../../../../../Drivers/BSP/Components/Common -I../../../../../../../Drivers/BSP/53L8A1 -I../../../../../../../Drivers/BSP/Components/vl53l8cx/modules -I../../../../../../../Drivers/BSP/Components/vl53l8cx -Os -ffunction-sections -fdata-sections -Wall -fstack-usage -fcyclomatic-complexity -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" --specs=nano.specs -mfloat-abi=soft -mthumb -o "$@" - -clean: clean-Drivers-2f-BSP-2f-53L8A1 - -clean-Drivers-2f-BSP-2f-53L8A1: - -$(RM) ./Drivers/BSP/53L8A1/53l8a1_ranging_sensor.cyclo ./Drivers/BSP/53L8A1/53l8a1_ranging_sensor.d ./Drivers/BSP/53L8A1/53l8a1_ranging_sensor.o ./Drivers/BSP/53L8A1/53l8a1_ranging_sensor.su - -.PHONY: clean-Drivers-2f-BSP-2f-53L8A1 diff --git a/STM32CubeIDE/Release/Drivers/BSP/Components/subdir.mk b/STM32CubeIDE/Release/Drivers/BSP/Components/subdir.mk index 781778a..acbe69a 100644 --- a/STM32CubeIDE/Release/Drivers/BSP/Components/subdir.mk +++ b/STM32CubeIDE/Release/Drivers/BSP/Components/subdir.mk @@ -4,49 +4,6 @@ ################################################################################ # Add inputs and outputs from these tool invocations to the build variables -C_SRCS += \ -D:/ONEDRIVE/STM32WLV13/Drivers/BSP/Components/vl53l8cx/vl53l8cx.c \ -D:/ONEDRIVE/STM32WLV13/Drivers/BSP/Components/vl53l8cx/modules/vl53l8cx_api.c \ -D:/ONEDRIVE/STM32WLV13/Drivers/BSP/Components/vl53l8cx/modules/vl53l8cx_plugin_detection_thresholds.c \ -D:/ONEDRIVE/STM32WLV13/Drivers/BSP/Components/vl53l8cx/modules/vl53l8cx_plugin_motion_indicator.c \ -D:/ONEDRIVE/STM32WLV13/Drivers/BSP/Components/vl53l8cx/modules/vl53l8cx_plugin_xtalk.c \ -D:/ONEDRIVE/STM32WLV13/Drivers/BSP/Components/vl53l8cx/porting/wle5cc_platform.c - -OBJS += \ -./Drivers/BSP/Components/vl53l8cx.o \ -./Drivers/BSP/Components/vl53l8cx_api.o \ -./Drivers/BSP/Components/vl53l8cx_plugin_detection_thresholds.o \ -./Drivers/BSP/Components/vl53l8cx_plugin_motion_indicator.o \ -./Drivers/BSP/Components/vl53l8cx_plugin_xtalk.o \ -./Drivers/BSP/Components/wle5cc_platform.o - -C_DEPS += \ -./Drivers/BSP/Components/vl53l8cx.d \ -./Drivers/BSP/Components/vl53l8cx_api.d \ -./Drivers/BSP/Components/vl53l8cx_plugin_detection_thresholds.d \ -./Drivers/BSP/Components/vl53l8cx_plugin_motion_indicator.d \ -./Drivers/BSP/Components/vl53l8cx_plugin_xtalk.d \ -./Drivers/BSP/Components/wle5cc_platform.d - # Each subdirectory must supply rules for building sources it contributes -Drivers/BSP/Components/vl53l8cx.o: D:/ONEDRIVE/STM32WLV13/Drivers/BSP/Components/vl53l8cx/vl53l8cx.c Drivers/BSP/Components/subdir.mk - arm-none-eabi-gcc "$<" -mcpu=cortex-m4 -std=gnu11 -DSTS_R4 -DCORE_CM4 -DUSE_HAL_DRIVER -DSTM32WLE5xx -c -I../../Core/Inc -I../../STS/Core/Inc -I../../STS/TOF/App -I../../STS/TOF/Target -I../../STS/TOF/vl53l1x_uld -I../../STS/TOF/vl53l0x -I../../LoRaWAN/App -I../../LoRaWAN/Target -I../../../../../../../Drivers/STM32WLxx_HAL_Driver/Inc -I../../../../../../../Drivers/STM32WLxx_HAL_Driver/Inc/Legacy -I../../../../../../../Utilities/trace/adv_trace -I../../../../../../../Utilities/misc -I../../../../../../../Utilities/sequencer -I../../../../../../../Utilities/timer -I../../../../../../../Utilities/lpm/tiny_lpm -I../../../../../../../Middlewares/Third_Party/LoRaWAN/LmHandler/Packages -I../../../../../../../Drivers/CMSIS/Device/ST/STM32WLxx/Include -I../../../../../../../Middlewares/Third_Party/LoRaWAN/Crypto -I../../../../../../../Middlewares/Third_Party/LoRaWAN/Mac/Region -I../../../../../../../Middlewares/Third_Party/LoRaWAN/Mac -I../../../../../../../Middlewares/Third_Party/LoRaWAN/LmHandler -I../../../../../../../Middlewares/Third_Party/LoRaWAN/Utilities -I../../../../../../../Middlewares/Third_Party/SubGHz_Phy -I../../../../../../../Middlewares/Third_Party/SubGHz_Phy/stm32_radio_driver -I../../../../../../../Middlewares/ST/STM32_Cryptographic/include -I../../../../../../../Drivers/CMSIS/Include -I../../../../../../../Drivers/BSP/STM32WLxx_Nucleo -I../../../../../../../Drivers/BSP/Components/vl53l8cx/porting -I../../../../../../../Drivers/BSP/Components/Common -I../../../../../../../Drivers/BSP/53L8A1 -I../../../../../../../Drivers/BSP/Components/vl53l8cx/modules -I../../../../../../../Drivers/BSP/Components/vl53l8cx -Os -ffunction-sections -fdata-sections -Wall -fstack-usage -fcyclomatic-complexity -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" --specs=nano.specs -mfloat-abi=soft -mthumb -o "$@" -Drivers/BSP/Components/vl53l8cx_api.o: D:/ONEDRIVE/STM32WLV13/Drivers/BSP/Components/vl53l8cx/modules/vl53l8cx_api.c Drivers/BSP/Components/subdir.mk - arm-none-eabi-gcc "$<" -mcpu=cortex-m4 -std=gnu11 -DSTS_R4 -DCORE_CM4 -DUSE_HAL_DRIVER -DSTM32WLE5xx -c -I../../Core/Inc -I../../STS/Core/Inc -I../../STS/TOF/App -I../../STS/TOF/Target -I../../STS/TOF/vl53l1x_uld -I../../STS/TOF/vl53l0x -I../../LoRaWAN/App -I../../LoRaWAN/Target -I../../../../../../../Drivers/STM32WLxx_HAL_Driver/Inc -I../../../../../../../Drivers/STM32WLxx_HAL_Driver/Inc/Legacy -I../../../../../../../Utilities/trace/adv_trace -I../../../../../../../Utilities/misc -I../../../../../../../Utilities/sequencer -I../../../../../../../Utilities/timer -I../../../../../../../Utilities/lpm/tiny_lpm -I../../../../../../../Middlewares/Third_Party/LoRaWAN/LmHandler/Packages -I../../../../../../../Drivers/CMSIS/Device/ST/STM32WLxx/Include -I../../../../../../../Middlewares/Third_Party/LoRaWAN/Crypto -I../../../../../../../Middlewares/Third_Party/LoRaWAN/Mac/Region -I../../../../../../../Middlewares/Third_Party/LoRaWAN/Mac -I../../../../../../../Middlewares/Third_Party/LoRaWAN/LmHandler -I../../../../../../../Middlewares/Third_Party/LoRaWAN/Utilities -I../../../../../../../Middlewares/Third_Party/SubGHz_Phy -I../../../../../../../Middlewares/Third_Party/SubGHz_Phy/stm32_radio_driver -I../../../../../../../Middlewares/ST/STM32_Cryptographic/include -I../../../../../../../Drivers/CMSIS/Include -I../../../../../../../Drivers/BSP/STM32WLxx_Nucleo -I../../../../../../../Drivers/BSP/Components/vl53l8cx/porting -I../../../../../../../Drivers/BSP/Components/Common -I../../../../../../../Drivers/BSP/53L8A1 -I../../../../../../../Drivers/BSP/Components/vl53l8cx/modules -I../../../../../../../Drivers/BSP/Components/vl53l8cx -Os -ffunction-sections -fdata-sections -Wall -fstack-usage -fcyclomatic-complexity -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" --specs=nano.specs -mfloat-abi=soft -mthumb -o "$@" -Drivers/BSP/Components/vl53l8cx_plugin_detection_thresholds.o: D:/ONEDRIVE/STM32WLV13/Drivers/BSP/Components/vl53l8cx/modules/vl53l8cx_plugin_detection_thresholds.c Drivers/BSP/Components/subdir.mk - arm-none-eabi-gcc "$<" -mcpu=cortex-m4 -std=gnu11 -DSTS_R4 -DCORE_CM4 -DUSE_HAL_DRIVER -DSTM32WLE5xx -c -I../../Core/Inc -I../../STS/Core/Inc -I../../STS/TOF/App -I../../STS/TOF/Target -I../../STS/TOF/vl53l1x_uld -I../../STS/TOF/vl53l0x -I../../LoRaWAN/App -I../../LoRaWAN/Target -I../../../../../../../Drivers/STM32WLxx_HAL_Driver/Inc -I../../../../../../../Drivers/STM32WLxx_HAL_Driver/Inc/Legacy -I../../../../../../../Utilities/trace/adv_trace -I../../../../../../../Utilities/misc -I../../../../../../../Utilities/sequencer -I../../../../../../../Utilities/timer -I../../../../../../../Utilities/lpm/tiny_lpm -I../../../../../../../Middlewares/Third_Party/LoRaWAN/LmHandler/Packages -I../../../../../../../Drivers/CMSIS/Device/ST/STM32WLxx/Include -I../../../../../../../Middlewares/Third_Party/LoRaWAN/Crypto -I../../../../../../../Middlewares/Third_Party/LoRaWAN/Mac/Region -I../../../../../../../Middlewares/Third_Party/LoRaWAN/Mac -I../../../../../../../Middlewares/Third_Party/LoRaWAN/LmHandler -I../../../../../../../Middlewares/Third_Party/LoRaWAN/Utilities -I../../../../../../../Middlewares/Third_Party/SubGHz_Phy -I../../../../../../../Middlewares/Third_Party/SubGHz_Phy/stm32_radio_driver -I../../../../../../../Middlewares/ST/STM32_Cryptographic/include -I../../../../../../../Drivers/CMSIS/Include -I../../../../../../../Drivers/BSP/STM32WLxx_Nucleo -I../../../../../../../Drivers/BSP/Components/vl53l8cx/porting -I../../../../../../../Drivers/BSP/Components/Common -I../../../../../../../Drivers/BSP/53L8A1 -I../../../../../../../Drivers/BSP/Components/vl53l8cx/modules -I../../../../../../../Drivers/BSP/Components/vl53l8cx -Os -ffunction-sections -fdata-sections -Wall -fstack-usage -fcyclomatic-complexity -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" --specs=nano.specs -mfloat-abi=soft -mthumb -o "$@" -Drivers/BSP/Components/vl53l8cx_plugin_motion_indicator.o: D:/ONEDRIVE/STM32WLV13/Drivers/BSP/Components/vl53l8cx/modules/vl53l8cx_plugin_motion_indicator.c Drivers/BSP/Components/subdir.mk - arm-none-eabi-gcc "$<" -mcpu=cortex-m4 -std=gnu11 -DSTS_R4 -DCORE_CM4 -DUSE_HAL_DRIVER -DSTM32WLE5xx -c -I../../Core/Inc -I../../STS/Core/Inc -I../../STS/TOF/App -I../../STS/TOF/Target -I../../STS/TOF/vl53l1x_uld -I../../STS/TOF/vl53l0x -I../../LoRaWAN/App -I../../LoRaWAN/Target -I../../../../../../../Drivers/STM32WLxx_HAL_Driver/Inc -I../../../../../../../Drivers/STM32WLxx_HAL_Driver/Inc/Legacy -I../../../../../../../Utilities/trace/adv_trace -I../../../../../../../Utilities/misc -I../../../../../../../Utilities/sequencer -I../../../../../../../Utilities/timer -I../../../../../../../Utilities/lpm/tiny_lpm -I../../../../../../../Middlewares/Third_Party/LoRaWAN/LmHandler/Packages -I../../../../../../../Drivers/CMSIS/Device/ST/STM32WLxx/Include -I../../../../../../../Middlewares/Third_Party/LoRaWAN/Crypto -I../../../../../../../Middlewares/Third_Party/LoRaWAN/Mac/Region -I../../../../../../../Middlewares/Third_Party/LoRaWAN/Mac -I../../../../../../../Middlewares/Third_Party/LoRaWAN/LmHandler -I../../../../../../../Middlewares/Third_Party/LoRaWAN/Utilities -I../../../../../../../Middlewares/Third_Party/SubGHz_Phy -I../../../../../../../Middlewares/Third_Party/SubGHz_Phy/stm32_radio_driver -I../../../../../../../Middlewares/ST/STM32_Cryptographic/include -I../../../../../../../Drivers/CMSIS/Include -I../../../../../../../Drivers/BSP/STM32WLxx_Nucleo -I../../../../../../../Drivers/BSP/Components/vl53l8cx/porting -I../../../../../../../Drivers/BSP/Components/Common -I../../../../../../../Drivers/BSP/53L8A1 -I../../../../../../../Drivers/BSP/Components/vl53l8cx/modules -I../../../../../../../Drivers/BSP/Components/vl53l8cx -Os -ffunction-sections -fdata-sections -Wall -fstack-usage -fcyclomatic-complexity -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" --specs=nano.specs -mfloat-abi=soft -mthumb -o "$@" -Drivers/BSP/Components/vl53l8cx_plugin_xtalk.o: D:/ONEDRIVE/STM32WLV13/Drivers/BSP/Components/vl53l8cx/modules/vl53l8cx_plugin_xtalk.c Drivers/BSP/Components/subdir.mk - arm-none-eabi-gcc "$<" -mcpu=cortex-m4 -std=gnu11 -DSTS_R4 -DCORE_CM4 -DUSE_HAL_DRIVER -DSTM32WLE5xx -c -I../../Core/Inc -I../../STS/Core/Inc -I../../STS/TOF/App -I../../STS/TOF/Target -I../../STS/TOF/vl53l1x_uld -I../../STS/TOF/vl53l0x -I../../LoRaWAN/App -I../../LoRaWAN/Target -I../../../../../../../Drivers/STM32WLxx_HAL_Driver/Inc -I../../../../../../../Drivers/STM32WLxx_HAL_Driver/Inc/Legacy -I../../../../../../../Utilities/trace/adv_trace -I../../../../../../../Utilities/misc -I../../../../../../../Utilities/sequencer -I../../../../../../../Utilities/timer -I../../../../../../../Utilities/lpm/tiny_lpm -I../../../../../../../Middlewares/Third_Party/LoRaWAN/LmHandler/Packages -I../../../../../../../Drivers/CMSIS/Device/ST/STM32WLxx/Include -I../../../../../../../Middlewares/Third_Party/LoRaWAN/Crypto -I../../../../../../../Middlewares/Third_Party/LoRaWAN/Mac/Region -I../../../../../../../Middlewares/Third_Party/LoRaWAN/Mac -I../../../../../../../Middlewares/Third_Party/LoRaWAN/LmHandler -I../../../../../../../Middlewares/Third_Party/LoRaWAN/Utilities -I../../../../../../../Middlewares/Third_Party/SubGHz_Phy -I../../../../../../../Middlewares/Third_Party/SubGHz_Phy/stm32_radio_driver -I../../../../../../../Middlewares/ST/STM32_Cryptographic/include -I../../../../../../../Drivers/CMSIS/Include -I../../../../../../../Drivers/BSP/STM32WLxx_Nucleo -I../../../../../../../Drivers/BSP/Components/vl53l8cx/porting -I../../../../../../../Drivers/BSP/Components/Common -I../../../../../../../Drivers/BSP/53L8A1 -I../../../../../../../Drivers/BSP/Components/vl53l8cx/modules -I../../../../../../../Drivers/BSP/Components/vl53l8cx -Os -ffunction-sections -fdata-sections -Wall -fstack-usage -fcyclomatic-complexity -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" --specs=nano.specs -mfloat-abi=soft -mthumb -o "$@" -Drivers/BSP/Components/wle5cc_platform.o: D:/ONEDRIVE/STM32WLV13/Drivers/BSP/Components/vl53l8cx/porting/wle5cc_platform.c Drivers/BSP/Components/subdir.mk - arm-none-eabi-gcc "$<" -mcpu=cortex-m4 -std=gnu11 -DSTS_R4 -DCORE_CM4 -DUSE_HAL_DRIVER -DSTM32WLE5xx -c -I../../Core/Inc -I../../STS/Core/Inc -I../../STS/TOF/App -I../../STS/TOF/Target -I../../STS/TOF/vl53l1x_uld -I../../STS/TOF/vl53l0x -I../../LoRaWAN/App -I../../LoRaWAN/Target -I../../../../../../../Drivers/STM32WLxx_HAL_Driver/Inc -I../../../../../../../Drivers/STM32WLxx_HAL_Driver/Inc/Legacy -I../../../../../../../Utilities/trace/adv_trace -I../../../../../../../Utilities/misc -I../../../../../../../Utilities/sequencer -I../../../../../../../Utilities/timer -I../../../../../../../Utilities/lpm/tiny_lpm -I../../../../../../../Middlewares/Third_Party/LoRaWAN/LmHandler/Packages -I../../../../../../../Drivers/CMSIS/Device/ST/STM32WLxx/Include -I../../../../../../../Middlewares/Third_Party/LoRaWAN/Crypto -I../../../../../../../Middlewares/Third_Party/LoRaWAN/Mac/Region -I../../../../../../../Middlewares/Third_Party/LoRaWAN/Mac -I../../../../../../../Middlewares/Third_Party/LoRaWAN/LmHandler -I../../../../../../../Middlewares/Third_Party/LoRaWAN/Utilities -I../../../../../../../Middlewares/Third_Party/SubGHz_Phy -I../../../../../../../Middlewares/Third_Party/SubGHz_Phy/stm32_radio_driver -I../../../../../../../Middlewares/ST/STM32_Cryptographic/include -I../../../../../../../Drivers/CMSIS/Include -I../../../../../../../Drivers/BSP/STM32WLxx_Nucleo -I../../../../../../../Drivers/BSP/Components/vl53l8cx/porting -I../../../../../../../Drivers/BSP/Components/Common -I../../../../../../../Drivers/BSP/53L8A1 -I../../../../../../../Drivers/BSP/Components/vl53l8cx/modules -I../../../../../../../Drivers/BSP/Components/vl53l8cx -Os -ffunction-sections -fdata-sections -Wall -fstack-usage -fcyclomatic-complexity -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" --specs=nano.specs -mfloat-abi=soft -mthumb -o "$@" - -clean: clean-Drivers-2f-BSP-2f-Components - -clean-Drivers-2f-BSP-2f-Components: - -$(RM) ./Drivers/BSP/Components/vl53l8cx.cyclo ./Drivers/BSP/Components/vl53l8cx.d ./Drivers/BSP/Components/vl53l8cx.o ./Drivers/BSP/Components/vl53l8cx.su ./Drivers/BSP/Components/vl53l8cx_api.cyclo ./Drivers/BSP/Components/vl53l8cx_api.d ./Drivers/BSP/Components/vl53l8cx_api.o ./Drivers/BSP/Components/vl53l8cx_api.su ./Drivers/BSP/Components/vl53l8cx_plugin_detection_thresholds.cyclo ./Drivers/BSP/Components/vl53l8cx_plugin_detection_thresholds.d ./Drivers/BSP/Components/vl53l8cx_plugin_detection_thresholds.o ./Drivers/BSP/Components/vl53l8cx_plugin_detection_thresholds.su ./Drivers/BSP/Components/vl53l8cx_plugin_motion_indicator.cyclo ./Drivers/BSP/Components/vl53l8cx_plugin_motion_indicator.d ./Drivers/BSP/Components/vl53l8cx_plugin_motion_indicator.o ./Drivers/BSP/Components/vl53l8cx_plugin_motion_indicator.su ./Drivers/BSP/Components/vl53l8cx_plugin_xtalk.cyclo ./Drivers/BSP/Components/vl53l8cx_plugin_xtalk.d ./Drivers/BSP/Components/vl53l8cx_plugin_xtalk.o ./Drivers/BSP/Components/vl53l8cx_plugin_xtalk.su ./Drivers/BSP/Components/wle5cc_platform.cyclo ./Drivers/BSP/Components/wle5cc_platform.d ./Drivers/BSP/Components/wle5cc_platform.o ./Drivers/BSP/Components/wle5cc_platform.su - -.PHONY: clean-Drivers-2f-BSP-2f-Components diff --git a/STM32CubeIDE/Release/WLE5CC_NODE_STS.elf b/STM32CubeIDE/Release/WLE5CC_NODE_STS.elf index 997805a4a73e3680a69097a9ed9360f881139c2a..b3407abfed5fd130401ffd47b3f252f72e20d93e 100644 GIT binary patch delta 51209 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 delta 51161 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 B$mjq7 diff --git a/STM32CubeIDE/Release/makefile b/STM32CubeIDE/Release/makefile index 2173897..7427775 100644 --- a/STM32CubeIDE/Release/makefile +++ b/STM32CubeIDE/Release/makefile @@ -15,6 +15,8 @@ RM := rm -rf -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/vl53l0x/subdir.mk -include Application/User/STS/TOF/Target/subdir.mk diff --git a/STM32CubeIDE/Release/sources.mk b/STM32CubeIDE/Release/sources.mk index a6f330f..f021f94 100644 --- a/STM32CubeIDE/Release/sources.mk +++ b/STM32CubeIDE/Release/sources.mk @@ -30,6 +30,8 @@ Application/User/STS/TOF/App \ Application/User/STS/TOF/Target \ Application/User/STS/TOF/vl53l0x \ Application/User/Startup \ +Drivers/BSP/53L8A1 \ +Drivers/BSP/Components \ Drivers/BSP/STM32WLxx_Nucleo \ Drivers/CMSIS \ Drivers/STM32WLxx_HAL_Driver \ From fd1fc501a536d3ea10d094553dff6a90d2a049f4 Mon Sep 17 00:00:00 2001 From: YunHorn Technology Date: Wed, 30 Oct 2024 15:54:13 +0800 Subject: [PATCH 2/3] fix bug of report NVM without 'C' prefix --- Core/Src/sys_app.c | 4 ++-- LoRaWAN/App/lora_app.c | 7 ++++--- STM32CubeIDE/Release/WLE5CC_NODE_STS.elf | Bin 168324 -> 168324 bytes STS/Core/Inc/yunhorn_sts_prd_conf.h | 20 +++++++++++++++++++- STS/Core/Src/yunhorn_sts_process.c | 23 +++++++++++++---------- STS/TOF/App/app_tof.c | 2 ++ 6 files changed, 40 insertions(+), 16 deletions(-) diff --git a/Core/Src/sys_app.c b/Core/Src/sys_app.c index cbfffe8..8b99d65 100644 --- a/Core/Src/sys_app.c +++ b/Core/Src/sys_app.c @@ -35,9 +35,9 @@ #if defined(STS_P2)||defined(STS_T6) #include "app_tof_peoplecount.h" #endif -#ifdef L8 +//#ifdef L8 #include "app_tof.h" -#endif +//#endif /* USER CODE END Includes */ /* External variables ---------------------------------------------------------*/ diff --git a/LoRaWAN/App/lora_app.c b/LoRaWAN/App/lora_app.c index 1df666d..3cae67f 100644 --- a/LoRaWAN/App/lora_app.c +++ b/LoRaWAN/App/lora_app.c @@ -50,7 +50,7 @@ extern volatile sts_cfg_nvm_t sts_cfg_nvm; extern volatile uint32_t rfac_timer; extern volatile uint32_t STS_TOFScanPeriod_msec, STS_TxPeriod_sec, STS_HeartBeatTimerPeriod_sec; volatile uint8_t sts_data_buf[LORAWAN_APP_DATA_BUFFER_MAX_SIZE]={0x0}; -volatile LmHandlerAppData_t sts_app_data={ 0, 0, sts_data_buf }; +//volatile LmHandlerAppData_t sts_app_data={ 0, 0, sts_data_buf }; /* USER CODE END EV */ @@ -771,7 +771,7 @@ static void SendTxData(void) #ifdef CAYENNE_LPP uint8_t channel = 0; #else - +/* uint16_t pressure = 0; int16_t temperature = 0; uint16_t humidity = 0; @@ -779,7 +779,8 @@ static void SendTxData(void) int32_t latitude = 0; int32_t longitude = 0; uint16_t altitudeGps = 0; - +*/ + uint32_t i = 0; #endif /* CAYENNE_LPP */ EnvSensors_Read(&sensor_data); diff --git a/STM32CubeIDE/Release/WLE5CC_NODE_STS.elf b/STM32CubeIDE/Release/WLE5CC_NODE_STS.elf index b3407abfed5fd130401ffd47b3f252f72e20d93e..4aea2761b3ef3765af870589582e74ee4f40e2dd 100644 GIT binary patch delta 34834 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 Op)Wn~v91XGsrWy6tw_`W delta 34835 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¥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 diff --git a/STS/Core/Inc/yunhorn_sts_prd_conf.h b/STS/Core/Inc/yunhorn_sts_prd_conf.h index cba1c48..3c3fc43 100644 --- a/STS/Core/Inc/yunhorn_sts_prd_conf.h +++ b/STS/Core/Inc/yunhorn_sts_prd_conf.h @@ -61,7 +61,25 @@ #elif defined(L8) #define YUNHORN_STS_L8_ENABLED 1U #endif - +/* +#define PRD_O0 0x0000 +#define PRD_O1 0x0001 +#define PRD_O2 0x0002 +#define PRD_O3 0x0004 +#define PRD_O4 0x0008 +#define PRD_O5 0x0010 +#define PRD_O6 0x0020 +#define PRD_O7 0x0040 +#define PRD_O8 0x0080 +#define PRD_09 0x0100 +#define PRD_10 0x0200 +#define PRD_11 0x0400 +#define PRD_12 0x0800 +#define PRD_13 0x1000 +#define PRD_14 0x2000 +#define PRD_15 0x4000 +#define PRD_16 0x8000 + */ /* ########################## Product Selection ############################## * @brief This is the list of Yunhorn STS products to be used in ALL product config diff --git a/STS/Core/Src/yunhorn_sts_process.c b/STS/Core/Src/yunhorn_sts_process.c index 4b45941..60ff2cd 100644 --- a/STS/Core/Src/yunhorn_sts_process.c +++ b/STS/Core/Src/yunhorn_sts_process.c @@ -1117,8 +1117,9 @@ void USER_APP_AUTO_RESPONDER_Parse(uint8_t *parse_buffer, uint8_t parse_buffer_s outbuf[i++] = (uint8_t) (cfg_in_nvm[NVM_CFG_START+j]); } #endif - UTIL_MEM_cpy_8(outbuf, cfg_in_nvm,44); - i=44; + outbuf[0] = 0x43; // 'C' for config + UTIL_MEM_cpy_8(outbuf+1, cfg_in_nvm,44); + i=45; STS_SENSOR_Upload_Message(YUNHORN_STS_USER_APP_CTRL_REPLY_PORT, i, (uint8_t *)outbuf); break; @@ -1232,9 +1233,9 @@ void USER_APP_AUTO_RESPONDER_Parse(uint8_t *parse_buffer, uint8_t parse_buffer_s APP_LOG(TS_OFF,VLEVEL_M, "\nSTS Tx Periodicty changed to %u sec\n\r", STS_TxPeriod_sec); #ifdef STS_R4 OnYunhornSTSTxPeriodicityChanged(STS_TxPeriod_sec*1000); -#endif - -#if defined(STS_O6)||defined(STS_O7) +#elif defined(STS_R1D)||defined(STS_R1)||defined(STS_R5)||defined(STS_P2)||defined(STS_O6T)||defined(STS_R2)||defined(STS_R3)||defined(STS_R6) + OnYunhornSTSTxPeriodicityChanged(STS_TxPeriod_sec*1000); +#elif defined(STS_O6)||defined(STS_O7) OnYunhornSTSHeartBeatPeriodicityChanged(periodicity_length); #endif // 2024-07-31 @@ -1262,6 +1263,7 @@ void USER_APP_AUTO_RESPONDER_Parse(uint8_t *parse_buffer, uint8_t parse_buffer_s break; /* End of Upload Periodic interval */ /* 2222222222222222222222222222222222222222222222222222222222222222 */ + case 'L': case 'S': /* Begin Sampling/HeartBeat interval */ if ((((char)tlv_buf[CFG_CMD3] >= '0') && ((char)tlv_buf[CFG_CMD3] <='9') && ((char)tlv_buf[CFG_CMD4] >='0') && ((char)tlv_buf[CFG_CMD4] <='9')) && @@ -1277,10 +1279,10 @@ void USER_APP_AUTO_RESPONDER_Parse(uint8_t *parse_buffer, uint8_t parse_buffer_s STS_HeartBeatTimerPeriod_sec = heart_beat_or_sampling_periodicity_length; -#if defined(STS_P2)||defined(STS_R4)||defined(STS_T6) +#if defined(STS_P2)||defined(STS_R4)||defined(STS_T6)||defined(STS_R1D) OnYunhornSTSHeartBeatPeriodicityChanged(STS_HeartBeatTimerPeriod_sec*1000); #endif - +// LEGACY CODE, TO BE XXX LATER ============= #ifdef YUNHORN_STS_E0_ENABLED SamplingPeriodicity = heart_beat_or_sampling_periodicity_length*1000; //translate to 1000ms=1s OnYunhornSTSSamplingPeriodicityChanged(SamplingPeriodicity); @@ -1293,6 +1295,7 @@ void USER_APP_AUTO_RESPONDER_Parse(uint8_t *parse_buffer, uint8_t parse_buffer_s SamplingPeriodicity = heart_beat_or_sampling_periodicity_length*1000; //translate to 1000ms=1s OnYunhornSTSSamplingPeriodicityChanged(SamplingPeriodicity); #endif +// LEGACY CODE, TO BE XXX LATER ============= // 2024-07-31 UTIL_MEM_set_8((void*)outbuf, 0x0, sizeof(outbuf)); UTIL_MEM_cpy_8((void*)outbuf,(void*)tlv_buf, parse_buffer_size); @@ -1317,9 +1320,9 @@ void USER_APP_AUTO_RESPONDER_Parse(uint8_t *parse_buffer, uint8_t parse_buffer_s } break; /* End Sampling/HeartBeat interval */ /* 2222222222222222222222222222222222222222222222222222222222222222 */ - case 'L': /* Begin Sampling/HeartBeat interval */ - /* YUNHORN TODO XXX */ - break; /* End Sampling/HeartBeat interval */ + // case 'L': /* Begin Sampling/HeartBeat interval */ + // /* YUNHORN TODO XXX */ + // break; /* End Sampling/HeartBeat interval */ default: /* illegal CFG_CMD2*/ break; diff --git a/STS/TOF/App/app_tof.c b/STS/TOF/App/app_tof.c index c1c3c0f..6099674 100644 --- a/STS/TOF/App/app_tof.c +++ b/STS/TOF/App/app_tof.c @@ -34,6 +34,8 @@ extern "C" { #elif defined(L8) #include "53l8a1_ranging_sensor.h" #include "app_tof_pin_conf.h" +#elif defined(STS_R1D)||defined(STS_R1)||defined(STS_R5)||defined(STS_R2) +#include "X-WL55_WLE5_53L0X.h" #endif #include "stm32wlxx_nucleo.h" From e9a734a7bb71b8d5ee0c17865a7d9571787038a0 Mon Sep 17 00:00:00 2001 From: YunHorn Technology Date: Wed, 30 Oct 2024 16:33:19 +0800 Subject: [PATCH 3/3] add backup decoder --- jp_as923_decoder_backup.js | 356 +++++++++++++++++++++++++++++++++++++ 1 file changed, 356 insertions(+) create mode 100644 jp_as923_decoder_backup.js diff --git a/jp_as923_decoder_backup.js b/jp_as923_decoder_backup.js new file mode 100644 index 0000000..ca626dd --- /dev/null +++ b/jp_as923_decoder_backup.js @@ -0,0 +1,356 @@ +// Decode decodes an array of bytes into an object. +// - fPort contains the LoRaWAN fPort number +// - bytes is an array of bytes, e.g. [225, 230, 255, 0] +// - variables contains the device variables e.g. {"calibration": "3.5"} (both the key / value are of type string) +// The function must return an object, e.g. {"temperature": 22.5} +function Decode(fPort, bytes, variables) { + // O5 Door contact sensor + if (fPort === 4) { + return [ + { + led_state: bytes[0]===0 ? "Off":"On", + mtm_code_1: bytes[1], + mtm_code_2: bytes[2], + hw_code: bytes[3], + battery_level: bytes[4]+"%", + size_value: bytes[5], + door_state: bytes[6] === 1 ? "Closed": "Open", + } + ]; + } + // heart-beat of O5 + else if (fPort === 5) { + return [ + { + led_state: (bytes[0] & 0x7f) === 0 ? "Off" : "On", + battery_level: bytes[1] + " %", + } + ]; + } + // R4 soap/sanitizer sensor + else if (fPort === 7) { + return [ + { + led_state: bytes[0]===0 ? "Off":"On", + mtm_code_1: bytes[1], + mtm_code_2: bytes[2], + hw_code: bytes[3], + battery_level: bytes[4]+"%", + size_value: bytes[5], + measure_tech:bytes[6] === 0? "Capacitive":"Other", + liquid_level_event: bytes[7] === 0? "Liquid Detected":"No Liquid", + } + ]; + } + // R4 soap/sanitizer heart-beat + else if (fPort === 8) { + return [ + { + led_state: (bytes[0] & 0x7f) === 0 ? "Off" : "On", + //battery_level: bytes[1] + " %", + battery_level_mV: bytes[1]*100 + " mV", + } + ]; + } + // R1D dual roll toilet paper sensor + else if (fPort === 57) { + return [ + { + led_state:bytes[0]===0 ? "Off":"On", + mtm_code_1:bytes[1], + mtm_code_2:bytes[2], + hw_code:bytes[3], + battery_level:bytes[4]+"%", + size_value:bytes[5], + distance_1_mm:bytes[6]*256+bytes[7], + distance_2_mm:bytes[8]*256+bytes[9], + distance_unit: "mm", + } + ]; + } + // R1D, Heart-beat + else if (fPort === 58) { + return [ + { + led_state: (bytes[0] & 0x7f) === 0 ? "Off" : "On", + //battery_level: bytes[1] + " %", + battery_level_mV: bytes[1]*100 + " mV", + } + ]; + } + // R5 waste bin sensor + else if (fPort === 11) { + return [ + { + led_state:bytes[0]===0 ? "Off":"On", + mtm_code_1:bytes[1], + mtm_code_2:bytes[2], + hw_code:bytes[3], + battery_level:bytes[4]+"%", + size_value:bytes[5], + distance_mm: bytes[6]*256 + bytes[7], + distance_unit: "mm", + } + ]; + } + // R5, Heart-beat + else if (fPort === 12) { + return [ + { + led_state: (bytes[0] & 0x7f) === 0 ? "Off" : "On", + //battery_level_percent: bytes[1] + " %", + battery_level_mV: bytes[1]*100 + "mV", + } + ]; + } + + // UPLINK, RFAC + else if (fPort === 1 ) + { + var data={}; + data.length = bytes.length; + if ((data.length ===10) && (bytes[0] == 0x59)&&(bytes[9]==0x38)) + { + data.Yunhorn_PRD ="True"; + data.PRD_String = String.fromCharCode(bytes); + } + else if ((data.length ===4) && (bytes[0] == 0x52)&&(bytes[1]==0x46)) //RFAC + { + data.Request_Performed = "OK"; + data.RFAC = "OK"; + data.AC0 = bytes[0]; + data.AC1 = bytes[1]; + } + else if ((data.length ===4) && (bytes[0]===0x50)&&(bytes[1]===0x31)&&(bytes[2]===0x31)) + { data.Work_Mode_Switch ="OK"; + switch (bytes[3]-0x30) + { + case 0x0: + data.workmode = "Network_mode"; + break; + case 0x01: + data.workmode = "Wired_Mode"; + break; + case 0x02: + data.workmode = "Hall_element_mode"; + break; + case 0x03: + data.workmode = "MotionDetect_mode"; + break; + case 0x04: + data.workmode = "Dual_mode"; + break; + case 0x05: + data.workmode = "Uni_Mode"; + break; + default: + data.workmode = "Unknown Mode"; + break; + } + } + + else if ((bytes[0]===0x59) && (bytes[1] === 0x44)) //Duration interval + { + data.Uplink_interval=(bytes[2]-0x30)*10+(bytes[3]-0x30); + data.Uplink_interval_unit=String.fromCharCode(bytes[4]); + //data.Heart_beat_Duration = (bytes[2]-0x30)*10 + (bytes[3]-0x30); + //data.Unit = String.fromCharCode(bytes[4]); + } + + else if ((bytes[0]===0x59) && (bytes[1] === 0x53)) //Sampling interval or Heart-beat interval + { + data.Heart_Beat_interval=(bytes[2]-0x30)*10+(bytes[3]-0x30); + data.Heart_Beat_interval_unit=String.fromCharCode(bytes[4]); + //data.Wakeup_sampling_interval = (bytes[2]-0x30)*10 + (bytes[3]-0x30); + //data.Unit = String.fromCharCode(bytes[4]); + } + + else if (bytes[0]===0x43) { // report current nvm config + data.mtm_code1=bytes[1]; + data.mtm_code2=bytes[2]; + data.sts_verion=bytes[3]; + data.sts_hw_ver=bytes[4]; + data.sts_uplink_interval = bytes[5]; + data.sts_uplink_interval_unit = String.fromCharCode(bytes[6]); + data.sts_sampling_interval = bytes[7]; + data.sts_sampling_interval_unit = String.fromCharCode(bytes[8]); + data.sts_work_mode=bytes[9]; + data.sts_service_mask=bytes[10]; + data.sts_reserve01=bytes[11]; + data.sts_payload_length=bytes[12]; + data.rss_start_distance=bytes[13]*0.1+" meter"; + data.rss_range_length = bytes[14]*0.1+" meter"; + data.rss_threshold = bytes[15]*0.1; + data.rss_receiving_gain=bytes[16]+" %"; + data.rss_profile=bytes[17]; + data.rss_rate_tracking=bytes[18]; + data.rss_rate_presence=bytes[19]; + data.rss_HWAAS = bytes[20]; + data.rss_nbr_removed_pc=bytes[21]; + data.rss_inter_frame_deviation_time_const=bytes[22]*0.1; + data.rss_inter_frame_fast_cutoff=bytes[23]; + data.rss_inter_frame_slow_cutoff=bytes[24]; + data.rss_intra_frame_time_const=bytes[25]; + data.rss_intra_frame_weight=bytes[26]*0.1; + data.rss_output_time_const=bytes[27]*0.1; + data.rss_downsampling_factor=bytes[28]; + data.rss_power_saving_mode_active=bytes[29]; + data.rss_reserve02=bytes[30]; + data.rss_reserve03=bytes[31]; + data.rss_reserve04=bytes[32]; + data.reserve2=bytes[33]; + data.reserve3=bytes[34]; + data.sensor_install_height=bytes[35]*10+" cm"; + + data.alarm_parameter05=bytes[36]; + data.alarm_mute_expire_timer=bytes[37]; + data.alarm_lamp_bar_flashing_color=bytes[38]; + data.occupancy_overtime_threshold=bytes[39]; + + data.motionless_duration_threshold=bytes[40]; + data.unconcious_threshold = bytes[41]; + + data.fall_detection_acc_threshold=bytes[42]; + data.fall_detection_depth_threshold=bytes[43]; + data.fall_down_confirm_threshold=bytes[44]; + } + else if (bytes[0]===0x53) + { // SELF TEST FUNCTION + data.mtm_code1=bytes[1]; + data.mtm_code2=bytes[2]; + data.sts_verion=bytes[3]; + data.sts_hw_ver=bytes[4]; + data.battery_level=bytes[5]; + if ((bytes[6]===0x03)) { // report sensor install height + data.sts_sensor_install_height= (bytes[7]<<8|bytes[8]); + data.sts_sensor_install_height_unit="mm"; + } + else if ((bytes[6]===0x58)) + { + data.sts_Test_Result="### Motion Sensor Not Detected ###"; + } else if ((bytes[6]===0x0E)) //result length, 10 rss bytes, 4 distance bytes + { + data.sts_Test_Result="Motion Sensor Test Result:"; + data.sts_test_result_length=bytes[6]; + data.sts_rss_sub_code1=bytes[7]; + data.sts_rss_sub_code2=bytes[8]; + data.sts_rss_sub_code3=bytes[9]; + data.sts_rss_sub_code4=bytes[10]; + data.sts_rss_sub_code5=bytes[11]; + data.sts_rss_sub_code6=bytes[12]; + data.sts_rss_sub_code7=bytes[13]; + data.sts_rss_sub_code8=bytes[14]; + data.sts_rss_sub_code9=bytes[15]; + data.sts_rss_sub_code10=bytes[16]; + data.sts_sensor_install_height = String.fromCharCode(bytes[17])+String.fromCharCode(bytes[18])+String.fromCharCode(bytes[19])+String.fromCharCode(bytes[20])+" mm"; + } + } + else if (bytes[0]===0x44) + { // MEASURE INSTALLATION HEIGHT + data.mtm_code1=bytes[1]; + data.mtm_code2=bytes[2]; + data.sts_verion=bytes[3]; + data.sts_hw_ver=bytes[4]; + data.battery_level=bytes[5]; + data.payload_length=bytes[6]; + data.Measure_Distance=String.fromCharCode(bytes[7])+String.fromCharCode(bytes[8])+String.fromCharCode(bytes[9])+String.fromCharCode(bytes[10]); + data.Distance_unit="mm"; + } + else if (bytes[0] === 0x4c) { // LoRaWAN Class A/B/C + data.mtm_code1=bytes[1]; + data.mtm_code2=bytes[2]; + data.sts_verion=bytes[3]; + data.LoRaWAN_Class=String.fromCharCode(bytes[4]); + } + else if (bytes[0]===0x56) + { // FIRMWARE VERSION + + data.mtm_code1=bytes[1]; + data.mtm_code2=bytes[2]; + data.sts_verion=bytes[3]; + data.sts_hw_ver=bytes[4]; + data.sts_major=bytes[5]; + data.sts_minor=bytes[6]; + data.subminor=bytes[7]; + + if (data.length ===15) { + data.L_year=(bytes[8]<<8|bytes[9]); + data.L_mon=bytes[10]; + data.L_day=bytes[11]; + data.L_hour=bytes[12]; + data.L_min=bytes[13]; + data.L_sec=bytes[14]; + data.LocalTime_UTC="UTC: "+data.L_year+"/"+data.L_mon+"/"+data.L_day+" "+data.L_hour+":"+data.L_min+":"+data.L_sec; + data.LocalTime_EST8="GMT+8: "+data.L_year+"/"+data.L_mon+"/"+data.L_day+" "+(data.L_hour+8)+":"+data.L_min+":"+data.L_sec; + } + } + else if (bytes[0] === 0x54) + { //T: date & time + data.L_year=(bytes[1]<<8|bytes[2]); + data.L_mon=bytes[3]; + data.L_day=bytes[4]; + data.L_hour=bytes[5]; + data.L_min=bytes[6]; + data.L_sec=bytes[7]; + data.LocalTime_UTC="UTC: "+data.L_year+"/"+data.L_mon+"/"+data.L_day+" "+data.L_hour+":"+data.L_min+":"+data.L_sec; + + } + else if (bytes[0]===0x50) + { // P cmd report + if (data.length ==7) + { + switch (bytes[3]) { + case 0x46: // F --- fall down & unconscious detection threshold + data.FALL_acceleration = (bytes[4]==0x30?"Disabled":((bytes[4]-0x30)*10)+" mg/s2"); + data.FALL_depth_measure = (bytes[5]==0x30?"Disabled":((bytes[5]-0x30)*10)+" cm"); + data.FALL_confirm_threshold = (bytes[6]==0x30?"Disabled":((bytes[6]-0x30)*10)+" seconds"); + //data.FALL_reserved = (bytes[7]==0x0?"Disabled":((bytes[6]-0x30)*10)+" min"); + break; + } //switch + } + else if (data.length ==8) + { + switch (bytes[3]) { + case 0x4f: // O -- over stay, onconscious, long stay + data.OMU_Motionless_duration_in_min = (bytes[4]==0x30?"Disabled":((bytes[4]-0x30))+" Min"); + data.OMU_Long_Occupy_duration_in_Min= (bytes[5]==0x30?"Disabled":((bytes[5]-0x30)*10)+" Min"); + data.OMU_Unconcious_Threshold = (bytes[6]==0x30?"Disabled":((bytes[6]-0x30)*100)+"ml"); + data.OMU_Alarm_Mute_Reset_Timer = (bytes[7] ==0x30?"Disabled":((bytes[7]-0x30)*10)+" Seconds"); + break; + case 0x46: // F --- fall down & unconscious detection threshold + data.FALL_acceleration = (bytes[4]==0x30?"Disabled":((bytes[4]-0x30)*10)+" mg/s2"); + data.FALL_depth_measure = (bytes[5]==0x30?"Disabled":((bytes[5]-0x30)*10)+" cm"); + data.FALL_confirm_threshold = (bytes[6]==0x30?"Disabled":((bytes[6]-0x30)*10)+" seconds"); + data.FALL_reserved = (bytes[7]==0x30?"Disabled":((bytes[6]-0x30)*10)+" min"); + break; + } //switch + } else if (data.length == 11) { // P 1108201365 + data.RSS_SIMPLE_Start = ((bytes[3]-0x30)*100+(bytes[4]-0x30)*10)+" cm"; + data.RSS_SIMPLE_Length = ((bytes[5]-0x30)*100+(bytes[6]-0x030)*10)+" cm"; + data.RSS_SIMPLE_Threshold = ((bytes[7]-0x30)*1000+(bytes[8]-0x30)*100)+" ml"; + data.RSS_SIMPLE_Gain = ((bytes[9]-0x30)*10+(bytes[10]-0x30))+" %"; + } else if (data.length == 33) { // P 11 + data.RSS_FULL_Start = ((bytes[3]-0x30)*100+(bytes[4]-0x30)*10)+" cm"; + data.RSS_FULL_Length = ((bytes[5]-0x30)*100+(bytes[6]-0x30)*10)+" cm"; + data.RSS_FULL_Threshold= ((bytes[7]-0x30)*1000+(bytes[8]-0x30)*100)+" ml"; + data.RSS_FULL_Gain = ((bytes[9]-0x30)*10+(bytes[10]-0x30))+" %"; + data.RSS_FULL_Profile = (bytes[11]-0x30); + data.RSS_FULL_Rate_Tracking = ((bytes[12]-0x30)*10+(bytes[13]-0x30)); + data.RSS_FULL_Rate_Presence = ((bytes[14]-0x30)*10+(bytes[15]-0x30)); + data.RSS_FULL_HWAAS = ((bytes[16]-0x30)*10+(bytes[17]-0x30)); + data.RSS_FULL_Num_Removed_PC = (bytes[18]-0x30); + data.RSS_FULL_Inter_Deviation_Time_Const_in_Sec = ((bytes[19]-0x30)+(bytes[20]-0x30)*0.1); + data.RSS_FULL_Inter_Fast_Cut_Off = ((bytes[21]-0x30)*10+(bytes[22]-0x30)); + data.RSS_FULL_Inter_Slow_Cut_Off = ((bytes[23]-0x30)*0.1+(bytes[24]-0x30)*0.001); + data.RSS_FULL_Inter_Time_Const_in_Sec = ((bytes[25]-0x30)*10+(bytes[26]-0x30)); + data.RSS_FULL_Inter_Weight = ((bytes[27]-0x30)+(bytes[28]-0x30)*0.1); + data.RSS_FULL_Output_Time_Const_in_Sec = ((bytes[29]-0x30)+(bytes[30]-0x30)*0.1); + data.RSS_FULL_DownSampling_factor = (bytes[31]-0x30); + data.RSS_FULL_Power_Saving_mode = (bytes[32]-0x30); + + + } + } + return {"Yunhorn_SmarToilets_data": data }; + } +} \ No newline at end of file