diff --git a/Core/Inc/sys_conf.h b/Core/Inc/sys_conf.h index de8c96a..f39ad4c 100644 --- a/Core/Inc/sys_conf.h +++ b/Core/Inc/sys_conf.h @@ -47,7 +47,7 @@ extern "C" { /** * @brief Verbose level for all trace logs */ -#define VERBOSE_LEVEL VLEVEL_M +#define VERBOSE_LEVEL VLEVEL_L /** * @brief Enable trace logs diff --git a/Core/Src/yunhorn_sts_process.c b/Core/Src/yunhorn_sts_process.c index 98e5e86..dd3778c 100644 --- a/Core/Src/yunhorn_sts_process.c +++ b/Core/Src/yunhorn_sts_process.c @@ -269,10 +269,13 @@ void STS_YunhornSTSEventP3_Process(void) */ void STS_YunhornSTSEventP4_Process(void) { - + STS_SENSOR_Power_ON(0); + STS_SENSOR_Power_OFF(0); APP_LOG(TS_OFF, VLEVEL_L, "\r\n P4 Testing Process\r\n"); STS_TOF_VL53L0X_Range_Process(); + STS_SENSOR_Power_OFF(0); + } @@ -296,6 +299,10 @@ void STS_YunhornSTSEventP5_Process(void) void STS_YunhornSTSEventP6_Process(void) { APP_LOG(TS_OFF, VLEVEL_L, "\r\n P6 Testing Process\r\n"); + STS_SENSOR_Power_ON(0); + + STS_SENSOR_Power_OFF(0); + } @@ -306,6 +313,9 @@ void STS_YunhornSTSEventP6_Process(void) void STS_YunhornSTSEventP7_Process(void) { APP_LOG(TS_OFF, VLEVEL_L, "\r\n P7 Testing Process\r\n"); + STS_SENSOR_Power_ON(0); + + STS_SENSOR_Power_OFF(0); } @@ -456,7 +466,7 @@ void STS_SENSOR_Power_OFF(uint8_t cnt) case 0: case 1: case 2: -#ifdef YUNHORN_STS_M7_ENABLED +#if (defined(YUNHORN_STS_M7_ENABLED) || defined(YUNHORN_STS_R0_ENABLED)) HAL_GPIO_WritePin(MEMS_POWER_GPIO_Port, MEMS_POWER_Pin, GPIO_PIN_RESET); #endif HAL_GPIO_WritePin(MEMS_POWER_GPIO_Port, MEMS_POWER_Pin, GPIO_PIN_RESET); @@ -472,11 +482,14 @@ void STS_SENSOR_MEMS_Reset(uint8_t cnt) case 0: case 1: case 2: -#ifdef YUNHORN_STS_M7_ENABLED +#if (defined(YUNHORN_STS_M7_ENABLED) || defined(YUNHORN_STS_R0_ENABLED)) HAL_GPIO_WritePin(MEMS_RESET_GPIO_Port, MEMS_RESET_Pin, GPIO_PIN_SET); + HAL_Delay(50); + HAL_GPIO_WritePin(MEMS_RESET_GPIO_Port, MEMS_RESET_Pin, GPIO_PIN_RESET); #endif HAL_GPIO_WritePin(MEMS_RESET_GPIO_Port, MEMS_RESET_Pin, GPIO_PIN_SET); - + HAL_Delay(50); + HAL_GPIO_WritePin(MEMS_RESET_GPIO_Port, MEMS_RESET_Pin, GPIO_PIN_RESET); break; default: break; @@ -487,52 +500,12 @@ void STS_SENSOR_MEMS_Reset(uint8_t cnt) void STS_SENSOR_NVM_CFG(void) { - /* - sts_presence_rss_config.default_start_m = (float)(sts_cfg_nvm.p[RSS_CFG_START_M_H] + 0.1* sts_cfg_nvm.p[RSS_CFG_START_M_L]); - sts_presence_rss_config.default_length_m = (float)(sts_cfg_nvm.p[RSS_CFG_LENGTH_M_H] + 0.1* sts_cfg_nvm.p[RSS_CFG_LENGTH_M_L]); - sts_presence_rss_config.default_threshold = (float)(sts_cfg_nvm.p[RSS_CFG_THRESHOLD_H] + 0.1*sts_cfg_nvm.p[RSS_CFG_THRESHOLD_L]); - sts_presence_rss_config.default_receiver_gain = (float)(sts_cfg_nvm.p[RSS_CFG_RECEIVER_GAIN_H]*0.1 + 0.01* sts_cfg_nvm.p[RSS_CFG_RECEIVER_GAIN_L]); - sts_presence_rss_config.default_zone_length_m = DEFAULT_ZONE_LENGTH; - sts_presence_rss_config.default_profile = (float)(sts_cfg_nvm.p[RSS_CFG_PROFILE]); - sts_presence_rss_config.default_update_rate_tracking = (float)(sts_cfg_nvm.p[RSS_CFG_RATE_TRACKING_H]*10 + sts_cfg_nvm.p[RSS_CFG_RATE_TRACKING_L]); - sts_presence_rss_config.default_update_rate_presence = (float)(sts_cfg_nvm.p[RSS_CFG_RATE_PRESENCE_H]*10 + sts_cfg_nvm.p[RSS_CFG_RATE_PRESENCE_L]); - sts_presence_rss_config.default_hwaas = (float)(sts_cfg_nvm.p[RSS_CFG_HWAAS_H]*10 + sts_cfg_nvm.p[RSS_CFG_HWAAS_L]); - - sts_presence_rss_config.default_nbr_removed_pc = (float)(sts_cfg_nvm.p[RSS_CFG_NBR_REMOVED_PC]); - -//filter parameter - sts_presence_rss_config.default_inter_frame_deviation_time_const = (float)(sts_cfg_nvm.p[RSS_CFG_ITE_DEVIATION_H] + 0.1* sts_cfg_nvm.p[RSS_CFG_ITE_DEVIATION_L]); - sts_presence_rss_config.default_inter_frame_fast_cutoff = (float)(sts_cfg_nvm.p[RSS_CFG_ITE_FAST_CUTOFF_H]*10 + sts_cfg_nvm.p[RSS_CFG_ITE_FAST_CUTOFF_L]); - sts_presence_rss_config.default_inter_frame_slow_cutoff = (float)(sts_cfg_nvm.p[RSS_CFG_ITE_SLOW_CUTOFF_H]*.1 + 0.01* sts_cfg_nvm.p[RSS_CFG_ITE_SLOW_CUTOFF_L]); - sts_presence_rss_config.default_intra_frame_time_const = (float)(sts_cfg_nvm.p[RSS_CFG_ITR_TIME_H] + 0.1* sts_cfg_nvm.p[RSS_CFG_ITR_TIME_L]); - sts_presence_rss_config.default_intra_frame_weight = (float)(sts_cfg_nvm.p[RSS_CFG_ITR_WEIGHT_H] + 0.1* sts_cfg_nvm.p[RSS_CFG_ITR_WEIGHT_L]); - sts_presence_rss_config.default_output_time_const = (float)(sts_cfg_nvm.p[RSS_CFG_OUTPUT_TIME_H] + 0.1* sts_cfg_nvm.p[RSS_CFG_OUTPUT_TIME_L]); -//filter parameter - - sts_presence_rss_config.default_downsampling_factor = (float)(sts_cfg_nvm.p[RSS_CFG_DOWNSAMPLING_FACTOR]); - sts_presence_rss_config.default_power_save_mode = (float)(sts_cfg_nvm.p[RSS_CFG_POWER_MODE]); -*/ } void STS_SENSOR_NVM_CFG_SIMPLE(void) { - /* - sts_presence_rss_config.default_start_m = (float)(sts_cfg_nvm.p[RSS_CFG_START_M_H] + 0.1* sts_cfg_nvm.p[RSS_CFG_START_M_L]); - sts_presence_rss_config.default_length_m = (float)(sts_cfg_nvm.p[RSS_CFG_LENGTH_M_H] + 0.1* sts_cfg_nvm.p[RSS_CFG_LENGTH_M_L]); - sts_presence_rss_config.default_threshold = (float)(sts_cfg_nvm.p[RSS_CFG_THRESHOLD_H] + 0.1*sts_cfg_nvm.p[RSS_CFG_THRESHOLD_L]); - sts_presence_rss_config.default_receiver_gain = (float)(sts_cfg_nvm.p[RSS_CFG_RECEIVER_GAIN_H]*0.1 + 0.01* sts_cfg_nvm.p[RSS_CFG_RECEIVER_GAIN_L]); - */ -/* - char pout[128]=""; - sprintf(pout,"\r\n Start=%.2f Length= %.2f Threshold=%.2f Gain=%.2f\r\n", - sts_presence_rss_config.default_start_m, - sts_presence_rss_config.default_length_m, - sts_presence_rss_config.default_threshold, - sts_presence_rss_config.default_receiver_gain); - APP_LOG(TS_OFF, VLEVEL_L,"\r\n %s \r\n", pout); - */ } /* USER CODE BEGIN EF */ diff --git a/LoRaWAN/App/lora_app.c b/LoRaWAN/App/lora_app.c index 8e07e32..1606e55 100644 --- a/LoRaWAN/App/lora_app.c +++ b/LoRaWAN/App/lora_app.c @@ -67,10 +67,10 @@ volatile sts_cfg_nvm_t sts_cfg_nvm = { sts_mtmcode2, sts_version, sts_hardware_ver, - 0x02, //Regular TxPeriodicity interval - 'M', //unit of Regular TxPeriodicity interval - 0x0A, //Heart-beat interval or Sampling interval - 'S', //unit of Heart-beat interval or Sampling interval + 0x20, //Regular TxPeriodicity interval + 'S', //unit of Regular TxPeriodicity interval + 0x02, //Heart-beat interval or Sampling interval + 'M', //unit of Heart-beat interval or Sampling interval 0x04, // dual mode 0x00, // service mask 0x00, // reserve01 @@ -614,7 +614,7 @@ void LoRaWAN_Init(void) // FOR Event trigger type sensor, use this as Heart Beat Timer, such as O1/O2/O3/M1 #if (defined(YUNHORN_STS_R0_ENABLED)) UTIL_TIMER_Create(&YunhornSTSHeartBeatTimer, HeartBeatPeriodicity, - UTIL_TIMER_PERIODIC, OnYunhornSTSHeartBeatTimerEvent, NULL); + UTIL_TIMER_ONESHOT, OnYunhornSTSHeartBeatTimerEvent, NULL); UTIL_TIMER_Start(&YunhornSTSHeartBeatTimer); #endif @@ -765,6 +765,10 @@ static void SendTxData(void) STS_R0_SensorDataTypeDef r0_data; UTIL_TIMER_Time_t nextTxIn = 0; + APP_LOG(TS_ON, VLEVEL_L, "\r\n Flag: Heart-beat-timer = %u \r\n upload_message_timer %u \r\n sensor_data_ready = %u \r\n", + heart_beat_timer, upload_message_timer, sensor_data_ready); + + if (LmHandlerIsBusy() == false) { uint8_t i = 0; @@ -779,7 +783,7 @@ static void SendTxData(void) // APP_LOG(TS_ON, VLEVEL_M, "\r\nVDDA: %d\r\n", batteryLevel); // APP_LOG(TS_ON, VLEVEL_M, "\r\ntemp: %d\r\n", (int16_t)(sensor_data.temperature)); - APP_LOG(TS_ON, VLEVEL_L, "\r\nDistance = %d mm, VBAT=%d%%\r\n", r0_data.distance_mm, r0_data.battery_Pct); + //APP_LOG(TS_ON, VLEVEL_L, "\r\nDistance = %d mm, VBAT=%d%%\r\n", r0_data.distance_mm, r0_data.battery_Pct); AppData.Port = LORAWAN_USER_APP_PORT; @@ -795,6 +799,7 @@ static void SendTxData(void) { heart_beat_timer = 0; AppData.Port = LORAWAN_USER_HTBT_PORT; //LORAWAN_USER_APP_PORT+1; + APP_LOG(TS_ON, VLEVEL_L, "\r\n------------ Heart-Beat ------------- \r\n ------------------Distance = %d mm, VBAT=%d%%\r\n", r0_data.distance_mm, r0_data.battery_Pct); } else if (upload_message_timer) //sensor_data_ready) { @@ -804,9 +809,10 @@ static void SendTxData(void) AppData.Buffer[i++] = (uint8_t)(r0_data.distance_mm_h); //#05 AppData.Buffer[i++] = (uint8_t)(r0_data.distance_mm_l); //#05 + APP_LOG(TS_ON, VLEVEL_L, "\r\n------------ Periodicity Upload Heart-Beat ------------- \r\n ------------------Distance = %d mm, VBAT=%d%%\r\n", r0_data.distance_mm, r0_data.battery_Pct); } - AppData.BufferSize = (sts_service_mask >=2?0:i); + AppData.BufferSize = (sts_service_mask >1?0:i); if ((JoinLedTimer.IsRunning) && (LmHandlerJoinStatus() == LORAMAC_HANDLER_SET)) { @@ -1017,7 +1023,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_L,"\r\n TxPeriodicity changed to %u (msec) \r\n", TxPeriodicity); /* USER CODE END OnTxPeriodicityChanged_2 */ } @@ -1218,7 +1224,7 @@ static void OnYunhornSTSHeartBeatPeriodicityChanged(uint32_t periodicity) UTIL_TIMER_Start(&YunhornSTSHeartBeatTimer); /* USER CODE BEGIN OnTxPeriodicityChanged_2 */ - APP_LOG(TS_OFF, VLEVEL_M,"**************** HeartBeatPeriodicity = %u (ms)\r\n", HeartBeatPeriodicity ); + APP_LOG(TS_OFF, VLEVEL_L,"**************** HeartBeatPeriodicity Changed to: %u (ms)\r\n", HeartBeatPeriodicity ); /* USER CODE END OnTxPeriodicityChanged_2 */ } @@ -1349,22 +1355,18 @@ static void OnYunhornSTSSamplingCheckTimerEvent(void *context) */ static void OnYunhornSTSHeartBeatTimerEvent(void *context) { - if (STS_LoRa_WAN_Joined ) - { -#ifdef YUNHORN_STS_R0_ENABLED - heart_beat_timer = 1; - UTIL_SEQ_SetTask((1 << CFG_SEQ_Task_LoRaSendOnTxTimerOrButtonEvent), CFG_SEQ_Prio_0); + heart_beat_timer = 1; + UTIL_SEQ_SetTask((1 << CFG_SEQ_Task_LoRaSendOnTxTimerOrButtonEvent), CFG_SEQ_Prio_0); + UTIL_TIMER_Start(&YunhornSTSHeartBeatTimer); - if (sts_ac_code[0]==0x0) { - /* RFAC Challenge */ - if (rfac_timer < (STS_BURN_IN_RFAC+3)) { - rfac_timer ++; - } - UTIL_SEQ_SetTask((1 << CFG_SEQ_Task_YunhornSTSEventRFAC), CFG_SEQ_Prio_0); - } - UTIL_TIMER_Start(&YunhornSTSHeartBeatTimer); -#endif - } + if ((STS_LoRa_WAN_Joined ) && (sts_ac_code[0]==0x0)) + { + /* RFAC Challenge */ + if (rfac_timer < (STS_BURN_IN_RFAC+3)) { + rfac_timer ++; + } + UTIL_SEQ_SetTask((1 << CFG_SEQ_Task_YunhornSTSEventRFAC), CFG_SEQ_Prio_0); + } } void USER_APP_AUTO_RESPONDER_Parse(char *tlv_buf, size_t tlv_buf_size) @@ -1558,12 +1560,10 @@ void USER_APP_AUTO_RESPONDER_Parse(char *tlv_buf, size_t tlv_buf_size) outbuf[i++] = (uint8_t) cfg_in_nvm[NVM_MTM2]; //MTM Code outbuf[i++] = (uint8_t) cfg_in_nvm[NVM_VER]; //STS Version outbuf[i++] = (uint8_t) cfg_in_nvm[NVM_HWV]; //STS Version - outbuf[i++] = (uint8_t) (cfg_in_nvm[NVM_PERIODICITY]/10); //UPLINK Periodicity count high - outbuf[i++] = (uint8_t) (cfg_in_nvm[NVM_PERIODICITY]%10); //UPLINK Periodicity count low + outbuf[i++] = (uint8_t) (cfg_in_nvm[NVM_PERIODICITY]); //UPLINK Periodicity outbuf[i++] = (uint8_t) cfg_in_nvm[NVM_UNIT]; //UPLINK Periodicity unit - outbuf[i++] = (uint8_t) (cfg_in_nvm[NVM_SAMPLING]/10); //SAMPLING Periodicity count high - outbuf[i++] = (uint8_t) (cfg_in_nvm[NVM_SAMPLING]%10); //SAMPLING Periodicity count low - outbuf[i++] = (uint8_t) cfg_in_nvm[NVM_S_UNIT]; //SAMPLING Periodicity unit + outbuf[i++] = (uint8_t) (cfg_in_nvm[NVM_SAMPLING]); //Heart-beat or SAMPLING Periodicity + outbuf[i++] = (uint8_t) cfg_in_nvm[NVM_S_UNIT]; //Heart-beat or SAMPLING Periodicity unit outbuf[i++] = (uint8_t) cfg_in_nvm[NVM_WORK_MODE]; // STS WORK MODE outbuf[i++] = (uint8_t) cfg_in_nvm[NVM_SERVICE_MASK]; //service mask outbuf[i++] = (uint8_t) cfg_in_nvm[NVM_RESERVE01]; //service mask