1.5.4.2 Using The Library
The PRIME Time Management service library is called by the PRIME PAL and the PRIME Library for time-related operations..
The following example illustrates how the Time Management service can be used.
Examples of PRIME Time Managemet library usage
uint8_t PAL_PLC_GetTimer(uint32_t *pTimer)
{
*pTimer = SRV_TIME_MANAGEMENT_GetTimeUS();
return (uint8_t)PAL_CFG_SUCCESS;
}
uint8_t PAL_PLC_GetTimerExtended(uint64_t *pTimerExtended)
{
*pTimerExtended = SRV_TIME_MANAGEMENT_GetTimeUS64();
return (uint8_t)PAL_CFG_SUCCESS;
}
static void lPAL_RF_DataCfmCb(DRV_RF215_TX_HANDLE txHandle,
DRV_RF215_TX_CONFIRM_OBJ *pCfmObj, uintptr_t ctxt)
{
PAL_MSG_CONFIRM_DATA dataCfm;
dataCfm.bufId = (uint8_t)ctxt;
if (palRfData.rfCallbacks.dataConfirm != NULL)
{
dataCfm.txTime = SRV_TIME_MANAGEMENT_CountToUS(pCfmObj->timeIniCount);
dataCfm.pch = (uint16_t)(palRfData.currentChannel | PRIME_PAL_RF_CHN_MASK);
dataCfm.rmsCalc = 255;
dataCfm.frameType = PAL_FRAME_TYPE_RF;
switch(pCfmObj->txResult)
{
case RF215_TX_SUCCESS:
dataCfm.result = PAL_TX_RESULT_SUCCESS;
break;
case RF215_TX_TIMEOUT:
dataCfm.result = PAL_TX_RESULT_TIMEOUT;
break;
default:
dataCfm.result = PAL_TX_RESULT_PHY_ERROR;
break;
}
palRfData.rfCallbacks.dataConfirm(&dataCfm);
}
}
uint8_t PAL_RF_DataRequest(PAL_MSG_REQUEST_DATA *pMessageData)
{
DRV_RF215_TX_REQUEST_OBJ txReqObj;
DRV_RF215_TX_HANDLE rfPhyTxReqHandle;
uint8_t auxModScheme;
txReqObj.psdu = pMessageData->pData;
txReqObj.psduLen = pMessageData->dataLength;
txReqObj.timeMode = (DRV_RF215_TX_TIME_MODE)pMessageData->timeMode;
txReqObj.txPwrAtt = pMessageData->attLevel;
auxModScheme = (uint8_t)(pMessageData->scheme) - (uint8_t)(PAL_SCHEME_RF) - 1U;
txReqObj.modScheme = (DRV_RF215_PHY_MOD_SCHEME)(auxModScheme);
txReqObj.timeCount = SRV_TIME_MANAGEMENT_USToCount(pMessageData->timeDelay);
txReqObj.cancelByRx = false;
txReqObj.ccaContentionWindow = pMessageData->numSenses;
txReqObj.ccaMode = PHY_CCA_MODE_3;
rfPhyTxReqHandle = DRV_RF215_TxRequest(palRfData.drvRfPhyHandle, &txReqObj, &txResult);
(void)lPAL_RF_SetTxData(rfPhyTxReqHandle, pMessageData->pData, pMessageData->buffId);
return ((uint8_t)PAL_TX_RESULT_PROCESS);
}