RM2_1 #2

Merged
sundp merged 208 commits from RM2_1 into master 2024-09-13 09:16:14 +08:00
10 changed files with 140 additions and 96 deletions
Showing only changes of commit 1fe94926e5 - Show all commits

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_SOS_Pushdown (0) //Normal Open NO:Open
#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 {
STS_DARK = 0, //灭0, Code 0x00

View File

@ -238,8 +238,8 @@
#define IS_STS_RS485_OUTPUT_ENABLE STS_IOC_OUT_1
#define MajorVer 24U
#define MinorVer 07U
#define SubMinorVer 30U
#define MinorVer 8U
#define SubMinorVer 1U
#define FirmwareVersion 3U
#define YUNHORN_STS_MAX_NVM_CFG_SIZE 64U
@ -429,8 +429,8 @@
* Address range 0800 0000H - 0803 FFFFH Size: 0x0004 0000
*/
#define FLASH_USER_START_ADDR ((void *) 0x0803F800U) // Last 2kB of flash
#define FLASH_USER_CONFIG_SIZE ((void *) 0x000007FFU) //0x400=1KB=1024
#define FLASH_USER_START_ADDR ((void *) 0x0803F800UL) // Last 2kB of flash
#define FLASH_USER_CONFIG_SIZE ((void *) 0x000007FFUL) //0x400=1KB=1024
#define FLASH_USER_END_ADDR (FLASH_USER_START_ADDR + FLASH_USER_CONFIG - 1)
/* 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_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_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
uint8_t rss_presence_zone[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_sensor4_start_time; /* reserved */
uint32_t event_sensor4_start_timestamp;
uint32_t event_sensor4_stop_time;
uint32_t event_sensor4_stop_timestamp;
uint32_t event_sensor4_duration;
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;
} STS_OO_SensorStatusDataTypeDef;
//#endif
@ -654,7 +665,7 @@ void OnStoreSTSCFGContextRequest(void);
/**
* @brief Read config from flash
*/
void OnRestoreSTSCFGContextRequest(uint8_t *cfg_in_nvm);
void OnRestoreSTSCFGContextRequest(void *cfg_in_nvm);
void STS_REBOOT_CONFIG_Init(void);
@ -734,7 +745,7 @@ void STS_MOTION_SENSOR_Enable_Wake_Up_Detection(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_Distance_Test_Process(void);
void STS_PRESENCE_SENSOR_Function_Test_Process(uint8_t *self_test_result, uint8_t count);

View File

@ -25,16 +25,10 @@
#include "usart.h"
/* Private includes ----------------------------------------------------------*/
/* USER CODE BEGIN Includes */
#include "yunhorn_sts_sensors.h"
#include "sts_cmox_hmac_sha.h"
#include "spi.h"
#include "dma.h"
#include "tim.h"
#include "sts_lamp_bar.h"
#include "sys_app.h"
#include "acc_hal_integration.h"
#include "acc_detector_presence.h"
/* USER CODE END Includes */
/* Private typedef -----------------------------------------------------------*/
@ -104,7 +98,6 @@ int main(void)
/* USER CODE BEGIN 2 */
/* USER CODE END 2 */
/* Infinite loop */

View File

@ -63,7 +63,7 @@ extern volatile uint8_t sts_occupancy_status;
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_hall3_read=STS_Status_Door_Open,sts_hall4_read=STS_Status_SOS_Release;
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_tof_result_changed_flag;

View File

@ -118,16 +118,11 @@ void SystemApp_Init(void)
/*Initialize the Sensors */
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; 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*/
UTIL_LPM_Init();

View File

@ -53,8 +53,8 @@
#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, 2, 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, 2.0, 2, 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};
extern float sts_distance_rss_distance, sts_sensor_install_height;
static void sts_distance_rss_update_configuration(acc_detector_distance_configuration_t distance_configuration);

View File

@ -63,7 +63,7 @@ volatile uint8_t sts_soap_level_state;
// RSS motion and distance
volatile STS_OO_SensorStatusDataTypeDef sts_o7_sensorData;
volatile float sts_distance_rss_distance, sts_sensor_install_height=0;//in mm
volatile float sts_distance_rss_distance=0, sts_sensor_install_height=0;//in mm
extern volatile float sts_presence_rss_distance, sts_presence_rss_score;
volatile uint8_t sts_rss_config_updated_flag = 0;
extern volatile uint8_t sts_occupancy_overtime_state;
@ -226,16 +226,16 @@ void STS_YunhornSTSEventRFAC_Process(void)
void STS_YunhornSTSEventP1_Process(void)
{
sts_reed_hall_1_result = HALL1_STATE; //sts_hall1_read;
sts_reed_hall_1_result = sts_hall1_read;//HALL1_STATE; //sts_hall1_read;
last_sts_reed_hall_1_result = sts_reed_hall_1_result;
sts_reed_hall_2_result = HALL2_STATE;// sts_hall2_read;
sts_reed_hall_2_result = sts_hall2_read;//HALL2_STATE;// sts_hall2_read;
last_sts_reed_hall_2_result = sts_reed_hall_2_result;
sts_reed_hall_3_result = HALL3_STATE;// sts_hall3_read;
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 = HALL4_STATE;// sts_hall3_read;
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();
@ -501,11 +501,13 @@ void STS_Combined_Status_Processing(void)
break;
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;
} 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;
@ -860,8 +862,8 @@ void STS_PRESENCE_SENSOR_Init(void)
sts_o7_sensorData.unconscious_state = 0;
sts_o7_sensorData.unconscious_duration = 0;
PME_ON;
STS_PRESENCE_SENSOR_REEDSWITCH_HALL_Init();
//PME_ON;
//STS_PRESENCE_SENSOR_REEDSWITCH_HALL_Init();
//STS_PRESENCE_SENSOR_TOF_Init();
//HAL_Delay(2000);
//STS_PRESENCE_SENSOR_Distance_Measure_Process();
@ -885,17 +887,23 @@ void STS_PRESENCE_SENSOR_RSS_Init(void)
APP_LOG(TS_ON, VLEVEL_H, "##### YunHorn SmarToilets(r) MEMS RSS Initializing \r\n");
PME_ON;
if ((sts_distance_rss_distance==0)&&(sts_sensor_install_height==0))
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))
{
uint8_t exit_status =0;
exit_status=sts_distance_rss_detector_distance();
if (exit_status ==0) {
APP_LOG(TS_ON, VLEVEL_M, "##### RSS Installation Height =%u \r\n", (uint16_t)sts_distance_rss_distance);
}
else {
APP_LOG(TS_ON, VLEVEL_M, "##### RSS Installation Height Error \r\n");
}
do {
APP_LOG(TS_ON, VLEVEL_H, "##### STS RSS Init step 2 \r\n");
exit_status=sts_distance_rss_detector_distance();
APP_LOG(TS_ON, VLEVEL_H, "##### STS RSS Init step 2 return =%u \r\n", exit_status);
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((exit_status));
sts_sensor_install_height=sts_distance_rss_distance;
}
@ -1219,6 +1227,25 @@ void OnSensor3StateChanged(void)
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)
@ -1232,6 +1259,25 @@ void OnSensor4StateChanged(void)
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_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

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

