Amanda Travieso
/
SerialComms
Export for Dan
main.cpp@0:4b4c18724370, 2015-10-22 (annotated)
- 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?
User | Revision | Line number | New 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 | } |