[Tinyos-host-mote-wg] Re: [Tinyos-2.0wg] TinyOS Telecon Notes
8/31/05
Philip Levis
pal at cs.stanford.edu
Sun Sep 4 17:16:29 PDT 2005
On Sun, 2005-09-04 at 23:09 +0200, Joe Polastre wrote:
> Let me propose an alternative method:
>
> Components automatically return to their lowest power state after a
> timeout. If you want to keep the component running, you must "ping"
> it. I've been experimenting with this method and it is much more
> robust and effective than anything we have in TinyOS 1.x today, and
> its simple to implement.
Cory and Rob have been mumbling a bit about this approach. I think it
sounds like a good idea, but also think that it's outside the core. That
doesn't mean it doesn't have a place in the WG (OSKI does, after all),
just that we need to make the distinction clear.
It's important to separate policy and mechanism. Timeouts are a
perfectly reasonably policy for power management, but first we need to
decide what the underlying mechanism is. The mechanism must be able to
support as wide a range of policies as possible (timeouts, explicit
control, implicit based on requests, etc.).
I'd argue that the TinyOS core should neither require nor define a
specific policy. Instead, the power management policy should be the
province of a service distribution. The moteiv distribution could follow
a timeout policy, while OSKI follows an explicit-control-OR policy. The
presence of generic components makes policy layering really easy:
configuration MoteivAM {
provides {
interface MoteivWakeup; // For pinging
interface AMSend[am_id_t id];
interface Receive[am_id_t id];
interface Packet;
interface AMPacket;
}
}
implementation {
components new MoteivPowerTimeout(<some constant?>), ActiveMessageC;
components MainC;
MainC.SoftwareInit -> ActiveMessageC;
MoteivWakeup = MoteivPowerTimeout;
MoteivPowerTimeout -> ActiveMessageC.StdControl;
AMSend = ActiveMessageC;
Receive = ActiveMessageC;
Packet = ActiveMessageC;
AMPacket = ActiveMessageC;
}
The discussion so far is really about the mechanism, specifically, the
mechanism for the MCU deciding what sleep state to enter. Some platforms
introduce complexities that something like a 128 or MSP430 don't have to
really deal with (e.g., wakeup latency).
> My worry with the "fan out" approach is: What happens if I forget to
> include a component? This solution potentially gets very fragile.
If you do the wiring/configurations right, this shouldn't be an issue.
Including a subsystem would automatically wire it in.
Phil
_______________________________________________
Tinyos-2.0wg mailing list
Tinyos-2.0wg at Mail.Millennium.Berkeley.EDU
https://mail.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-2.0wg
More information about the Tinyos-host-mote-wg
mailing list