Export for Dan

Dependencies:   mbed MODSERIAL1

Committer:
atravieso
Date:
Thu Oct 22 23:08:05 2015 +0000
Revision:
0:4b4c18724370
Child:
1:66e3217ec4ec
This will turn on and off LEDs when the message is entered in the terminal.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
atravieso 0:4b4c18724370 1
atravieso 0:4b4c18724370 2
atravieso 0:4b4c18724370 3 #include "mbed.h"
atravieso 0:4b4c18724370 4 #include "MODSERIAL.h"
atravieso 0:4b4c18724370 5
atravieso 0:4b4c18724370 6 #define MESSAGE_BUFFER_SIZE 32
atravieso 0:4b4c18724370 7
atravieso 0:4b4c18724370 8 DigitalOut led1(LED1);
atravieso 0:4b4c18724370 9 DigitalOut led2(LED2);
atravieso 0:4b4c18724370 10 DigitalOut led3(LED3);
atravieso 0:4b4c18724370 11 DigitalOut led4(LED4);
atravieso 0:4b4c18724370 12
atravieso 0:4b4c18724370 13 MODSERIAL messageSystem(USBTX, USBRX);
atravieso 0:4b4c18724370 14
atravieso 0:4b4c18724370 15 char messageBufferIncoming[MESSAGE_BUFFER_SIZE];
atravieso 0:4b4c18724370 16 char messageBufferOutgoing[MESSAGE_BUFFER_SIZE];
atravieso 0:4b4c18724370 17 bool messageReceived;
atravieso 0:4b4c18724370 18
atravieso 0:4b4c18724370 19 void messageReceive(MODSERIAL_IRQ_INFO *q) {
atravieso 0:4b4c18724370 20 MODSERIAL *sys = q->serial;
atravieso 0:4b4c18724370 21 sys->move(messageBufferIncoming, MESSAGE_BUFFER_SIZE);
atravieso 0:4b4c18724370 22 messageReceived = true;
atravieso 0:4b4c18724370 23 return;
atravieso 0:4b4c18724370 24 }
atravieso 0:4b4c18724370 25
atravieso 0:4b4c18724370 26 void messageProcess(void) {
atravieso 0:4b4c18724370 27 led1 = !led1;
atravieso 0:4b4c18724370 28
atravieso 0:4b4c18724370 29 if (!strncmp(messageBufferIncoming, "LED1:1", sizeof("LED1:1")-1)) led1 = !led1;
atravieso 0:4b4c18724370 30 else if (!strncmp(messageBufferIncoming, "LED1:0", sizeof("LED1:0")-1)) led1 = 0;
atravieso 0:4b4c18724370 31 else if (!strncmp(messageBufferIncoming, "LED1:2", sizeof("LED1:2")-1)) led1 = !led1;
atravieso 0:4b4c18724370 32
atravieso 0:4b4c18724370 33 else if (!strncmp(messageBufferIncoming, "LED2:1", sizeof("LED2:1")-1)) led2 = 1;
atravieso 0:4b4c18724370 34 else if (!strncmp(messageBufferIncoming, "LED2:0", sizeof("LED2:0")-1)) led2 = 0;
atravieso 0:4b4c18724370 35 else if (!strncmp(messageBufferIncoming, "LED2:2", sizeof("LED2:2")-1)) led2 = !led2;
atravieso 0:4b4c18724370 36
atravieso 0:4b4c18724370 37 else if (!strncmp(messageBufferIncoming, "LED3:1", sizeof("LED3:1")-1)) led3 = 1;
atravieso 0:4b4c18724370 38 else if (!strncmp(messageBufferIncoming, "LED3:0", sizeof("LED3:0")-1)) led3 = 0;
atravieso 0:4b4c18724370 39 else if (!strncmp(messageBufferIncoming, "LED3:2", sizeof("LED3:2")-1)) led3 = !led3;
atravieso 0:4b4c18724370 40
atravieso 0:4b4c18724370 41 else if (!strncmp(messageBufferIncoming, "LED4:1", sizeof("LED4:1")-1)) led4 = 1;
atravieso 0:4b4c18724370 42 else if (!strncmp(messageBufferIncoming, "LED4:0", sizeof("LED4:0")-1)) led4 = 0;
atravieso 0:4b4c18724370 43 else if (!strncmp(messageBufferIncoming, "LED4:2", sizeof("LED4:2")-1)) led4 = !led4;
atravieso 0:4b4c18724370 44
atravieso 0:4b4c18724370 45 messageReceived = false;
atravieso 0:4b4c18724370 46 }
atravieso 0:4b4c18724370 47
atravieso 0:4b4c18724370 48
atravieso 0:4b4c18724370 49 int main() {
atravieso 0:4b4c18724370 50
atravieso 0:4b4c18724370 51 messageReceived = false;
atravieso 0:4b4c18724370 52 messageSystem.baud(9600);
atravieso 0:4b4c18724370 53 messageSystem.attach(&messageReceive, MODSERIAL::RxAutoDetect);
atravieso 0:4b4c18724370 54 messageSystem.autoDetectChar('f');
atravieso 0:4b4c18724370 55
atravieso 0:4b4c18724370 56 // Fix Mbed library bug, see http://mbed.org/forum/bugs-suggestions/topic/1498
atravieso 0:4b4c18724370 57 LPC_GPIOINT->IO2IntClr = (1UL << 5) | (1UL << 4) | (1UL << 3) | (1UL << 2);
atravieso 0:4b4c18724370 58 \
atravieso 0:4b4c18724370 59 while(1) {
atravieso 0:4b4c18724370 60
atravieso 0:4b4c18724370 61 // if (messageSystem.readable()) {
atravieso 0:4b4c18724370 62 // messageSystem.putc(messageSystem.getc());
atravieso 0:4b4c18724370 63 //}
atravieso 0:4b4c18724370 64 // Process incoming messages.
atravieso 0:4b4c18724370 65 if (messageReceived)
atravieso 0:4b4c18724370 66 {
atravieso 0:4b4c18724370 67 // led1 = !led1;
atravieso 0:4b4c18724370 68 messageProcess();
atravieso 0:4b4c18724370 69 }
atravieso 0:4b4c18724370 70 }
atravieso 0:4b4c18724370 71 }