Export for Dan

Dependencies:   mbed MODSERIAL1

Committer:
atravieso
Date:
Tue Oct 27 17:39:06 2015 +0000
Revision:
1:66e3217ec4ec
Parent:
0:4b4c18724370
Child:
2:d6cadd28a68e
Compares two of the same character as entered from the terminal on the USB serial port.

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 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 1:66e3217ec4ec 36 if (!strncmp(messageBufferIncoming, "AA", sizeof("AA")-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 }