} uses {
interface Queue<ieee154_txframe_t*>;
interface FrameTxNow as CapTransmitNow;
- interface ResourceTransfer as TokenToCap;
- interface ResourceTransferred as TokenTransferred;
- interface GetNow<bool> as BeaconFramePendingBit;
- interface Leds;
+ interface TransferableResource as RadioToken;
+ interface SuperframeStructure as OutgoingSF;
}
}
implementation
command ieee154_status_t RealignmentTx.transmit(ieee154_txframe_t *frame)
{
atomic {
- if (!m_realignmentFrame){
+ if (!m_realignmentFrame) {
m_realignmentFrame = frame;
return IEEE154_SUCCESS;
} else
return (m_realignmentFrame != NULL || m_queueHead != NULL);
}
- event void TokenTransferred.transferred()
+ async event void RadioToken.transferredFrom(uint8_t fromClient)
{
// CAP has started - are there any broadcast frames to be transmitted?
- if (call BeaconFramePendingBit.getNow()){
+ if (call OutgoingSF.isBroadcastPending()) {
ieee154_txframe_t *broadcastFrame = m_realignmentFrame;
if (broadcastFrame == NULL)
broadcastFrame = m_queueHead;
- if (broadcastFrame){
- m_lock = TRUE;
- call CapTransmitNow.transmitNow(broadcastFrame);
- } else
- call Leds.led0On(); // internal error!
+ ASSERT(broadcastFrame != NULL);
+ m_lock = TRUE;
+ call CapTransmitNow.transmitNow(broadcastFrame);
}
- call TokenToCap.transfer();
+ call RadioToken.transferTo(RADIO_CLIENT_COORDCAP);
}
async event void CapTransmitNow.transmitNowDone(ieee154_txframe_t *txFrame, ieee154_status_t status)
{
if (!m_lock)
return;
- if (m_transmittedFrame == m_realignmentFrame){
+ if (m_transmittedFrame == m_realignmentFrame) {
m_realignmentFrame = NULL;
signal RealignmentTx.transmitDone(m_transmittedFrame, m_status);
- } else if (m_transmittedFrame == m_queueHead){
+ } else if (m_transmittedFrame == m_queueHead) {
call Queue.dequeue();
m_queueHead = call Queue.head();
signal BroadcastDataFrame.transmitDone(m_transmittedFrame, m_status);
}
m_lock = FALSE;
}
+
+ event void RadioToken.granted(){ ASSERT(0); }
}