![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
Export for Dan
Diff: main.cpp
- Revision:
- 0:4b4c18724370
- Child:
- 1:66e3217ec4ec
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Thu Oct 22 23:08:05 2015 +0000 @@ -0,0 +1,71 @@ + + +#include "mbed.h" +#include "MODSERIAL.h" + +#define MESSAGE_BUFFER_SIZE 32 + +DigitalOut led1(LED1); +DigitalOut led2(LED2); +DigitalOut led3(LED3); +DigitalOut led4(LED4); + +MODSERIAL messageSystem(USBTX, USBRX); + +char messageBufferIncoming[MESSAGE_BUFFER_SIZE]; +char messageBufferOutgoing[MESSAGE_BUFFER_SIZE]; +bool messageReceived; + +void messageReceive(MODSERIAL_IRQ_INFO *q) { + MODSERIAL *sys = q->serial; + sys->move(messageBufferIncoming, MESSAGE_BUFFER_SIZE); + messageReceived = true; + return; +} + +void messageProcess(void) { + led1 = !led1; + + if (!strncmp(messageBufferIncoming, "LED1:1", sizeof("LED1:1")-1)) led1 = !led1; + else if (!strncmp(messageBufferIncoming, "LED1:0", sizeof("LED1:0")-1)) led1 = 0; + else if (!strncmp(messageBufferIncoming, "LED1:2", sizeof("LED1:2")-1)) led1 = !led1; + + else if (!strncmp(messageBufferIncoming, "LED2:1", sizeof("LED2:1")-1)) led2 = 1; + else if (!strncmp(messageBufferIncoming, "LED2:0", sizeof("LED2:0")-1)) led2 = 0; + else if (!strncmp(messageBufferIncoming, "LED2:2", sizeof("LED2:2")-1)) led2 = !led2; + + else if (!strncmp(messageBufferIncoming, "LED3:1", sizeof("LED3:1")-1)) led3 = 1; + else if (!strncmp(messageBufferIncoming, "LED3:0", sizeof("LED3:0")-1)) led3 = 0; + else if (!strncmp(messageBufferIncoming, "LED3:2", sizeof("LED3:2")-1)) led3 = !led3; + + else if (!strncmp(messageBufferIncoming, "LED4:1", sizeof("LED4:1")-1)) led4 = 1; + else if (!strncmp(messageBufferIncoming, "LED4:0", sizeof("LED4:0")-1)) led4 = 0; + else if (!strncmp(messageBufferIncoming, "LED4:2", sizeof("LED4:2")-1)) led4 = !led4; + + messageReceived = false; +} + + +int main() { + + messageReceived = false; + messageSystem.baud(9600); + messageSystem.attach(&messageReceive, MODSERIAL::RxAutoDetect); + messageSystem.autoDetectChar('f'); + + // Fix Mbed library bug, see http://mbed.org/forum/bugs-suggestions/topic/1498 + LPC_GPIOINT->IO2IntClr = (1UL << 5) | (1UL << 4) | (1UL << 3) | (1UL << 2); + \ + while(1) { + + // if (messageSystem.readable()) { + // messageSystem.putc(messageSystem.getc()); + //} + // Process incoming messages. + if (messageReceived) + { + // led1 = !led1; + messageProcess(); + } + } +}