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();
}
}

