RM2_1 #2

Merged
sundp merged 208 commits from RM2_1 into master 2024-09-13 09:16:14 +08:00
4 changed files with 67 additions and 28 deletions
Showing only changes of commit 2bf4134f7e - Show all commits

View File

@ -30,8 +30,8 @@ extern "C" {
#define DEFAULT_SATURATION 50 // 0 - 100 SSaturation, 0~100
#define DEFAULT_BRIGHTNESS 50 // 0 - 100 VValue of lightness, 0~100
#define DEFAULT_LUMINANCE_LEVEL (30)
#define STS_Status_Door_Close (1) //Normal Close NC:Open
#define STS_Status_Door_Open (0) //Normal Close NC:Close
#define STS_Status_Door_Close (0) //Normal Close NC:Open **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_Release (1) //Normal Open NO:Close

View File

@ -50,7 +50,7 @@ extern "C" {
* #define VLEVEL_M 2 functional traces
* #define VLEVEL_H 3 all traces
*/
#define VERBOSE_LEVEL VLEVEL_M
#define VERBOSE_LEVEL VLEVEL_L
/**
* @brief Enable trace logs
@ -78,7 +78,7 @@ extern "C" {
* @brief Enable/Disable MCU Debugger pins (dbg serial wires)
* @note by HW serial wires are ON by default, need to put them OFF to save power
*/
#define DEBUGGER_ENABLED 1
#define DEBUGGER_ENABLED 0
/**
* @brief Disable Low Power mode

View File

@ -547,7 +547,9 @@ void STS_PRESENCE_SENSOR_Prepare_Send_Data(STS_OO_SensorStatusDataTypeDef *senso
}
sensor_data->unconscious_state=(sts_fall_rising_detected_result == STS_PRESENCE_UNCONSCIOUS)? 1:0;
sensor_data->over_stay_state = sts_o7_sensorData.over_stay_state;
sensor_data->over_stay_duration = sts_o7_sensorData.over_stay_duration;
sensor_data->over_stay_duration = sts_o7_sensorData.event_sensor1_duration;
APP_LOG(TS_OFF,VLEVEL_L,"\r\n ... Over Stay Duration=%u Sec\r\n", sensor_data->over_stay_duration);
sensor_data->fall_state = sts_fall_rising_detected_result;
if (sts_fall_rising_detected_result == STS_PRESENCE_FALL)
@ -857,12 +859,14 @@ void STS_O5_SENSOR_Read(STS_OO_SensorDataTypeDef *oo_data)
void OnSensor1StateChanged(void)
{
SysTime_t sensor_event_time = SysTimeGetMcuTime();
if (sts_hall1_read==STS_Status_Door_Close)
if (sts_hall1_read == STS_Status_Door_Close)
{
sts_o7_sensorData.event_sensor1_start_time = sensor_event_time.Seconds;
sts_o7_sensorData.event_sensor1_duration = 0;
APP_LOG(TS_OFF, VLEVEL_L, "Door Closed ---Timer start: %u\r\n",sts_o7_sensorData.event_sensor1_start_time );
} else if (sts_hall1_read==STS_Status_Door_Open)
{
sts_o7_sensorData.event_sensor1_start_time = 0;
sts_o7_sensorData.event_sensor1_stop_time = sensor_event_time.Seconds;
//sts_o7_sensorData.event_sensor1_duration = 0;
}
@ -879,6 +883,7 @@ void OnSensor2StateChanged(void)
sts_o7_sensorData.event_sensor2_duration = 0;
}else if (sts_hall2_read==STS_Status_SOS_Release)
{
sts_o7_sensorData.event_sensor2_start_time =0;
sts_o7_sensorData.event_sensor2_stop_time = sensor_event_time.Seconds;
//sts_o7_sensorData.event_sensor2_duration = 0;
}

View File

@ -140,6 +140,17 @@ extern volatile uint8_t sensor_data_ready;
extern volatile STS_OO_SensorStatusDataTypeDef sts_o7_sensorData;
extern volatile float sts_distance_rss_distance, sts_sensor_install_height;
//#define STS_Status_Door_Close (1) //Normal Close NC:Open **2024-07-15 changed
//#define STS_Status_Door_Open (0) //Normal Close NC:Close **2024-07-15 changed
char sts_door_status_code[2][10]={
"Close",
"Open "
};
char sts_sos_status_code[2][10]={
"PushDown",
"No_Push"
};
char sts_lamp_color_code[15][15]={
"Dark",
"Green",
@ -670,6 +681,7 @@ void LoRaWAN_Init(void)
UTIL_TIMER_PERIODIC, OnYunhornSTSHeartBeatTimerEvent, NULL);
UTIL_TIMER_Start(&YunhornSTSHeartBeatTimer);
UTIL_TIMER_Start(&STSDurationCheckTimer);
#else
UTIL_TIMER_Create(&YunhornSTSSamplingCheckTimer,
@ -690,17 +702,19 @@ void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
case HALL1_Pin:
if (sts_reed_hall_1_changed)
{
HAL_Delay(30); //de-bouncing
sts_hall1_read = HALL1_STATE;
HAL_Delay(30); //de-bouncing
if (sts_hall1_read == HALL1_STATE)
{
SysTime_t current_event_time = SysTimeGetMcuTime();
if ((last_sts_hall1_read !=sts_hall1_read) && ((current_event_time.Seconds - sts_o7_sensorData.event_sensor1_start_time)>5)&&((current_event_time.Seconds - sts_o7_sensorData.event_sensor1_stop_time)>5))
if ((last_sts_hall1_read !=sts_hall1_read) && ((current_event_time.Seconds - sts_o7_sensorData.event_sensor1_start_time)>5)
&&((current_event_time.Seconds - sts_o7_sensorData.event_sensor1_stop_time)>5))
{
if (((current_event_time.Seconds - sts_o7_sensorData.event_sensor1_start_time) > 5) || ((current_event_time.Seconds - sts_o7_sensorData.event_sensor1_stop_time) > 5))
//if (((current_event_time.Seconds - sts_o7_sensorData.event_sensor1_start_time) > 5) || ((current_event_time.Seconds - sts_o7_sensorData.event_sensor1_stop_time) > 5))
// if (last_sts_hall1_read !=sts_hall1_read)
{
APP_LOG(TS_OFF, VLEVEL_L, "\n\n Door Contact Read = %02x --%20s\r\n", HALL1_STATE, (HALL1_STATE==STS_Status_Door_Close)?"Door Closed":"Door Opened");
APP_LOG(TS_OFF, VLEVEL_L, "\n\n Door Contact Read = %02x --%s\r\n", sts_hall1_read, sts_door_status_code[sts_hall1_read]);
OnSensor1StateChanged();
/* Note: when "EventType == TX_ON_TIMER" this GPIO is not initialized */
// if (EventType == TX_ON_EVENT)
@ -724,12 +738,12 @@ void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
HAL_Delay(30); //de-bouncing
if (sts_hall2_read == HALL2_STATE)
{
SysTime_t current_event_time = SysTimeGetMcuTime();
//SysTime_t current_event_time = SysTimeGetMcuTime();
if (last_sts_hall2_read != sts_hall2_read)
{
if (((current_event_time.Seconds - sts_o7_sensorData.event_sensor2_start_time) > 2) || ((current_event_time.Seconds - sts_o7_sensorData.event_sensor2_stop_time) > 2))
//if (((current_event_time.Seconds - sts_o7_sensorData.event_sensor2_start_time) > 2) || ((current_event_time.Seconds - sts_o7_sensorData.event_sensor2_stop_time) > 2))
{
APP_LOG(TS_OFF, VLEVEL_L, "\n\n SOS Button Read = %02x --%20s\r\n", HALL2_STATE, (HALL2_STATE==STS_Status_SOS_Pushdown)?"SOS Pushdown":"SOS Released");
APP_LOG(TS_OFF, VLEVEL_L, "\n\n SOS Button Read = %02x --%s\r\n", sts_hall2_read, sts_sos_status_code[sts_hall2_read]);
OnSensor2StateChanged();
//sensor_data_ready =1;
UTIL_SEQ_SetTask((1 << CFG_SEQ_Task_YunhornSTSEventP1), CFG_SEQ_Prio_0);
@ -949,22 +963,22 @@ static void SendTxData(void)
char colorshow[30]="";
strcpy(colorshow, (ich==0)?"":sts_lamp_color_code[ich]);
APP_LOG(TS_OFF, VLEVEL_M,
APP_LOG(TS_OFF, VLEVEL_L,
"\r\n######| Color = %s%s | Mode = %5s |\r\n",(char *)colorshow, sts_lamp_color_code[icl], (char*)sts_work_mode_code[sensorData.workmode]);
if (sts_work_mode == STS_UNI_MODE)
{
APP_LOG(TS_OFF, VLEVEL_M,
"\r\n######| S1-DoorOpen | S2-Motion | S3-SOS | S4 |Distance(mm) | MotionScore| Unconscious | Over_Stay_(min) | Fall Detected|"
"\r\n######| %1d | %1d | %1d | %1d | %04d | %04d | %1d | %4d | %1d |\r\n",
sensorData.state_sensor1_on_off, sensorData.state_sensor2_on_off,sensorData.state_sensor3_on_off, sensorData.state_sensor4_on_off,
APP_LOG(TS_OFF, VLEVEL_L,
"\r\n######| S1-Door | S2-Motion | S3-SOS | S4 |Distance(mm) | MotionScore| Unconscious | Over_Stay_(min) | Fall Detected|"
"\r\n######| %s | %1d | %s | %1d | %04d | %04d | %1d | %4d | %1d |\r\n",
sts_door_status_code[sensorData.state_sensor1_on_off], sensorData.state_sensor2_on_off,sts_sos_status_code[sensorData.state_sensor3_on_off], sensorData.state_sensor4_on_off,
(uint16_t)sensorData.rss_presence_distance,(uint16_t)sensorData.rss_presence_score,
sensorData.unconscious_state, sensorData.over_stay_duration/60, sensorData.fall_state );
sensorData.unconscious_state, sensorData.over_stay_duration, sensorData.fall_state );
} else if (sts_work_mode == STS_DUAL_MODE) {
APP_LOG(TS_OFF, VLEVEL_M,
"\r\n######| S1-DoorOpen | S2-Motion | S3-SOS |\r\n"
"\r\n######| %1d | %1d | %1d |\r\n",
sensorData.state_sensor1_on_off, sensorData.state_sensor2_on_off,sensorData.state_sensor3_on_off);
APP_LOG(TS_OFF, VLEVEL_L,
"\r\n######| S1-Door | S2-Motion | S3-SOS |\r\n"
"\r\n######| %s | %1d | %s |\r\n",
sts_door_status_code[sensorData.state_sensor1_on_off], sensorData.state_sensor2_on_off,sts_sos_status_code[sensorData.state_sensor3_on_off]);
}
}
@ -1125,27 +1139,47 @@ static void OnYunhornSTSDurationCheckTimerEvent(void *context)
if (STS_Status_Door_Close==sts_hall1_read)
{
sts_o7_sensorData.event_sensor1_duration = current_time.Seconds - sts_o7_sensorData.event_sensor1_start_time;
if (sts_o7_sensorData.event_sensor1_duration > sts_occupancy_overtime_threshold_in_10min*600)
} else {
sts_o7_sensorData.event_sensor1_duration = 0;
}
//if (sts_o7_sensorData.event_sensor1_duration > sts_occupancy_overtime_threshold_in_10min*600)
if (sts_o7_sensorData.event_sensor1_duration > sts_occupancy_overtime_threshold_in_10min*60) //for debug
{
sts_o7_sensorData.over_stay_state = 1;
sts_o7_sensorData.over_stay_duration = sts_o7_sensorData.event_sensor1_duration;
APP_LOG(TS_OFF, VLEVEL_L, "\r\nSensor 1 Over Stay = %d Sec \r\n", (sts_o7_sensorData.over_stay_duration));
}
// to be defiend later for SOS threshold TODO XXXX
if (STS_Status_SOS_Pushdown==sts_hall2_read)
{
sts_o7_sensorData.event_sensor2_duration = current_time.Seconds - sts_o7_sensorData.event_sensor2_start_time;
if (sts_o7_sensorData.event_sensor2_duration > sts_occupancy_overtime_threshold_in_10min*600)
} else {
sts_o7_sensorData.event_sensor2_duration =0;
}
//if (sts_o7_sensorData.event_sensor2_duration > sts_occupancy_overtime_threshold_in_10min*600)
if (sts_o7_sensorData.event_sensor2_duration > sts_occupancy_overtime_threshold_in_10min*60) //for debug
{
sts_o7_sensorData.over_stay_state = 1;
sts_o7_sensorData.over_stay_duration = sts_o7_sensorData.event_sensor2_duration;
// 2024-07-15 update, no overwrite sensor1 duration value
//sts_o7_sensorData.over_stay_duration = sts_o7_sensorData.event_sensor2_duration;
//
}
// to be defiend later for SOS threshold TODO XXXX
if (sts_rss_result==STS_RESULT_MOTION)
{
sts_o7_sensorData.event_sensor3_motion_duration = current_time.Seconds - sts_o7_sensorData.event_sensor3_motion_start_time;
if (sts_o7_sensorData.event_sensor3_motion_duration > sts_occupancy_overtime_threshold_in_10min*600)
} else {
sts_o7_sensorData.event_sensor3_motion_duration =0;
}
//if (sts_o7_sensorData.event_sensor3_motion_duration > sts_occupancy_overtime_threshold_in_10min*600)
if (sts_o7_sensorData.event_sensor3_motion_duration > sts_occupancy_overtime_threshold_in_10min) //for debug
{
sts_o7_sensorData.occupancy_over_stay_state = 1;
sts_o7_sensorData.occupancy_duration =sts_o7_sensorData.event_sensor3_motion_duration;