From d0b9947479307fc7453085e1f9902a4366b0fe3c Mon Sep 17 00:00:00 2001 From: konstantin Date: Mon, 8 Jul 2019 17:06:45 +0700 Subject: [PATCH] Added datarate revert mechanism after time synchronization request --- .../LoRaMac/common/LmHandler/packages/LmhpClockSync.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/apps/LoRaMac/common/LmHandler/packages/LmhpClockSync.c b/src/apps/LoRaMac/common/LmHandler/packages/LmhpClockSync.c index cbf305617..83eb5f5e4 100644 --- a/src/apps/LoRaMac/common/LmHandler/packages/LmhpClockSync.c +++ b/src/apps/LoRaMac/common/LmHandler/packages/LmhpClockSync.c @@ -53,6 +53,7 @@ typedef struct LmhpClockSyncState_s bool AppTimeReqPending; bool AdrEnabledPrev; uint8_t NbTransPrev; + uint8_t DataratePrev; }LmhpClockSyncState_t; typedef enum LmhpClockSyncMoteCmd_e @@ -201,6 +202,11 @@ static void LmhpClockSyncOnMcpsConfirm( McpsConfirm_t *mcpsConfirm ) mibReq.Param.ChannelsNbTrans = LmhpClockSyncState.NbTransPrev; LoRaMacMibSetRequestConfirm( &mibReq ); + // Revert data rate setting + mibReq.Type = MIB_CHANNELS_DATARATE; + mibReq.Param.ChannelsDatarate = LmhpClockSyncState.DataratePrev; + LoRaMacMibSetRequestConfirm( &mibReq ); + LmhpClockSyncState.AppTimeReqPending = false; } } @@ -315,6 +321,11 @@ LmHandlerErrorStatus_t LmhpClockSyncAppTimeReq( void ) mibReq.Param.ChannelsNbTrans = 1; LoRaMacMibSetRequestConfirm( &mibReq ); + // Store data rate + mibReq.Type = MIB_CHANNELS_DATARATE; + LoRaMacMibGetRequestConfirm( &mibReq ); + LmhpClockSyncState.DataratePrev = mibReq.Param.ChannelsDatarate; + // Add DeviceTimeReq MAC command. // In case the network server supports this more precise command // this package will use DeviceTimeAns answer as clock synchronization