[LoRaMac] Add SendInfo function and GetMaxPayloadLength function for use by the outer layer

This commit is contained in:
huangly 2024-05-10 11:28:05 +08:00
parent 28f1a20f48
commit dc557f6d2c
2 changed files with 52 additions and 0 deletions

View File

@ -316,6 +316,14 @@ typedef struct sLoRaMacCtx
* Buffer containing the MAC layer commands
*/
uint8_t MacCommandsBuffer[LORA_MAC_COMMAND_MAX_LENGTH];
/*!
* Time on air accumulation
*/
uint32_t SumSendTime;
/*!
* Send count accumulation
*/
uint32_t SumSendCount;
}LoRaMacCtx_t;
/*!
@ -4009,6 +4017,9 @@ static LoRaMacStatus_t SendFrameOnChannel( uint8_t channel )
MacCtx.McpsConfirm.TxPower = txPower;
MacCtx.McpsConfirm.Channel = channel;
MacCtx.SumSendCount++;
MacCtx.SumSendTime += MacCtx.TxTimeOnAir;
// Store the time on air
MacCtx.McpsConfirm.TxTimeOnAir = MacCtx.TxTimeOnAir;
MacCtx.MlmeConfirm.TxTimeOnAir = MacCtx.TxTimeOnAir;
@ -6669,3 +6680,24 @@ LoRaMacStatus_t LoRaMacDeInitialization( void )
return LORAMAC_STATUS_BUSY;
}
}
uint8_t LoRaMacGetMaxPayloadLength(void)
{
return GetMaxAppPayloadWithoutFOptsLength(Nvm.MacGroup2.ChannelsDatarateDefault);
}
void LoRaMacSendInfoGet(uint32_t *count, uint32_t *time)
{
if(count != NULL) {
*count = MacCtx.SumSendCount;
}
if(time != NULL) {
*time = MacCtx.SumSendTime;
}
}
void LoRaMacSendInfoClear(void)
{
MacCtx.SumSendCount = 0;
MacCtx.SumSendTime = 0;
}

View File

@ -476,6 +476,26 @@ LoRaMacStatus_t LoRaMacDeInitialization( void );
LoRaMacStatus_t LoRaMacProcessMicForDatablock( uint8_t *buffer, uint32_t size, uint16_t sessionCnt, uint8_t fragIndex, uint32_t descriptor, uint32_t *mic );
/*!
* \brief LoRaMAC gets the maximum application payload length in the absence of the optional FOpt field
*
* \retval Max length
*/
uint8_t LoRaMacGetMaxPayloadLength( void );
/*!
* \brief LoRaMAC get send info
*
* \param [out] count - Send count accumulation
* \param [out] time - Time on air accumulation
*/
void LoRaMacSendInfoGet(uint32_t *count, uint32_t *time);
/*!
* \brief LoRaMAC send info clear
*/
void LoRaMacSendInfoClear(void);
/*! \} defgroup LORAMAC */
#ifdef __cplusplus