RM2_1 #2

Merged
sundp merged 208 commits from RM2_1 into master 2024-09-13 09:16:14 +08:00
19 changed files with 444 additions and 320 deletions
Showing only changes of commit 53b68a810a - Show all commits

View File

@ -172,9 +172,9 @@ function Decode(fPort, data, variables) {
// For NC(Normal Closed states // For NC(Normal Closed states
//data.Sensor1_Door_Contact_Open = bytes[3]===1?"Door Closed":"Door Open"; //data.Sensor1_Door_Contact_Open = bytes[3]===1?"Door Closed":"Door Open";
data.Sensor2_Emergency_Button = bytes[4] === 0 ? "Alarm Push Down" : "No Alarm, Released";
data.Sensor3_Motion_Detected = bytes[5] === 0 ? "No Motion" : "Motion Detected";
data.Sensor2_Motion_Detected = bytes[4] === 0 ? "No Motion" : "Motion Detected";
data.Sensor3_Emergency_Button = bytes[5] === 0 ? "Alarm Push Down" : "No Alarm, Released";
data.length = bytes.length data.length = bytes.length
if (data.length === 9) { if (data.length === 9) {
data.Over_stay_state = (bytes[6] === 0) ? "False" : "True"; data.Over_stay_state = (bytes[6] === 0) ? "False" : "True";
@ -219,19 +219,26 @@ function Decode(fPort, data, variables) {
data.Fall_Down_Speed_in_m_per_s = (bytes[18]); data.Fall_Down_Speed_in_m_per_s = (bytes[18]);
data.Fall_Down_Gravity_in_g = (bytes[19]); data.Fall_Down_Gravity_in_g = (bytes[19]);
data.SOS_PushDown_Stamp = (bytes[20] << 24 | bytes[21] << 16 | bytes[22] << 8 | bytes[23]); data.SOS_PushDown_Stamp = (bytes[20] << 24 | bytes[21] << 16 | bytes[22] << 8 | bytes[23]);
var sos_start = new Date(1000 * data.SOS_PushDown_Stamp); if (data.SOS_PushDown_Stamp != 0) {
var sos_start = new Date(1000 * data.SOS_PushDown_Stamp);
data.SOS_PushDown_Time = "[" + sos_start.getDate() + "." + (sos_start.getMonth() + 1) + "." + (sos_start.getFullYear()) + "] " + sos_start.getHours() + ":" + sos_start.getMinutes() + ":" + sos_start.getSeconds();
} else data.SOS_PushDown_Time = "N/A";
data.SOS_ReleaseUP_Stamp = (bytes[24] << 24 | bytes[25] << 16 | bytes[26] << 8 | bytes[27]); data.SOS_ReleaseUP_Stamp = (bytes[24] << 24 | bytes[25] << 16 | bytes[26] << 8 | bytes[27]);
var sos_stop = new Date(1000 * data.SOS_ReleaseUP_Stamp); if (data.SOS_ReleaseUP_Stamp != 0) {
data.SOS_PushDown_Time = "[" + sos_start.getDate() + "." + (sos_start.getMonth() + 1) + "." + (sos_start.getFullYear()) + "] " + sos_start.getHours() + ":" + sos_start.getMinutes() + ":" + sos_start.getSeconds(); var sos_stop = new Date(1000 * data.SOS_ReleaseUP_Stamp);
data.SOS_ReleaseUP_Time = "[" + sos_stop.getDate() + "." + (sos_stop.getMonth() + 1) + "." + (sos_stop.getFullYear()) + "] " + sos_stop.getHours() + ":" + sos_stop.getMinutes() + ":" + sos_stop.getSeconds(); data.SOS_ReleaseUP_Time = "[" + sos_stop.getDate() + "." + (sos_stop.getMonth() + 1) + "." + (sos_stop.getFullYear()) + "] " + sos_stop.getHours() + ":" + sos_stop.getMinutes() + ":" + sos_stop.getSeconds();
} else data.SOS_ReleaseUP_Time = "N/A";
data.Fall_Down_Stamp = (bytes[28] << 24 | bytes[29] << 16 | bytes[30] << 8 | bytes[31]); data.Fall_Down_Stamp = (bytes[28] << 24 | bytes[29] << 16 | bytes[30] << 8 | bytes[31]);
var fall_start = new Date(1000 * data.Fall_Down_Stamp); if (data.Fall_Down_Stamp != 0) {
var fall_start = new Date(1000 * data.Fall_Down_Stamp);
data.Fall_Down_Time = "[" + fall_start.getDate() + "." + (fall_start.getMonth() + 1) + "." + (fall_start.getFullYear()) + "] " + fall_start.getHours() + ":" + fall_start.getMinutes() + ":" + fall_start.getSeconds();
} else data.Fall_RiseUp_Stamp = "N/A";
data.Fall_RiseUp_Stamp = (bytes[32] << 24 | bytes[33] << 16 | bytes[34] << 8 | bytes[35]); data.Fall_RiseUp_Stamp = (bytes[32] << 24 | bytes[33] << 16 | bytes[34] << 8 | bytes[35]);
var fall_stop = new Date(1000 * data.Fall_RiseUp_Stamp); if (data.Fall_RiseUp_Stamp != 0) {
data.Fall_Down_Time = "[" + fall_start.getDate() + "." + (fall_start.getMonth() + 1) + "." + (fall_start.getFullYear()) + "] " + fall_start.getHours() + ":" + fall_start.getMinutes() + ":" + fall_start.getSeconds(); var fall_stop = new Date(1000 * data.Fall_RiseUp_Stamp);
data.Fall_RiseUp_Time = "[" + fall_stop.getDate() + "." + (fall_stop.getMonth() + 1) + "." + (fall_stop.getFullYear()) + "] " + fall_stop.getHours() + ":" + fall_stop.getMinutes() + ":" + fall_stop.getSeconds(); data.Fall_RiseUp_Time = "[" + fall_stop.getDate() + "." + (fall_stop.getMonth() + 1) + "." + (fall_stop.getFullYear()) + "] " + fall_stop.getHours() + ":" + fall_stop.getMinutes() + ":" + fall_stop.getSeconds();
} else data.Fall_RiseUp_Time = "N/A";
} }
return { "Yunhorn_SmarToilets_data": data }; return { "Yunhorn_SmarToilets_data": data };
} }

View File

@ -99,9 +99,22 @@ void Error_Handler(void);
#define HALL2_GPIO_Port GPIOA #define HALL2_GPIO_Port GPIOA
#define HALL2_EXTI_IRQn EXTI1_IRQn #define HALL2_EXTI_IRQn EXTI1_IRQn
#define HALL1_STATE HAL_GPIO_ReadPin(HALL1_GPIO_Port, HALL1_Pin) #define HALL3_Pin GPIO_PIN_9 // ALARM MUTE PIN
#define HALL2_STATE HAL_GPIO_ReadPin(HALL2_GPIO_Port, HALL2_Pin) #define HALL3_GPIO_Port GPIOA
#define HALL3_EXTI_IRQn EXTI9_5_IRQn
#define HALL4_Pin GPIO_PIN_10 // ALARM RESET PIN
#define HALL4_GPIO_Port GPIOA
#define HALL4_EXTI_IRQn EXTI15_10_IRQn
#define ALARM_MUTE_Pin HALL3_Pin // ALARM MUTE BUTTON
#define ALARM_RESET_Pin HALL4_Pin // ALARM RESET BUTTON
#define HALL1_STATE HAL_GPIO_ReadPin(HALL1_GPIO_Port, HALL1_Pin) //DOOR CONTACT
#define HALL2_STATE HAL_GPIO_ReadPin(HALL2_GPIO_Port, HALL2_Pin) //SOS BUTTON
#define HALL3_STATE HAL_GPIO_ReadPin(HALL3_GPIO_Port, HALL3_Pin) //ALARM MUTE BUTTON
#define HALL4_STATE HAL_GPIO_ReadPin(HALL4_GPIO_Port, HALL4_Pin) //ALARM RESET BUTTON
#else #else
#define BUT1_Pin GPIO_PIN_0 #define BUT1_Pin GPIO_PIN_0

View File

