stable STS-O6 O7
This commit is contained in:
parent
4dbde9dcfe
commit
f8460f8b00
|
@ -36,18 +36,20 @@ extern "C" {
|
|||
#define STS_Status_SOS_Release (1) //Normal Open NO:Close
|
||||
|
||||
enum sts_lamp_color {
|
||||
STS_DARK = 0, //灭:0
|
||||
STS_GREEN, //绿:1 0 1 0
|
||||
STS_RED, //红:2 1 0 0
|
||||
STS_BLUE, //蓝:3 0 0 1
|
||||
STS_YELLOW, //黄:4 1 1 0
|
||||
STS_PINK, //紫:5 1 0 1
|
||||
STS_CYAN, //青:6 0 1 1
|
||||
STS_WHITE, //白:7 1 1 1
|
||||
STS_COLOR_MAX,
|
||||
STS_RED_BLUE=0x23, //红蓝闪烁:8
|
||||
STS_RED_DARK=0x20 //RD: 9 1 0 0 RED Flash
|
||||
// MAX NUM OF COLORS
|
||||
STS_DARK = 0, //灭:0, Code 0x00
|
||||
STS_GREEN, //绿:1 0 1 0 code 0x01 0b0000 0001
|
||||
STS_RED, //红:2 1 0 0 code 0x02 0b0000 0010
|
||||
STS_BLUE, //蓝:3 0 0 1 code 0x03 0b0000 0011
|
||||
STS_YELLOW, //黄:4 1 1 0 code 0x04 0b0000 0100
|
||||
STS_PINK, //紫:5 1 0 1 code 0x05 0b0000 0101
|
||||
STS_CYAN, //青:6 0 1 1 code 0x06 0b0000 0110
|
||||
STS_WHITE, //白:7 1 1 1 code 0x07 0b0000 0111
|
||||
STS_COLOR_MAX, //8: MAX NUM OF COLORS 0x08 0b0000 1000
|
||||
|
||||
STS_GREEN_DARK=0x10, //0b0001 0000 GREEN DARK
|
||||
STS_RED_DARK=0x20, //0b0010 0000,
|
||||
STS_BLUE_DARK=0x30, //0b0011 0000 BLUE DARK
|
||||
STS_RED_BLUE=0x23 //0b0010 0011 RED BLUE FLASH
|
||||
};
|
||||
|
||||
enum sts_oo_work_mode {
|
||||
|
|
|
@ -282,32 +282,39 @@ 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_SOS_Pushdown ))
|
||||
{
|
||||
sts_status_color = STS_RED;
|
||||
}
|
||||
|
||||
switch(sts_fall_rising_detected_result)
|
||||
{
|
||||
case STS_PRESENCE_LAYDOWN:
|
||||
sts_lamp_bar_color = STS_YELLOW;
|
||||
sts_status_color = STS_YELLOW;
|
||||
break;
|
||||
case STS_PRESENCE_FALL: //RED_BLUE FLASH
|
||||
sts_lamp_bar_color = STS_RED_BLUE;
|
||||
sts_status_color = STS_RED_BLUE;
|
||||
break;
|
||||
case STS_PRESENCE_RISING: //NORMAL OCCUPANCY STATUS
|
||||
sts_lamp_bar_color = STS_RED;
|
||||
sts_status_color = STS_RED;
|
||||
break;
|
||||
default:
|
||||
sts_lamp_bar_color = STS_RED;
|
||||
sts_status_color = STS_RED;
|
||||
break;
|
||||
}
|
||||
|
||||
if (sts_reed_hall_2_result == STS_Status_SOS_Pushdown )
|
||||
{
|
||||
sts_status_color = STS_RED_BLUE;
|
||||
}
|
||||
}
|
||||
|
||||
switch(sts_fall_rising_detected_result)
|
||||
{
|
||||
case STS_PRESENCE_NONE:
|
||||
//do nothing
|
||||
break;
|
||||
|
||||
case STS_PRESENCE_LAYDOWN:
|
||||
sts_lamp_bar_color = STS_YELLOW;
|
||||
sts_status_color = STS_YELLOW;
|
||||
break;
|
||||
|
||||
case STS_PRESENCE_FALL: //RED_BLUE FLASH
|
||||
sts_lamp_bar_color = STS_RED_BLUE;
|
||||
sts_status_color = STS_RED_BLUE;
|
||||
break;
|
||||
|
||||
case STS_PRESENCE_RISING: //NORMAL OCCUPANCY STATUS
|
||||
// sts_lamp_bar_color = STS_RED;
|
||||
// sts_status_color = STS_RED;
|
||||
break;
|
||||
|
||||
default:
|
||||
// sts_lamp_bar_color = STS_RED;
|
||||
// sts_status_color = STS_RED;
|
||||
break;
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
|
@ -420,7 +427,7 @@ void HAL_TIM_PWM_PulseFinishedCallback(TIM_HandleTypeDef *htim)
|
|||
void STS_Lamp_Bar_Self_Test_Simple(void)
|
||||
{
|
||||
uint8_t color=0, lum_level=DEFAULT_LUMINANCE_LEVEL;
|
||||
APP_LOG(TS_OFF, VLEVEL_M, "\r\n [#1] RGB Space Lumianance Level Testing Start\r\n");
|
||||
APP_LOG(TS_OFF, VLEVEL_H, "\r\n [#1] RGB Space Lumianance Level Testing Start\r\n");
|
||||
for (color=STS_GREEN; color < STS_COLOR_MAX; color++)
|
||||
{
|
||||
lum_level = 10;
|
||||
|
@ -431,13 +438,13 @@ void STS_Lamp_Bar_Self_Test_Simple(void)
|
|||
} while (lum_level < 99);
|
||||
STS_Lamp_Bar_Set_Dark();
|
||||
}
|
||||
APP_LOG(TS_OFF, VLEVEL_M, "\r\n [#1] RGB Space Lumianance Level Testing Finished\r\n");
|
||||
APP_LOG(TS_OFF, VLEVEL_H, "\r\n [#1] RGB Space Lumianance Level Testing Finished\r\n");
|
||||
}
|
||||
void STS_Lamp_Bar_Self_Test(void)
|
||||
{
|
||||
uint8_t color=0, lum_level=DEFAULT_LUMINANCE_LEVEL;
|
||||
|
||||
APP_LOG(TS_OFF, VLEVEL_M, "\r\n YunHorn STS Indicative Lamp Self Test\r\n");
|
||||
APP_LOG(TS_OFF, VLEVEL_H, "\r\n YunHorn STS Indicative Lamp Self Test\r\n");
|
||||
|
||||
STS_Lamp_Bar_Self_Test_Simple();
|
||||
|
||||
|
@ -448,7 +455,7 @@ void STS_Lamp_Bar_Self_Test(void)
|
|||
}
|
||||
STS_Lamp_Bar_Set_Dark();
|
||||
|
||||
APP_LOG(TS_OFF, VLEVEL_M, "\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) )
|
||||
{
|
||||
STS_Lamp_Bar_Set_Dark();
|
||||
|
|
|
@ -95,7 +95,7 @@ volatile STS_OO_RSS_SensorTuneDataTypeDef sts_presence_rss_config;
|
|||
//static void update_configuration(acc_detector_presence_configuration_t presence_configuration);
|
||||
static void print_result(acc_detector_presence_result_t result);
|
||||
|
||||
volatile uint16_t motion_count, motion_feature_count;
|
||||
volatile uint16_t motion_count=0, motion_feature_count=0;
|
||||
static acc_detector_presence_result_t sts_motion_dataset[DEFAULT_MOTION_DATASET_LEN];
|
||||
static STS_PRESENCE_Motion_Featuer_t sts_motion_feature[DEFAULT_MOTION_FEATURE_LEN];
|
||||
volatile uint8_t sts_fall_rising_detected_result = STS_PRESENCE_NONE;
|
||||
|
@ -374,7 +374,7 @@ int sts_presence_rss_fall_rise_detection(void)
|
|||
uint16_t detected_zone=0;
|
||||
//for (k=0; k<5; k++) {motion_in_zone[k]=0;}
|
||||
#if 1
|
||||
for (int i = 0; i < (iterations/2); i++)
|
||||
for (int i = 0; i < (iterations); i++)
|
||||
{
|
||||
success = acc_detector_presence_get_next(handle, &result);
|
||||
if (!success)
|
||||
|
@ -402,18 +402,21 @@ int sts_presence_rss_fall_rise_detection(void)
|
|||
|
||||
if (motion_count ++ == DEFAULT_MOTION_DATASET_LEN)
|
||||
{
|
||||
|
||||
STS_YunhornCheckStandardDeviation();
|
||||
|
||||
motion_count = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
acc_integration_sleep_ms(1000 / DEFAULT_UPDATE_RATE_PRESENCE); // DEFAULT_UPDATE_RATE);
|
||||
//acc_integration_sleep_ms(1000 / DEFAULT_UPDATE_RATE_PRESENCE); // 15ms, DEFAULT_UPDATE_RATE);
|
||||
//acc_integration_sleep_ms(1);
|
||||
}
|
||||
|
||||
acc_detector_presence_deactivate(handle);
|
||||
|
||||
APP_LOG(TS_OFF, VLEVEL_H,"First Half Presence Detection, Motion Count = %u \r\n", (int)motion_count);
|
||||
|
||||
#endif
|
||||
// ******** Second Half detection of fall down and rise up
|
||||
//if (sts_presence_fall_detection == 1)
|
||||
|
@ -465,16 +468,19 @@ int sts_presence_rss_fall_rise_detection(void)
|
|||
|
||||
if (motion_count ++ == DEFAULT_MOTION_DATASET_LEN)
|
||||
{
|
||||
|
||||
STS_YunhornCheckStandardDeviation();
|
||||
motion_count = 0;
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
acc_integration_sleep_ms(1000 / DEFAULT_UPDATE_RATE_PRESENCE); // DEFAULT_UPDATE_RATE);
|
||||
//acc_integration_sleep_ms(1000 / DEFAULT_UPDATE_RATE_PRESENCE); // 15 ms, DEFAULT_UPDATE_RATE);
|
||||
//acc_integration_sleep_ms(1);
|
||||
}
|
||||
//APP_LOG(TS_OFF, VLEVEL_L,"Second Half, 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 > 1)? 1: 0;
|
||||
if (sts_rss_result) {LED1_ON;} else {LED1_OFF;}
|
||||
|
@ -487,12 +493,16 @@ int sts_presence_rss_fall_rise_detection(void)
|
|||
*
|
||||
*/
|
||||
|
||||
APP_LOG(TS_OFF, VLEVEL_H,"Average Motion Result = %u OUTPUT RSS RESULT=%u \r\n", (int)average_result, sts_rss_result);
|
||||
#ifdef LOG_RSS
|
||||
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]);
|
||||
if (motion_in_zone[k]>0) {
|
||||
APP_LOG(TS_OFF, VLEVEL_M,"\r\nMotion Distance Zone: %2u %4u %4d cm", k, motion_in_zone[k], (80+k*40));
|
||||
}
|
||||
|
||||
else {
|
||||
APP_LOG(TS_OFF, VLEVEL_M,"\r\nMotion Distance Zone: %2u %4s", k, " ");
|
||||
}
|
||||
}
|
||||
#endif
|
||||
average_distance = (1000.0f*average_distance)/average_result; // in meters
|
||||
average_score = (1000.0f*average_score)/average_result;
|
||||
sts_presence_rss_distance = average_distance;
|
||||
|
@ -610,8 +620,10 @@ void STS_YunhornCheckStandardDeviation(void)
|
|||
APP_LOG(TS_OFF, VLEVEL_L, "\r\n-------------Distance Average =%6u; Variance = %6u ; Standard =%6u \r\n",
|
||||
(int)(average_presence_distance*1000.0f), (int)(variance_presence_distance*1000.0f), (int)(standard_variance_presence_distance*1000.0f));
|
||||
#endif
|
||||
#ifdef LOG_RSS
|
||||
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));
|
||||
#endif
|
||||
#ifdef LOG_RSS
|
||||
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));
|
||||
|
|
|
@ -241,16 +241,11 @@ void STS_YunhornSTSEventP2_Process(void)
|
|||
//STS_Lamp_Bar_Refresh(); //TODO XXX eliminate refresh every second.... try
|
||||
if ((sts_work_mode >= STS_RSS_MODE) && (sts_work_mode <= STS_TOF_RSS_MODE))
|
||||
{
|
||||
APP_LOG(TS_OFF,VLEVEL_M, "\r\n****************P2--id=%d Call rss_fall_rise_detection %d\r\n", (wcnt-1), cnt++)
|
||||
sts_presence_rss_fall_rise_detection();
|
||||
|
||||
|
||||
sts_rss_result_changed_flag = (sts_rss_result == last_sts_rss_result)? 0:1;
|
||||
last_sts_rss_result = sts_rss_result;
|
||||
|
||||
APP_LOG(TS_OFF, VLEVEL_M, "rss_result=%d \r\nrss_result_changed_flag=%1d \r\nRSS_MOTION_RESULT=%s \r\n",
|
||||
sts_rss_result, sts_rss_result_changed_flag,(STS_RESULT_NO_MOTION == sts_rss_result)?"NO_MOTION":"MOTION");
|
||||
|
||||
sts_fall_rising_detected_result_changed_flag = (sts_fall_rising_detected_result == last_sts_fall_rising_detected_result)?0:1;
|
||||
last_sts_fall_rising_detected_result = sts_fall_rising_detected_result;
|
||||
|
||||
|
|
|
@ -133,7 +133,7 @@ extern volatile uint8_t sensor_data_ready;
|
|||
extern volatile STS_OO_SensorStatusDataTypeDef sts_o7_sensorData;
|
||||
extern volatile float sts_distance_rss_distance;
|
||||
|
||||
char sts_lamp_color_code[10][10]={
|
||||
char sts_lamp_color_code[15][15]={
|
||||
"Dark",
|
||||
"Green",
|
||||
"Red",
|
||||
|
@ -142,7 +142,11 @@ char sts_lamp_color_code[10][10]={
|
|||
"Pink",
|
||||
"Cyan",
|
||||
"White",
|
||||
"Red_Blue",
|
||||
"color_max", //8
|
||||
"Green_Flash", //0x10 ==16
|
||||
"Red_Flash", // 0x20 ==32
|
||||
"Blue_Flash", // 0x30 == 48
|
||||
"Red_Blue_Flash" //0x23 = 35
|
||||
};
|
||||
|
||||
char sts_work_mode_code[15][25] ={
|
||||
|
@ -910,12 +914,16 @@ static void SendTxData(void)
|
|||
AppData.Buffer[i++] = (uint8_t)(sensorData.over_stay_duration>>8)&0xff; //14 occupancy over stay duration MSB
|
||||
AppData.Buffer[i++] = (uint8_t)(sensorData.over_stay_duration)&0xff; //15 occupancy over stay duration LSB
|
||||
}
|
||||
uint8_t ich= (sts_lamp_bar_color>>4 & 0x0f);
|
||||
uint8_t icl= (sts_lamp_bar_color & 0x0f);
|
||||
char colorshow[30]="";
|
||||
strcpy(colorshow, (ich==0)?"":sts_lamp_color_code[ich]);
|
||||
|
||||
APP_LOG(TS_OFF, VLEVEL_L,
|
||||
"\r\n######| Color = %4s | Mode = %5s |\r\n",(char *)sts_lamp_color_code[0x0f&sensorData.lamp_bar_color], (char*)sts_work_mode_code[sensorData.workmode]);
|
||||
"\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_L,
|
||||
APP_LOG(TS_OFF, VLEVEL_H,
|
||||
"\r\n######| S1-DoorOpen | S2-Motion | S3-SOS | S4 |Distance(mm) | MotionScore| Unconcious | Over_Stay | Fall Detected|"
|
||||
"\r\n######| %1d | %1d | %1d | %1d | %04d | %04d | %1d | %1d | %1d |\r\n",
|
||||
sensorData.state_sensor1_on_off, sensorData.state_sensor2_on_off,sensorData.state_sensor3_on_off, sensorData.state_sensor4_on_off,
|
||||
|
@ -1265,7 +1273,7 @@ static void OnSysTimeUpdate(void)
|
|||
static void OnClassChange(DeviceClass_t deviceClass)
|
||||
{
|
||||
/* USER CODE BEGIN OnClassChange_1 */
|
||||
APP_LOG(TS_OFF, VLEVEL_M, "Switch to Class %c done\r\n", "ABC"[deviceClass]);
|
||||
APP_LOG(TS_OFF, VLEVEL_H, "Switch to Class %c done\r\n", "ABC"[deviceClass]);
|
||||
/* USER CODE END OnClassChange_1 */
|
||||
}
|
||||
|
||||
|
@ -1301,7 +1309,7 @@ static void OnTxPeriodicityChanged(uint32_t periodicity)
|
|||
UTIL_TIMER_SetPeriod(&TxTimer, TxPeriodicity);
|
||||
UTIL_TIMER_Start(&TxTimer);
|
||||
/* USER CODE BEGIN OnTxPeriodicityChanged_2 */
|
||||
APP_LOG(TS_OFF, VLEVEL_M,"**************** TxPeriodicity = %u (sec)\r\n", (TxPeriodicity/1000) );
|
||||
APP_LOG(TS_OFF, VLEVEL_H,"**************** TxPeriodicity = %u (sec)\r\n", (TxPeriodicity/1000) );
|
||||
/* USER CODE END OnTxPeriodicityChanged_2 */
|
||||
}
|
||||
|
||||
|
@ -1472,11 +1480,9 @@ static void OnYunhornSTSOORSSWakeUpTimerEvent(void *context)
|
|||
{
|
||||
if (p2_work_finished)
|
||||
{
|
||||
APP_LOG(TS_OFF,VLEVEL_M, "****************Wakeup Timer-- Call P2 %d\r\n", wcnt++)
|
||||
|
||||
UTIL_SEQ_SetTask((1 << CFG_SEQ_Task_YunhornSTSEventP2), CFG_SEQ_Prio_0);
|
||||
|
||||
|
||||
if ((STS_LoRa_WAN_Joined != 0)&&(sts_rss_result_changed_flag==1))
|
||||
{
|
||||
sts_rss_result_changed_flag = 0;
|
||||
|
@ -1538,7 +1544,7 @@ static void OnYunhornSTSHeartBeatPeriodicityChanged(uint32_t periodicity)
|
|||
UTIL_TIMER_Start(&YunhornSTSHeartBeatTimer);
|
||||
|
||||
/* USER CODE BEGIN OnTxPeriodicityChanged_2 */
|
||||
APP_LOG(TS_OFF, VLEVEL_M,"**************** HeartBeatPeriodicity Changed to: %u (ms)\r\n", HeartBeatPeriodicity );
|
||||
APP_LOG(TS_OFF, VLEVEL_H,"**************** HeartBeatPeriodicity Changed to: %u (ms)\r\n", HeartBeatPeriodicity );
|
||||
/* USER CODE END OnTxPeriodicityChanged_2 */
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue