diff --git a/LoRaWAN/App/lora_app.c b/LoRaWAN/App/lora_app.c index 46e7e79..306d5f5 100644 --- a/LoRaWAN/App/lora_app.c +++ b/LoRaWAN/App/lora_app.c @@ -35,6 +35,9 @@ #include "sys_sensors.h" #include "flash_if.h" +#ifdef CLOCK_SYNC +#include "LmhpClockSync.h" +#endif /* USER CODE BEGIN Includes */ #include "app_tof_pin_conf.h" #include "app_tof_peoplecount.h" @@ -419,6 +422,8 @@ static UTIL_TIMER_Object_t RxLedTimer; */ static UTIL_TIMER_Object_t JoinLedTimer; +static volatile bool IsClockSynched = false; +volatile struct tm sts_localtime={0}; /* USER CODE END PV */ /* Exported functions ---------------------------------------------------------*/ @@ -491,6 +496,11 @@ void LoRaWAN_Init(void) UTIL_SEQ_RegTask((1 << CFG_SEQ_Task_LoRaStoreContextEvent), UTIL_SEQ_RFU, StoreContext); UTIL_SEQ_RegTask((1 << CFG_SEQ_Task_LoRaStopJoinEvent), UTIL_SEQ_RFU, StopJoin); +#ifdef CLOCK_SYNC + LmHandlerPackageRegister( PACKAGE_ID_CLOCK_SYNC, NULL ); + IsClockSynched = false; +#endif + /* Init Info table used by LmHandler*/ LoraInfo_Init(); @@ -1044,6 +1054,7 @@ static void SendTxData(void) AppData.Buffer[i++] = (uint8_t)((sts_p2_sensor_data.Walk_Around_People_Count>>8) & 0xFF); AppData.Buffer[i++] = (uint8_t)(sts_p2_sensor_data.Walk_Around_People_Count & 0xFF); #endif // VL53L1X + #if 1 #ifdef VL53LX // VL53L1X AppData.Buffer[i++] = (uint8_t)((sts_p2_sensor_data.Count_Period) & 0xFF); @@ -1061,6 +1072,7 @@ static void SendTxData(void) AppData.Buffer[i++] = (uint8_t)(sts_p2_sensor_data.Count_Valid & 0xFF); #endif // VL53L1X #endif + #endif //STS_P2 #if defined(STS_T6) @@ -1094,7 +1106,18 @@ static void SendTxData(void) #endif //STS_M1 - AppData.BufferSize = i&(~sts_service_mask); + AppData.BufferSize = i; //&(~sts_service_mask); + +#ifdef CLOCK_SYNC + if( IsClockSynched == false ) + { + status = LmhpClockSyncAppTimeReq( ); + + if (LORAMAC_HANDLER_SUCCESS == status) { + OnSysTimeUpdate(); + } + } +#endif if ((JoinLedTimer.IsRunning) && (LmHandlerJoinStatus() == LORAMAC_HANDLER_SET)) { @@ -1291,7 +1314,7 @@ static void OnBeaconStatusChange(LmHandlerBeaconParams_t *params) static void OnSysTimeUpdate(void) { /* USER CODE BEGIN OnSysTimeUpdate_1 */ - + IsClockSynched = true; /* USER CODE END OnSysTimeUpdate_1 */ } @@ -1667,3 +1690,19 @@ void OnYunhornSTSTxPeriodicityChanged(uint32_t periodicity) /* USER CODE END OnYunhornSTSTxPeriodicityChanged */ } + + +void STS_Get_Date_Time_Stamp(void) +{ + // struct tm localtime={0}; + + SysTime_t UnixEpoch = SysTimeGet(); + UnixEpoch.Seconds -= 18; /*removing leap seconds*/ + + SysTimeLocalTime(UnixEpoch.Seconds, &sts_localtime); + APP_LOG(TS_OFF, VLEVEL_L, "UTC TIME:%02dh%02dm%02ds on %02d/%02d/%04d wday:yday=%02d:%02d\r\n", + sts_localtime.tm_hour, sts_localtime.tm_min, sts_localtime.tm_sec, + sts_localtime.tm_mday, sts_localtime.tm_mon + 1, sts_localtime.tm_year + 1900, sts_localtime.tm_wday, sts_localtime.tm_yday); + + // return (uint32_t)UnixEpoch.Seconds; +} diff --git a/STM32CubeIDE/.cproject b/STM32CubeIDE/.cproject index 21fbd3d..e5cbe70 100644 --- a/STM32CubeIDE/.cproject +++ b/STM32CubeIDE/.cproject @@ -137,6 +137,7 @@