RM2_1 #2
|
@ -32,6 +32,8 @@ extern "C" {
|
|||
|
||||
#define STS_Status_Door_Close (0) //Normal Close NC:Open
|
||||
#define STS_Status_Door_Open (1) //Normal Close NC:Close
|
||||
#define STS_Status_SOS_Pushdown (0) //Normal Open NO:Open
|
||||
#define STS_Status_SOS_Release (1) //Normal Open NO:Close
|
||||
|
||||
enum sts_lamp_color {
|
||||
STS_DARK = 0, //灭:0
|
||||
|
|
|
@ -56,13 +56,13 @@ uint8_t color_rgb[8][3] = { //STS_COLOR R G B MAPPING TABLE
|
|||
extern volatile uint8_t sts_service_mask;
|
||||
extern volatile uint8_t sts_work_mode;
|
||||
volatile uint8_t sts_reed_hall_ext_int = 0;
|
||||
volatile uint8_t sts_status_color = STS_DARK;
|
||||
volatile uint8_t sts_status_color = STS_GREEN;
|
||||
volatile uint8_t sts_lamp_bar_color = STS_GREEN; //puColor
|
||||
volatile uint8_t sts_cloud_netcolor = STS_GREEN; //netColor
|
||||
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=0,sts_hall2_read=0; // 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
|
||||
extern volatile uint8_t sts_reed_hall_1_result, sts_reed_hall_2_result;
|
||||
extern volatile uint8_t sts_tof_result_changed_flag;
|
||||
|
||||
|
@ -74,7 +74,7 @@ extern volatile uint8_t sts_rss_2nd_result; //2nd RSS sensor status
|
|||
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;
|
||||
volatile uint8_t last_lamp_bar_color=STS_GREEN;
|
||||
extern volatile uint8_t sts_presence_fall_detection;
|
||||
extern volatile uint8_t sts_fall_rising_detected_result;
|
||||
extern volatile float sts_presence_rss_distance;
|
||||
|
@ -231,7 +231,7 @@ void STS_Combined_Status_Processing(void)
|
|||
{
|
||||
mems_event_time = SysTimeGetMcuTime();
|
||||
|
||||
if ((sts_rss_result == STS_RESULT_MOTION) || (sts_reed_hall_1_result == STS_Status_Door_Close)|| (sts_reed_hall_2_result == STS_Status_Door_Close) || (sts_tof_result == STS_RESULT_PRESENCE))
|
||||
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_tof_result == STS_RESULT_PRESENCE))
|
||||
{
|
||||
|
||||
if (event_start_time == 0) {
|
||||
|
@ -243,7 +243,7 @@ void STS_Combined_Status_Processing(void)
|
|||
}
|
||||
|
||||
|
||||
} else if ((sts_rss_result != STS_RESULT_MOTION) || (sts_reed_hall_1_result != STS_Status_Door_Close)|| (sts_reed_hall_2_result != STS_Status_Door_Close) || (sts_tof_result != STS_RESULT_PRESENCE))
|
||||
} 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_tof_result != STS_RESULT_PRESENCE))
|
||||
{
|
||||
if (event_stop_time ==0)
|
||||
{
|
||||
|
@ -281,11 +281,11 @@ void STS_Combined_Status_Processing(void)
|
|||
}
|
||||
break;
|
||||
case STS_DUAL_MODE:
|
||||
if ((sts_rss_result == STS_RESULT_NO_MOTION) && (sts_reed_hall_1_result == STS_Status_Door_Open )&& (sts_reed_hall_2_result == STS_Status_Door_Open ))
|
||||
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_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_Door_Close ))
|
||||
} 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_status_color = STS_RED;
|
||||
if (sts_fall_rising_detected_result == STS_PRESENCE_LAYDOWN) {
|
||||
|
@ -298,7 +298,8 @@ void STS_Combined_Status_Processing(void)
|
|||
sts_lamp_bar_color = STS_RED;
|
||||
sts_status_color = STS_RED;
|
||||
}
|
||||
if (sts_reed_hall_2_result == STS_Status_Door_Close ) {
|
||||
if (sts_reed_hall_2_result == STS_Status_SOS_Pushdown )
|
||||
{
|
||||
sts_status_color = STS_RED_BLUE;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -471,10 +471,10 @@ 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,"Fall Rise Detection, Motion Count = %u \r\n", (int)motion_count);
|
||||
APP_LOG(TS_OFF, VLEVEL_H,"Fall Rise Detection, Motion Count = %u \r\n", (int)motion_count);
|
||||
|
||||
sts_rss_result = (average_result > 3)? 1: 0;
|
||||
APP_LOG(TS_OFF, VLEVEL_L,"Average Motion Result = %u OUTPUT RSS RESULT=%u \r\n", (int)average_result, sts_rss_result);
|
||||
APP_LOG(TS_OFF, VLEVEL_H,"Average Motion Result = %u OUTPUT RSS RESULT=%u \r\n", (int)average_result, sts_rss_result);
|
||||
for (k=0; k<10; k++) {
|
||||
if (motion_in_zone[k]>0)
|
||||
APP_LOG(TS_OFF, VLEVEL_L,"\nMotion in Zone %u, Count=%u \r\n", k, motion_in_zone[k]);
|
||||
|
|
|
@ -51,7 +51,7 @@ volatile STS_PRESENCE_SENSOR_Event_Status_t sts_o7_event_status;
|
|||
volatile float sts_distance_rss_distance;
|
||||
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=0,sts_reed_hall_2_result=0, last_sts_reed_hall_1_result=0, last_sts_reed_hall_2_result=0;
|
||||
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_1_changed=0, sts_reed_hall_2_changed=0;
|
||||
volatile uint8_t sts_rss_config_updated_flag = 0;
|
||||
extern volatile uint8_t mems_int1_detected, link_wakeup, link_sleep;
|
||||
|
@ -213,16 +213,14 @@ void STS_YunhornSTSEventRFAC_Process(void)
|
|||
|
||||
void STS_YunhornSTSEventP1_Process(void)
|
||||
{
|
||||
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_1_changed = (sts_reed_hall_1_result != last_sts_reed_hall_1_result);
|
||||
sts_reed_hall_2_changed = (sts_reed_hall_2_result != last_sts_reed_hall_2_result);
|
||||
|
||||
sts_reed_hall_1_result = sts_hall1_read;
|
||||
sts_reed_hall_1_changed =0;
|
||||
last_sts_reed_hall_1_result = sts_reed_hall_1_result;
|
||||
last_sts_reed_hall_2_result = sts_reed_hall_2_result;
|
||||
|
||||
sts_emergency_button_pushed = sts_reed_hall_2_result;
|
||||
sts_reed_hall_2_result = sts_hall2_read;
|
||||
sts_reed_hall_2_changed =0;
|
||||
last_sts_reed_hall_2_result = sts_reed_hall_2_result;
|
||||
|
||||
STS_Combined_Status_Processing();
|
||||
}
|
||||
|
|
|
@ -51,6 +51,7 @@ volatile uint8_t sts_ac_code[YUNHORN_STS_AC_CODE_SIZE]={0x0};
|
|||
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_reed_hall_1_changed, sts_reed_hall_2_changed;
|
||||
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_rss_result_changed_flag, sts_hall1_changed_flag, sts_hall2_changed_flag, sts_reed_hall_changed_flag;
|
||||
|
@ -634,9 +635,11 @@ void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
|
|||
{
|
||||
#ifdef STS_O7
|
||||
case HALL1_Pin:
|
||||
HAL_Delay(150); //de-bouncing
|
||||
if (sts_reed_hall_1_changed)
|
||||
{
|
||||
HAL_Delay(250); //de-bouncing
|
||||
sts_hall1_read = HALL1_STATE;
|
||||
APP_LOG(TS_OFF, VLEVEL_M, "\n\n Door Contact Read = %02X \r\n", HALL1_STATE);
|
||||
APP_LOG(TS_OFF, VLEVEL_M, "\n\n Door Contact Read = %02x --%20s\r\n", HALL1_STATE, (HALL1_STATE==STS_Status_Door_Close)?"Door Closed":"Door Opened");
|
||||
|
||||
/* Note: when "EventType == TX_ON_TIMER" this GPIO is not initialized */
|
||||
// if (EventType == TX_ON_EVENT)
|
||||
|
@ -645,16 +648,22 @@ void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
|
|||
UTIL_SEQ_SetTask((1 << CFG_SEQ_Task_YunhornSTSEventP1), CFG_SEQ_Prio_0);
|
||||
UTIL_SEQ_SetTask((1 << CFG_SEQ_Task_LoRaSendOnTxTimerOrButtonEvent), CFG_SEQ_Prio_0);
|
||||
}
|
||||
//sts_reed_hall_1_changed =0;
|
||||
}
|
||||
break;
|
||||
|
||||
case HALL2_Pin:
|
||||
HAL_Delay(150); //de-bouncing
|
||||
if (sts_reed_hall_2_changed)
|
||||
{
|
||||
HAL_Delay(250); //de-bouncing
|
||||
sts_hall2_read = HALL2_STATE;
|
||||
APP_LOG(TS_OFF, VLEVEL_M, "\n\n SOS Button Read = %02X \r\n", HALL2_STATE);
|
||||
APP_LOG(TS_OFF, VLEVEL_M, "\n\n SOS Button Read = %02x --%20s\r\n", HALL2_STATE, (HALL2_STATE==STS_Status_SOS_Pushdown)?"SOS Pushdown":"SOS Released");
|
||||
|
||||
//sensor_data_ready =1;
|
||||
UTIL_SEQ_SetTask((1 << CFG_SEQ_Task_YunhornSTSEventP1), CFG_SEQ_Prio_0);
|
||||
UTIL_SEQ_SetTask((1 << CFG_SEQ_Task_LoRaSendOnTxTimerOrButtonEvent), CFG_SEQ_Prio_0);
|
||||
//sts_reed_hall_2_changed =0;
|
||||
}
|
||||
break;
|
||||
|
||||
#else
|
||||
|
@ -906,13 +915,11 @@ static void SendTxData(void)
|
|||
UTIL_TIMER_Time_t nextTxIn = 0;
|
||||
uint8_t i = 0;
|
||||
|
||||
if (LmHandlerIsBusy() != false){
|
||||
APP_LOG(TS_OFF, VLEVEL_L, "\r\n\n\n** ** LmHandlerIsBusy ** **\r\n\n\n");
|
||||
} else
|
||||
if (LmHandlerIsBusy() == false)
|
||||
{
|
||||
AppData.Port = LORAWAN_USER_APP_PORT;
|
||||
//AppData.Buffer[i++] = AppLedStateOn; //#01
|
||||
STS_PRESENCE_SENSOR_Prepare_Send_Data();
|
||||
//STS_PRESENCE_SENSOR_Prepare_Send_Data();
|
||||
|
||||
if ((heart_beat_timer != 0L)) // sensor data OVERWRITE heart-beat message, 2024-05-12
|
||||
{
|
||||
|
@ -927,7 +934,7 @@ static void SendTxData(void)
|
|||
sensor_data_ready =0;
|
||||
|
||||
|
||||
AppData.Buffer[i++] = AppLedStateOn;
|
||||
//AppData.Buffer[i++] = AppLedStateOn;
|
||||
//i = PrepareSendTxData();
|
||||
//STS_PRESENCE_SENSOR_Prepare_Send_Data();
|
||||
|
||||
|
|
Loading…
Reference in New Issue