pixel_network_rm2 #7

Merged
sundp merged 26 commits from pixel_network_rm2 into master 2025-03-19 21:27:49 +08:00
2 changed files with 45 additions and 62 deletions
Showing only changes of commit 36e68a0f56 - Show all commits

View File

@ -53,7 +53,7 @@
#endif #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, 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.0, 3.5, 4, 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, 3.3, 2, 63, 4, 10, 0.8182f, 0.4, 0.2};
extern float sts_distance_rss_distance, sts_sensor_install_height; extern float sts_distance_rss_distance, sts_sensor_install_height;
@ -108,8 +108,8 @@ int sts_distance_rss_detector_distance(void)
} }
bool success = true; bool success = true;
const int iterations = 1; //5; const int iterations = 5; //5;
uint16_t number_of_peaks = 10.0f; uint16_t number_of_peaks = 5;
acc_detector_distance_result_t result[number_of_peaks]; acc_detector_distance_result_t result[number_of_peaks];
acc_detector_distance_result_info_t result_info; acc_detector_distance_result_info_t result_info;
float tmp_distance = 0.0f; float tmp_distance = 0.0f;
@ -128,11 +128,11 @@ int sts_distance_rss_detector_distance(void)
print_distances(result, result_info.number_of_peaks); print_distances(result, result_info.number_of_peaks);
} }
sts_distance_rss_distance = (uint16_t)(1000*tmp_distance/result_info.number_of_peaks); sts_distance_rss_distance = (uint16_t)(1000*(tmp_distance/result_info.number_of_peaks)/iterations);
APP_LOG(TS_OFF, VLEVEL_M, "\r\nAverage Distance= %u mm\r\n", (uint16_t)sts_distance_rss_distance); APP_LOG(TS_OFF, VLEVEL_M, "\r\nAverage Distance= %u mm\r\n", (uint16_t)sts_distance_rss_distance);
// ensure it's a valid installation height // ensure it's a valid installation height
sts_sensor_install_height = MAX(sts_distance_rss_distance,2000); sts_sensor_install_height = sts_distance_rss_distance; //MAX(sts_distance_rss_distance,2000);
bool deactivated = acc_detector_distance_deactivate(distance_handle); bool deactivated = acc_detector_distance_deactivate(distance_handle);

View File

