Component: moteiv.tos.lib.sp.cc2420.CC2420SyncSaneP

module CC2420SyncSaneP

Implementation of a duty cycled CC2420 link. The link is turned on and off based on the schedules in the SP Neighbor Table. A link is only turned on if it has a schedule and either (1) messages are pending for that neighbor or (2) the listen flag is set for that neighbor.

Neighbors can contain overlapping schedules, and the union of all of the current schedules will be the actual active period.

WARNING: Do not modify neighbors while they are "on" or "busy". If the SP_FLAG_LINK_ACTIVE flag is set while accessing the neighbor schedule, do not modify it until the flag is cleared. Doing so may result in unpredicable operation. After a link is active, an SPNeighbor.expired() event will be signalled from SPC. Please use this event to change the schedule of the neighbor.

Author:
Joe Polastre, Moteiv Corporation <info@moteiv.com>

Provides
interface Get<uint32_t> as GetFindCount
interface Get<uint32_t> as GetWakeCount
interface SPLinkEvents
interface SPLinkStats
interface SPSend
interface StdControl

Uses
interface CC2420BareSendMsg as LowerSend
interface MacBackoff
interface MacControl
interface ObjectPool<sp_message_t> as Pool
interface ObjectPoolEvents<sp_message_t> as PoolEvents
interface SplitControl as RadioControl
interface Random
interface Timer2<TMilli> as SanityTimer
interface Set<int8_t> as SetRefCount
interface TaskBasic as signalSleep
interface SPNeighbor
interface TaskBasic as taskExpiration
interface TaskBasic as taskRadioOff
interface TaskBasic as taskRadioOn
interface TimeStamping<T32khz, uint32_t>
interface Alarm<T32khz, uint32_t> as VirtualAlarm[uint8_t]