View File

@ -75,7 +75,7 @@ extern volatile uint32_t event_start_time, event_stop_time;
extern volatile uint16_t sts_unconscious_threshold;
volatile uint8_t sts_occupancy_overtime_state = 0;
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 uint8_t STS_LoRa_WAN_Joined = 0;
@ -83,7 +83,7 @@ volatile uint8_t upload_message_timer=0;
volatile uint8_t heart_beat_timer =0;
volatile uint32_t wcnt=0;
volatile bool p2_work_finished=true;
uint8_t outbuf[128]={0x0};
uint8_t outbuf[255]={0x0};
volatile static bool r_b=true;
volatile sts_cfg_nvm_t sts_cfg_nvm = {
sts_mtmcode1,
@ -222,7 +222,7 @@ typedef enum TxEventType_e
/* USER CODE BEGIN PTD */
#define YUNHORN_STS_RSS_WAKEUP_CHECK_TIME SamplingPeriodicity //3000 ms
#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 */
/* Private define ------------------------------------------------------------*/
@ -487,7 +487,7 @@ static LmHandlerParams_t LmHandlerParams =
/**
* @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
@ -612,7 +612,7 @@ void LoRaWAN_Init(void)
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(&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(&STSDurationCheckTimer, 20*LED_PERIOD_TIME, UTIL_TIMER_PERIODIC, OnYunhornSTSDurationCheckTimerEvent, NULL);
@ -684,24 +684,18 @@ void LoRaWAN_Init(void)
#endif
#if defined(STS_O7)||defined(STS_O6)
UTIL_TIMER_Create(&YunhornSTSRSSWakeUpTimer,
YUNHORN_STS_RSS_WAKEUP_CHECK_TIME,
UTIL_TIMER_PERIODIC, OnYunhornSTSOORSSWakeUpTimerEvent, NULL);
UTIL_TIMER_Create(&YunhornSTSRSSWakeUpTimer, YUNHORN_STS_RSS_WAKEUP_CHECK_TIME, UTIL_TIMER_PERIODIC, OnYunhornSTSOORSSWakeUpTimerEvent, NULL);
//UTIL_TIMER_Start(&YunhornSTSRSSWakeUpTimer);
UTIL_TIMER_Create(&YunhornSTSHeartBeatTimer,
YUNHORN_STS_HEART_BEAT_CHECK_TIME,
UTIL_TIMER_PERIODIC, OnYunhornSTSHeartBeatTimerEvent, NULL);
UTIL_TIMER_Create(&YunhornSTSHeartBeatTimer, YUNHORN_STS_HEART_BEAT_CHECK_TIME, UTIL_TIMER_PERIODIC, OnYunhornSTSHeartBeatTimerEvent, NULL);
//UTIL_TIMER_Start(&YunhornSTSHeartBeatTimer);
UTIL_TIMER_Start(&STSLampBarColorTimer);
//UTIL_TIMER_Start(&STSDurationCheckTimer);
UTIL_TIMER_Start(&STSDurationCheckTimer);
#else
UTIL_TIMER_Create(&YunhornSTSSamplingCheckTimer,
YUNHORN_STS_SAMPLING_CHECK_TIME,
UTIL_TIMER_PERIODIC, OnYunhornSTSSamplingCheckTimerEvent, NULL);
UTIL_TIMER_Create(&YunhornSTSSamplingCheckTimer, YUNHORN_STS_SAMPLING_CHECK_TIME, UTIL_TIMER_PERIODIC, OnYunhornSTSSamplingCheckTimerEvent, NULL);
UTIL_TIMER_Start(&YunhornSTSSamplingCheckTimer);
#endif
/* USER CODE END LoRaWAN_Init_Last */
@ -1116,20 +1110,9 @@ static void OnTxTimerEvent(void *context)
/* USER CODE BEGIN OnTxTimerEvent_1 */
/* USER CODE END OnTxTimerEvent_1 */
//heart_beat_timer = 1;
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_LoRaSendOnTxTimerOrButtonEvent), CFG_SEQ_Prio_0);
UTIL_SEQ_SetTask((1 << CFG_SEQ_Task_YunhornSTSEventRFAC), CFG_SEQ_Prio_0);
}
}
#endif
/*Wait for next tx slot*/
UTIL_TIMER_Start(&TxTimer);
@ -1428,10 +1411,14 @@ static void OnJoinRequest(LmHandlerJoinParams_t *joinParams)
}
heart_beat_timer = 1;
SendTxData();
//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(&STSDurationCheckTimer);
//UTIL_TIMER_Start(&TxTimer);
//UTIL_TIMER_Start(&STSDurationCheckTimer);
OnYunhornSTSHeartBeatPeriodicityChanged(HeartBeatPeriodicity);
/* USER CODE END OnJoinRequest_1 */
@ -1511,8 +1498,6 @@ static void OnTxPeriodicityChanged(uint32_t periodicity)
TxPeriodicity = APP_TX_DUTYCYCLE;
}
//HeartBeatPeriodicity = TxPeriodicity;
/* Update timer periodicity */
UTIL_TIMER_Stop(&TxTimer);
UTIL_TIMER_SetPeriod(&TxTimer, TxPeriodicity);
@ -1699,7 +1684,7 @@ static void OnYunhornSTSOORSSWakeUpTimerEvent(void *context)
}
}
//UTIL_TIMER_Start(&YunhornSTSRSSWakeUpTimer);
UTIL_TIMER_Start(&YunhornSTSRSSWakeUpTimer);
}
@ -1749,7 +1734,7 @@ static void OnYunhornSTSHeartBeatPeriodicityChanged(uint32_t periodicity)
UTIL_TIMER_Start(&YunhornSTSHeartBeatTimer);
/* 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 */
}
@ -1889,7 +1874,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;
UTIL_MEM_set_8((void*)outbuf,0x0, sizeof(outbuf));
@ -2113,6 +2098,7 @@ void USER_APP_AUTO_RESPONDER_Parse(char *tlv_buf, size_t tlv_buf_size)
PME_ON;
// 2024-07-31
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);
@ -2127,6 +2113,7 @@ void USER_APP_AUTO_RESPONDER_Parse(char *tlv_buf, size_t tlv_buf_size)
//STS_SENSOR_Power_OFF((tlv_buf[CFG_CMD3]-0x30));
PME_OFF;
// 2024-07-31
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);
@ -2141,6 +2128,7 @@ void USER_APP_AUTO_RESPONDER_Parse(char *tlv_buf, size_t tlv_buf_size)
PME_OFF;
PME_ON;
// 2024-07-31
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);
@ -2161,15 +2149,16 @@ void USER_APP_AUTO_RESPONDER_Parse(char *tlv_buf, size_t tlv_buf_size)
} else if ((char)tlv_buf[CFG_CMD5] == 'H') {
periodicity_length *= 3600;
}
TxPeriodicity = periodicity_length*1000; //translate to 1000ms=1s
periodicity_length = periodicity_length*1000; //translate to 1000ms=1s
//OnTxPeriodicityChanged(TxPeriodicity);
#if defined(STS_O6)||defined(STS_O7)
HeartBeatPeriodicity = TxPeriodicity;
OnYunhornSTSHeartBeatPeriodicityChanged(TxPeriodicity);
HeartBeatPeriodicity = periodicity_length;
OnYunhornSTSHeartBeatPeriodicityChanged(periodicity_length);
#endif
// 2024-07-31
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;
@ -2185,7 +2174,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;
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 {
STS_SENSOR_Upload_Config_Invalid_Message();
@ -2217,6 +2206,7 @@ void USER_APP_AUTO_RESPONDER_Parse(char *tlv_buf, size_t tlv_buf_size)
OnYunhornSTSSamplingPeriodicityChanged(SamplingPeriodicity);
#endif
// 2024-07-31
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;
@ -2281,6 +2271,7 @@ void USER_APP_AUTO_RESPONDER_Parse(char *tlv_buf, size_t tlv_buf_size)
OnStoreSTSCFGContextRequest();
i=0; // Step 1: Prepare status update message
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;
@ -2315,6 +2306,7 @@ void USER_APP_AUTO_RESPONDER_Parse(char *tlv_buf, size_t tlv_buf_size)
OnStoreSTSCFGContextRequest();
i=0; // Step 1: Prepare status update message
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;
APP_LOG(TS_OFF, VLEVEL_L, "###### Fall detection CFG = %s\r\n",(char*)outbuf);
@ -2343,6 +2335,7 @@ void USER_APP_AUTO_RESPONDER_Parse(char *tlv_buf, size_t tlv_buf_size)
OnStoreSTSCFGContextRequest();
i=0; // Step 1: Prepare status update message
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;
APP_LOG(TS_OFF, VLEVEL_L, "###### Occupancy/Overstay/unconscious config changed =%s\r\n",(char *)outbuf);
@ -2364,7 +2357,7 @@ void USER_APP_AUTO_RESPONDER_Parse(char *tlv_buf, size_t tlv_buf_size)
}
i=0; // Step 1: Prepare status update message
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;
APP_LOG(TS_OFF, VLEVEL_L, "###### P Work mode switched =%s\r\n",(char *)outbuf);
@ -2410,6 +2403,7 @@ void USER_APP_AUTO_RESPONDER_Parse(char *tlv_buf, size_t tlv_buf_size)
STS_PRESENCE_SENSOR_NVM_CFG();
i=0; // Step 1: Prepare status update message
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;
APP_LOG(TS_OFF, VLEVEL_L, "###### RSS Full CFG=%s\r\n",(char *)outbuf);
@ -2448,6 +2442,7 @@ void USER_APP_AUTO_RESPONDER_Parse(char *tlv_buf, size_t tlv_buf_size)
STS_PRESENCE_SENSOR_NVM_CFG_SIMPLE();
i=0; // Step 1: Prepare status update message
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;
APP_LOG(TS_OFF, VLEVEL_L, "###### RSS Simple CFG=%s\r\n",(char*)outbuf);
@ -2527,9 +2522,8 @@ void USER_APP_AUTO_RESPONDER_Parse(char *tlv_buf, size_t tlv_buf_size)
}
i=0;
for (uint8_t j=0; j <(tlv_buf_size) ; j++) {
outbuf[i++] = (uint8_t) tlv_buf[j];
}
UTIL_MEM_set_8((void*)outbuf, 0x0, sizeof(outbuf));
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);
}
@ -2657,7 +2651,7 @@ void OnStoreSTSCFGContextRequest(void)
/* USER CODE END OnStoreContextRequest_Last */
}
void OnRestoreSTSCFGContextRequest(uint8_t *cfg_in_nvm)
void OnRestoreSTSCFGContextRequest(void *cfg_in_nvm)
{
/* 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;
@ -2665,7 +2659,8 @@ void OnRestoreSTSCFGContextRequest(uint8_t *cfg_in_nvm)
APP_LOG(TS_OFF, VLEVEL_M, "Restore NVM start\r\n");
/* 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 */
@ -2682,7 +2677,7 @@ void STS_REBOOT_CONFIG_Init(void)
/* USER CODE END OnRestoreContextRequest_1 */
//UTIL_MEM_cpy_8(nvm_stored_value, (void *)STS_CONFIG_NVM_BASE_ADDRESS, YUNHORN_STS_MAX_NVM_CFG_SIZE);
FLASH_IF_Read((void*)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 */
//#if (defined(STS_O7)||defined(STS_O5) || defined(STS_O6) || defined(STS_R0) || defined(STS_R5)|| defined(STS_R4)|| defined(STS_R1D))
@ -2748,9 +2743,7 @@ void OnRestoreSTSCFGContextProcess(void)
} else if ((char) sts_cfg_nvm.unit =='S') {
periodicity *= 1;
}
periodicity = (periodicity > 10)? periodicity : 10; // in seconds unit
//TxPeriodicity= periodicity*1000; // to ms
//OnTxPeriodicityChanged(TxPeriodicity); // in msec unit
periodicity *= 1000; // to ms
uint32_t sampling = (sts_cfg_nvm.sampling);
if ((char)sts_cfg_nvm.s_unit =='M') {
@ -2766,6 +2759,7 @@ void OnRestoreSTSCFGContextProcess(void)
{ // ensure it's not in production yet
OnTxPeriodicityChanged(APP_TX_DUTYCYCLE); // in msec unit
OnYunhornSTSHeartBeatPeriodicityChanged(HeartBeatPeriodicity);
OnYunhornSTSSamplingPeriodicityChanged(sampling); // in m-sec unit
} else
{
//OnTxPeriodicityChanged(TxPeriodicity); // in msec unit
@ -2775,7 +2769,8 @@ void OnRestoreSTSCFGContextProcess(void)
HeartBeatPeriodicity = samplingperiodicity*1000;
#endif
#if defined(STS_O7)|| defined(STS_O6) ||defined(STS_O5)
OnYunhornSTSHeartBeatPeriodicityChanged(periodicity*1000);
HeartBeatPeriodicity = periodicity;
OnYunhornSTSHeartBeatPeriodicityChanged(HeartBeatPeriodicity);
OnYunhornSTSSamplingPeriodicityChanged(sampling); // in m-sec unit
#endif
@ -2813,7 +2808,7 @@ void OnRestoreSTSCFGContextProcess(void)
if ((sts_version == sts_cfg_nvm.version)&& (NVM_CFG_PARAMETER_SIZE == sts_cfg_nvm.length))
{
STS_PRESENCE_SENSOR_Init();
//STS_PRESENCE_SENSOR_RSS_Init();
STS_PRESENCE_SENSOR_RSS_Init();
}
#endif