[link-raw] fix radio with multiple transmit buffers (#3239)

This commit is contained in:
Yakun Xu
2018-11-01 21:34:51 -07:00
committed by Jonathan Hui
parent 706b393a7b
commit 92bcf61a8e
10 changed files with 228 additions and 175 deletions
@@ -244,4 +244,12 @@ void otSimSendEvent(const struct Event *aEvent);
*/
void otSimSendUartWriteEvent(const uint8_t *aData, uint16_t aLength);
/**
* This function checks if radio transmitting is pending.
*
* @returns Whether radio transmitting is pending.
*
*/
bool platformRadioIsTransmitPending(void);
#endif // PLATFORM_POSIX_H_
+1 -1
View File
@@ -281,7 +281,7 @@ void otSysProcessDrivers(otInstance *aInstance)
platformUartUpdateFdSet(&read_fds, &write_fds, &error_fds, &max_fd);
#endif
if (!otTaskletsArePending(aInstance) && platformAlarmGetNext() > 0)
if (!otTaskletsArePending(aInstance) && platformAlarmGetNext() > 0 && !platformRadioIsTransmitPending())
{
platformSendSleepEvent();
+6 -1
View File
@@ -540,9 +540,14 @@ void radioSendMessage(otInstance *aInstance)
sAckWait = true;
}
bool platformRadioIsTransmitPending(void)
{
return sState == OT_RADIO_STATE_TRANSMIT && !sAckWait;
}
void platformRadioProcess(otInstance *aInstance)
{
if (sState == OT_RADIO_STATE_TRANSMIT && !sAckWait)
if (platformRadioIsTransmitPending())
{
radioSendMessage(aInstance);
}