@ -34,6 +34,10 @@ extern "C" {
#define STS_Status_Door_Open (1) //Normal Close NC:Close **2024-07-15 changed #define STS_Status_Door_Open (1) //Normal Close NC:Close **2024-07-15 changed
#define STS_Status_SOS_Pushdown (0) //Normal Open NO:Open #define STS_Status_SOS_Pushdown (0) //Normal Open NO:Open
#define STS_Status_SOS_Release (1) //Normal Open NO:Close #define STS_Status_SOS_Release (1) //Normal Open NO:Close
#define STS_Status_Alarm_Mute_Pushdown (0) //Normal Open NO:Open
#define STS_Status_Alarm_Mute_Release (1) //Normal Open NO:Close#
#define STS_Status_Alarm_Reset_Pushdown (0) //Normal Open NO:Open
#define STS_Status_Alarm_Reset_Release (1) //Normal Open NO:Close#
enum sts_lamp_color { enum sts_lamp_color {
STS_DARK = 0, //灭0, Code 0x00 STS_DARK = 0, //灭0, Code 0x00

View File

@ -50,7 +50,7 @@ extern "C" {
* #define VLEVEL_M 2 functional traces * #define VLEVEL_M 2 functional traces
* #define VLEVEL_H 3 all traces * #define VLEVEL_H 3 all traces
*/ */
#define VERBOSE_LEVEL VLEVEL_L #define VERBOSE_LEVEL VLEVEL_H
/** /**
* @brief Enable trace logs * @brief Enable trace logs

View File

@ -238,8 +238,8 @@
#define IS_STS_RS485_OUTPUT_ENABLE STS_IOC_OUT_1 #define IS_STS_RS485_OUTPUT_ENABLE STS_IOC_OUT_1
#define MajorVer 24U #define MajorVer 24U
#define MinorVer 07U #define MinorVer 8U
#define SubMinorVer 26U #define SubMinorVer 1U
#define FirmwareVersion 3U #define FirmwareVersion 3U
#define YUNHORN_STS_MAX_NVM_CFG_SIZE 64U #define YUNHORN_STS_MAX_NVM_CFG_SIZE 64U
@ -265,8 +265,8 @@
#define sts_sendhtbtport (YUNHORN_STS_O6_LORA_APP_HTBT_PORT) #define sts_sendhtbtport (YUNHORN_STS_O6_LORA_APP_HTBT_PORT)
#endif #endif
#ifdef STS_O7 #ifdef STS_O7
#define sts_senddataport (YUNHORN_STS_O6_LORA_APP_DATA_PORT) #define sts_senddataport (YUNHORN_STS_O7_LORA_APP_DATA_PORT)
#define sts_sendhtbtport (YUNHORN_STS_O6_LORA_APP_HTBT_PORT) #define sts_sendhtbtport (YUNHORN_STS_O7_LORA_APP_HTBT_PORT)
#endif #endif
#if defined(STS_O6)||defined(STS_O7) #if defined(STS_O6)||defined(STS_O7)
#define sts_appctrlport (YUNHORN_STS_O7_USER_APP_CTRL_PORT) #define sts_appctrlport (YUNHORN_STS_O7_USER_APP_CTRL_PORT)
@ -429,8 +429,8 @@
* Address range 0800 0000H - 0803 FFFFH Size: 0x0004 0000 * Address range 0800 0000H - 0803 FFFFH Size: 0x0004 0000
*/ */
#define FLASH_USER_START_ADDR ((void *) 0x0803F800U) // Last 2kB of flash #define FLASH_USER_START_ADDR ((void *) 0x0803F800UL) // Last 2kB of flash
#define FLASH_USER_CONFIG_SIZE ((void *) 0x000007FFU) //0x400=1KB=1024 #define FLASH_USER_CONFIG_SIZE ((void *) 0x000007FFUL) //0x400=1KB=1024
#define FLASH_USER_END_ADDR (FLASH_USER_START_ADDR + FLASH_USER_CONFIG - 1) #define FLASH_USER_END_ADDR (FLASH_USER_START_ADDR + FLASH_USER_CONFIG - 1)
/* 2KB = 2048 = 0x800 End @ of user Flash area */ /* 2KB = 2048 = 0x800 End @ of user Flash area */

View File

@ -166,7 +166,8 @@ typedef struct STS_OO_SensorStatusDataTypeDef
uint8_t state_sensor1_on_off; /* reedswitch or hall element 0: open, 1: closed */ uint8_t state_sensor1_on_off; /* reedswitch or hall element 0: open, 1: closed */
uint8_t state_sensor2_on_off; /* reedswitch or hall element 0: open, 1: closed */ uint8_t state_sensor2_on_off; /* reedswitch or hall element 0: open, 1: closed */
uint8_t state_sensor3_on_off; /* motion RSS, pcr_sensor_on_off; 1: occupancy, 0: no occupancy */ uint8_t state_sensor3_on_off; /* motion RSS, pcr_sensor_on_off; 1: occupancy, 0: no occupancy */
uint8_t state_sensor4_on_off; /* reserved_sensor_on_off sensor state */ uint8_t state_sensor4_on_off; /* alarm mute button_on_off sensor state */
uint8_t state_sensor5_on_off; /* alarm reset button_on_off sensor state */
uint16_t rss_presence_distance; // in mm uint16_t rss_presence_distance; // in mm
uint8_t rss_presence_zone[10]; uint8_t rss_presence_zone[10];
uint8_t rss_presence_zone_count[10]; uint8_t rss_presence_zone_count[10];
@ -217,11 +218,21 @@ typedef struct STS_OO_SensorStatusDataTypeDef
uint32_t event_sensor3_unconcious_duration; uint32_t event_sensor3_unconcious_duration;
uint32_t event_sensor4_start_time; /* reserved */ uint32_t event_sensor4_start_time; /* reserved */
uint32_t event_sensor4_start_timestamp;
uint32_t event_sensor4_stop_time; uint32_t event_sensor4_stop_time;
uint32_t event_sensor4_stop_timestamp;
uint32_t event_sensor4_duration; uint32_t event_sensor4_duration;
uint8_t alarm_indictor_mute_state; uint8_t alarm_indictor_mute_state;
uint32_t event_sensor5_start_time; /* reserved */
uint32_t event_sensor5_stop_time;
uint32_t event_sensor5_start_timestamp;
uint32_t event_sensor5_stop_timestamp;
uint32_t event_sensor5_duration;
uint8_t alarm_indictor_reset_state; uint8_t alarm_indictor_reset_state;
} STS_OO_SensorStatusDataTypeDef; } STS_OO_SensorStatusDataTypeDef;
//#endif //#endif
@ -654,7 +665,7 @@ void OnStoreSTSCFGContextRequest(void);
/** /**
* @brief Read config from flash * @brief Read config from flash
*/ */
void OnRestoreSTSCFGContextRequest(uint8_t *cfg_in_nvm); void OnRestoreSTSCFGContextRequest(void *cfg_in_nvm);
void STS_REBOOT_CONFIG_Init(void); void STS_REBOOT_CONFIG_Init(void);
@ -679,10 +690,12 @@ void STS_YunhornSTSEventP8_Process(void);
void OnSensor1StateChanged(void); void OnSensor1StateChanged(void);
void OnSensor2StateChanged(void); void OnSensor2StateChanged(void);
void OnSensor3StateChanged(void); void OnSensor3StateChanged(void);
void OnSensor3AStateChanged(void);
void OnSensor3BStateChanged(void);
void OnSensor3CStateChanged(void);
void OnSensor4StateChanged(void); void OnSensor4StateChanged(void);
void OnSensorRSS3AStateChanged(void);
void OnSensorRSS3BStateChanged(void);
void OnSensorRSS3CStateChanged(void);
uint32_t STS_Get_Date_Time_Stamp(void);//uint32_t *time_stamp, uint8_t *datetimestamp); uint32_t STS_Get_Date_Time_Stamp(void);//uint32_t *time_stamp, uint8_t *datetimestamp);
void STS_SENSOR_MEMS_Reset(uint8_t cnt); void STS_SENSOR_MEMS_Reset(uint8_t cnt);
@ -732,7 +745,7 @@ void STS_MOTION_SENSOR_Enable_Wake_Up_Detection(void);
void STS_MOTION_SENSOR_Initialization(void); void STS_MOTION_SENSOR_Initialization(void);
*/ */
void USER_APP_AUTO_RESPONDER_Parse(char *tlv_buf, size_t tlv_buf_size); void USER_APP_AUTO_RESPONDER_Parse(char *tlv_buf, uint8_t tlv_buf_size);
void STS_SENSOR_Function_Test_Process(void); void STS_SENSOR_Function_Test_Process(void);
void STS_SENSOR_Distance_Test_Process(void); void STS_SENSOR_Distance_Test_Process(void);
void STS_PRESENCE_SENSOR_Function_Test_Process(uint8_t *self_test_result, uint8_t count); void STS_PRESENCE_SENSOR_Function_Test_Process(uint8_t *self_test_result, uint8_t count);

View File

@ -52,15 +52,15 @@ void MX_GPIO_Init(void)
/*Configure GPIO pin Output Level */ /*Configure GPIO pin Output Level */
//HAL_GPIO_WritePin(GPIOB, LED1_Pin|LED2_Pin|PROB2_Pin|PROB1_Pin|LED3_Pin, GPIO_PIN_RESET); //HAL_GPIO_WritePin(GPIOB, LED1_Pin|LED2_Pin|PROB2_Pin|PROB1_Pin|LED3_Pin, GPIO_PIN_RESET);
HAL_GPIO_WritePin(GPIOB, LED1_Pin, GPIO_PIN_RESET); HAL_GPIO_WritePin(LED1_GPIO_Port, LED1_Pin, GPIO_PIN_RESET);
HAL_GPIO_WritePin(GPIOA, A111_CS_N_Pin, GPIO_PIN_RESET); HAL_GPIO_WritePin(A111_CS_N_GPIO_Port, A111_CS_N_Pin, GPIO_PIN_RESET);
/*Configure GPIO pins : PBPin PBPin PBPin */ /*Configure GPIO pins : PBPin PBPin PBPin */
GPIO_InitStruct.Pin = LED1_Pin; //|LED2_Pin|LED3_Pin; GPIO_InitStruct.Pin = LED1_Pin; //|LED2_Pin|LED3_Pin;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Pull = GPIO_PULLDOWN;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); HAL_GPIO_Init(LED1_GPIO_Port, &GPIO_InitStruct);
GPIO_InitStruct.Pin = MEMS_POWER_Pin; GPIO_InitStruct.Pin = MEMS_POWER_Pin;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
@ -88,11 +88,11 @@ void MX_GPIO_Init(void)
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
HAL_GPIO_Init(A111_SENSOR_INTERRUPT_GPIO_Port, &GPIO_InitStruct); HAL_GPIO_Init(A111_SENSOR_INTERRUPT_GPIO_Port, &GPIO_InitStruct);
#ifdef STS_O7 #if defined(STS_O7)||defined(STS_O6)||defined(STS_O2)
GPIO_InitStruct.Pin = HALL1_Pin|HALL2_Pin; GPIO_InitStruct.Pin = HALL1_Pin|HALL2_Pin|HALL3_Pin|HALL4_Pin;
GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING_FALLING; GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING_FALLING;
GPIO_InitStruct.Pull = GPIO_PULLUP; GPIO_InitStruct.Pull = GPIO_PULLUP;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
#else #else
/*Configure GPIO pins : PAPin PAPin */ /*Configure GPIO pins : PAPin PAPin */
@ -116,13 +116,19 @@ void MX_GPIO_Init(void)
HAL_GPIO_Init(BUT3_GPIO_Port, &GPIO_InitStruct); HAL_GPIO_Init(BUT3_GPIO_Port, &GPIO_InitStruct);
#endif #endif
#ifdef STS_O7 #if defined(STS_O7)||defined(STS_O6)||defined(STS_O2)
HAL_NVIC_SetPriority(HALL1_EXTI_IRQn, 15, 0); HAL_NVIC_SetPriority(HALL1_EXTI_IRQn, 15, 0);
HAL_NVIC_EnableIRQ(HALL1_EXTI_IRQn); HAL_NVIC_EnableIRQ(HALL1_EXTI_IRQn);
HAL_NVIC_SetPriority(HALL2_EXTI_IRQn, 15, 0); HAL_NVIC_SetPriority(HALL2_EXTI_IRQn, 15, 0);
HAL_NVIC_EnableIRQ(HALL2_EXTI_IRQn); HAL_NVIC_EnableIRQ(HALL2_EXTI_IRQn);
HAL_NVIC_SetPriority(HALL3_EXTI_IRQn, 15, 0);
HAL_NVIC_EnableIRQ(HALL3_EXTI_IRQn);
HAL_NVIC_SetPriority(HALL4_EXTI_IRQn, 15, 0);
HAL_NVIC_EnableIRQ(HALL4_EXTI_IRQn);
HAL_NVIC_SetPriority(A111_SENSOR_INTERRUPT_EXTI_IRQn, 0, 0); HAL_NVIC_SetPriority(A111_SENSOR_INTERRUPT_EXTI_IRQn, 0, 0);
HAL_NVIC_EnableIRQ(A111_SENSOR_INTERRUPT_EXTI_IRQn); HAL_NVIC_EnableIRQ(A111_SENSOR_INTERRUPT_EXTI_IRQn);

View File

@ -25,16 +25,10 @@
#include "usart.h" #include "usart.h"
/* Private includes ----------------------------------------------------------*/ /* Private includes ----------------------------------------------------------*/
/* USER CODE BEGIN Includes */ /* USER CODE BEGIN Includes */
#include "yunhorn_sts_sensors.h"
#include "sts_cmox_hmac_sha.h"
#include "spi.h" #include "spi.h"
#include "dma.h" #include "dma.h"
#include "tim.h" #include "tim.h"
#include "sts_lamp_bar.h"
#include "sys_app.h" #include "sys_app.h"
#include "acc_hal_integration.h"
#include "acc_detector_presence.h"
/* USER CODE END Includes */ /* USER CODE END Includes */
/* Private typedef -----------------------------------------------------------*/ /* Private typedef -----------------------------------------------------------*/
@ -99,15 +93,11 @@ int main(void)
/* USER CODE END SysInit */ /* USER CODE END SysInit */
/* Initialize all configured peripherals */ /* Initialize all configured peripherals */
LED1_ON;
MX_LoRaWAN_Init(); MX_LoRaWAN_Init();
STS_Lamp_Bar_Self_Test_Simple();
/* USER CODE BEGIN 2 */ /* USER CODE BEGIN 2 */
/* USER CODE END 2 */ /* USER CODE END 2 */
/* Infinite loop */ /* Infinite loop */

View File

@ -231,7 +231,7 @@ void EXTI0_IRQHandler(void)
/* USER CODE BEGIN EXTI0_IRQn 0 */ /* USER CODE BEGIN EXTI0_IRQn 0 */
/* USER CODE END EXTI0_IRQn 0 */ /* USER CODE END EXTI0_IRQn 0 */
#ifdef STS_O7 #if defined(STS_O7)||defined(STS_O6)||defined(STS_O2)
//sts_reed_hall_1_changed = 1; //sts_reed_hall_1_changed = 1;
HAL_GPIO_EXTI_IRQHandler(HALL1_Pin); HAL_GPIO_EXTI_IRQHandler(HALL1_Pin);
#else #else
@ -251,7 +251,7 @@ void EXTI1_IRQHandler(void)
/* USER CODE BEGIN EXTI1_IRQn 0 */ /* USER CODE BEGIN EXTI1_IRQn 0 */
/* USER CODE END EXTI1_IRQn 0 */ /* USER CODE END EXTI1_IRQn 0 */
#ifdef STS_O7 #if defined(STS_O7)||defined(STS_O6)||defined(STS_O2)
//sts_reed_hall_2_changed = 1; //sts_reed_hall_2_changed = 1;
HAL_GPIO_EXTI_IRQHandler(HALL2_Pin); HAL_GPIO_EXTI_IRQHandler(HALL2_Pin);
#else #else
@ -358,20 +358,41 @@ void DMA1_Channel7_IRQHandler(void)
/** /**
* @brief This function handles EXTI Lines [9:5] Interrupt. * @brief This function handles EXTI Lines [9:5] Interrupt.
*/ */
#if 1
void EXTI9_5_IRQHandler(void) void EXTI9_5_IRQHandler(void)
{ {
/* USER CODE BEGIN EXTI9_5_IRQn 0 */ /* USER CODE BEGIN EXTI9_5_IRQn 0 */
/* USER CODE END EXTI9_5_IRQn 0 */ /* USER CODE END EXTI9_5_IRQn 0 */
//HAL_GPIO_EXTI_IRQHandler(BUT3_Pin);
HAL_GPIO_EXTI_IRQHandler(HALL3_Pin); // GPIOA -9
/* USER CODE BEGIN EXTI9_5_IRQn 1 */ /* USER CODE BEGIN EXTI9_5_IRQn 1 */
#ifdef RM2 #ifdef RM2
HAL_GPIO_EXTI_IRQHandler(A111_SENSOR_INTERRUPT_Pin); HAL_GPIO_EXTI_IRQHandler(A111_SENSOR_INTERRUPT_Pin);
#endif #endif
/* USER CODE END EXTI9_5_IRQn 1 */ /* USER CODE END EXTI9_5_IRQn 1 */
} }
/**
* @brief This function handles EXTI Lines [15:10] Interrupt.
*/
void EXTI15_10_IRQHandler(void)
{
/* USER CODE BEGIN EXTI9_5_IRQn 0 */
/* USER CODE END EXTI9_5_IRQn 0 */
HAL_GPIO_EXTI_IRQHandler(HALL4_Pin); // GPIOA -10
/* USER CODE BEGIN EXTI9_5_IRQn 1 */
#ifdef RM2
HAL_GPIO_EXTI_IRQHandler(A111_SENSOR_INTERRUPT_Pin);
#endif #endif
/* USER CODE END EXTI9_5_IRQn 1 */
}
/** /**
* @brief This function handles SPI1 Interrupt. * @brief This function handles SPI1 Interrupt.
*/ */

View File

@ -63,6 +63,7 @@ extern volatile uint8_t sts_occupancy_status;
extern volatile uint8_t sts_reed_hall_result, sts_emergency_button_pushed; // inital 0 = close extern volatile uint8_t sts_reed_hall_result, sts_emergency_button_pushed; // inital 0 = close
volatile uint8_t sts_hall1_read=STS_Status_Door_Open,sts_hall2_read=STS_Status_SOS_Release; // Above hall1_read == reed_hall_result, hall2_read == emergency_button volatile uint8_t sts_hall1_read=STS_Status_Door_Open,sts_hall2_read=STS_Status_SOS_Release; // Above hall1_read == reed_hall_result, hall2_read == emergency_button
volatile uint8_t sts_hall3_read=STS_Status_Alarm_Mute_Release,sts_hall4_read=STS_Status_Alarm_Reset_Release;
extern volatile uint8_t sts_reed_hall_1_result, sts_reed_hall_2_result; extern volatile uint8_t sts_reed_hall_1_result, sts_reed_hall_2_result;
extern volatile uint8_t sts_tof_result_changed_flag; extern volatile uint8_t sts_tof_result_changed_flag;
@ -73,7 +74,7 @@ extern volatile uint8_t sts_rss_result;
extern volatile uint8_t sts_rss_2nd_result; //2nd RSS sensor status extern volatile uint8_t sts_rss_2nd_result; //2nd RSS sensor status
extern volatile uint8_t sts_tof_result; extern volatile uint8_t sts_tof_result;
//extern volatile uint8_t last_sts_reed_hall_result = 2; //Initial state, not 0, not 1
volatile uint8_t last_lamp_bar_color=STS_GREEN; volatile uint8_t last_lamp_bar_color=STS_GREEN;
extern volatile uint8_t sts_presence_fall_detection; extern volatile uint8_t sts_presence_fall_detection;
extern volatile uint8_t sts_fall_rising_detected_result; extern volatile uint8_t sts_fall_rising_detected_result;
@ -126,12 +127,11 @@ void STS_Lamp_Bar_Scoller(uint8_t color, uint8_t lum_level)
for(uint8_t i = 0; i<STS_LAMP_BAR_LED_NUM; i++) for(uint8_t i = 0; i<STS_LAMP_BAR_LED_NUM; i++)
{ {
HAL_Delay(20); //MAKE THIS LESS THAN 10 NOT TO BLOCK JOIN THE LORAWAN HAL_Delay(20); //MAKE THIS LESS THAN 10 NOT TO BLOCK JOIN THE LORAWAN
//UTIL_MEM_set_8((void*)rgb_buf.GRB,ZERO_PULSE,(WS2812B_DATA_LEN+LED_DATA_LEN));
STS_WS2812B_Set_RGB(color_rgb[color][0]*lum_level,color_rgb[color][1]*lum_level, color_rgb[color][2]*lum_level, i); STS_WS2812B_Set_RGB(color_rgb[color][0]*lum_level,color_rgb[color][1]*lum_level, color_rgb[color][2]*lum_level, i);
STS_WS2812B_Refresh(); STS_WS2812B_Refresh();
} }
HAL_Delay(10);
} }
@ -216,7 +216,7 @@ void STS_Lamp_Bar_Self_Test_Simple(void)
lum_level = 10; lum_level = 10;
do { do {
STS_Lamp_Bar_Set_STS_RGB_Color(color, lum_level); STS_Lamp_Bar_Set_STS_RGB_Color(color, lum_level);
HAL_Delay(50); HAL_Delay(20);
lum_level += 20; lum_level += 20;
} while (lum_level < 99); } while (lum_level < 99);
STS_Lamp_Bar_Set_Dark(); STS_Lamp_Bar_Set_Dark();
@ -233,11 +233,12 @@ void STS_Lamp_Bar_Self_Test(void)
STS_Lamp_Bar_Self_Test_Simple(); STS_Lamp_Bar_Self_Test_Simple();
APP_LOG(TS_OFF, VLEVEL_H, "\r\n [#2] Scoller Testing\r\n"); APP_LOG(TS_OFF, VLEVEL_H, "\r\n [#2] Scoller Testing\r\n");
lum_level=50;
for (color = STS_GREEN; color < STS_COLOR_MAX; color++) for (color = STS_GREEN; color < STS_COLOR_MAX; color++)
{ {
STS_Lamp_Bar_Scoller(color, lum_level); STS_Lamp_Bar_Scoller(color, lum_level);
} }
STS_Lamp_Bar_Set_Dark();
APP_LOG(TS_OFF, VLEVEL_H, "\r\n [##] YunHorn STS Indicative Lamp Self Test Finished\r\n"); APP_LOG(TS_OFF, VLEVEL_H, "\r\n [##] YunHorn STS Indicative Lamp Self Test Finished\r\n");
if ((sts_work_mode == STS_WIRED_MODE) ) if ((sts_work_mode == STS_WIRED_MODE) )
@ -247,7 +248,7 @@ void STS_Lamp_Bar_Self_Test(void)
{ {
STS_Lamp_Bar_Set_STS_RGB_Color(STS_GREEN, lum_level); STS_Lamp_Bar_Set_STS_RGB_Color(STS_GREEN, lum_level);
} }
STS_Lamp_Bar_Set_Dark();
} }

View File

@ -117,7 +117,13 @@ void SystemApp_Init(void)
/*Initialize the Sensors */ /*Initialize the Sensors */
EnvSensors_Init(); EnvSensors_Init();
// LED1 Flash 3 times for normal power on
LED1_TOGGLE; HAL_Delay(500);
LED1_TOGGLE; HAL_Delay(500);
LED1_TOGGLE; HAL_Delay(500);
LED1_TOGGLE; HAL_Delay(500);
LED1_TOGGLE; HAL_Delay(500);
LED1_TOGGLE;
/*Init low power manager*/ /*Init low power manager*/
UTIL_LPM_Init(); UTIL_LPM_Init();
/* Disable Stand-by mode */ /* Disable Stand-by mode */

View File

