RM2_1 #2

Merged
sundp merged 208 commits from RM2_1 into master 2024-09-13 09:16:14 +08:00
5 changed files with 78 additions and 56 deletions
Showing only changes of commit f8460f8b00 - Show all commits

View File

@ -36,18 +36,20 @@ extern "C" {
#define STS_Status_SOS_Release (1) //Normal Open NO:Close #define STS_Status_SOS_Release (1) //Normal Open NO:Close
enum sts_lamp_color { enum sts_lamp_color {
STS_DARK = 0, //灭0 STS_DARK = 0, //灭0, Code 0x00
STS_GREEN, //绿1 0 1 0 STS_GREEN, //绿1 0 1 0 code 0x01 0b0000 0001
STS_RED, //红2 1 0 0 STS_RED, //红2 1 0 0 code 0x02 0b0000 0010
STS_BLUE, //蓝3 0 0 1 STS_BLUE, //蓝3 0 0 1 code 0x03 0b0000 0011
STS_YELLOW, //黄4 1 1 0 STS_YELLOW, //黄4 1 1 0 code 0x04 0b0000 0100
STS_PINK, //紫5 1 0 1 STS_PINK, //紫5 1 0 1 code 0x05 0b0000 0101
STS_CYAN, //青6 0 1 1 STS_CYAN, //青6 0 1 1 code 0x06 0b0000 0110
STS_WHITE, //白7 1 1 1 STS_WHITE, //白7 1 1 1 code 0x07 0b0000 0111
STS_COLOR_MAX, STS_COLOR_MAX, //8: MAX NUM OF COLORS 0x08 0b0000 1000
STS_RED_BLUE=0x23, //红蓝闪烁8
STS_RED_DARK=0x20 //RD: 9 1 0 0 RED Flash STS_GREEN_DARK=0x10, //0b0001 0000 GREEN DARK
// MAX NUM OF COLORS 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 { enum sts_oo_work_mode {

View File

@ -282,31 +282,38 @@ 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 )) } 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; sts_status_color = STS_RED;
if (sts_reed_hall_2_result == STS_Status_SOS_Pushdown )
{
sts_status_color = STS_RED_BLUE;
}
} }
switch(sts_fall_rising_detected_result) switch(sts_fall_rising_detected_result)
{ {
case STS_PRESENCE_LAYDOWN: case STS_PRESENCE_NONE:
//do nothing
break;
case STS_PRESENCE_LAYDOWN:
sts_lamp_bar_color = STS_YELLOW; sts_lamp_bar_color = STS_YELLOW;
sts_status_color = STS_YELLOW; sts_status_color = STS_YELLOW;
break; break;
case STS_PRESENCE_FALL: //RED_BLUE FLASH
case STS_PRESENCE_FALL: //RED_BLUE FLASH
sts_lamp_bar_color = STS_RED_BLUE; sts_lamp_bar_color = STS_RED_BLUE;
sts_status_color = STS_RED_BLUE; sts_status_color = STS_RED_BLUE;
break; 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 ) case STS_PRESENCE_RISING: //NORMAL OCCUPANCY STATUS
{ // sts_lamp_bar_color = STS_RED;
sts_status_color = STS_RED_BLUE; // sts_status_color = STS_RED;
break;
default:
// sts_lamp_bar_color = STS_RED;
// sts_status_color = STS_RED;
break;
} }
break; break;
@ -420,7 +427,7 @@ void HAL_TIM_PWM_PulseFinishedCallback(TIM_HandleTypeDef *htim)
void STS_Lamp_Bar_Self_Test_Simple(void) void STS_Lamp_Bar_Self_Test_Simple(void)
{ {
uint8_t color=0, lum_level=DEFAULT_LUMINANCE_LEVEL; 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++) for (color=STS_GREEN; color < STS_COLOR_MAX; color++)
{ {
lum_level = 10; lum_level = 10;
@ -431,13 +438,13 @@ void STS_Lamp_Bar_Self_Test_Simple(void)
} while (lum_level < 99); } while (lum_level < 99);
STS_Lamp_Bar_Set_Dark(); 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) void STS_Lamp_Bar_Self_Test(void)
{ {
uint8_t color=0, lum_level=DEFAULT_LUMINANCE_LEVEL; 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(); STS_Lamp_Bar_Self_Test_Simple();
@ -448,7 +455,7 @@ void STS_Lamp_Bar_Self_Test(void)
} }
STS_Lamp_Bar_Set_Dark(); 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) ) if ((sts_work_mode == STS_WIRED_MODE) )
{ {
STS_Lamp_Bar_Set_Dark(); STS_Lamp_Bar_Set_Dark();

View File

@ -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 update_configuration(acc_detector_presence_configuration_t presence_configuration);
static void print_result(acc_detector_presence_result_t result); 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 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]; static STS_PRESENCE_Motion_Featuer_t sts_motion_feature[DEFAULT_MOTION_FEATURE_LEN];
volatile uint8_t sts_fall_rising_detected_result = STS_PRESENCE_NONE; 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; uint16_t detected_zone=0;
//for (k=0; k<5; k++) {motion_in_zone[k]=0;} //for (k=0; k<5; k++) {motion_in_zone[k]=0;}
#if 1 #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); success = acc_detector_presence_get_next(handle, &result);
if (!success) if (!success)
@ -402,18 +402,21 @@ int sts_presence_rss_fall_rise_detection(void)
if (motion_count ++ == DEFAULT_MOTION_DATASET_LEN) if (motion_count ++ == DEFAULT_MOTION_DATASET_LEN)
{ {
STS_YunhornCheckStandardDeviation(); STS_YunhornCheckStandardDeviation();
motion_count = 0; 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); acc_detector_presence_deactivate(handle);
APP_LOG(TS_OFF, VLEVEL_H,"First Half Presence Detection, Motion Count = %u \r\n", (int)motion_count);
#endif #endif
// ******** Second Half detection of fall down and rise up // ******** Second Half detection of fall down and rise up
//if (sts_presence_fall_detection == 1) //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) if (motion_count ++ == DEFAULT_MOTION_DATASET_LEN)
{ {
STS_YunhornCheckStandardDeviation(); STS_YunhornCheckStandardDeviation();
motion_count = 0; 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_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; sts_rss_result = (average_result > 1)? 1: 0;
if (sts_rss_result) {LED1_ON;} else {LED1_OFF;} 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++) { for (k=0; k<10; k++) {
if (motion_in_zone[k]>0) 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]); 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_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;
@ -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", 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)); (int)(average_presence_distance*1000.0f), (int)(variance_presence_distance*1000.0f), (int)(standard_variance_presence_distance*1000.0f));
#endif #endif
#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
#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

@ -241,16 +241,11 @@ void STS_YunhornSTSEventP2_Process(void)
//STS_Lamp_Bar_Refresh(); //TODO XXX eliminate refresh every second.... try //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)) 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_presence_rss_fall_rise_detection();
sts_rss_result_changed_flag = (sts_rss_result == last_sts_rss_result)? 0:1; sts_rss_result_changed_flag = (sts_rss_result == last_sts_rss_result)? 0:1;
last_sts_rss_result = sts_rss_result; 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; 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; last_sts_fall_rising_detected_result = sts_fall_rising_detected_result;

View File

@ -133,7 +133,7 @@ extern volatile uint8_t sensor_data_ready;
extern volatile STS_OO_SensorStatusDataTypeDef sts_o7_sensorData; extern volatile STS_OO_SensorStatusDataTypeDef sts_o7_sensorData;
extern volatile float sts_distance_rss_distance; extern volatile float sts_distance_rss_distance;
char sts_lamp_color_code[10][10]={ char sts_lamp_color_code[15][15]={
"Dark", "Dark",
"Green", "Green",
"Red", "Red",
@ -142,7 +142,11 @@ char sts_lamp_color_code[10][10]={
"Pink", "Pink",
"Cyan", "Cyan",
"White", "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] ={ 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>>8)&0xff; //14 occupancy over stay duration MSB
AppData.Buffer[i++] = (uint8_t)(sensorData.over_stay_duration)&0xff; //15 occupancy over stay duration LSB 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, 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) 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######| 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", "\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, 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) static void OnClassChange(DeviceClass_t deviceClass)
{ {
/* USER CODE BEGIN OnClassChange_1 */ /* 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 */ /* USER CODE END OnClassChange_1 */
} }
@ -1301,7 +1309,7 @@ static void OnTxPeriodicityChanged(uint32_t periodicity)
UTIL_TIMER_SetPeriod(&TxTimer, TxPeriodicity); UTIL_TIMER_SetPeriod(&TxTimer, TxPeriodicity);
UTIL_TIMER_Start(&TxTimer); UTIL_TIMER_Start(&TxTimer);
/* USER CODE BEGIN OnTxPeriodicityChanged_2 */ /* 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 */ /* USER CODE END OnTxPeriodicityChanged_2 */
} }
@ -1472,11 +1480,9 @@ static void OnYunhornSTSOORSSWakeUpTimerEvent(void *context)
{ {
if (p2_work_finished) 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); UTIL_SEQ_SetTask((1 << CFG_SEQ_Task_YunhornSTSEventP2), CFG_SEQ_Prio_0);
if ((STS_LoRa_WAN_Joined != 0)&&(sts_rss_result_changed_flag==1)) if ((STS_LoRa_WAN_Joined != 0)&&(sts_rss_result_changed_flag==1))
{ {
sts_rss_result_changed_flag = 0; sts_rss_result_changed_flag = 0;
@ -1538,7 +1544,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_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 */ /* USER CODE END OnTxPeriodicityChanged_2 */
} }