@ -2073,9 +2073,9 @@ void USER_APP_AUTO_RESPONDER_Parse(char *tlv_buf, size_t tlv_buf_size)
//STS_SENSOR_Power_ON((uint8_t)(tlv_buf[CFG_CMD3]-0x30)); //STS_SENSOR_Power_ON((uint8_t)(tlv_buf[CFG_CMD3]-0x30));
PME_ON; PME_ON;
i=0; i=0;
outbuf[i++] = (uint8_t) tlv_buf[CFG_CMD1]; UTIL_MEM_set_8(outbuf, 0x0, sizeof(outbuf));
outbuf[i++] = (uint8_t) tlv_buf[CFG_CMD2]; UTIL_MEM_cpy_8(outbuf, tlv_buf,tlv_buf_size);
outbuf[i++] = (uint8_t) tlv_buf[CFG_CMD3]; i = tlv_buf_size;
STS_SENSOR_Upload_Message(LORAWAN_USER_APP_CTRL_REPLY_PORT, i, (uint8_t *)outbuf); STS_SENSOR_Upload_Message(LORAWAN_USER_APP_CTRL_REPLY_PORT, i, (uint8_t *)outbuf);
} else { } else {
STS_SENSOR_Upload_Config_Invalid_Message(); STS_SENSOR_Upload_Config_Invalid_Message();
@ -2088,9 +2088,9 @@ void USER_APP_AUTO_RESPONDER_Parse(char *tlv_buf, size_t tlv_buf_size)
//STS_SENSOR_Power_OFF((tlv_buf[CFG_CMD3]-0x30)); //STS_SENSOR_Power_OFF((tlv_buf[CFG_CMD3]-0x30));
PME_OFF; PME_OFF;
i=0; i=0;
outbuf[i++] = (uint8_t) tlv_buf[CFG_CMD1]; UTIL_MEM_set_8(outbuf, 0x0, sizeof(outbuf));
outbuf[i++] = (uint8_t) tlv_buf[CFG_CMD2]; UTIL_MEM_cpy_8(outbuf, tlv_buf,tlv_buf_size);
outbuf[i++] = (uint8_t) tlv_buf[CFG_CMD3]; i = tlv_buf_size;
STS_SENSOR_Upload_Message(LORAWAN_USER_APP_CTRL_REPLY_PORT, i, (uint8_t *)outbuf); STS_SENSOR_Upload_Message(LORAWAN_USER_APP_CTRL_REPLY_PORT, i, (uint8_t *)outbuf);
} else { } else {
STS_SENSOR_Upload_Config_Invalid_Message(); STS_SENSOR_Upload_Config_Invalid_Message();
@ -2101,9 +2101,9 @@ void USER_APP_AUTO_RESPONDER_Parse(char *tlv_buf, size_t tlv_buf_size)
if (((uint8_t)(tlv_buf[CFG_CMD3]-0x30) >= 0) && ((uint8_t)tlv_buf[CFG_CMD3]-0x30) <=9) { if (((uint8_t)(tlv_buf[CFG_CMD3]-0x30) >= 0) && ((uint8_t)tlv_buf[CFG_CMD3]-0x30) <=9) {
STS_SENSOR_MEMS_Reset((tlv_buf[CFG_CMD3]-0x30)); STS_SENSOR_MEMS_Reset((tlv_buf[CFG_CMD3]-0x30));
i=0; i=0;
outbuf[i++] = (uint8_t) tlv_buf[CFG_CMD1]; UTIL_MEM_set_8(outbuf, 0x0, sizeof(outbuf));
outbuf[i++] = (uint8_t) tlv_buf[CFG_CMD2]; UTIL_MEM_cpy_8(outbuf, tlv_buf,tlv_buf_size);
outbuf[i++] = (uint8_t) tlv_buf[CFG_CMD3]; i = tlv_buf_size;
STS_SENSOR_Upload_Message(LORAWAN_USER_APP_CTRL_REPLY_PORT, i, (uint8_t *)outbuf); STS_SENSOR_Upload_Message(LORAWAN_USER_APP_CTRL_REPLY_PORT, i, (uint8_t *)outbuf);
} else { } else {
STS_SENSOR_Upload_Config_Invalid_Message(); STS_SENSOR_Upload_Config_Invalid_Message();
@ -2131,11 +2131,9 @@ void USER_APP_AUTO_RESPONDER_Parse(char *tlv_buf, size_t tlv_buf_size)
#endif #endif
i = 0; i = 0;
outbuf[i++] = (uint8_t) tlv_buf[CFG_CMD1]; UTIL_MEM_set_8(outbuf, 0x0, sizeof(outbuf));
outbuf[i++] = (uint8_t) tlv_buf[CFG_CMD2]; UTIL_MEM_cpy_8(outbuf, tlv_buf,tlv_buf_size);
outbuf[i++] = (uint8_t) tlv_buf[CFG_CMD3]; i = tlv_buf_size;
outbuf[i++] = (uint8_t) tlv_buf[CFG_CMD4];
outbuf[i++] = (uint8_t) tlv_buf[CFG_CMD5];
STS_SENSOR_Upload_Message(LORAWAN_USER_APP_CTRL_REPLY_PORT, i, (uint8_t *)outbuf); STS_SENSOR_Upload_Message(LORAWAN_USER_APP_CTRL_REPLY_PORT, i, (uint8_t *)outbuf);
// Save config to NVM // Save config to NVM
@ -2181,11 +2179,9 @@ void USER_APP_AUTO_RESPONDER_Parse(char *tlv_buf, size_t tlv_buf_size)
OnYunhornSTSSamplingPeriodicityChanged(SamplingPeriodicity); OnYunhornSTSSamplingPeriodicityChanged(SamplingPeriodicity);
#endif #endif
i = 0; i = 0;
outbuf[i++] = (uint8_t) tlv_buf[CFG_CMD1]; UTIL_MEM_set_8(outbuf, 0x0, sizeof(outbuf));
outbuf[i++] = (uint8_t) tlv_buf[CFG_CMD2]; UTIL_MEM_cpy_8(outbuf, tlv_buf,tlv_buf_size);
outbuf[i++] = (uint8_t) tlv_buf[CFG_CMD3]; i = tlv_buf_size;
outbuf[i++] = (uint8_t) tlv_buf[CFG_CMD4];
outbuf[i++] = (uint8_t) tlv_buf[CFG_CMD5];
STS_SENSOR_Upload_Message(LORAWAN_USER_APP_CTRL_REPLY_PORT, i, (uint8_t *)outbuf); STS_SENSOR_Upload_Message(LORAWAN_USER_APP_CTRL_REPLY_PORT, i, (uint8_t *)outbuf);
// Save config to NVM // Save config to NVM
@ -2248,31 +2244,29 @@ void USER_APP_AUTO_RESPONDER_Parse(char *tlv_buf, size_t tlv_buf_size)
OnStoreSTSCFGContextRequest(); OnStoreSTSCFGContextRequest();
i=0; // Step 1: Prepare status update message i=0; // Step 1: Prepare status update message
outbuf[i++] = (uint8_t) tlv_buf[CFG_CMD1]; UTIL_MEM_set_8(outbuf, 0x0, sizeof(outbuf));
outbuf[i++] = (uint8_t) tlv_buf[CFG_CMD2]; UTIL_MEM_cpy_8(outbuf, tlv_buf,tlv_buf_size);
outbuf[i++] = (uint8_t) tlv_buf[CFG_CMD3]; i = tlv_buf_size;
outbuf[i++] = (uint8_t) tlv_buf[CFG_CMD4];
outbuf[i++] = (uint8_t) tlv_buf[CFG_CMD5];
STS_Combined_Status_Processing(); STS_Combined_Status_Processing();
} else if (tlv_buf_size == 8 && tlv_buf[CFG_CMD4]=='F') // Change fall detection } else if (tlv_buf_size == 7 && tlv_buf[CFG_CMD4]=='F') // Change fall detection
{ {
invalid_flag = 0; // P 1 1 F A B C D invalid_flag = 0; // P 1 1 F A D C
if (((tlv_buf[CFG_CMD5] >='0') && (tlv_buf[CFG_CMD5]<='9')) && ((tlv_buf[CFG_CMD6]<='9') && (tlv_buf[CFG_CMD6]>='0')) if (((tlv_buf[CFG_CMD5] >='0') && (tlv_buf[CFG_CMD5]<='9')) && ((tlv_buf[CFG_CMD6]<='9') && (tlv_buf[CFG_CMD6]>='0'))
&& ((tlv_buf[CFG_CMD7]<='9') && (tlv_buf[CFG_CMD7]>='0'))&& ((tlv_buf[CFG_CMD8]<='9') && (tlv_buf[CFG_CMD8]>='0'))) && ((tlv_buf[CFG_CMD7]<='9') && (tlv_buf[CFG_CMD7]>='0'))&& ((tlv_buf[CFG_CMD8]<='9') && (tlv_buf[CFG_CMD8]>='0')))
{ {
sts_fall_detection_acc_threshold = (uint8_t)(tlv_buf[CFG_CMD5] - 0x30)*10; //acc *10 mg/s2 sts_fall_detection_acc_threshold = (uint8_t)(tlv_buf[CFG_CMD5] - 0x30)*10; //A: acc *10 mg/s2
sts_fall_detection_depth_threshold = (uint8_t)(tlv_buf[CFG_CMD6] - 0x30)*10; //depth *10 in cm sts_fall_detection_depth_threshold = (uint8_t)(tlv_buf[CFG_CMD6] - 0x30)*10; //D: depth *10 in cm
sts_fall_confirm_threshold_in_10sec = (uint8_t)(tlv_buf[CFG_CMD7] - 0x30+1)*128; //fall_confirm_threshold_in_10sec sts_fall_confirm_threshold_in_10sec = (uint8_t)(tlv_buf[CFG_CMD7] - 0x30+1)*128; //C: fall_confirm_threshold_in_10sec
sts_occupancy_overtime_threshold_in_10min = (uint8_t)(tlv_buf[CFG_CMD8] - 0x30)*10; // overtime *10 min //sts_occupancy_overtime_threshold_in_10min = (uint8_t)(tlv_buf[CFG_CMD8] - 0x30)*10; // overtime *10 min
sts_cfg_nvm.fall_detection_acc_threshold = (uint8_t)(tlv_buf[CFG_CMD5] - 0x30); sts_cfg_nvm.fall_detection_acc_threshold = (uint8_t)(tlv_buf[CFG_CMD5] - 0x30);
sts_cfg_nvm.fall_detection_depth_threshold = (uint8_t)(tlv_buf[CFG_CMD6] - 0x30); sts_cfg_nvm.fall_detection_depth_threshold = (uint8_t)(tlv_buf[CFG_CMD6] - 0x30);
sts_cfg_nvm.fall_confirm_threshold_in_10sec = (uint8_t)(tlv_buf[CFG_CMD7] - 0x30+1); sts_cfg_nvm.fall_confirm_threshold_in_10sec = (uint8_t)(tlv_buf[CFG_CMD7] - 0x30+1);
sts_cfg_nvm.occupancy_overtime_threshold_in_10min = (uint8_t)(tlv_buf[CFG_CMD8] - 0x30); //sts_cfg_nvm.occupancy_overtime_threshold_in_10min = (uint8_t)(tlv_buf[CFG_CMD8] - 0x30);
if (sts_work_mode == STS_UNI_MODE) // fall detection threshold only effective in Uni_mode if (sts_work_mode == STS_UNI_MODE) // fall detection threshold only effective in Uni_mode
{ {
@ -2285,14 +2279,9 @@ void USER_APP_AUTO_RESPONDER_Parse(char *tlv_buf, size_t tlv_buf_size)
OnStoreSTSCFGContextRequest(); OnStoreSTSCFGContextRequest();
i=0; // Step 1: Prepare status update message i=0; // Step 1: Prepare status update message
outbuf[i++] = (uint8_t) tlv_buf[CFG_CMD1]; UTIL_MEM_set_8(outbuf, 0x0, sizeof(outbuf));
outbuf[i++] = (uint8_t) tlv_buf[CFG_CMD2]; UTIL_MEM_cpy_8(outbuf, tlv_buf,tlv_buf_size);
outbuf[i++] = (uint8_t) tlv_buf[CFG_CMD3]; i = tlv_buf_size;
outbuf[i++] = (uint8_t) tlv_buf[CFG_CMD4];
outbuf[i++] = (uint8_t) tlv_buf[CFG_CMD5];
outbuf[i++] = (uint8_t) tlv_buf[CFG_CMD6];
outbuf[i++] = (uint8_t) tlv_buf[CFG_CMD7];
outbuf[i++] = (uint8_t) tlv_buf[CFG_CMD8];
STS_Combined_Status_Processing(); STS_Combined_Status_Processing();
} }
@ -2300,14 +2289,14 @@ void USER_APP_AUTO_RESPONDER_Parse(char *tlv_buf, size_t tlv_buf_size)
}else if (tlv_buf_size == 8 && tlv_buf[CFG_CMD4]=='O') // Change occupancy/motionless/ unconscious overtime threshold }else if (tlv_buf_size == 8 && tlv_buf[CFG_CMD4]=='O') // Change occupancy/motionless/ unconscious overtime threshold
{ {
invalid_flag = 0; // P 1 1 O A B C D invalid_flag = 0; // P 1 1 O M O U A
if (((tlv_buf[CFG_CMD5] >='0') && (tlv_buf[CFG_CMD5]<='9')) && ((tlv_buf[CFG_CMD6]<='9') && (tlv_buf[CFG_CMD6]>='0')) if (((tlv_buf[CFG_CMD5] >='0') && (tlv_buf[CFG_CMD5]<='9')) && ((tlv_buf[CFG_CMD6]<='9') && (tlv_buf[CFG_CMD6]>='0'))
&& ((tlv_buf[CFG_CMD7]<='9') && (tlv_buf[CFG_CMD7]>='0'))&& ((tlv_buf[CFG_CMD8]<='9') && (tlv_buf[CFG_CMD8]>='0'))) && ((tlv_buf[CFG_CMD7]<='9') && (tlv_buf[CFG_CMD7]>='0'))&& ((tlv_buf[CFG_CMD8]<='9') && (tlv_buf[CFG_CMD8]>='0')))
{ {
sts_motionless_duration_threshold_in_min = (uint8_t)(tlv_buf[CFG_CMD5] - 0x30); //Motionless duration in min sts_motionless_duration_threshold_in_min = (uint8_t)(tlv_buf[CFG_CMD5] - 0x30); //M: Motionless duration in min
sts_occupancy_overtime_threshold_in_10min = (uint8_t)(tlv_buf[CFG_CMD6] - 0x30)*10; //Long occupation in min sts_occupancy_overtime_threshold_in_10min = (uint8_t)(tlv_buf[CFG_CMD6] - 0x30)*10; //O: Long occupation in min
sts_unconscious_level_threshold = (uint8_t)(tlv_buf[CFG_CMD7] - 0x30+1)*128; //motion level threshold less than 1280 sts_unconscious_level_threshold = (uint8_t)(tlv_buf[CFG_CMD7] - 0x30+1)*128; //U: motion level threshold less than 1280
sts_alarm_mute_reset_timer_in_10sec = (uint8_t)(tlv_buf[CFG_CMD8] - 0x30)*10; //alarm mute reset timer in 10 sec sts_alarm_mute_reset_timer_in_10sec = (uint8_t)(tlv_buf[CFG_CMD8] - 0x30)*10; //A: alarm mute reset timer in 10 sec
sts_cfg_nvm.motionless_duration_threshold_in_min = (uint8_t)(tlv_buf[CFG_CMD5] - 0x30); sts_cfg_nvm.motionless_duration_threshold_in_min = (uint8_t)(tlv_buf[CFG_CMD5] - 0x30);
sts_cfg_nvm.occupancy_overtime_threshold_in_10min = (uint8_t)(tlv_buf[CFG_CMD6] - 0x30); sts_cfg_nvm.occupancy_overtime_threshold_in_10min = (uint8_t)(tlv_buf[CFG_CMD6] - 0x30);
@ -2317,14 +2306,9 @@ void USER_APP_AUTO_RESPONDER_Parse(char *tlv_buf, size_t tlv_buf_size)
OnStoreSTSCFGContextRequest(); OnStoreSTSCFGContextRequest();
i=0; // Step 1: Prepare status update message i=0; // Step 1: Prepare status update message
outbuf[i++] = (uint8_t) tlv_buf[CFG_CMD1]; UTIL_MEM_set_8(outbuf, 0x0, sizeof(outbuf));
outbuf[i++] = (uint8_t) tlv_buf[CFG_CMD2]; UTIL_MEM_cpy_8(outbuf, tlv_buf,tlv_buf_size);
outbuf[i++] = (uint8_t) tlv_buf[CFG_CMD3]; i = tlv_buf_size;
outbuf[i++] = (uint8_t) tlv_buf[CFG_CMD4];
outbuf[i++] = (uint8_t) tlv_buf[CFG_CMD5];
outbuf[i++] = (uint8_t) tlv_buf[CFG_CMD6];
outbuf[i++] = (uint8_t) tlv_buf[CFG_CMD7];
outbuf[i++] = (uint8_t) tlv_buf[CFG_CMD8];
STS_Combined_Status_Processing(); STS_Combined_Status_Processing();
} }
} }
@ -2343,10 +2327,9 @@ void USER_APP_AUTO_RESPONDER_Parse(char *tlv_buf, size_t tlv_buf_size)
} }
i=0; // Step 1: Prepare status update message i=0; // Step 1: Prepare status update message
outbuf[i++] = (uint8_t) tlv_buf[CFG_CMD1]; UTIL_MEM_set_8(outbuf, 0x0, sizeof(outbuf));
outbuf[i++] = (uint8_t) tlv_buf[CFG_CMD2]; UTIL_MEM_cpy_8(outbuf, tlv_buf,tlv_buf_size);
outbuf[i++] = (uint8_t) tlv_buf[CFG_CMD3]; i = tlv_buf_size;
outbuf[i++] = (uint8_t) tlv_buf[CFG_CMD4];
//sts_service_mask = STS_SERVICE_MASK_L0; //sts_service_mask = STS_SERVICE_MASK_L0;
//sts_lamp_bar_color = STS_GREEN; //sts_lamp_bar_color = STS_GREEN;
@ -2362,7 +2345,7 @@ void USER_APP_AUTO_RESPONDER_Parse(char *tlv_buf, size_t tlv_buf_size)
STS_Combined_Status_Processing(); STS_Combined_Status_Processing();
HAL_Delay(2000); HAL_Delay(2000);
OnSystemReset(); //OnSystemReset();
} else { } else {
invalid_flag = 1; invalid_flag = 1;