@ -53,7 +53,9 @@
#endif #endif
//volatile distance_measure_cfg_t distance_cfg={1.5, 2.0, 1, 63, 2, 10, 0.5, 1.3, 0.2}; //volatile distance_measure_cfg_t distance_cfg={1.5, 2.0, 1, 63, 2, 10, 0.5, 1.3, 0.2};
volatile distance_measure_cfg_t distance_cfg={1.5, 2.0, 2, 63, 2, 10, 0.5, 1.3, 0.2}; // SPARK FUN EXAMPLE
// GOOD --- volatile distance_measure_cfg_t distance_cfg={0.4, 3.5, 4, 63, 0, 10, 0.5, 1.3, 0.2};
volatile distance_measure_cfg_t distance_cfg={0.8, 3.5, 4, 63, 2, 10, 0.5, 1.3, 0.2};
//volatile distance_measure_cfg_t distance_cfg={1.5, 3.3, 2, 63, 4, 10, 0.8182f, 0.4, 0.2}; //volatile distance_measure_cfg_t distance_cfg={1.5, 3.3, 2, 63, 4, 10, 0.8182f, 0.4, 0.2};
extern float sts_distance_rss_distance, sts_sensor_install_height; extern float sts_distance_rss_distance, sts_sensor_install_height;
@ -75,7 +77,7 @@ int sts_distance_rss_detector_distance(void)
return EXIT_FAILURE; return EXIT_FAILURE;
} }
acc_rss_override_sensor_id_check_at_creation(true); //acc_rss_override_sensor_id_check_at_creation(true);
acc_detector_distance_configuration_t distance_configuration = acc_detector_distance_configuration_create(); acc_detector_distance_configuration_t distance_configuration = acc_detector_distance_configuration_create();
@ -87,6 +89,7 @@ int sts_distance_rss_detector_distance(void)
} }
sts_distance_rss_update_configuration(distance_configuration); sts_distance_rss_update_configuration(distance_configuration);
acc_detector_distance_handle_t distance_handle = acc_detector_distance_create(distance_configuration); acc_detector_distance_handle_t distance_handle = acc_detector_distance_create(distance_configuration);
if (distance_handle == NULL) if (distance_handle == NULL)
@ -108,8 +111,8 @@ int sts_distance_rss_detector_distance(void)
} }
bool success = true; bool success = true;
const int iterations = 1; //5; const int iterations = 5; //5;
uint16_t number_of_peaks = 10.0f; uint16_t number_of_peaks = 5;
acc_detector_distance_result_t result[number_of_peaks]; acc_detector_distance_result_t result[number_of_peaks];
acc_detector_distance_result_info_t result_info; acc_detector_distance_result_info_t result_info;
float tmp_distance = 0.0f; float tmp_distance = 0.0f;
@ -129,6 +132,7 @@ int sts_distance_rss_detector_distance(void)
} }
sts_distance_rss_distance = (uint16_t)(1000*tmp_distance/result_info.number_of_peaks); sts_distance_rss_distance = (uint16_t)(1000*tmp_distance/result_info.number_of_peaks);
sts_distance_rss_distance /= iterations;
APP_LOG(TS_OFF, VLEVEL_M, "\r\nAverage Distance= %u mm\r\n", (uint16_t)sts_distance_rss_distance); APP_LOG(TS_OFF, VLEVEL_M, "\r\nAverage Distance= %u mm\r\n", (uint16_t)sts_distance_rss_distance);
// ensure it's a valid installation height // ensure it's a valid installation height
@ -169,6 +173,7 @@ static void sts_distance_rss_update_configuration(acc_detector_distance_configur
} }
*/ */
//backup. ... previous setting ----don't delete //backup. ... previous setting ----don't delete
static void sts_distance_rss_update_configuration(acc_detector_distance_configuration_t distance_configuration) static void sts_distance_rss_update_configuration(acc_detector_distance_configuration_t distance_configuration)
{ {
acc_detector_distance_configuration_requested_start_set(distance_configuration, distance_cfg.start_m); acc_detector_distance_configuration_requested_start_set(distance_configuration, distance_cfg.start_m);
@ -185,6 +190,7 @@ static void sts_distance_rss_update_configuration(acc_detector_distance_configur
acc_detector_distance_configuration_record_background_sweeps_set(distance_configuration, 16); acc_detector_distance_configuration_record_background_sweeps_set(distance_configuration, 16);
} }
// //
static void print_distances(acc_detector_distance_result_t *result, uint16_t reflection_count) static void print_distances(acc_detector_distance_result_t *result, uint16_t reflection_count)
{ {

View File

@ -179,6 +179,10 @@ void STS_PRESENCE_RSS_update_default_configuration(acc_detector_presence_configu
acc_detector_presence_configuration_detection_threshold_set(presence_configuration, DEFAULT_DETECTION_THRESHOLD); acc_detector_presence_configuration_detection_threshold_set(presence_configuration, DEFAULT_DETECTION_THRESHOLD);
acc_detector_presence_configuration_start_set(presence_configuration, DEFAULT_START_M); acc_detector_presence_configuration_start_set(presence_configuration, DEFAULT_START_M);
acc_detector_presence_configuration_length_set(presence_configuration, DEFAULT_LENGTH_M); acc_detector_presence_configuration_length_set(presence_configuration, DEFAULT_LENGTH_M);
acc_detector_presence_configuration_filter_parameters_t filter = acc_detector_presence_configuration_filter_parameters_get(presence_configuration);
filter.output_time_const = 0.0f;
acc_detector_presence_configuration_filter_parameters_set(presence_configuration, &filter);
acc_detector_presence_configuration_power_save_mode_set(presence_configuration, DEFAULT_POWER_SAVE_MODE); acc_detector_presence_configuration_power_save_mode_set(presence_configuration, DEFAULT_POWER_SAVE_MODE);
acc_detector_presence_configuration_nbr_removed_pc_set(presence_configuration, DEFAULT_NBR_REMOVED_PC); acc_detector_presence_configuration_nbr_removed_pc_set(presence_configuration, DEFAULT_NBR_REMOVED_PC);
@ -315,7 +319,9 @@ static void print_result(acc_detector_presence_result_t result)
{ {
if (result.presence_detected) if (result.presence_detected)
{ {
uint32_t detected_zone = (uint32_t)((float)(result.presence_distance - DEFAULT_START_M) / (float)DEFAULT_ZONE_LENGTH); //uint32_t detected_zone = (uint32_t)((float)(result.presence_distance - DEFAULT_START_M) / (float)DEFAULT_ZONE_LENGTH);
// 2024-08-05
uint32_t detected_zone = (uint32_t)((float)(result.presence_distance) / (float)DEFAULT_ZONE_LENGTH);
APP_LOG(TS_OFF, VLEVEL_H,"Motion in zone: %u, distance: %d, score: %d\n", (unsigned int)detected_zone, APP_LOG(TS_OFF, VLEVEL_H,"Motion in zone: %u, distance: %d, score: %d\n", (unsigned int)detected_zone,
(int)(result.presence_distance * 1000.0f), (int)(result.presence_distance * 1000.0f),
(int)(result.presence_score * 1000.0f)); (int)(result.presence_score * 1000.0f));
@ -414,15 +420,18 @@ int sts_presence_rss_fall_rise_detection(void)
break; break;
} }
print_result(result); //print_result(result);
if (!result.data_saturated) if (!result.data_saturated)
{ {
if (result.presence_detected) if (result.presence_detected)
{ {
print_result(result);
average_result++; average_result++;
average_distance += result.presence_distance; average_distance += result.presence_distance;
average_score += result.presence_score; average_score += result.presence_score;
detected_zone = (uint16_t)((float)(result.presence_distance - DEFAULT_START_M) / (float)DEFAULT_ZONE_LENGTH); //detected_zone = (uint16_t)((float)(result.presence_distance - DEFAULT_START_M) / (float)DEFAULT_ZONE_LENGTH);
//2024-08-05
detected_zone = (uint16_t)((float)(result.presence_distance) / (float)DEFAULT_ZONE_LENGTH);
motion_in_zone[detected_zone]++; motion_in_zone[detected_zone]++;
// new add 2024-06-18 // new add 2024-06-18
//detected_hs_zone = (uint16_t)((float)(sts_sensor_install_height/1000.0f - (result.presence_distance))/(float)DEFAULT_ZONE_LENGTH); //detected_hs_zone = (uint16_t)((float)(sts_sensor_install_height/1000.0f - (result.presence_distance))/(float)DEFAULT_ZONE_LENGTH);
@ -485,15 +494,18 @@ int sts_presence_rss_fall_rise_detection(void)
break; break;
} }
print_result(result); //print_result(result);
if (!result.data_saturated) if (!result.data_saturated)
{ {
if (result.presence_detected) if (result.presence_detected)
{ {
print_result(result);
average_result++; average_result++;
average_distance += result.presence_distance; average_distance += result.presence_distance;
average_score += result.presence_score; average_score += result.presence_score;
detected_zone = (uint16_t)((float)(result.presence_distance - DEFAULT_START_M) / (float)DEFAULT_ZONE_LENGTH); //detected_zone = (uint16_t)((float)(result.presence_distance - DEFAULT_START_M) / (float)DEFAULT_ZONE_LENGTH);
// 2024-08-05
detected_zone = (uint16_t)((float)(result.presence_distance) / (float)DEFAULT_ZONE_LENGTH);
motion_in_zone[detected_zone]++; motion_in_zone[detected_zone]++;
// new add 2024-06-18 // new add 2024-06-18
@ -526,18 +538,18 @@ int sts_presence_rss_fall_rise_detection(void)
} }
//APP_LOG(TS_OFF, VLEVEL_L,"Second Half, Fall Rise Detection, Motion Count = %u \r\n", (int)motion_count); //APP_LOG(TS_OFF, VLEVEL_L,"Second Half, Fall Rise Detection, Motion Count = %u \r\n", (int)motion_count);
//uint8_t thiscnt= motion_detected_count; uint8_t thiscnt= motion_detected_count;
if (motion_detected_count++ == 10) { if (motion_detected_count++ == 10) {
motion_detected_count=0; motion_detected_count=0;
} else { } else {
OnSensor3CStateChanged(); OnSensorRSS3CStateChanged();
} }
sts_rss_result = (average_result > 3)? 1: 0; sts_rss_result = (average_result > 3)? 1: 0;
if (sts_rss_result) { if (sts_rss_result) {
LED1_ON; LED1_ON;
OnSensor3AStateChanged(); OnSensorRSS3AStateChanged();
} else { } else {
LED1_OFF; LED1_OFF;
@ -550,7 +562,7 @@ int sts_presence_rss_fall_rise_detection(void)
if (sts_fall_rising_detected_result) { if (sts_fall_rising_detected_result) {
LED1_ON; LED1_ON;
OnSensor3BStateChanged(); OnSensorRSS3BStateChanged();
} else { } else {
LED1_OFF; LED1_OFF;
@ -558,7 +570,7 @@ int sts_presence_rss_fall_rise_detection(void)
#ifdef LOG_RSS //#ifdef LOG_RSS
APP_LOG(TS_OFF, VLEVEL_L,"\r\nSensor at Ceiling Height: %4u mm\r\n",(int)sts_sensor_install_height); APP_LOG(TS_OFF, VLEVEL_L,"\r\nSensor at Ceiling Height: %4u mm\r\n",(int)sts_sensor_install_height);
for (uint8_t k=0; k<12; k++) { for (uint8_t k=0; k<12; k++) {
@ -571,7 +583,7 @@ int sts_presence_rss_fall_rise_detection(void)
APP_LOG(TS_OFF, VLEVEL_L,"\r\nMotion Distance Zone: %2u %4s", k, " "); APP_LOG(TS_OFF, VLEVEL_L,"\r\nMotion Distance Zone: %2u %4s", k, " ");
} }
} }
#endif //#endif
average_distance = (1000.0f*average_distance)/average_result; // in meters average_distance = (1000.0f*average_distance)/average_result; // in meters
average_score = (1000.0f*average_score)/average_result; average_score = (1000.0f*average_score)/average_result;
sts_presence_rss_distance = average_distance; sts_presence_rss_distance = average_distance;
@ -697,10 +709,10 @@ void STS_YunhornCheckStandardDeviation(void)
APP_LOG(TS_OFF, VLEVEL_L, "\r\n---Sensor Install Height=%6u-----Distance Average =%6u; Variance = %6u ; Standard =%6u \r\n", APP_LOG(TS_OFF, VLEVEL_L, "\r\n---Sensor Install Height=%6u-----Distance Average =%6u; Variance = %6u ; Standard =%6u \r\n",
(int)sts_sensor_install_height, (int)(average_presence_distance*1000.0f), (int)(variance_presence_distance*1000.0f), (int)(standard_variance_presence_distance*1000.0f)); (int)sts_sensor_install_height, (int)(average_presence_distance*1000.0f), (int)(variance_presence_distance*1000.0f), (int)(standard_variance_presence_distance*1000.0f));
#endif #endif
#ifdef LOG_RSS //#ifdef LOG_RSS
APP_LOG(TS_OFF, VLEVEL_M, "-------------Motion Average =%6u; Variance = %6u ; Standard =%6u \r\n", APP_LOG(TS_OFF, VLEVEL_M, "-------------Motion Average =%6u; Variance = %6u ; Standard =%6u \r\n",
(int)(average_presence_score*1000.0f), (int)(variance_presence_score*1000.0f), (int)(standard_variance_presence_score*1000.0f)); (int)(average_presence_score*1000.0f), (int)(variance_presence_score*1000.0f), (int)(standard_variance_presence_score*1000.0f));
#endif //#endif
#ifdef LOG_RSS #ifdef LOG_RSS
APP_LOG(TS_OFF, VLEVEL_L, "-------------ROC Dist Average =%6u; Variance = %6u ; Standard =%6u \r\n", APP_LOG(TS_OFF, VLEVEL_L, "-------------ROC Dist Average =%6u; Variance = %6u ; Standard =%6u \r\n",
(int)(average_roc_distance), (int)(variance_roc_distance), (int)(standard_variance_roc_distance)); (int)(average_roc_distance), (int)(variance_roc_distance), (int)(standard_variance_roc_distance));

View File

@ -37,44 +37,55 @@
/* USER CODE BEGIN Includes */ /* USER CODE BEGIN Includes */
extern volatile sts_cfg_nvm_t sts_cfg_nvm; extern volatile sts_cfg_nvm_t sts_cfg_nvm;
extern volatile uint8_t sts_ac_code[20]; extern volatile uint8_t sts_ac_code[20];
volatile uint8_t sts_work_mode = STS_UNI_MODE;
#if 0
#if defined(STS_O7)
volatile uint8_t sts_work_mode = STS_UNI_MODE;
#elif defined(STS_O6)
volatile uint8_t sts_work_mode = STS_DUAL_MODE;
#elif defined(STS_O2)
volatile uint8_t sts_work_mode = STS_RSS_MODE;
#endif
#endif
volatile uint8_t sts_service_mask=0; volatile uint8_t sts_service_mask=0;
volatile uint32_t rfac_timer; volatile uint32_t rfac_timer;
volatile uint8_t sensor_data_ready=0; volatile uint8_t sensor_data_ready=0;
volatile STS_PRESENCE_SENSOR_Event_Status_t sts_o7_event_status;
// GPIO reed hall pin
extern volatile uint8_t sts_reed_hall_result; extern volatile uint8_t sts_reed_hall_result;
volatile uint8_t last_sts_reed_hall_result; volatile uint8_t last_sts_reed_hall_result;
extern volatile uint8_t sts_hall1_read,sts_hall2_read, sts_hall3_read, sts_hall4_read;
volatile uint8_t sts_reed_hall_1_result=STS_Status_Door_Open,sts_reed_hall_2_result=STS_Status_SOS_Release, last_sts_reed_hall_1_result=STS_Status_Door_Open, last_sts_reed_hall_2_result=STS_Status_SOS_Release;
volatile uint8_t sts_reed_hall_3_result=STS_Status_Door_Open, last_sts_reed_hall_3_result=STS_Status_Door_Open, sts_reed_hall_4_result=STS_Status_Door_Open, last_sts_reed_hall_4_result=STS_Status_Door_Open;
volatile uint8_t sts_soap_level_state; volatile uint8_t sts_soap_level_state;
// RSS motion and distance
volatile STS_OO_SensorStatusDataTypeDef sts_o7_sensorData; volatile STS_OO_SensorStatusDataTypeDef sts_o7_sensorData;
volatile STS_PRESENCE_SENSOR_Event_Status_t sts_o7_event_status; volatile float sts_distance_rss_distance=0, sts_sensor_install_height=0;//in mm
volatile float sts_distance_rss_distance, sts_sensor_install_height=0;//in mm
extern volatile float sts_presence_rss_distance, sts_presence_rss_score; extern volatile float sts_presence_rss_distance, sts_presence_rss_score;
extern volatile uint8_t sts_hall1_read,sts_hall2_read;
volatile uint8_t sts_reed_hall_1_result=STS_Status_Door_Open,sts_reed_hall_2_result=STS_Status_SOS_Release, last_sts_reed_hall_1_result=STS_Status_Door_Open, last_sts_reed_hall_2_result=STS_Status_SOS_Release;
volatile uint8_t sts_rss_config_updated_flag = 0; volatile uint8_t sts_rss_config_updated_flag = 0;
extern volatile uint8_t mems_int1_detected, link_wakeup, link_sleep;
volatile uint32_t event_start_time=0, event_stop_time=0;
volatile uint32_t event_door_lock_start_time=0,event_door_lock_stop_time=0;
extern volatile uint8_t sts_occupancy_overtime_state; extern volatile uint8_t sts_occupancy_overtime_state;
//extern volatile STS_OO_RSS_SensorTuneDataTypeDef sts_presence_rss_config;
extern volatile sts_cfg_nvm_t sts_cfg_nvm;
extern volatile uint8_t sts_fall_detection_acc_threshold, sts_fall_detection_depth_threshold, sts_occupancy_overtime_threshold_in_10min;
extern volatile uint8_t sts_fall_rising_detected_result_changed_flag;
extern volatile uint8_t last_sts_fall_rising_detected_result;
extern volatile uint16_t sts_motionless_duration_threshold_in_min;
extern volatile uint8_t sts_emergency_button_pushed, sts_rss_2nd_result,sts_tof_result, sts_status_color, sts_lamp_bar_color, sts_service_mask;
extern volatile distance_measure_cfg_t distance_cfg; extern volatile distance_measure_cfg_t distance_cfg;
extern uint8_t sts_fall_rising_detected_result;
extern volatile uint16_t sts_fall_rising_pattern_factor1; extern volatile uint16_t sts_fall_rising_pattern_factor1;
extern volatile uint16_t sts_roc_acc_standard_variance; extern volatile uint16_t sts_roc_acc_standard_variance;
volatile uint32_t last_sts_rss_time_stamp=0;
// RSS fall detection
extern volatile uint8_t sts_fall_detection_acc_threshold, sts_fall_detection_depth_threshold, sts_occupancy_overtime_threshold_in_10min;
extern volatile uint8_t sts_fall_rising_detected_result, sts_fall_rising_detected_result_changed_flag;
extern volatile uint8_t last_sts_fall_rising_detected_result;
extern volatile uint16_t sts_motionless_duration_threshold_in_min;
extern volatile uint8_t sts_status_color, sts_lamp_bar_color;//puColor
extern volatile uint8_t sts_cloud_netcolor; //netColor
extern uint8_t luminance_level; extern uint8_t luminance_level;
SysTime_t mems_event_time; SysTime_t mems_event_time;
volatile uint32_t last_sts_rss_time_stamp=0;
extern volatile uint8_t sts_reed_hall_ext_int;
volatile uint8_t sts_occupancy_status; volatile uint8_t sts_occupancy_status;
volatile uint8_t sts_hall1_changed_flag=0, sts_hall2_changed_flag=0, last_sts_hall1_result=0, last_sts_hall2_result=0; volatile uint8_t sts_hall1_changed_flag=0, sts_hall2_changed_flag=0, last_sts_hall1_result=0, last_sts_hall2_result=0;
volatile uint8_t sts_reed_hall_changed_flag = 0; volatile uint8_t sts_reed_hall_changed_flag = 0;
@ -96,12 +107,7 @@ extern volatile uint8_t detected_hs_zone;
extern volatile STS_OO_RSS_SensorTuneDataTypeDef sts_presence_rss_config; extern volatile STS_OO_RSS_SensorTuneDataTypeDef sts_presence_rss_config;
volatile uint32_t cnt=0; volatile uint32_t cnt=0;
extern volatile distance_measure_cfg_t distance_cfg;
volatile uint8_t sts_work_mode = STS_DUAL_MODE;
extern uint8_t luminance_level;
extern volatile uint8_t sts_status_color;
extern volatile uint8_t sts_lamp_bar_color; //puColor
extern volatile uint8_t sts_cloud_netcolor; //netColor
volatile uint8_t sts_tof_result_changed_flag = 0; volatile uint8_t sts_tof_result_changed_flag = 0;
@ -222,6 +228,7 @@ void STS_YunhornSTSEventRFAC_Process(void)
void STS_YunhornSTSEventP1_Process(void) void STS_YunhornSTSEventP1_Process(void)
{ {
sts_reed_hall_1_result = HALL1_STATE; //sts_hall1_read; sts_reed_hall_1_result = HALL1_STATE; //sts_hall1_read;
if (sts_reed_hall_1_result != last_sts_reed_hall_1_result) if (sts_reed_hall_1_result != last_sts_reed_hall_1_result)
{ {
@ -236,6 +243,12 @@ void STS_YunhornSTSEventP1_Process(void)
} }
last_sts_reed_hall_2_result = sts_reed_hall_2_result; last_sts_reed_hall_2_result = sts_reed_hall_2_result;
sts_reed_hall_3_result = sts_hall3_read;//HALL3_STATE;// sts_hall3_read;
last_sts_reed_hall_3_result = sts_reed_hall_3_result;
sts_reed_hall_4_result = sts_hall4_read;//HALL4_STATE;// sts_hall3_read;
last_sts_reed_hall_4_result = sts_reed_hall_4_result;
STS_Combined_Status_Processing(); STS_Combined_Status_Processing();
} }
@ -274,7 +287,7 @@ void STS_Reed_Hall_Presence_Detection(void)
// HAL_Delay(50); // BOUNCING ELIMIATION // HAL_Delay(50); // BOUNCING ELIMIATION
sts_reed_hall_1_result = (sts_hall1_read==0)?STS_Status_Door_Close:STS_Status_Door_Open; sts_reed_hall_1_result = (sts_hall1_read==0)?STS_Status_Door_Close:STS_Status_Door_Open;
sts_reed_hall_2_result = (sts_hall2_read==0)?STS_Status_Door_Close:STS_Status_Door_Open; sts_reed_hall_2_result = (sts_hall2_read==0)?STS_Status_Door_Close:STS_Status_Door_Open;
sts_reed_hall_3_result = (sts_hall3_read==0)?STS_Status_Door_Close:STS_Status_Door_Open;
//sts_reed_hall_result = ((STS_Reed_Hall_State)&STS_Status_Door_Open); //sts_reed_hall_result = ((STS_Reed_Hall_State)&STS_Status_Door_Open);
@ -282,7 +295,7 @@ void STS_Reed_Hall_Presence_Detection(void)
sts_reed_hall_changed_flag = 0; sts_reed_hall_changed_flag = 0;
sts_reed_hall_ext_int = 0;
} }
@ -502,11 +515,13 @@ void STS_Combined_Status_Processing(void)
break; break;
case STS_UNI_MODE: //FOR STS-O7 case STS_UNI_MODE: //FOR STS-O7
if ((sts_rss_result == STS_RESULT_NO_MOTION) && (sts_reed_hall_1_result == STS_Status_Door_Open )&& (sts_reed_hall_2_result == STS_Status_SOS_Release )) if ((sts_rss_result == STS_RESULT_NO_MOTION) && (sts_reed_hall_1_result == STS_Status_Door_Open )&& (sts_reed_hall_2_result == STS_Status_SOS_Release )
&& (sts_reed_hall_3_result == STS_Status_Alarm_Mute_Release )&& (sts_reed_hall_4_result == STS_Status_Alarm_Reset_Release ))
{ {
sts_status_color = STS_GREEN; sts_status_color = STS_GREEN;
} else if ((sts_rss_result == STS_RESULT_MOTION) || (sts_reed_hall_1_result == STS_Status_Door_Close )||(sts_reed_hall_2_result == STS_Status_SOS_Pushdown )) } else if ((sts_rss_result == STS_RESULT_MOTION) || (sts_reed_hall_1_result == STS_Status_Door_Close )||(sts_reed_hall_2_result == STS_Status_SOS_Pushdown )
|| (sts_reed_hall_3_result == STS_Status_Alarm_Mute_Pushdown )|| (sts_reed_hall_4_result == STS_Status_Alarm_Reset_Pushdown ))
{ {
sts_status_color = STS_RED; sts_status_color = STS_RED;
@ -861,13 +876,13 @@ void STS_PRESENCE_SENSOR_Init(void)
sts_o7_sensorData.unconscious_state = 0; sts_o7_sensorData.unconscious_state = 0;
sts_o7_sensorData.unconscious_duration = 0; sts_o7_sensorData.unconscious_duration = 0;
PME_ON; //PME_ON;
STS_PRESENCE_SENSOR_REEDSWITCH_HALL_Init(); //STS_PRESENCE_SENSOR_REEDSWITCH_HALL_Init();
//STS_PRESENCE_SENSOR_TOF_Init(); //STS_PRESENCE_SENSOR_TOF_Init();
//HAL_Delay(2000); //HAL_Delay(2000);
//STS_PRESENCE_SENSOR_Distance_Measure_Process(); //STS_PRESENCE_SENSOR_Distance_Measure_Process();
mems_int1_detected=0;
} }
void STS_PRESENCE_SENSOR_TOF_Init(void) void STS_PRESENCE_SENSOR_TOF_Init(void)
@ -886,17 +901,23 @@ void STS_PRESENCE_SENSOR_RSS_Init(void)
APP_LOG(TS_ON, VLEVEL_H, "##### YunHorn SmarToilets(r) MEMS RSS Initializing \r\n"); APP_LOG(TS_ON, VLEVEL_H, "##### YunHorn SmarToilets(r) MEMS RSS Initializing \r\n");
PME_ON; PME_ON;
APP_LOG(TS_ON, VLEVEL_H, "##### STS RSS Init step 1 :rss distance =%u height=%u\r\n",sts_distance_rss_distance,sts_sensor_install_height);
if ((sts_distance_rss_distance==0)&&(sts_sensor_install_height==0)) //if ((sts_distance_rss_distance==0)&&(sts_sensor_install_height==0))
{ {
uint8_t exit_status =0; uint8_t exit_status =0;
exit_status=sts_distance_rss_detector_distance(); do {
if (exit_status ==0) { APP_LOG(TS_ON, VLEVEL_H, "##### STS RSS Init step 2 \r\n");
APP_LOG(TS_ON, VLEVEL_M, "##### RSS Installation Height =%u \r\n", (uint16_t)sts_distance_rss_distance); exit_status=sts_distance_rss_detector_distance();
} APP_LOG(TS_ON, VLEVEL_H, "##### STS RSS Init step 2 return =%u \r\n", exit_status);
else {
APP_LOG(TS_ON, VLEVEL_M, "##### RSS Installation Height Error \r\n"); if (exit_status ==0) {
} APP_LOG(TS_ON, VLEVEL_H, "##### RSS Installation Height =%u \r\n", (uint16_t)sts_distance_rss_distance);
}
else {
APP_LOG(TS_ON, VLEVEL_H, "##### RSS Installation Height Error \r\n");
HAL_Delay(100);
}
} while((0));
sts_sensor_install_height=sts_distance_rss_distance; sts_sensor_install_height=sts_distance_rss_distance;
} }
@ -904,7 +925,7 @@ void STS_PRESENCE_SENSOR_RSS_Init(void)
sts_rss_config_updated_flag = STS_RSS_CONFIG_DEFAULT; sts_rss_config_updated_flag = STS_RSS_CONFIG_DEFAULT;
mems_int1_detected=0;
} }
@ -951,7 +972,7 @@ void STS_PRESENCE_SENSOR_Function_Test_Process(uint8_t *self_test_result, uint8_
HAL_Delay(1000); HAL_Delay(1000);
memcpy(self_test_result, bring_up_result, 10); memcpy(self_test_result, bring_up_result, 10);
mems_int1_detected=0;
} }
uint8_t STS_SENSOR_MEMS_Get_ID(uint8_t *devID) uint8_t STS_SENSOR_MEMS_Get_ID(uint8_t *devID)
@ -974,20 +995,6 @@ uint8_t STS_SENSOR_MEMS_Get_ID(uint8_t *devID)
} }
void STS_SENSOR_MEMS_Reset(uint8_t cnt)
{
switch (cnt) {
case 0:
case 1:
case 2:
HAL_GPIO_TogglePin(MEMS_POWER_GPIO_Port, MEMS_POWER_Pin);
break;
default:
break;
}
}
#ifdef STS_R4 #ifdef STS_R4
void YUNHORN_STS_R4_SENSOR_Read(STS_R0_SensorDataTypeDef *r4_data) void YUNHORN_STS_R4_SENSOR_Read(STS_R0_SensorDataTypeDef *r4_data)
{ {
@ -1092,7 +1099,7 @@ void OnSensor2StateChanged(void)
} }
/* motion sensor RSS ON-OFF */ /* motion sensor RSS ON-OFF */
void OnSensor3StateChanged(void) void OnSensorRSS3StateChanged(void)
{ {
SysTime_t sensor_event_time = SysTimeGetMcuTime(); SysTime_t sensor_event_time = SysTimeGetMcuTime();
#if 0 #if 0
@ -1119,7 +1126,7 @@ void OnSensor3StateChanged(void)
} }
/* motion sensor A: Motion/No-Motion Detection, Unconscious Detection */ /* motion sensor A: Motion/No-Motion Detection, Unconscious Detection */
void OnSensor3AStateChanged(void) void OnSensorRSS3AStateChanged(void)
{ {
SysTime_t sensor_event_time = SysTimeGetMcuTime(); SysTime_t sensor_event_time = SysTimeGetMcuTime();
#if 0 #if 0
@ -1145,7 +1152,7 @@ void OnSensor3AStateChanged(void)
} }
/* motion sensor B, Fall Detection suggestionF */ /* motion sensor B, Fall Detection suggestionF */
void OnSensor3BStateChanged(void) void OnSensorRSS3BStateChanged(void)
{ {
SysTime_t sensor_event_time = SysTimeGetMcuTime(); SysTime_t sensor_event_time = SysTimeGetMcuTime();
uint32_t time_stamp=STS_Get_Date_Time_Stamp(); uint32_t time_stamp=STS_Get_Date_Time_Stamp();
@ -1198,7 +1205,7 @@ void OnSensor3BStateChanged(void)
} }
/* motion sensor C: Over stay detection */ /* motion sensor C: Over stay detection */
void OnSensor3CStateChanged(void) void OnSensorRSS3CStateChanged(void)
{ {
SysTime_t sensor_event_time = SysTimeGetMcuTime(); SysTime_t sensor_event_time = SysTimeGetMcuTime();
#if 0 #if 0
@ -1223,6 +1230,38 @@ void OnSensor3CStateChanged(void)
} }
void OnSensor3StateChanged(void)
{
#if 0
SysTime_t sensor_event_time = SysTimeGetMcuTime();
// reserved... to be finalized 2024-06-03
if (sts_xxx_result)
sts_o7_sensorData.event_sensor4_start_time = sensor_event_time.Seconds;
else
sts_o7_sensorData.event_sensor4_stop_time = sensor_event_time.Seconds;
#endif
SysTime_t sensor_event_time = SysTimeGetMcuTime();
uint32_t time_stamp=STS_Get_Date_Time_Stamp();
if (sts_hall3_read==STS_Status_Alarm_Mute_Pushdown)
{
sts_o7_sensorData.event_sensor4_start_time = sensor_event_time.Seconds;
sts_o7_sensorData.event_sensor4_start_timestamp = time_stamp;
sts_o7_sensorData.event_sensor4_stop_time = 0;
sts_o7_sensorData.event_sensor4_duration = 0;
APP_LOG(TS_OFF, VLEVEL_L, "Alarm Mute PushDown ---Timer start: %u\r\n",sts_o7_sensorData.event_sensor4_start_time );
}else if (sts_hall3_read==STS_Status_Alarm_Mute_Release)
{
sts_o7_sensorData.event_sensor4_start_time = 0;
sts_o7_sensorData.event_sensor4_start_timestamp = 0;
sts_o7_sensorData.event_sensor4_stop_time = sensor_event_time.Seconds;
sts_o7_sensorData.event_sensor4_stop_timestamp = time_stamp;
//sts_o7_sensorData.over_stay_state = 0;
//sts_o7_sensorData.event_sensor2_duration = 0;
}
}
void OnSensor4StateChanged(void) void OnSensor4StateChanged(void)
{ {
#if 0 #if 0
@ -1234,6 +1273,25 @@ void OnSensor4StateChanged(void)
else else
sts_o7_sensorData.event_sensor4_stop_time = sensor_event_time.Seconds; sts_o7_sensorData.event_sensor4_stop_time = sensor_event_time.Seconds;
#endif #endif
SysTime_t sensor_event_time = SysTimeGetMcuTime();
uint32_t time_stamp=STS_Get_Date_Time_Stamp();
if (sts_hall4_read==STS_Status_Alarm_Mute_Pushdown)
{
sts_o7_sensorData.event_sensor5_start_time = sensor_event_time.Seconds;
sts_o7_sensorData.event_sensor5_start_timestamp = time_stamp;
sts_o7_sensorData.event_sensor5_stop_time = 0;
sts_o7_sensorData.event_sensor5_duration = 0;
APP_LOG(TS_OFF, VLEVEL_L, "Alarm RESET PushDown ---Timer start: %u\r\n",sts_o7_sensorData.event_sensor5_start_time );
}else if (sts_hall4_read==STS_Status_Alarm_Mute_Release)
{
sts_o7_sensorData.event_sensor5_start_time = 0;
sts_o7_sensorData.event_sensor5_start_timestamp = 0;
sts_o7_sensorData.event_sensor5_stop_time = sensor_event_time.Seconds;
sts_o7_sensorData.event_sensor5_stop_timestamp = time_stamp;
//sts_o7_sensorData.over_stay_state = 0;
//sts_o7_sensorData.event_sensor2_duration = 0;
}
} }

View File

@ -69,7 +69,8 @@ void MX_LoRaWAN_Init(void)
/* USER CODE END MX_LoRaWAN_Init_1 */ /* USER CODE END MX_LoRaWAN_Init_1 */
SystemApp_Init(); SystemApp_Init();
/* USER CODE BEGIN MX_LoRaWAN_Init_2 */ /* USER CODE BEGIN MX_LoRaWAN_Init_2 */
//STS_Lamp_Bar_Self_Test_Simple();
//STS_Lamp_Bar_Self_Test();
/* USER CODE END MX_LoRaWAN_Init_2 */ /* USER CODE END MX_LoRaWAN_Init_2 */
LoRaWAN_Init(); LoRaWAN_Init();
/* USER CODE BEGIN MX_LoRaWAN_Init_3 */ /* USER CODE BEGIN MX_LoRaWAN_Init_3 */

View File

@ -52,9 +52,9 @@ extern volatile uint8_t sts_service_mask;
extern volatile uint32_t rfac_timer; extern volatile uint32_t rfac_timer;
volatile uint8_t sts_ac_code[YUNHORN_STS_AC_CODE_SIZE]={0x0}; volatile uint8_t sts_ac_code[YUNHORN_STS_AC_CODE_SIZE]={0x0};
extern hmac_result_t hmac_result; extern hmac_result_t hmac_result;
extern volatile uint8_t sts_reed_hall_ext_int;
extern volatile uint8_t sts_hall1_read, sts_hall2_read; extern volatile uint8_t sts_hall1_read, sts_hall2_read, sts_hall3_read, sts_hall4_read;
volatile uint8_t last_sts_hall1_read=STS_Status_Door_Open, last_sts_hall2_read=STS_Status_SOS_Release; volatile uint8_t last_sts_hall1_read=STS_Status_Door_Open, last_sts_hall2_read=STS_Status_SOS_Release, last_sts_hall3_read=STS_Status_Door_Open, last_sts_hall4_read=STS_Status_Door_Open ;
volatile uint8_t sts_reed_hall_result =0, sts_emergency_button_pushed=0; // inital 0 = close volatile uint8_t sts_reed_hall_result =0, sts_emergency_button_pushed=0; // inital 0 = close
extern volatile uint8_t sts_work_mode, sts_cloud_netcolor, sts_lamp_bar_color, sts_status_color; extern volatile uint8_t sts_work_mode, sts_cloud_netcolor, sts_lamp_bar_color, sts_status_color;
@ -75,15 +75,15 @@ extern volatile uint32_t event_start_time, event_stop_time;
extern volatile uint16_t sts_unconscious_threshold; extern volatile uint16_t sts_unconscious_threshold;
volatile uint8_t sts_occupancy_overtime_state = 0; volatile uint8_t sts_occupancy_overtime_state = 0;
volatile uint8_t sts_presence_fall_detection=TRUE; volatile uint8_t sts_presence_fall_detection=TRUE;
volatile uint32_t SamplingPeriodicity = 1000; //unit ms volatile uint32_t SamplingPeriodicity = 3000; //unit ms
volatile uint32_t HeartBeatPeriodicity = 120000; //unit ms volatile uint32_t HeartBeatPeriodicity = 120000; //unit ms
volatile uint8_t STS_LoRa_WAN_Joined = 0; volatile uint8_t STS_LoRa_WAN_Joined = 0;
volatile uint8_t mems_int1_detected = 0;
volatile uint8_t upload_message_timer=0; volatile uint8_t upload_message_timer=0;
volatile uint8_t heart_beat_timer =0; volatile uint8_t heart_beat_timer =0;
volatile uint32_t wcnt=0; volatile uint32_t wcnt=0;
volatile bool p2_work_finished=true; volatile bool p2_work_finished=true;
uint8_t outbuf[128]={0x0}; uint8_t outbuf[255]={0x0};
volatile static bool r_b=true; volatile static bool r_b=true;
volatile sts_cfg_nvm_t sts_cfg_nvm = { volatile sts_cfg_nvm_t sts_cfg_nvm = {
sts_mtmcode1, sts_mtmcode1,
@ -222,7 +222,7 @@ typedef enum TxEventType_e
/* USER CODE BEGIN PTD */ /* USER CODE BEGIN PTD */
#define YUNHORN_STS_RSS_WAKEUP_CHECK_TIME SamplingPeriodicity //3000 ms #define YUNHORN_STS_RSS_WAKEUP_CHECK_TIME SamplingPeriodicity //3000 ms
#define YUNHORN_STS_SAMPLING_CHECK_TIME SamplingPeriodicity #define YUNHORN_STS_SAMPLING_CHECK_TIME SamplingPeriodicity
#define YUNHORN_STS_HEART_BEAT_CHECK_TIME HeartBeatPeriodicity #define YUNHORN_STS_HEART_BEAT_CHECK_TIME 300000 //300 sec, 5 min
/* USER CODE END PTD */ /* USER CODE END PTD */
/* Private define ------------------------------------------------------------*/ /* Private define ------------------------------------------------------------*/
@ -487,7 +487,7 @@ static LmHandlerParams_t LmHandlerParams =
/** /**
* @brief Type of Event to generate application Tx * @brief Type of Event to generate application Tx
*/ */
static TxEventType_t EventType = TX_ON_EVENT; //TX_ON_TIMER;//TX_ON_EVENT; static TxEventType_t EventType = TX_ON_TIMER; //TX_ON_TIMER;//TX_ON_EVENT;
/** /**
* @brief Timer to handle the application Tx * @brief Timer to handle the application Tx
@ -612,7 +612,7 @@ void LoRaWAN_Init(void)
UTIL_TIMER_Create(&TxLedTimer, LED_PERIOD_TIME, UTIL_TIMER_ONESHOT, OnTxTimerLedEvent, NULL); UTIL_TIMER_Create(&TxLedTimer, LED_PERIOD_TIME, UTIL_TIMER_ONESHOT, OnTxTimerLedEvent, NULL);
UTIL_TIMER_Create(&RxLedTimer, LED_PERIOD_TIME, UTIL_TIMER_ONESHOT, OnRxTimerLedEvent, NULL); UTIL_TIMER_Create(&RxLedTimer, LED_PERIOD_TIME, UTIL_TIMER_ONESHOT, OnRxTimerLedEvent, NULL);
UTIL_TIMER_Create(&JoinLedTimer, LED_PERIOD_TIME, UTIL_TIMER_ONESHOT, OnJoinTimerLedEvent, NULL); UTIL_TIMER_Create(&JoinLedTimer, LED_PERIOD_TIME, UTIL_TIMER_PERIODIC, OnJoinTimerLedEvent, NULL);
UTIL_TIMER_Create(&STSLampBarColorTimer, LED_PERIOD_TIME, UTIL_TIMER_PERIODIC, OnYunhornSTSLampBarColorTimerEvent, NULL); UTIL_TIMER_Create(&STSLampBarColorTimer, LED_PERIOD_TIME, UTIL_TIMER_PERIODIC, OnYunhornSTSLampBarColorTimerEvent, NULL);
UTIL_TIMER_Create(&STSDurationCheckTimer, 20*LED_PERIOD_TIME, UTIL_TIMER_PERIODIC, OnYunhornSTSDurationCheckTimerEvent, NULL); UTIL_TIMER_Create(&STSDurationCheckTimer, 20*LED_PERIOD_TIME, UTIL_TIMER_PERIODIC, OnYunhornSTSDurationCheckTimerEvent, NULL);
@ -684,22 +684,18 @@ void LoRaWAN_Init(void)
#endif #endif
#if defined(STS_O7)||defined(STS_O6) #if defined(STS_O7)||defined(STS_O6)
UTIL_TIMER_Create(&YunhornSTSRSSWakeUpTimer, UTIL_TIMER_Create(&YunhornSTSRSSWakeUpTimer, YUNHORN_STS_RSS_WAKEUP_CHECK_TIME, UTIL_TIMER_PERIODIC, OnYunhornSTSOORSSWakeUpTimerEvent, NULL);
YUNHORN_STS_RSS_WAKEUP_CHECK_TIME, //UTIL_TIMER_Start(&YunhornSTSRSSWakeUpTimer);
UTIL_TIMER_ONESHOT, OnYunhornSTSOORSSWakeUpTimerEvent, NULL);
UTIL_TIMER_Start(&YunhornSTSRSSWakeUpTimer);
UTIL_TIMER_Create(&YunhornSTSHeartBeatTimer, UTIL_TIMER_Create(&YunhornSTSHeartBeatTimer, YUNHORN_STS_HEART_BEAT_CHECK_TIME, UTIL_TIMER_PERIODIC, OnYunhornSTSHeartBeatTimerEvent, NULL);
YUNHORN_STS_HEART_BEAT_CHECK_TIME, //UTIL_TIMER_Start(&YunhornSTSHeartBeatTimer);
UTIL_TIMER_PERIODIC, OnYunhornSTSHeartBeatTimerEvent, NULL);
UTIL_TIMER_Start(&YunhornSTSHeartBeatTimer); UTIL_TIMER_Start(&STSLampBarColorTimer);
UTIL_TIMER_Start(&STSDurationCheckTimer); UTIL_TIMER_Start(&STSDurationCheckTimer);
#else #else
UTIL_TIMER_Create(&YunhornSTSSamplingCheckTimer, UTIL_TIMER_Create(&YunhornSTSSamplingCheckTimer, YUNHORN_STS_SAMPLING_CHECK_TIME, UTIL_TIMER_PERIODIC, OnYunhornSTSSamplingCheckTimerEvent, NULL);
YUNHORN_STS_SAMPLING_CHECK_TIME,
UTIL_TIMER_PERIODIC, OnYunhornSTSSamplingCheckTimerEvent, NULL);
UTIL_TIMER_Start(&YunhornSTSSamplingCheckTimer); UTIL_TIMER_Start(&YunhornSTSSamplingCheckTimer);
#endif #endif
/* USER CODE END LoRaWAN_Init_Last */ /* USER CODE END LoRaWAN_Init_Last */
@ -750,12 +746,48 @@ void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
} }
break; break;
case HALL3_Pin:
sts_hall3_read = HALL3_STATE;
HAL_Delay(30); //de-bouncing
if (sts_hall3_read == HALL3_STATE)
{
APP_LOG(TS_OFF, VLEVEL_L, "\n\n ALARM MUTE Button Read = %02x --%s\r\n", sts_hall3_read, sts_sos_status_code[sts_hall3_read]);
OnSensor3StateChanged();
//sensor_data_ready =1;
//UTIL_SEQ_SetTask((1 << CFG_SEQ_Task_YunhornSTSEventP1), CFG_SEQ_Prio_0);
{
STS_YunhornSTSEventP1_Process();
UTIL_SEQ_SetTask((1 << CFG_SEQ_Task_LoRaSendOnTxTimerOrButtonEvent), CFG_SEQ_Prio_0);
}
last_sts_hall3_read = sts_hall3_read;
}
break;
case HALL4_Pin:
sts_hall4_read = HALL4_STATE;
HAL_Delay(30); //de-bouncing
if (sts_hall4_read == HALL4_STATE)
{
APP_LOG(TS_OFF, VLEVEL_L, "\n\n ALARM RESET Button Read = %02x --%s\r\n", sts_hall4_read, sts_sos_status_code[sts_hall4_read]);
OnSensor4StateChanged();
//sensor_data_ready =1;
//UTIL_SEQ_SetTask((1 << CFG_SEQ_Task_YunhornSTSEventP1), CFG_SEQ_Prio_0);
{
STS_YunhornSTSEventP1_Process();
UTIL_SEQ_SetTask((1 << CFG_SEQ_Task_LoRaSendOnTxTimerOrButtonEvent), CFG_SEQ_Prio_0);
}
last_sts_hall4_read = sts_hall4_read;
}
break;
#else #else
case BUT1_Pin: case BUT1_Pin:
HAL_Delay(20); //de-bouncing HAL_Delay(20); //de-bouncing
//sts_reed_hall_ext_int = 1;
UTIL_SEQ_SetTask((1 << CFG_SEQ_Task_YunhornSTSEventP1), CFG_SEQ_Prio_0); UTIL_SEQ_SetTask((1 << CFG_SEQ_Task_YunhornSTSEventP1), CFG_SEQ_Prio_0);
//sts_reed_hall_ext_int = 0;
/* Note: when "EventType == TX_ON_TIMER" this GPIO is not initialized */ /* Note: when "EventType == TX_ON_TIMER" this GPIO is not initialized */
// if (EventType == TX_ON_EVENT) // if (EventType == TX_ON_EVENT)
{ {
@ -766,10 +798,11 @@ void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
case BUT2_Pin: case BUT2_Pin:
UTIL_SEQ_SetTask((1 << CFG_SEQ_Task_LoRaStopJoinEvent), CFG_SEQ_Prio_0); UTIL_SEQ_SetTask((1 << CFG_SEQ_Task_LoRaStopJoinEvent), CFG_SEQ_Prio_0);
break; break;
#endif
case BUT3_Pin: case BUT3_Pin:
UTIL_SEQ_SetTask((1 << CFG_SEQ_Task_LoRaStoreContextEvent), CFG_SEQ_Prio_0); UTIL_SEQ_SetTask((1 << CFG_SEQ_Task_LoRaStoreContextEvent), CFG_SEQ_Prio_0);
break; break;
#endif
default: default:
break; break;
} }
@ -1083,20 +1116,9 @@ static void OnTxTimerEvent(void *context)
/* USER CODE BEGIN OnTxTimerEvent_1 */ /* USER CODE BEGIN OnTxTimerEvent_1 */
/* USER CODE END OnTxTimerEvent_1 */ /* USER CODE END OnTxTimerEvent_1 */
//heart_beat_timer = 1;
UTIL_SEQ_SetTask((1 << CFG_SEQ_Task_LoRaSendOnTxTimerOrButtonEvent), CFG_SEQ_Prio_0); UTIL_SEQ_SetTask((1 << CFG_SEQ_Task_LoRaSendOnTxTimerOrButtonEvent), CFG_SEQ_Prio_0);
#if 0
if (sts_ac_code[0]==0x0) {
/* RFAC Challenge */
if (rfac_timer < (STS_BURN_IN_RFAC+3)) {
rfac_timer ++;
UTIL_SEQ_SetTask((1 << CFG_SEQ_Task_YunhornSTSEventRFAC), CFG_SEQ_Prio_0);
}
}
#endif
/*Wait for next tx slot*/ /*Wait for next tx slot*/
UTIL_TIMER_Start(&TxTimer); UTIL_TIMER_Start(&TxTimer);
@ -1140,7 +1162,7 @@ static void OnYunhornSTSLampBarColorTimerEvent(void *context)
//HAL_GPIO_TogglePin(LED1_GPIO_Port, LED1_Pin); /* STS GREEN */ //HAL_GPIO_TogglePin(LED1_GPIO_Port, LED1_Pin); /* STS GREEN */
//if ((sts_work_mode != STS_WIRED_MODE)) //if ((sts_work_mode != STS_WIRED_MODE))
uint8_t high4=(sts_lamp_bar_color>>4)&0x0f, low4=sts_lamp_bar_color&0x0f; uint8_t high4=(sts_lamp_bar_color>>4)&0x0f, low4=sts_lamp_bar_color&0x0f;
HAL_Delay(10);
if (high4==0) if (high4==0)
{ {
if (last_sts_lamp_bar_color != sts_lamp_bar_color) if (last_sts_lamp_bar_color != sts_lamp_bar_color)
@ -1172,8 +1194,6 @@ static void OnYunhornSTSLampBarColorTimerEvent(void *context)
r_b = !r_b; r_b = !r_b;
} }
//UTIL_TIMER_Start(&STSLampBarColorTimer);
} }
static void OnYunhornSTSDurationCheckTimerEvent(void *context) static void OnYunhornSTSDurationCheckTimerEvent(void *context)
@ -1311,8 +1331,9 @@ static void OnYunhornSTSDurationCheckTimerEvent(void *context)
sts_o7_sensorData.event_sensor3_event_duration = sensor_event_time.Seconds - sts_o7_sensorData.event_sensor4_start_time; sts_o7_sensorData.event_sensor3_event_duration = sensor_event_time.Seconds - sts_o7_sensorData.event_sensor4_start_time;
#endif #endif
if (over_threshold == TRUE) { if (over_threshold == TRUE)
sensor_data_ready = 1; {
if (sts_o7_sensorData.fall_state == STS_PRESENCE_LAYDOWN) if (sts_o7_sensorData.fall_state == STS_PRESENCE_LAYDOWN)
{ {
sts_status_color = sts_lamp_bar_flashing_color; //STS_RED_BLUE; sts_status_color = sts_lamp_bar_flashing_color; //STS_RED_BLUE;
@ -1321,7 +1342,9 @@ static void OnYunhornSTSDurationCheckTimerEvent(void *context)
sts_status_color = STS_RED_DARK; sts_status_color = STS_RED_DARK;
sts_lamp_bar_color = STS_RED_DARK; //sts_lamp_bar_flashing_color; sts_lamp_bar_color = STS_RED_DARK; //sts_lamp_bar_flashing_color;
} }
SendTxData();
sensor_data_ready = 1;
UTIL_SEQ_SetTask((1 << CFG_SEQ_Task_LoRaSendOnTxTimerOrButtonEvent), CFG_SEQ_Prio_0);
over_threshold = FALSE; over_threshold = FALSE;
} }
} }
@ -1366,9 +1389,9 @@ static void OnJoinRequest(LmHandlerJoinParams_t *joinParams)
if (joinParams->Status == LORAMAC_HANDLER_SUCCESS) if (joinParams->Status == LORAMAC_HANDLER_SUCCESS)
{ {
UTIL_TIMER_Stop(&JoinLedTimer); UTIL_TIMER_Stop(&JoinLedTimer);
//STS_Lamp_Bar_Set_Dark();
sts_lamp_bar_color = STS_GREEN; sts_lamp_bar_color = STS_GREEN;
STS_WS2812B_Refresh();
#ifndef STM32WLE5xx #ifndef STM32WLE5xx
HAL_GPIO_WritePin(LED3_GPIO_Port, LED3_Pin, GPIO_PIN_RESET); /* LED_RED */ HAL_GPIO_WritePin(LED3_GPIO_Port, LED3_Pin, GPIO_PIN_RESET); /* LED_RED */
#endif #endif
@ -1383,9 +1406,6 @@ static void OnJoinRequest(LmHandlerJoinParams_t *joinParams)
} }
STS_LoRa_WAN_Joined = (uint8_t) joinParams->Mode; STS_LoRa_WAN_Joined = (uint8_t) joinParams->Mode;
OnYunhornSTSHeartBeatPeriodicityChanged(HeartBeatPeriodicity);
//OnTxPeriodicityChanged(TxPeriodicity);
APP_LOG(TS_OFF, VLEVEL_L,"\r\n STS_LoRa_WAN_Joined = %s \r\n", (STS_LoRa_WAN_Joined == 1)?"ABP":"OTAA"); APP_LOG(TS_OFF, VLEVEL_L,"\r\n STS_LoRa_WAN_Joined = %s \r\n", (STS_LoRa_WAN_Joined == 1)?"ABP":"OTAA");
} }
else else
@ -1395,12 +1415,18 @@ 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); APP_LOG(TS_OFF, VLEVEL_H, "###### U/L FRAME:JOIN | DR:%d | PWR:%d\r\n", joinParams->Datarate, joinParams->TxPower);
} }
heart_beat_timer = 1;
UTIL_SEQ_SetTask((1 << CFG_SEQ_Task_LoRaSendOnTxTimerOrButtonEvent), CFG_SEQ_Prio_0);
//HAL_Delay(3000);
UTIL_TIMER_Start(&STSLampBarColorTimer);
//UTIL_TIMER_Start(&YunhornSTSRSSWakeUpTimer); heart_beat_timer = 1;
//SendTxData();
UTIL_SEQ_SetTask((1 << CFG_SEQ_Task_LoRaSendOnTxTimerOrButtonEvent), CFG_SEQ_Prio_0);
UTIL_SEQ_SetTask((1 << CFG_SEQ_Task_LoRaSendOnTxTimerOrButtonEvent), CFG_SEQ_Prio_0);
UTIL_TIMER_Start(&YunhornSTSRSSWakeUpTimer);
//UTIL_TIMER_Start(&TxTimer);
//UTIL_TIMER_Start(&STSDurationCheckTimer);
OnYunhornSTSHeartBeatPeriodicityChanged(HeartBeatPeriodicity);
/* USER CODE END OnJoinRequest_1 */ /* USER CODE END OnJoinRequest_1 */
} }
@ -1478,8 +1504,6 @@ static void OnTxPeriodicityChanged(uint32_t periodicity)
TxPeriodicity = APP_TX_DUTYCYCLE; TxPeriodicity = APP_TX_DUTYCYCLE;
} }
HeartBeatPeriodicity = TxPeriodicity;
/* Update timer periodicity */ /* Update timer periodicity */
UTIL_TIMER_Stop(&TxTimer); UTIL_TIMER_Stop(&TxTimer);
UTIL_TIMER_SetPeriod(&TxTimer, TxPeriodicity); UTIL_TIMER_SetPeriod(&TxTimer, TxPeriodicity);
@ -1678,7 +1702,6 @@ static void OnYunhornSTSHeartBeatTimerEvent(void *context)
{ {
heart_beat_timer = 1; heart_beat_timer = 1;
UTIL_SEQ_SetTask((1 << CFG_SEQ_Task_LoRaSendOnTxTimerOrButtonEvent), CFG_SEQ_Prio_0); UTIL_SEQ_SetTask((1 << CFG_SEQ_Task_LoRaSendOnTxTimerOrButtonEvent), CFG_SEQ_Prio_0);
UTIL_TIMER_Start(&YunhornSTSHeartBeatTimer);
if ((STS_LoRa_WAN_Joined ) && (sts_ac_code[0]==0x0) && (sts_ac_code[19]==0x0)) if ((STS_LoRa_WAN_Joined ) && (sts_ac_code[0]==0x0) && (sts_ac_code[19]==0x0))
{ {
@ -1688,6 +1711,7 @@ static void OnYunhornSTSHeartBeatTimerEvent(void *context)
} }
UTIL_SEQ_SetTask((1 << CFG_SEQ_Task_YunhornSTSEventRFAC), CFG_SEQ_Prio_0); UTIL_SEQ_SetTask((1 << CFG_SEQ_Task_YunhornSTSEventRFAC), CFG_SEQ_Prio_0);
} }
UTIL_TIMER_Start(&YunhornSTSHeartBeatTimer);
} }
/** /**
@ -1716,7 +1740,7 @@ static void OnYunhornSTSHeartBeatPeriodicityChanged(uint32_t periodicity)
UTIL_TIMER_Start(&YunhornSTSHeartBeatTimer); UTIL_TIMER_Start(&YunhornSTSHeartBeatTimer);
/* USER CODE BEGIN OnTxPeriodicityChanged_2 */ /* USER CODE BEGIN OnTxPeriodicityChanged_2 */
APP_LOG(TS_OFF, VLEVEL_H,"**************** HeartBeatPeriodicity Changed to: %u (ms)\r\n", HeartBeatPeriodicity ); APP_LOG(TS_OFF, VLEVEL_H,"**************** HeartBeatPeriodicity = %u (sec)\r\n", HeartBeatPeriodicity/1000 );
/* USER CODE END OnTxPeriodicityChanged_2 */ /* USER CODE END OnTxPeriodicityChanged_2 */
} }
@ -1856,7 +1880,7 @@ static void OnYunhornSTSSamplingCheckTimerEvent(void *context)
* *
*/ */
void USER_APP_AUTO_RESPONDER_Parse(char *tlv_buf, size_t tlv_buf_size) void USER_APP_AUTO_RESPONDER_Parse(char *tlv_buf, uint8_t tlv_buf_size)
{ {
uint8_t i=0, mems_ver, invalid_flag=1; uint8_t i=0, mems_ver, invalid_flag=1;
UTIL_MEM_set_8((void*)outbuf,0x0, sizeof(outbuf)); UTIL_MEM_set_8((void*)outbuf,0x0, sizeof(outbuf));
@ -2078,10 +2102,11 @@ void USER_APP_AUTO_RESPONDER_Parse(char *tlv_buf, size_t tlv_buf_size)
{ {
//STS_SENSOR_Power_ON((uint8_t)(tlv_buf[CFG_CMD3]-0x30)); //STS_SENSOR_Power_ON((uint8_t)(tlv_buf[CFG_CMD3]-0x30));
PME_ON; PME_ON;
i=0;
outbuf[i++] = (uint8_t) tlv_buf[CFG_CMD1]; // 2024-07-31
outbuf[i++] = (uint8_t) tlv_buf[CFG_CMD2]; UTIL_MEM_set_8((void*)outbuf, 0x0, sizeof(outbuf));
outbuf[i++] = (uint8_t) tlv_buf[CFG_CMD3]; UTIL_MEM_cpy_8((void*)outbuf,(void*)tlv_buf,tlv_buf_size);
i = tlv_buf_size;
STS_SENSOR_Upload_Message(LORAWAN_USER_APP_CTRL_REPLY_PORT, i, (uint8_t *)outbuf); STS_SENSOR_Upload_Message(LORAWAN_USER_APP_CTRL_REPLY_PORT, i, (uint8_t *)outbuf);
} else { } else {
STS_SENSOR_Upload_Config_Invalid_Message(); STS_SENSOR_Upload_Config_Invalid_Message();
@ -2092,11 +2117,11 @@ void USER_APP_AUTO_RESPONDER_Parse(char *tlv_buf, size_t tlv_buf_size)
// TODO # of modules // TODO # of modules
if (((uint8_t)(tlv_buf[CFG_CMD3]-0x30) >= 0) && ((uint8_t)tlv_buf[CFG_CMD3]-0x30) <=9) { if (((uint8_t)(tlv_buf[CFG_CMD3]-0x30) >= 0) && ((uint8_t)tlv_buf[CFG_CMD3]-0x30) <=9) {
//STS_SENSOR_Power_OFF((tlv_buf[CFG_CMD3]-0x30)); //STS_SENSOR_Power_OFF((tlv_buf[CFG_CMD3]-0x30));
PME_OFF; PME_OFF;
i=0; // 2024-07-31
outbuf[i++] = (uint8_t) tlv_buf[CFG_CMD1]; UTIL_MEM_set_8((void*)outbuf, 0x0, sizeof(outbuf));
outbuf[i++] = (uint8_t) tlv_buf[CFG_CMD2]; UTIL_MEM_cpy_8((void*)outbuf,(void*)tlv_buf,tlv_buf_size);
outbuf[i++] = (uint8_t) tlv_buf[CFG_CMD3]; i = tlv_buf_size;
STS_SENSOR_Upload_Message(LORAWAN_USER_APP_CTRL_REPLY_PORT, i, (uint8_t *)outbuf); STS_SENSOR_Upload_Message(LORAWAN_USER_APP_CTRL_REPLY_PORT, i, (uint8_t *)outbuf);
} else { } else {
STS_SENSOR_Upload_Config_Invalid_Message(); STS_SENSOR_Upload_Config_Invalid_Message();
@ -2105,11 +2130,13 @@ void USER_APP_AUTO_RESPONDER_Parse(char *tlv_buf, size_t tlv_buf_size)
case 'H': case 'H':
// TODO # of modules // TODO # of modules
if (((uint8_t)(tlv_buf[CFG_CMD3]-0x30) >= 0) && ((uint8_t)tlv_buf[CFG_CMD3]-0x30) <=9) { if (((uint8_t)(tlv_buf[CFG_CMD3]-0x30) >= 0) && ((uint8_t)tlv_buf[CFG_CMD3]-0x30) <=9) {
STS_SENSOR_MEMS_Reset((tlv_buf[CFG_CMD3]-0x30)); PME_ON;
i=0; PME_OFF;
outbuf[i++] = (uint8_t) tlv_buf[CFG_CMD1]; PME_ON;
outbuf[i++] = (uint8_t) tlv_buf[CFG_CMD2]; // 2024-07-31
outbuf[i++] = (uint8_t) tlv_buf[CFG_CMD3]; UTIL_MEM_set_8((void*)outbuf, 0x0, sizeof(outbuf));
UTIL_MEM_cpy_8((void*)outbuf,(void*)tlv_buf,tlv_buf_size);
i = tlv_buf_size;
STS_SENSOR_Upload_Message(LORAWAN_USER_APP_CTRL_REPLY_PORT, i, (uint8_t *)outbuf); STS_SENSOR_Upload_Message(LORAWAN_USER_APP_CTRL_REPLY_PORT, i, (uint8_t *)outbuf);
} else { } else {
STS_SENSOR_Upload_Config_Invalid_Message(); STS_SENSOR_Upload_Config_Invalid_Message();
@ -2128,20 +2155,18 @@ void USER_APP_AUTO_RESPONDER_Parse(char *tlv_buf, size_t tlv_buf_size)
} else if ((char)tlv_buf[CFG_CMD5] == 'H') { } else if ((char)tlv_buf[CFG_CMD5] == 'H') {
periodicity_length *= 3600; periodicity_length *= 3600;
} }
TxPeriodicity = periodicity_length*1000; //translate to 1000ms=1s periodicity_length = periodicity_length*1000; //translate to 1000ms=1s
HeartBeatPeriodicity = TxPeriodicity;
//OnTxPeriodicityChanged(TxPeriodicity); //OnTxPeriodicityChanged(TxPeriodicity);
#if defined(STS_O6)||defined(STS_O7) #if defined(STS_O6)||defined(STS_O7)
OnYunhornSTSHeartBeatPeriodicityChanged(TxPeriodicity); HeartBeatPeriodicity = periodicity_length;
OnYunhornSTSHeartBeatPeriodicityChanged(periodicity_length);
#endif #endif
// 2024-07-31
i = 0; UTIL_MEM_set_8((void*)outbuf, 0x0, sizeof(outbuf));
outbuf[i++] = (uint8_t) tlv_buf[CFG_CMD1]; UTIL_MEM_cpy_8((void*)outbuf,(void*)tlv_buf,tlv_buf_size);
outbuf[i++] = (uint8_t) tlv_buf[CFG_CMD2]; i = tlv_buf_size;
outbuf[i++] = (uint8_t) tlv_buf[CFG_CMD3];
outbuf[i++] = (uint8_t) tlv_buf[CFG_CMD4];
outbuf[i++] = (uint8_t) tlv_buf[CFG_CMD5];
STS_SENSOR_Upload_Message(LORAWAN_USER_APP_CTRL_REPLY_PORT, i, (uint8_t *)outbuf); STS_SENSOR_Upload_Message(LORAWAN_USER_APP_CTRL_REPLY_PORT, i, (uint8_t *)outbuf);
// Save config to NVM // Save config to NVM
@ -2155,7 +2180,7 @@ void USER_APP_AUTO_RESPONDER_Parse(char *tlv_buf, size_t tlv_buf_size)
sts_cfg_nvm.sts_service_mask = (uint8_t)sts_service_mask; sts_cfg_nvm.sts_service_mask = (uint8_t)sts_service_mask;
OnStoreSTSCFGContextRequest(); OnStoreSTSCFGContextRequest();
APP_LOG(TS_OFF, VLEVEL_M, "###### YUNHORN Periodicity Changed to [ %d ] Seconds\r\n", periodicity_length); //APP_LOG(TS_OFF, VLEVEL_M, "###### YUNHORN Periodicity Changed to [ %d ] Seconds\r\n", periodicity_length);
} else { } else {
STS_SENSOR_Upload_Config_Invalid_Message(); STS_SENSOR_Upload_Config_Invalid_Message();
@ -2186,12 +2211,10 @@ void USER_APP_AUTO_RESPONDER_Parse(char *tlv_buf, size_t tlv_buf_size)
SamplingPeriodicity = heart_beat_or_sampling_periodicity_length*1000; //translate to 1000ms=1s SamplingPeriodicity = heart_beat_or_sampling_periodicity_length*1000; //translate to 1000ms=1s
OnYunhornSTSSamplingPeriodicityChanged(SamplingPeriodicity); OnYunhornSTSSamplingPeriodicityChanged(SamplingPeriodicity);
#endif #endif
i = 0; // 2024-07-31
outbuf[i++] = (uint8_t) tlv_buf[CFG_CMD1]; UTIL_MEM_set_8((void*)outbuf, 0x0, sizeof(outbuf));
outbuf[i++] = (uint8_t) tlv_buf[CFG_CMD2]; UTIL_MEM_cpy_8((void*)outbuf,(void*)tlv_buf,tlv_buf_size);
outbuf[i++] = (uint8_t) tlv_buf[CFG_CMD3]; i = tlv_buf_size;
outbuf[i++] = (uint8_t) tlv_buf[CFG_CMD4];
outbuf[i++] = (uint8_t) tlv_buf[CFG_CMD5];
STS_SENSOR_Upload_Message(LORAWAN_USER_APP_CTRL_REPLY_PORT, i, (uint8_t *)outbuf); STS_SENSOR_Upload_Message(LORAWAN_USER_APP_CTRL_REPLY_PORT, i, (uint8_t *)outbuf);
// Save config to NVM // Save config to NVM
@ -2254,31 +2277,29 @@ void USER_APP_AUTO_RESPONDER_Parse(char *tlv_buf, size_t tlv_buf_size)
OnStoreSTSCFGContextRequest(); OnStoreSTSCFGContextRequest();
i=0; // Step 1: Prepare status update message i=0; // Step 1: Prepare status update message
outbuf[i++] = (uint8_t) tlv_buf[CFG_CMD1]; UTIL_MEM_set_8((void*)outbuf, 0x0, sizeof(outbuf));
outbuf[i++] = (uint8_t) tlv_buf[CFG_CMD2]; UTIL_MEM_cpy_8((void*)outbuf,(void*)tlv_buf, tlv_buf_size);
outbuf[i++] = (uint8_t) tlv_buf[CFG_CMD3]; i = tlv_buf_size;
outbuf[i++] = (uint8_t) tlv_buf[CFG_CMD4];
outbuf[i++] = (uint8_t) tlv_buf[CFG_CMD5];
STS_Combined_Status_Processing(); STS_Combined_Status_Processing();
} else if (tlv_buf_size == 8 && tlv_buf[CFG_CMD4]=='F') // Change fall detection } else if (tlv_buf_size == 7 && tlv_buf[CFG_CMD4]=='F') // Change fall detection
{ {
invalid_flag = 0; // P 1 1 F A B C D invalid_flag = 0; // P 1 1 F A B C
if (((tlv_buf[CFG_CMD5] >='0') && (tlv_buf[CFG_CMD5]<='9')) && ((tlv_buf[CFG_CMD6]<='9') && (tlv_buf[CFG_CMD6]>='0')) if (((tlv_buf[CFG_CMD5] >='0') && (tlv_buf[CFG_CMD5]<='9')) && ((tlv_buf[CFG_CMD6]<='9') && (tlv_buf[CFG_CMD6]>='0'))
&& ((tlv_buf[CFG_CMD7]<='9') && (tlv_buf[CFG_CMD7]>='0'))&& ((tlv_buf[CFG_CMD8]<='9') && (tlv_buf[CFG_CMD8]>='0'))) && ((tlv_buf[CFG_CMD7]<='9') && (tlv_buf[CFG_CMD7]>='0'))) //&& ((tlv_buf[CFG_CMD8]<='9') && (tlv_buf[CFG_CMD8]>='0')))
{ {
sts_fall_detection_acc_threshold = (uint8_t)(tlv_buf[CFG_CMD5] - 0x30)*10; //acc *10 mg/s2 sts_fall_detection_acc_threshold = (uint8_t)(tlv_buf[CFG_CMD5] - 0x30)*10; //A: acc *10 mg/s2
sts_fall_detection_depth_threshold = (uint8_t)(tlv_buf[CFG_CMD6] - 0x30)*10; //depth *10 in cm sts_fall_detection_depth_threshold = (uint8_t)(tlv_buf[CFG_CMD6] - 0x30)*10; //D: depth *10 in cm
sts_fall_confirm_threshold_in_10sec = (uint8_t)(tlv_buf[CFG_CMD7] - 0x30+1)*128; //fall_confirm_threshold_in_10sec sts_fall_confirm_threshold_in_10sec = (uint8_t)(tlv_buf[CFG_CMD7] - 0x30)*10; //C: fall_confirm_threshold_in_10sec
sts_occupancy_overtime_threshold_in_10min = (uint8_t)(tlv_buf[CFG_CMD8] - 0x30)*10; // overtime *10 min //sts_occupancy_overtime_threshold_in_10min = (uint8_t)(tlv_buf[CFG_CMD8] - 0x30)*10; //T: overtime *10 min
sts_cfg_nvm.fall_detection_acc_threshold = (uint8_t)(tlv_buf[CFG_CMD5] - 0x30); sts_cfg_nvm.fall_detection_acc_threshold = (uint8_t)(tlv_buf[CFG_CMD5] - 0x30);
sts_cfg_nvm.fall_detection_depth_threshold = (uint8_t)(tlv_buf[CFG_CMD6] - 0x30); sts_cfg_nvm.fall_detection_depth_threshold = (uint8_t)(tlv_buf[CFG_CMD6] - 0x30);
sts_cfg_nvm.fall_confirm_threshold_in_10sec = (uint8_t)(tlv_buf[CFG_CMD7] - 0x30+1); sts_cfg_nvm.fall_confirm_threshold_in_10sec = (uint8_t)(tlv_buf[CFG_CMD7] - 0x30);
sts_cfg_nvm.occupancy_overtime_threshold_in_10min = (uint8_t)(tlv_buf[CFG_CMD8] - 0x30); //sts_cfg_nvm.occupancy_overtime_threshold_in_10min = (uint8_t)(tlv_buf[CFG_CMD8] - 0x30);
if (sts_work_mode == STS_UNI_MODE) // fall detection threshold only effective in Uni_mode if (sts_work_mode == STS_UNI_MODE) // fall detection threshold only effective in Uni_mode
{ {
@ -2291,14 +2312,11 @@ void USER_APP_AUTO_RESPONDER_Parse(char *tlv_buf, size_t tlv_buf_size)
OnStoreSTSCFGContextRequest(); OnStoreSTSCFGContextRequest();
i=0; // Step 1: Prepare status update message i=0; // Step 1: Prepare status update message
outbuf[i++] = (uint8_t) tlv_buf[CFG_CMD1]; UTIL_MEM_set_8((void*)outbuf, 0x0, sizeof(outbuf));
outbuf[i++] = (uint8_t) tlv_buf[CFG_CMD2]; UTIL_MEM_cpy_8((void*)outbuf,(void*)tlv_buf, tlv_buf_size);
outbuf[i++] = (uint8_t) tlv_buf[CFG_CMD3]; i = tlv_buf_size;
outbuf[i++] = (uint8_t) tlv_buf[CFG_CMD4]; APP_LOG(TS_OFF, VLEVEL_L, "###### Fall detection CFG = %s\r\n",(char*)outbuf);
outbuf[i++] = (uint8_t) tlv_buf[CFG_CMD5];
outbuf[i++] = (uint8_t) tlv_buf[CFG_CMD6];
outbuf[i++] = (uint8_t) tlv_buf[CFG_CMD7];
outbuf[i++] = (uint8_t) tlv_buf[CFG_CMD8];
STS_Combined_Status_Processing(); STS_Combined_Status_Processing();
} }
@ -2323,14 +2341,10 @@ void USER_APP_AUTO_RESPONDER_Parse(char *tlv_buf, size_t tlv_buf_size)
OnStoreSTSCFGContextRequest(); OnStoreSTSCFGContextRequest();
i=0; // Step 1: Prepare status update message i=0; // Step 1: Prepare status update message
outbuf[i++] = (uint8_t) tlv_buf[CFG_CMD1]; UTIL_MEM_set_8((void*)outbuf, 0x0, sizeof(outbuf));
outbuf[i++] = (uint8_t) tlv_buf[CFG_CMD2]; UTIL_MEM_cpy_8((void*)outbuf,(void*)tlv_buf, tlv_buf_size);
outbuf[i++] = (uint8_t) tlv_buf[CFG_CMD3]; i = tlv_buf_size;
outbuf[i++] = (uint8_t) tlv_buf[CFG_CMD4]; APP_LOG(TS_OFF, VLEVEL_L, "###### Occupancy/Overstay/unconscious config changed =%s\r\n",(char *)outbuf);
outbuf[i++] = (uint8_t) tlv_buf[CFG_CMD5];
outbuf[i++] = (uint8_t) tlv_buf[CFG_CMD6];
outbuf[i++] = (uint8_t) tlv_buf[CFG_CMD7];
outbuf[i++] = (uint8_t) tlv_buf[CFG_CMD8];
STS_Combined_Status_Processing(); STS_Combined_Status_Processing();
} }
} }
@ -2349,10 +2363,10 @@ void USER_APP_AUTO_RESPONDER_Parse(char *tlv_buf, size_t tlv_buf_size)
} }
i=0; // Step 1: Prepare status update message i=0; // Step 1: Prepare status update message
outbuf[i++] = (uint8_t) tlv_buf[CFG_CMD1]; UTIL_MEM_set_8((void*)outbuf, 0x0, sizeof(outbuf));
outbuf[i++] = (uint8_t) tlv_buf[CFG_CMD2]; UTIL_MEM_cpy_8((void*)outbuf,(void*)tlv_buf, tlv_buf_size);
outbuf[i++] = (uint8_t) tlv_buf[CFG_CMD3]; i = tlv_buf_size;
outbuf[i++] = (uint8_t) tlv_buf[CFG_CMD4]; APP_LOG(TS_OFF, VLEVEL_L, "###### P Work mode switched =%s\r\n",(char *)outbuf);
//sts_service_mask = STS_SERVICE_MASK_L0; //sts_service_mask = STS_SERVICE_MASK_L0;
//sts_lamp_bar_color = STS_GREEN; //sts_lamp_bar_color = STS_GREEN;
@ -2368,7 +2382,7 @@ void USER_APP_AUTO_RESPONDER_Parse(char *tlv_buf, size_t tlv_buf_size)
STS_Combined_Status_Processing(); STS_Combined_Status_Processing();
HAL_Delay(2000); HAL_Delay(2000);
OnSystemReset(); //OnSystemReset();
} else { } else {
invalid_flag = 1; invalid_flag = 1;
@ -2395,18 +2409,10 @@ void USER_APP_AUTO_RESPONDER_Parse(char *tlv_buf, size_t tlv_buf_size)
STS_PRESENCE_SENSOR_NVM_CFG(); STS_PRESENCE_SENSOR_NVM_CFG();
i=0; // Step 1: Prepare status update message i=0; // Step 1: Prepare status update message
UTIL_MEM_set_8((void*)outbuf, 0x0, sizeof(outbuf));
outbuf[i++] = (char) 'P'; UTIL_MEM_cpy_8((void*)outbuf,(void*)tlv_buf, tlv_buf_size);
outbuf[i++] = sts_mtmcode1; i = tlv_buf_size;
outbuf[i++] = sts_mtmcode2; APP_LOG(TS_OFF, VLEVEL_L, "###### RSS Full CFG=%s\r\n",(char *)outbuf);
outbuf[i++] = sts_version;
outbuf[i++] = sts_hardware_ver;
for (uint8_t j=0; j < CFG_CMD_RSS_FULL_SIZE; j++)
{
//outbuf[i++] = (uint8_t)(sts_cfg_nvm.p[j]+0x30)&0xff;
outbuf[i++] = tlv_buf[CFG_CMD4+j];
}
// Step 2: Save valid config to NVM // Step 2: Save valid config to NVM
sts_cfg_nvm.mtmcode1 = sts_mtmcode1; sts_cfg_nvm.mtmcode1 = sts_mtmcode1;
@ -2442,17 +2448,10 @@ void USER_APP_AUTO_RESPONDER_Parse(char *tlv_buf, size_t tlv_buf_size)
STS_PRESENCE_SENSOR_NVM_CFG_SIMPLE(); STS_PRESENCE_SENSOR_NVM_CFG_SIMPLE();
i=0; // Step 1: Prepare status update message i=0; // Step 1: Prepare status update message
outbuf[i++] = (char) 'P'; UTIL_MEM_set_8((void*)outbuf, 0x0, sizeof(outbuf));
outbuf[i++] = sts_mtmcode1; UTIL_MEM_cpy_8((void*)outbuf,(void*)tlv_buf, tlv_buf_size);
outbuf[i++] = sts_mtmcode2; i = tlv_buf_size;
outbuf[i++] = sts_version; APP_LOG(TS_OFF, VLEVEL_L, "###### RSS Simple CFG=%s\r\n",(char*)outbuf);
outbuf[i++] = sts_hardware_ver;
for (j=0; j < CFG_CMD_RSS_SIMPLE_SIZE; j++)
{
outbuf[i++] = (uint8_t)(sts_cfg_nvm.p[j]+0x30)&0xff;
}
APP_LOG(TS_OFF, VLEVEL_L, "###### RSS Simple CFG=%s\r\n",(uint8_t*)outbuf);
// Step 2: Save valid config to NVM // Step 2: Save valid config to NVM
sts_cfg_nvm.mtmcode1 = sts_mtmcode1; sts_cfg_nvm.mtmcode1 = sts_mtmcode1;
@ -2529,9 +2528,8 @@ void USER_APP_AUTO_RESPONDER_Parse(char *tlv_buf, size_t tlv_buf_size)
} }
i=0; i=0;
for (uint8_t j=0; j <(tlv_buf_size) ; j++) { UTIL_MEM_set_8((void*)outbuf, 0x0, sizeof(outbuf));
outbuf[i++] = (uint8_t) tlv_buf[j]; UTIL_MEM_cpy_8((void*)outbuf,(void*)tlv_buf, tlv_buf_size);
}
STS_SENSOR_Upload_Message(LORAWAN_USER_APP_CTRL_REPLY_PORT, i, (uint8_t *)outbuf); STS_SENSOR_Upload_Message(LORAWAN_USER_APP_CTRL_REPLY_PORT, i, (uint8_t *)outbuf);
} }
@ -2619,7 +2617,7 @@ void OnStoreSTSCFGContextRequest(void)
nvm_store_value[i++] = sts_cfg_nvm.work_mode; nvm_store_value[i++] = sts_cfg_nvm.work_mode;
nvm_store_value[i++] = sts_cfg_nvm.sts_service_mask; nvm_store_value[i++] = sts_cfg_nvm.sts_service_mask;
nvm_store_value[i++] = sts_cfg_nvm.sts_ioc_mask; nvm_store_value[i++] = sts_cfg_nvm.sts_ioc_mask;
nvm_store_value[i++] = (uint8_t) STS_O7_NVM_CFG_SIZE; //sts_cfg_nvm.length; nvm_store_value[i++] = sts_cfg_nvm.length; //(uint8_t) STS_O7_NVM_CFG_SIZE; //sts_cfg_nvm.length;
for (j = 0; j < STS_O7_CFG_PCFG_SIZE; j++) { for (j = 0; j < STS_O7_CFG_PCFG_SIZE; j++) {
nvm_store_value[i++] = (sts_cfg_nvm.p[j]); nvm_store_value[i++] = (sts_cfg_nvm.p[j]);
@ -2659,7 +2657,7 @@ void OnStoreSTSCFGContextRequest(void)
/* USER CODE END OnStoreContextRequest_Last */ /* USER CODE END OnStoreContextRequest_Last */
} }
void OnRestoreSTSCFGContextRequest(uint8_t *cfg_in_nvm) void OnRestoreSTSCFGContextRequest(void *cfg_in_nvm)
{ {
/* USER CODE BEGIN OnRestoreSTSCFGContextRequest_1 */ /* USER CODE BEGIN OnRestoreSTSCFGContextRequest_1 */
// uint8_t nvm_store_value[YUNHORN_STS_MAX_NVM_CFG_SIZE]="", nvm_store_size=YUNHORN_STS_MAX_NVM_CFG_SIZE; // uint8_t nvm_store_value[YUNHORN_STS_MAX_NVM_CFG_SIZE]="", nvm_store_size=YUNHORN_STS_MAX_NVM_CFG_SIZE;
@ -2667,7 +2665,8 @@ void OnRestoreSTSCFGContextRequest(uint8_t *cfg_in_nvm)
APP_LOG(TS_OFF, VLEVEL_M, "Restore NVM start\r\n"); APP_LOG(TS_OFF, VLEVEL_M, "Restore NVM start\r\n");
/* USER CODE END OnRestoreSTSCFGContextRequest_1 */ /* USER CODE END OnRestoreSTSCFGContextRequest_1 */
UTIL_MEM_cpy_8(cfg_in_nvm, (void *)STS_CONFIG_NVM_BASE_ADDRESS, YUNHORN_STS_MAX_NVM_CFG_SIZE); FLASH_IF_Read(cfg_in_nvm, STS_CONFIG_NVM_BASE_ADDRESS, YUNHORN_STS_MAX_NVM_CFG_SIZE);
//UTIL_MEM_cpy_8(cfg_in_nvm, (void *)STS_CONFIG_NVM_BASE_ADDRESS, YUNHORN_STS_MAX_NVM_CFG_SIZE);
/* USER CODE BEGIN OnRestoreSTSCFGContextRequest_Last */ /* USER CODE BEGIN OnRestoreSTSCFGContextRequest_Last */
@ -2683,7 +2682,8 @@ void STS_REBOOT_CONFIG_Init(void)
uint8_t nvm_stored_value[YUNHORN_STS_MAX_NVM_CFG_SIZE]={0x0}; uint8_t nvm_stored_value[YUNHORN_STS_MAX_NVM_CFG_SIZE]={0x0};
/* USER CODE END OnRestoreContextRequest_1 */ /* USER CODE END OnRestoreContextRequest_1 */
UTIL_MEM_cpy_8(nvm_stored_value, (void *)STS_CONFIG_NVM_BASE_ADDRESS, YUNHORN_STS_MAX_NVM_CFG_SIZE); //UTIL_MEM_cpy_8(nvm_stored_value, (void *)STS_CONFIG_NVM_BASE_ADDRESS, YUNHORN_STS_MAX_NVM_CFG_SIZE);
FLASH_IF_Read(nvm_stored_value, STS_CONFIG_NVM_BASE_ADDRESS, YUNHORN_STS_MAX_NVM_CFG_SIZE);
/* USER CODE BEGIN OnRestoreContextRequest_Last */ /* USER CODE BEGIN OnRestoreContextRequest_Last */
//#if (defined(STS_O7)||defined(STS_O5) || defined(STS_O6) || defined(STS_R0) || defined(STS_R5)|| defined(STS_R4)|| defined(STS_R1D)) //#if (defined(STS_O7)||defined(STS_O5) || defined(STS_O6) || defined(STS_R0) || defined(STS_R5)|| defined(STS_R4)|| defined(STS_R1D))
@ -2749,9 +2749,7 @@ void OnRestoreSTSCFGContextProcess(void)
} else if ((char) sts_cfg_nvm.unit =='S') { } else if ((char) sts_cfg_nvm.unit =='S') {
periodicity *= 1; periodicity *= 1;
} }
periodicity = (periodicity > 10)? periodicity : 10; // in seconds unit periodicity *= 1000; // to ms
//TxPeriodicity= periodicity*1000; // to ms
//OnTxPeriodicityChanged(TxPeriodicity); // in msec unit
uint32_t sampling = (sts_cfg_nvm.sampling); uint32_t sampling = (sts_cfg_nvm.sampling);
if ((char)sts_cfg_nvm.s_unit =='M') { if ((char)sts_cfg_nvm.s_unit =='M') {
@ -2767,6 +2765,7 @@ void OnRestoreSTSCFGContextProcess(void)
{ // ensure it's not in production yet { // ensure it's not in production yet
OnTxPeriodicityChanged(APP_TX_DUTYCYCLE); // in msec unit OnTxPeriodicityChanged(APP_TX_DUTYCYCLE); // in msec unit
OnYunhornSTSHeartBeatPeriodicityChanged(HeartBeatPeriodicity); OnYunhornSTSHeartBeatPeriodicityChanged(HeartBeatPeriodicity);
OnYunhornSTSSamplingPeriodicityChanged(sampling); // in m-sec unit
} else } else
{ {
//OnTxPeriodicityChanged(TxPeriodicity); // in msec unit //OnTxPeriodicityChanged(TxPeriodicity); // in msec unit
@ -2776,7 +2775,8 @@ void OnRestoreSTSCFGContextProcess(void)
HeartBeatPeriodicity = samplingperiodicity*1000; HeartBeatPeriodicity = samplingperiodicity*1000;
#endif #endif
#if defined(STS_O7)|| defined(STS_O6) ||defined(STS_O5) #if defined(STS_O7)|| defined(STS_O6) ||defined(STS_O5)
OnYunhornSTSHeartBeatPeriodicityChanged(periodicity*1000); HeartBeatPeriodicity = periodicity;
OnYunhornSTSHeartBeatPeriodicityChanged(HeartBeatPeriodicity);
OnYunhornSTSSamplingPeriodicityChanged(sampling); // in m-sec unit OnYunhornSTSSamplingPeriodicityChanged(sampling); // in m-sec unit
#endif #endif
@ -2814,7 +2814,7 @@ void OnRestoreSTSCFGContextProcess(void)
if ((sts_version == sts_cfg_nvm.version)&& (NVM_CFG_PARAMETER_SIZE == sts_cfg_nvm.length)) if ((sts_version == sts_cfg_nvm.version)&& (NVM_CFG_PARAMETER_SIZE == sts_cfg_nvm.length))
{ {
STS_PRESENCE_SENSOR_Init(); STS_PRESENCE_SENSOR_Init();
//STS_PRESENCE_SENSOR_RSS_Init(); STS_PRESENCE_SENSOR_RSS_Init();
} }
#endif #endif
@ -2896,8 +2896,8 @@ void STS_SENSOR_Function_Test_Process(void)
#endif #endif
} }
memset((void*)outbuf,0x0, sizeof(outbuf)); //memset((void*)outbuf,0x0, sizeof(outbuf));
memcpy((void*)outbuf, tstbuf, i); UTIL_MEM_cpy_8((void*)outbuf, (void*)tstbuf, i);
STS_SENSOR_Upload_Message(LORAWAN_USER_APP_CTRL_REPLY_PORT, i, (uint8_t*)outbuf); STS_SENSOR_Upload_Message(LORAWAN_USER_APP_CTRL_REPLY_PORT, i, (uint8_t*)outbuf);
} }

