High Altitude Recovery Payload
HARP: High Altitude Recovery Payload
Information
Version 0.1: RC design
By connecting the second xbee to a computer using a terminal command and supplying the characters L, R, C, F the light patterns change on the mbed.
main.cpp
- Committer:
- tylerjw
- Date:
- 2012-07-23
- Revision:
- 0:043ed5bb10f2
- Child:
- 1:21a6da67311c
File content as of revision 0:043ed5bb10f2:
#include "mbed.h" #include "rtos.h" #include "watchdog.h" // Setup the watchdog timer Watchdog wdt; // xbee serial connection Serial xbee(p13,p14); // status leds BusOut status_led(LED4, LED3, LED2, LED1); typedef struct { char msg; // the direction to turn in } message_p; MemoryPool<message_p, 16> mpool_p; Queue<message_p, 16> queue_p; void xbee_thread(void const *argument) { while (true) { if (xbee.readable()) { message_p *message = mpool_p.alloc(); message->msg = xbee.getc(); queue_p.put(message); } Thread::wait(100); } } int main (void) { status_led = 0x9; // setup watchdog wdt.kick(2.0); // 2 second watchdog // setup xbee serial xbee.baud(9600); Thread thread1(xbee_thread); while (true) { osEvent evt_p = queue_p.get(1000); // wait for 1 second if (evt_p.status == osEventMessage) { message_p *message = (message_p*)evt_p.value.p; printf("\nMessage from xbee: %c\n\r", message->msg); switch (message->msg) { case 'L': // turn left status_led = 0x3; break; case 'C': // center status_led = 0x6; break; case 'R': // turn right status_led = 0xC; break; case 'F': // flare status_led = 0xF; break; } mpool_p.free(message); } wdt.kick(); } }