* @author Jan Hauer <hauer@tkn.tu-berlin.de>
* ========================================================================
*/
-
+
/**
* The contention free period (CFP) in beacon mode, a.k.a. GTS, is not yet
* implemented - this is only an empty placeholder. In contrast to the CAP
interface FrameTx as CfpTx;
interface Purge;
} uses {
- interface ResourceTransferred as TokenTransferred;
- interface ResourceTransfer as TokenToBeaconTransmit;
- interface ResourceRequested as TokenRequested;
- interface GetNow<bool> as IsTokenRequested;
- interface GetNow<bool> as IsTrackingBeacons;
- interface GetNow<uint32_t> as CfpEnd;
- interface GetNow<ieee154_reftime_t*> as CapStartRefTime;
- interface GetNow<uint8_t*> as GtsField;
- interface GetNow<uint32_t> as SfSlotDuration;
- interface GetNow<uint8_t> as FinalCapSlot;
+ interface TransferableResource as RadioToken;
interface Alarm<TSymbolIEEE802154,uint32_t> as CfpSlotAlarm;
interface Alarm<TSymbolIEEE802154,uint32_t> as CfpEndAlarm;
+ interface SuperframeStructure as OutgoingSF;
interface RadioTx;
interface RadioRx;
interface RadioOff;
return IEEE154_INVALID_HANDLE;
}
- async event void TokenTransferred.transferred()
+ async event void RadioToken.transferredFrom(uint8_t fromClient)
{
// the CFP has started, this component now owns the token -
- // because GTS is not implemented we pass it back to the
- // BeaconTransmitP component
- // Note: this component must not use the Resource
- // interface to release the token!
- call TokenToBeaconTransmit.transfer();
+ // because GTS is not implemented we pass it on
+#ifndef IEEE154_BEACON_SYNC_DISABLED
+ call RadioToken.transferTo(RADIO_CLIENT_BEACONSYNCHRONIZE);
+#else
+ call RadioToken.transferTo(RADIO_CLIENT_BEACONTRANSMIT);
+#endif
}
async event void CfpEndAlarm.fired() {}
return 1;
}
- async event void RadioTx.loadDone(){}
- async event void RadioTx.transmitDone(ieee154_txframe_t *frame, ieee154_reftime_t *txTime){}
+ async event void RadioTx.transmitDone(ieee154_txframe_t *frame, const ieee154_timestamp_t *timestamp, error_t result){}
- async event void RadioRx.prepareDone(){}
- event message_t* RadioRx.received(message_t *frame, ieee154_reftime_t *timestamp){return frame;}
+ async event void RadioRx.enableRxDone(){}
+ event message_t* RadioRx.received(message_t *frame, const ieee154_timestamp_t *timestamp){return frame;}
- async event void TokenRequested.requested()
+ event void RadioToken.granted()
{
- // someone (e.g. SCAN component) requested access to the radio, we
- // should pass the token back to BeaconTransmitP, which can release it
- // call TokenToBeaconTransmit.transfer();
- }
-
- async event void TokenRequested.immediateRequested(){ }
- async event void RadioTx.transmitUnslottedCsmaCaDone(ieee154_txframe_t *frame,
- bool ackPendingFlag, ieee154_csma_t *csmaParams, error_t result){}
- async event void RadioTx.transmitSlottedCsmaCaDone(ieee154_txframe_t *frame, ieee154_reftime_t *txTime,
- bool ackPendingFlag, uint16_t remainingBackoff, ieee154_csma_t *csmaParams, error_t result){}
+ ASSERT(0); // should never happen, because we never call RadioToken.request()
+ }
}