View File

@ -39,7 +39,7 @@
</tool> </tool>
<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.185590387" name="MCU GCC Compiler" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler"> <tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.185590387" name="MCU GCC Compiler" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler">
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.debuglevel.996713053" name="Debug level" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.debuglevel" useByScannerDiscovery="false" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.debuglevel.value.g3" valueType="enumerated"/> <option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.debuglevel.996713053" name="Debug level" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.debuglevel" useByScannerDiscovery="false" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.debuglevel.value.g3" valueType="enumerated"/>
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.optimization.level.1022522097" name="Optimization level" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.optimization.level" useByScannerDiscovery="false" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.optimization.level.value.og" valueType="enumerated"/> <option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.optimization.level.1022522097" name="Optimization level" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.optimization.level" useByScannerDiscovery="false" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.optimization.level.value.os" valueType="enumerated"/>
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.definedsymbols.2089215826" name="Define symbols (-D)" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.definedsymbols" useByScannerDiscovery="false" valueType="definedSymbols"> <option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.definedsymbols.2089215826" name="Define symbols (-D)" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.definedsymbols" useByScannerDiscovery="false" valueType="definedSymbols">
<listOptionValue builtIn="false" value="CORE_CM4"/> <listOptionValue builtIn="false" value="CORE_CM4"/>
<listOptionValue builtIn="false" value="STS_O7"/> <listOptionValue builtIn="false" value="STS_O7"/>
@ -137,7 +137,8 @@
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.nanoscanffloat.1874218879" name="Use float with scanf from newlib-nano (-u _scanf_float)" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.nanoscanffloat" useByScannerDiscovery="false" value="false" valueType="boolean"/> <option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.nanoscanffloat.1874218879" name="Use float with scanf from newlib-nano (-u _scanf_float)" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.nanoscanffloat" useByScannerDiscovery="false" value="false" valueType="boolean"/>
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.nanoprintffloat.1776401448" name="Use float with printf from newlib-nano (-u _printf_float)" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.nanoprintffloat" useByScannerDiscovery="false" value="true" valueType="boolean"/> <option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.nanoprintffloat.1776401448" name="Use float with printf from newlib-nano (-u _printf_float)" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.nanoprintffloat" useByScannerDiscovery="false" value="true" valueType="boolean"/>
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.convertbinary.639397767" name="Convert to binary file (-O binary)" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.convertbinary" useByScannerDiscovery="false" value="true" valueType="boolean"/> <option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.convertbinary.639397767" name="Convert to binary file (-O binary)" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.convertbinary" useByScannerDiscovery="false" value="true" valueType="boolean"/>
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.converthex.2096511505" name="Convert to Intel Hex file (-O ihex)" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.converthex" useByScannerDiscovery="false" value="true" valueType="boolean"/> <option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.converthex.2096511505" name="Convert to Intel Hex file (-O ihex)" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.converthex" useByScannerDiscovery="false" value="false" valueType="boolean"/>
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.listfile.769752034" name="Generate list file" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.listfile" useByScannerDiscovery="false" value="false" valueType="boolean"/>
<targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.targetplatform.504306143" isAbstract="false" osList="all" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.targetplatform"/> <targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.targetplatform.504306143" isAbstract="false" osList="all" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.targetplatform"/>
<builder buildPath="${workspace_loc:/LoRaWAN_End_Node}/Release" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.builder.820311016" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Gnu Make Builder" parallelBuildOn="true" parallelizationNumber="optimal" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.builder"/> <builder buildPath="${workspace_loc:/LoRaWAN_End_Node}/Release" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.builder.820311016" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Gnu Make Builder" parallelBuildOn="true" parallelizationNumber="optimal" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.builder"/>
<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.1121803732" name="MCU GCC Assembler" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler"> <tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.1121803732" name="MCU GCC Assembler" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler">
@ -207,6 +208,7 @@
<listOptionValue builtIn="false" value="-Xlinker -no-enum-size-warning"/> <listOptionValue builtIn="false" value="-Xlinker -no-enum-size-warning"/>
<listOptionValue builtIn="false" value="-z noexecstack"/> <listOptionValue builtIn="false" value="-z noexecstack"/>
</option> </option>
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.linker.option.uselinkergroup.144730019" name="Place libraries in a linker group (-Wl,--start-group $(LIBS) -Wl,--end-group)" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.linker.option.uselinkergroup" value="true" valueType="boolean"/>
<inputType id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.linker.input.715223353" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.linker.input"> <inputType id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.linker.input.715223353" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.linker.input">
<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/> <additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
<additionalInput kind="additionalinput" paths="$(LIBS)"/> <additionalInput kind="additionalinput" paths="$(LIBS)"/>

