![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
Export for Dan
main.cpp@2:d6cadd28a68e, 2015-10-27 (annotated)
- Committer:
- atravieso
- Date:
- Tue Oct 27 17:43:49 2015 +0000
- Revision:
- 2:d6cadd28a68e
- Parent:
- 1:66e3217ec4ec
- Child:
- 3:4039b6c8da2e
Will turn on LED2 if the StartCalibration Command (AA55FF00) is received on the terminal via USB Serial.
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 | 1:66e3217ec4ec | 6 | #define MESSAGE_BUFFER_SIZE 100 |
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 | 1:66e3217ec4ec | 17 | int count = 0; |
atravieso | 1:66e3217ec4ec | 18 | int i = 0; |
atravieso | 0:4b4c18724370 | 19 | bool messageReceived; |
atravieso | 0:4b4c18724370 | 20 | |
atravieso | 1:66e3217ec4ec | 21 | |
atravieso | 0:4b4c18724370 | 22 | void messageReceive(MODSERIAL_IRQ_INFO *q) { |
atravieso | 1:66e3217ec4ec | 23 | // Get the pointer to MODSERIAL object that invoked this callback. |
atravieso | 0:4b4c18724370 | 24 | MODSERIAL *sys = q->serial; |
atravieso | 1:66e3217ec4ec | 25 | char c = sys->rxGetLastChar(); // Where local pc variable is a pointer to the global MODSERIAL pc object. |
atravieso | 1:66e3217ec4ec | 26 | //add char c to messageBufferIncoming |
atravieso | 1:66e3217ec4ec | 27 | if(i <=MESSAGE_BUFFER_SIZE){ |
atravieso | 1:66e3217ec4ec | 28 | messageBufferIncoming[i] = c; |
atravieso | 1:66e3217ec4ec | 29 | i++; |
atravieso | 1:66e3217ec4ec | 30 | // led3 = !led3; |
atravieso | 1:66e3217ec4ec | 31 | } |
atravieso | 1:66e3217ec4ec | 32 | count++; |
atravieso | 1:66e3217ec4ec | 33 | if (count == 8){ |
atravieso | 1:66e3217ec4ec | 34 | //led4 = !led4; |
atravieso | 1:66e3217ec4ec | 35 | // |
atravieso | 2:d6cadd28a68e | 36 | if (!strncmp(messageBufferIncoming, "AA55FF00", sizeof("AA55FF00")-1)) led2 = !led2; |
atravieso | 1:66e3217ec4ec | 37 | //else if (!strncmp(messageBufferIncoming, "BB", sizeof("BB")-1)) led3 = !led3; |
atravieso | 1:66e3217ec4ec | 38 | memset(messageBufferIncoming, '\0', sizeof(messageBufferIncoming)); |
atravieso | 1:66e3217ec4ec | 39 | i = 0; |
atravieso | 1:66e3217ec4ec | 40 | messageReceived = true; |
atravieso | 1:66e3217ec4ec | 41 | count = 0; |
atravieso | 1:66e3217ec4ec | 42 | } |
atravieso | 0:4b4c18724370 | 43 | return; |
atravieso | 0:4b4c18724370 | 44 | } |
atravieso | 0:4b4c18724370 | 45 | |
atravieso | 1:66e3217ec4ec | 46 | void messageProcess(void) { |
atravieso | 0:4b4c18724370 | 47 | led1 = !led1; |
atravieso | 1:66e3217ec4ec | 48 | // if (!strncmp(messageBufferIncoming, "AA", sizeof("AA")-1)) led2 = !led2; //it's comparing the last character enetered |
atravieso | 1:66e3217ec4ec | 49 | //else if (!strncmp(messageBufferIncoming, "BB", sizeof("BB")-1)) led3 = !led3; |
atravieso | 1:66e3217ec4ec | 50 | //else led4 = !led4; |
atravieso | 1:66e3217ec4ec | 51 | //else if (!strncmp(messageBufferIncoming, "CC33FF00", sizeof("CC33FF00")-1)) led4 = !led4; |
atravieso | 1:66e3217ec4ec | 52 | //else if (!strncmp(messageBufferIncoming, "DD22FF00", sizeof("DD22FF00")-1)) led4 = !led4; |
atravieso | 0:4b4c18724370 | 53 | messageReceived = false; |
atravieso | 0:4b4c18724370 | 54 | } |
atravieso | 0:4b4c18724370 | 55 | |
atravieso | 0:4b4c18724370 | 56 | |
atravieso | 0:4b4c18724370 | 57 | int main() { |
atravieso | 0:4b4c18724370 | 58 | |
atravieso | 0:4b4c18724370 | 59 | messageReceived = false; |
atravieso | 1:66e3217ec4ec | 60 | memset(messageBufferIncoming, '\0', sizeof(messageBufferIncoming)); |
atravieso | 0:4b4c18724370 | 61 | messageSystem.baud(9600); |
atravieso | 1:66e3217ec4ec | 62 | messageSystem.attach(&messageReceive, MODSERIAL::RxIrq); |
atravieso | 1:66e3217ec4ec | 63 | //messageSystem.autoDetectChar('f'); |
atravieso | 1:66e3217ec4ec | 64 | |
atravieso | 0:4b4c18724370 | 65 | // Fix Mbed library bug, see http://mbed.org/forum/bugs-suggestions/topic/1498 |
atravieso | 0:4b4c18724370 | 66 | LPC_GPIOINT->IO2IntClr = (1UL << 5) | (1UL << 4) | (1UL << 3) | (1UL << 2); |
atravieso | 0:4b4c18724370 | 67 | \ |
atravieso | 0:4b4c18724370 | 68 | while(1) { |
atravieso | 0:4b4c18724370 | 69 | |
atravieso | 0:4b4c18724370 | 70 | // if (messageSystem.readable()) { |
atravieso | 0:4b4c18724370 | 71 | // messageSystem.putc(messageSystem.getc()); |
atravieso | 0:4b4c18724370 | 72 | //} |
atravieso | 0:4b4c18724370 | 73 | // Process incoming messages. |
atravieso | 1:66e3217ec4ec | 74 | |
atravieso | 0:4b4c18724370 | 75 | if (messageReceived) |
atravieso | 0:4b4c18724370 | 76 | { |
atravieso | 0:4b4c18724370 | 77 | // led1 = !led1; |
atravieso | 0:4b4c18724370 | 78 | messageProcess(); |
atravieso | 0:4b4c18724370 | 79 | } |
atravieso | 0:4b4c18724370 | 80 | } |
atravieso | 0:4b4c18724370 | 81 | } |