void led_init()
{
PLEDDIR |= PLEDPIN;
+ #ifdef PLED2OUT
+ PLED2DIR |= PLED2PIN;
+ #endif
+ #ifdef PLED3OUT
+ PLED3DIR |= PLED3PIN;
+ #endif
}
+
+//TODO define differently if needed for telos/apimote
void led_on()
{
PLEDOUT |= PLEDPIN;
void led_off()
{
PLEDOUT&=~PLEDPIN;
-
}
void led_toggle()
{
+ PLEDOUT ^= PLEDPIN;
+}
+
+//LED2 and LED3 are only used by the telosb and apimote for now
+void led2_on()
+{
+#ifdef PLED2OUT
+ PLED2OUT &= ~PLED2PIN;
+#endif
+}
+void led2_off()
+{
+#ifdef PLED2OUT
+ PLED2OUT |= PLED2PIN;
+#endif
+}
+void led3_on()
+{
+#ifdef PLED3OUT
+ PLED3OUT &= ~PLED3PIN;
+#endif
+}
+void led3_off()
+{
+#ifdef PLED3OUT
+ PLED3OUT |= PLED3PIN;
+#endif
}
//! Initialize MSP430 registers and all that jazz.
led_init();
led_off();
-
/* P5.0 out and low; this is chosen for the PIC app (in which P5.0
is !MCLR) to ensure that an attached PIC chip, if present, is
immediately driven to reset state. A brief explanation of why this
#endif
/** FIXME
-
+
This part is really ugly. GSEL (P5.7) must be high to select
normal voltage, but a lot of applications light to swing it low
to be a nuissance. To get around this, we assume that anyone
with a glitching FET will also have a DAC, then we set that DAC
to a high voltage.
-
+
At some point, each target must be sanitized to show that it
doesn't clear P5OUT or P5DIR.
*/