View File

@ -56,12 +56,6 @@ STS_O7.map \
SIZE_OUTPUT += \ SIZE_OUTPUT += \
default.size.stdout \ default.size.stdout \
OBJDUMP_LIST += \
STS_O7.list \
OBJCOPY_HEX += \
STS_O7.hex \
OBJCOPY_BIN += \ OBJCOPY_BIN += \
STS_O7.bin \ STS_O7.bin \
@ -74,7 +68,7 @@ main-build: STS_O7.elf secondary-outputs
# Tool invocations # Tool invocations
STS_O7.elf STS_O7.map: $(OBJS) $(USER_OBJS) D:\ONEDRIVE\STM32WLV13\Projects\NUCLEO-WL55JC\Applications\LoRaWAN\YUNHORN_STS_E5CC_AS923_POC\STM32CubeIDE\STM32WLE5CCUX_FLASH.ld makefile objects.list $(OPTIONAL_TOOL_DEPS) STS_O7.elf STS_O7.map: $(OBJS) $(USER_OBJS) D:\ONEDRIVE\STM32WLV13\Projects\NUCLEO-WL55JC\Applications\LoRaWAN\YUNHORN_STS_E5CC_AS923_POC\STM32CubeIDE\STM32WLE5CCUX_FLASH.ld makefile objects.list $(OPTIONAL_TOOL_DEPS)
arm-none-eabi-gcc -o "STS_O7.elf" @"objects.list" $(USER_OBJS) $(LIBS) -mcpu=cortex-m4 -T"D:\ONEDRIVE\STM32WLV13\Projects\NUCLEO-WL55JC\Applications\LoRaWAN\YUNHORN_STS_E5CC_AS923_POC\STM32CubeIDE\STM32WLE5CCUX_FLASH.ld" --specs=nosys.specs -Wl,-Map="STS_O7.map" -Wl,--gc-sections -static -L"D:\ONEDRIVE\STM32WLV13\Projects\NUCLEO-WL55JC\Applications\LoRaWAN\STS_O7\STM32CubeIDE\rss\lib" -L../../../../../../../Middlewares/ST/STM32_Cryptographic/lib -Xlinker -no-enum-size-warning -z noexecstack --specs=nano.specs -mfloat-abi=soft -mthumb -u _printf_float -Wl,--start-group -lc -lm -Wl,--end-group arm-none-eabi-gcc -o "STS_O7.elf" @"objects.list" $(USER_OBJS) -Wl,--start-group $(LIBS) -Wl,--end-group -mcpu=cortex-m4 -T"D:\ONEDRIVE\STM32WLV13\Projects\NUCLEO-WL55JC\Applications\LoRaWAN\YUNHORN_STS_E5CC_AS923_POC\STM32CubeIDE\STM32WLE5CCUX_FLASH.ld" --specs=nosys.specs -Wl,-Map="STS_O7.map" -Wl,--gc-sections -static -L"D:\ONEDRIVE\STM32WLV13\Projects\NUCLEO-WL55JC\Applications\LoRaWAN\STS_O7\STM32CubeIDE\rss\lib" -L../../../../../../../Middlewares/ST/STM32_Cryptographic/lib -Xlinker -no-enum-size-warning -z noexecstack --specs=nano.specs -mfloat-abi=soft -mthumb -u _printf_float -Wl,--start-group -lc -lm -Wl,--end-group
@echo 'Finished building target: $@' @echo 'Finished building target: $@'
@echo ' ' @echo ' '
@ -83,16 +77,6 @@ default.size.stdout: $(EXECUTABLES) makefile objects.list $(OPTIONAL_TOOL_DEPS)
@echo 'Finished building: $@' @echo 'Finished building: $@'
@echo ' ' @echo ' '
STS_O7.list: $(EXECUTABLES) makefile objects.list $(OPTIONAL_TOOL_DEPS)
arm-none-eabi-objdump -h -S $(EXECUTABLES) > "STS_O7.list"
@echo 'Finished building: $@'
@echo ' '
STS_O7.hex: $(EXECUTABLES) makefile objects.list $(OPTIONAL_TOOL_DEPS)
arm-none-eabi-objcopy -O ihex $(EXECUTABLES) "STS_O7.hex"
@echo 'Finished building: $@'
@echo ' '
STS_O7.bin: $(EXECUTABLES) makefile objects.list $(OPTIONAL_TOOL_DEPS) STS_O7.bin: $(EXECUTABLES) makefile objects.list $(OPTIONAL_TOOL_DEPS)
arm-none-eabi-objcopy -O binary $(EXECUTABLES) "STS_O7.bin" arm-none-eabi-objcopy -O binary $(EXECUTABLES) "STS_O7.bin"
@echo 'Finished building: $@' @echo 'Finished building: $@'
@ -100,10 +84,10 @@ STS_O7.bin: $(EXECUTABLES) makefile objects.list $(OPTIONAL_TOOL_DEPS)
# Other Targets # Other Targets
clean: clean:
-$(RM) STS_O7.bin STS_O7.elf STS_O7.hex STS_O7.list STS_O7.map default.size.stdout -$(RM) STS_O7.bin STS_O7.elf STS_O7.map default.size.stdout
-@echo ' ' -@echo ' '
secondary-outputs: $(SIZE_OUTPUT) $(OBJDUMP_LIST) $(OBJCOPY_HEX) $(OBJCOPY_BIN) secondary-outputs: $(SIZE_OUTPUT) $(OBJCOPY_BIN)
fail-specified-linker-script-missing: fail-specified-linker-script-missing:
@echo 'Error: Cannot find the specified linker script. Check the linker settings in the build configuration.' @echo 'Error: Cannot find the specified linker script. Check the linker settings in the build configuration.'

View File

@ -43,7 +43,7 @@ STS_O7 For Occupancy sensors
2024-06-06 before STS_FALL_DETECTION_MODE change 2024-06-06 before STS_FALL_DETECTION_MODE change
2024-06-17 good for sensor 1 and sensor 2 start stop timer freezed for now 2024-06-17 good for sensor 1 and sensor 2 start stop timer freezed for now
2024-06-26 RTM for pixel-network STS_RSS_MODE = 3 P113 switch 2024-06-26 RTM for pixel-network STS_RSS_MODE = 3 P113 switch
****************************************************************************** 2024-07-30 revert back ...not good for alarm so far
*****************************************************************************
*/ */