[Tinyos-devel] Low power settings
Philip Levis
pal at cs.stanford.edu
Tue May 27 21:54:17 PDT 2008
There's been a good deal of discussion on the tradeoffs in low power
settings for the radio. On one hand, it's clear that some protocols
and applications need to set LPL settings on a per-packet basis. On
the other hand, as the check interval is shared across protocols, the
common case is that one configures a single low-power setting for the
node, so that you don't have to configure each subsystem and protocol
individually.
This is a proposal for how to handle these two needs. It involves
expanding the signature of AMSenderC, adding some additional logic to
AMQueueImplP (probably forking it for a no low-power version), and
adding a new component LowPowerSettingsC.
The component LplSettingsC provides the LowPowerListening interface.
The goal is that the top-level application component, when it handles
Boot and before it turns on the radio through SplitControl, calls this
component to configure the LPL settings. This is essentially a check
interval, which sets both sender transmit duration and receiver wakeup
interval. LplSettingsC calls ActiveMessageC to set its rx check
interval with this value.
AMQueueImplP handles SendNotifier.aboutToSend from ActiveMessageC,
which it dispatches to the appropriate send client. AMSenderC also
provides SendNotifier through a pass-through wiring. AMQueueImplP has
a default event handler, which calls LplSettingsC. LplSettingsC, when
handing SendNotifier.aboutToSend, calls LowPowerListening on
ActiveMessageC to set the Lpl duration on the outgoing packet. If a
particular AMSender needs to do something special, it can wire to
aboutToSend and configure the LPL settings itself.
This design requires all ActiveMessageC components provide
SendNotifier and LowPowerListening. Currently, the CC2420, CC1000,
RF230, and XE1205 all provide the latter (LowPowerListening), but only
the CC2420 provides SendNotifier.
Thoughts?
Phil
More information about the Tinyos-devel
mailing list