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 @@