fix p cmd full size, simple size parameter bug

This commit is contained in:
Yunhorn 2024-08-13 12:58:24 +08:00
parent 2927574f0d
commit c0dd7ed536
4 changed files with 56 additions and 20 deletions

View File

@ -255,8 +255,8 @@
#define STS_O7_NVM_CFG_SIZE 32U #define STS_O7_NVM_CFG_SIZE 32U
#define STS_O7_CFG_PCFG_SIZE 20U #define STS_O7_CFG_PCFG_SIZE 20U
#define STS_O7_CFG_CMD_SIZE 30U #define STS_O7_CFG_CMD_SIZE 33U
#define STS_O7_CFG_CMD_SHORT_LEN 8U #define STS_O7_CFG_CMD_SHORT_LEN 11U
#define STS_MODE_COLOR_CMD_LEN 5U #define STS_MODE_COLOR_CMD_LEN 5U
#define sts_mtmcode1 0U #define sts_mtmcode1 0U

View File

@ -50,7 +50,9 @@ enum cfg_cmd_order{
CFG_CMD7, CFG_CMD7,
CFG_CMD8, CFG_CMD8,
CFG_CMD9, CFG_CMD9,
CFG_CMD10 CFG_CMD10, CFG_CMD11, CFG_CMD12, CFG_CMD13, CFG_CMD14,CFG_CMD15, CFG_CMD16, CFG_CMD17, CFG_CMD18, CFG_CMD19,
CFG_CMD20, CFG_CMD21, CFG_CMD22, CFG_CMD23, CFG_CMD24,CFG_CMD25, CFG_CMD26, CFG_CMD27, CFG_CMD28, CFG_CMD29,
CFG_CMD30, CFG_CMD31, CFG_CMD32, CFG_CMD33, CFG_CMD34,CFG_CMD35, CFG_CMD36, CFG_CMD37, CFG_CMD38, CFG_CMD39
}; };
enum p_cmd_order{ enum p_cmd_order{
P_CMD=0, //'P' //P_MTM_CODE, // #1 P_CMD=0, //'P' //P_MTM_CODE, // #1

View File

@ -680,8 +680,10 @@ void STS_PRESENCE_SENSOR_NVM_CFG(void)
sts_presence_rss_config.default_inter_frame_deviation_time_const = (float)(sts_cfg_nvm.p[RSS_CFG_ITE_DEVIATION]*0.1f); sts_presence_rss_config.default_inter_frame_deviation_time_const = (float)(sts_cfg_nvm.p[RSS_CFG_ITE_DEVIATION]*0.1f);
sts_presence_rss_config.default_inter_frame_fast_cutoff = (float)(sts_cfg_nvm.p[RSS_CFG_ITE_FAST_CUTOFF]); sts_presence_rss_config.default_inter_frame_fast_cutoff = (float)(sts_cfg_nvm.p[RSS_CFG_ITE_FAST_CUTOFF]);
sts_presence_rss_config.default_inter_frame_slow_cutoff = (float)(sts_cfg_nvm.p[RSS_CFG_ITE_SLOW_CUTOFF]*0.01f); sts_presence_rss_config.default_inter_frame_slow_cutoff = (float)(sts_cfg_nvm.p[RSS_CFG_ITE_SLOW_CUTOFF]*0.01f);
sts_presence_rss_config.default_intra_frame_time_const = (float)(sts_cfg_nvm.p[RSS_CFG_ITR_TIME]); sts_presence_rss_config.default_intra_frame_time_const = (float)(sts_cfg_nvm.p[RSS_CFG_ITR_TIME]);
sts_presence_rss_config.default_intra_frame_weight = (float)(sts_cfg_nvm.p[RSS_CFG_ITR_WEIGHT]*0.1f); sts_presence_rss_config.default_intra_frame_weight = (float)(sts_cfg_nvm.p[RSS_CFG_ITR_WEIGHT]*0.1f);
sts_presence_rss_config.default_output_time_const = (float)(sts_cfg_nvm.p[RSS_CFG_OUTPUT_TIME]*0.1f); sts_presence_rss_config.default_output_time_const = (float)(sts_cfg_nvm.p[RSS_CFG_OUTPUT_TIME]*0.1f);
//filter parameter //filter parameter

View File

@ -1445,7 +1445,7 @@ static void OnJoinRequest(LmHandlerJoinParams_t *joinParams)
//UTIL_TIMER_Start(&STSDurationCheckTimer); //UTIL_TIMER_Start(&STSDurationCheckTimer);
OnYunhornSTSHeartBeatPeriodicityChanged(HeartBeatPeriodicity); OnYunhornSTSHeartBeatPeriodicityChanged(HeartBeatPeriodicity);
UTIL_TIMER_Create(&YunhornSTSRSSWakeUpTimer, YUNHORN_STS_RSS_WAKEUP_CHECK_TIME, UTIL_TIMER_ONESHOT, OnYunhornSTSOORSSWakeUpTimerEvent, NULL); UTIL_TIMER_Create(&YunhornSTSRSSWakeUpTimer, YUNHORN_STS_RSS_WAKEUP_CHECK_TIME, UTIL_TIMER_PERIODIC, OnYunhornSTSOORSSWakeUpTimerEvent, NULL);
UTIL_TIMER_Start(&YunhornSTSRSSWakeUpTimer); UTIL_TIMER_Start(&YunhornSTSRSSWakeUpTimer);
STS_SENSOR_Distance_Test_Process(); STS_SENSOR_Distance_Test_Process();
@ -1712,8 +1712,9 @@ static void OnYunhornSTSOORSSWakeUpTimerEvent(void *context)
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;
APP_LOG(TS_OFF,VLEVEL_M,"\r\n Wakeup Timer ======== Send Tx Result=\r\n"); APP_LOG(TS_OFF,VLEVEL_M,"\r\n Wakeup Timer ======== Send Tx Result\r\n");
UTIL_SEQ_SetTask((1 << CFG_SEQ_Task_LoRaSendOnTxTimerOrButtonEvent), CFG_SEQ_Prio_0); SendTxData();
//UTIL_SEQ_SetTask((1 << CFG_SEQ_Task_LoRaSendOnTxTimerOrButtonEvent), CFG_SEQ_Prio_0);
//if ((last_sts_rss_result ==STS_RESULT_NO_MOTION)&& (sts_rss_result==STS_RESULT_MOTION)) //if ((last_sts_rss_result ==STS_RESULT_NO_MOTION)&& (sts_rss_result==STS_RESULT_MOTION))
{ {
//OnSensor3StateChanged(); //OnSensor3StateChanged();
@ -1722,7 +1723,7 @@ static void OnYunhornSTSOORSSWakeUpTimerEvent(void *context)
} }
UTIL_TIMER_Start(&YunhornSTSRSSWakeUpTimer); //UTIL_TIMER_Start(&YunhornSTSRSSWakeUpTimer);
} }
@ -2488,22 +2489,48 @@ void USER_APP_AUTO_RESPONDER_Parse(char *tlv_buf, uint8_t tlv_buf_size)
invalid_flag = 1; invalid_flag = 1;
} }
} else if (tlv_buf_size >= CFG_CMD_RSS_FULL_SIZE) } else if (tlv_buf_size == CFG_CMD_RSS_FULL_SIZE)
{ {
invalid_flag = 0; invalid_flag = 0;
for (j =0; j < CFG_CMD_RSS_FULL_SIZE; j++) for (j =0; j < CFG_CMD_RSS_FULL_SIZE-3; j++)
{ {
if ((tlv_buf[CFG_CMD4+j] >='0') && (tlv_buf[CFG_CMD4+j]<='9')) if ((tlv_buf[CFG_CMD4+j] >='0') && (tlv_buf[CFG_CMD4+j]<='9'))
{ {
sts_cfg_nvm.p[j] = (uint8_t)((tlv_buf[CFG_CMD4+j] - 0x30)&0xFF); //sts_cfg_nvm.p[j] = (uint8_t)((tlv_buf[CFG_CMD4+j] - 0x30)&0xFF);
//APP_LOG(TS_OFF,VLEVEL_H,"\r\n tlv_buf %d = %02x cfg->p[%d]=%02x \r\n",j,tlv_buf[CFG_CMD4+j], j, sts_cfg_nvm.p[j]); //APP_LOG(TS_OFF,VLEVEL_H,"\r\n tlv_buf %d = %02x cfg->p[%d]=%02x \r\n",j,tlv_buf[CFG_CMD4+j], j, sts_cfg_nvm.p[j]);
} else { } else {
invalid_flag = 1; invalid_flag = 1;
} }
} }
i=0;
sts_cfg_nvm.p[RSS_CFG_START_M] = (uint8_t)((tlv_buf[CFG_CMD4] - 0x30)*10+(tlv_buf[CFG_CMD5] - 0x30));
sts_cfg_nvm.p[RSS_CFG_LENGTH_M] = (uint8_t)((tlv_buf[CFG_CMD6] - 0x30)*10+(tlv_buf[CFG_CMD7] - 0x30));
sts_cfg_nvm.p[RSS_CFG_THRESHOLD] = (uint8_t)((tlv_buf[CFG_CMD8] - 0x30)*10+(tlv_buf[CFG_CMD9] - 0x30));
sts_cfg_nvm.p[RSS_CFG_RECEIVER_GAIN] = (uint8_t)((tlv_buf[CFG_CMD10]- 0x30)*10+(tlv_buf[CFG_CMD11]- 0x30));
if (invalid_flag != 1) sts_cfg_nvm.p[RSS_CFG_PROFILE] = (uint8_t)((tlv_buf[CFG_CMD12]- 0x30));
sts_cfg_nvm.p[RSS_CFG_RATE_TRACKING] = (uint8_t)((tlv_buf[CFG_CMD13]- 0x30)*10+(tlv_buf[CFG_CMD14]- 0x30));
sts_cfg_nvm.p[RSS_CFG_RATE_PRESENCE] = (uint8_t)((tlv_buf[CFG_CMD15]- 0x30)*10+(tlv_buf[CFG_CMD16]- 0x30));
sts_cfg_nvm.p[RSS_CFG_HWAAS] = (uint8_t)((tlv_buf[CFG_CMD17]- 0x30)*10+(tlv_buf[CFG_CMD18]- 0x30));
sts_cfg_nvm.p[RSS_CFG_NBR_REMOVED_PC] = (uint8_t)((tlv_buf[CFG_CMD19]- 0x30));
sts_cfg_nvm.p[RSS_CFG_ITE_DEVIATION] = (uint8_t)((tlv_buf[CFG_CMD20]- 0x30)*10+(tlv_buf[CFG_CMD21]- 0x30));
sts_cfg_nvm.p[RSS_CFG_ITE_FAST_CUTOFF] = (uint8_t)((tlv_buf[CFG_CMD22]- 0x30)*10+(tlv_buf[CFG_CMD23]- 0x30));
sts_cfg_nvm.p[RSS_CFG_ITE_SLOW_CUTOFF] = (uint8_t)((tlv_buf[CFG_CMD24]- 0x30)*10+(tlv_buf[CFG_CMD25]- 0x30));
sts_cfg_nvm.p[RSS_CFG_ITR_TIME] = (uint8_t)((tlv_buf[CFG_CMD26]- 0x30)*10+(tlv_buf[CFG_CMD27]- 0x30));
sts_cfg_nvm.p[RSS_CFG_ITR_WEIGHT] = (uint8_t)((tlv_buf[CFG_CMD28]- 0x30)*10+(tlv_buf[CFG_CMD29]- 0x30));
sts_cfg_nvm.p[RSS_CFG_OUTPUT_TIME] = (uint8_t)((tlv_buf[CFG_CMD30]- 0x30)*10+(tlv_buf[CFG_CMD31]- 0x30));
sts_cfg_nvm.p[RSS_CFG_DOWNSAMPLING_FACTOR] = (uint8_t)((tlv_buf[CFG_CMD32]- 0x30));
sts_cfg_nvm.p[RSS_CFG_POWER_MODE] = (uint8_t)((tlv_buf[CFG_CMD33]- 0x30));
if (invalid_flag == 0)
{ {
STS_PRESENCE_SENSOR_NVM_CFG(); STS_PRESENCE_SENSOR_NVM_CFG();
@ -2520,28 +2547,33 @@ void USER_APP_AUTO_RESPONDER_Parse(char *tlv_buf, uint8_t tlv_buf_size)
sts_cfg_nvm.hardware_ver = sts_hardware_ver; sts_cfg_nvm.hardware_ver = sts_hardware_ver;
sts_cfg_nvm.work_mode = sts_work_mode; sts_cfg_nvm.work_mode = sts_work_mode;
sts_cfg_nvm.sts_service_mask = sts_service_mask; sts_cfg_nvm.sts_service_mask = sts_service_mask;
sts_cfg_nvm.length = CFG_CMD_RSS_FULL_SIZE; //sts_cfg_nvm.length = CFG_CMD_RSS_FULL_SIZE;
OnStoreSTSCFGContextRequest(); OnStoreSTSCFGContextRequest();
} }
} else if (tlv_buf_size >= CFG_CMD_RSS_SIMPLE_SIZE) } else if (tlv_buf_size == CFG_CMD_RSS_SIMPLE_SIZE)
{ {
//Validation check //Validation check
invalid_flag = 0; invalid_flag = 0;
#if 1
for (j =0; j < CFG_CMD_RSS_SIMPLE_SIZE; j++) for (j =0; j < CFG_CMD_RSS_SIMPLE_SIZE-3; j++)
{ {
if ((tlv_buf[CFG_CMD4+j] >='0') && (tlv_buf[CFG_CMD4+j]<='9')) if ((tlv_buf[CFG_CMD4+j] >='0') && (tlv_buf[CFG_CMD4+j]<='9'))
{ {
sts_cfg_nvm.p[j] = (uint8_t)((tlv_buf[CFG_CMD4+j] - 0x30)&0xff); //sts_cfg_nvm.p[j] = (uint8_t)((tlv_buf[CFG_CMD4+j] - 0x30)&0xff);
//APP_LOG(TS_OFF,VLEVEL_H,"\r\n tlv_buf %d = %02x cfg->p[%d]=%02x \r\n",j,tlv_buf[CFG_CMD4+j], j, sts_cfg_nvm.p[j]); //APP_LOG(TS_OFF,VLEVEL_H,"\r\n tlv_buf %d = %02x cfg->p[%d]=%02x \r\n",j,tlv_buf[CFG_CMD4+j], j, sts_cfg_nvm.p[j]);
} else { } else {
invalid_flag = 1; invalid_flag = 1;
} }
} }
#endif
sts_cfg_nvm.p[RSS_CFG_START_M] = (uint8_t)((tlv_buf[CFG_CMD4] - 0x30)*10+(tlv_buf[CFG_CMD5] - 0x30));
sts_cfg_nvm.p[RSS_CFG_LENGTH_M] = (uint8_t)((tlv_buf[CFG_CMD6] - 0x30)*10+(tlv_buf[CFG_CMD7] - 0x30));
sts_cfg_nvm.p[RSS_CFG_THRESHOLD] = (uint8_t)((tlv_buf[CFG_CMD8] - 0x30)*10+(tlv_buf[CFG_CMD9] - 0x30));
sts_cfg_nvm.p[RSS_CFG_RECEIVER_GAIN] = (uint8_t)((tlv_buf[CFG_CMD10]- 0x30)*10+(tlv_buf[CFG_CMD11]- 0x30));
if (invalid_flag != 1) if (invalid_flag == 0)
{ {
STS_PRESENCE_SENSOR_NVM_CFG_SIMPLE(); STS_PRESENCE_SENSOR_NVM_CFG_SIMPLE();
@ -2549,7 +2581,7 @@ void USER_APP_AUTO_RESPONDER_Parse(char *tlv_buf, uint8_t tlv_buf_size)
UTIL_MEM_set_8((void*)outbuf, 0x0, sizeof(outbuf)); UTIL_MEM_set_8((void*)outbuf, 0x0, sizeof(outbuf));
UTIL_MEM_cpy_8((void*)outbuf,(void*)tlv_buf, tlv_buf_size); UTIL_MEM_cpy_8((void*)outbuf,(void*)tlv_buf, tlv_buf_size);
i = tlv_buf_size; i = tlv_buf_size;
APP_LOG(TS_OFF, VLEVEL_L, "###### RSS Simple CFG=%s\r\n",(char*)outbuf); APP_LOG(TS_OFF, VLEVEL_M, "###### RSS Simple CFG=%s\r\n",(char*)outbuf);
// Step 2: Save valid config to NVM // Step 2: Save valid config to NVM
sts_cfg_nvm.mtmcode1 = sts_mtmcode1; sts_cfg_nvm.mtmcode1 = sts_mtmcode1;
@ -2558,7 +2590,7 @@ void USER_APP_AUTO_RESPONDER_Parse(char *tlv_buf, uint8_t tlv_buf_size)
sts_cfg_nvm.hardware_ver = sts_hardware_ver; sts_cfg_nvm.hardware_ver = sts_hardware_ver;
sts_cfg_nvm.work_mode = sts_work_mode; sts_cfg_nvm.work_mode = sts_work_mode;
sts_cfg_nvm.sts_service_mask = sts_service_mask; sts_cfg_nvm.sts_service_mask = sts_service_mask;
sts_cfg_nvm.length = CFG_CMD_RSS_SIMPLE_SIZE; //sts_cfg_nvm.length = CFG_CMD_RSS_SIMPLE_SIZE;
OnStoreSTSCFGContextRequest(); OnStoreSTSCFGContextRequest();
} }
@ -2913,7 +2945,7 @@ void OnRestoreSTSCFGContextProcess(void)
// if ((sts_version == sts_cfg_nvm.version)&& (NVM_CFG_PARAMETER_SIZE == sts_cfg_nvm.length)) // if ((sts_version == sts_cfg_nvm.version)&& (NVM_CFG_PARAMETER_SIZE == sts_cfg_nvm.length))
{ {
STS_PRESENCE_SENSOR_Init(); STS_PRESENCE_SENSOR_Init();
//STS_PRESENCE_SENSOR_RSS_Init(); STS_PRESENCE_SENSOR_RSS_Init();
} }
#endif #endif
//STS_SENSOR_Distance_Test_Process(); //STS_SENSOR_Distance_Test_Process();