Export for Dan

Dependencies:   mbed MODSERIAL1

main.cpp

Committer:
atravieso
Date:
2015-10-27
Revision:
2:d6cadd28a68e
Parent:
1:66e3217ec4ec
Child:
3:4039b6c8da2e

File content as of revision 2:d6cadd28a68e:



#include "mbed.h"
#include "MODSERIAL.h"

#define MESSAGE_BUFFER_SIZE 100

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];
int count = 0;
int i = 0;
bool messageReceived;


void messageReceive(MODSERIAL_IRQ_INFO *q) {
    // Get the pointer to MODSERIAL object that invoked this callback.
    MODSERIAL *sys = q->serial;
    char c = sys->rxGetLastChar(); // Where local pc variable is a pointer to the global MODSERIAL pc object.
    //add char c to messageBufferIncoming
    if(i <=MESSAGE_BUFFER_SIZE){
        messageBufferIncoming[i] = c;
        i++;
       // led3 = !led3;
        }
    count++;
    if (count == 8){
         //led4 = !led4;
        // 
        if (!strncmp(messageBufferIncoming, "AA55FF00", sizeof("AA55FF00")-1)) led2 = !led2; 
    //else if (!strncmp(messageBufferIncoming, "BB", sizeof("BB")-1)) led3 = !led3;
         memset(messageBufferIncoming, '\0', sizeof(messageBufferIncoming));
         i = 0;
         messageReceived = true;
         count = 0;
         }
    return;
}

void messageProcess(void) { 
       led1 = !led1;
    //     if (!strncmp(messageBufferIncoming, "AA", sizeof("AA")-1)) led2 = !led2; //it's comparing the last character enetered
    //else if (!strncmp(messageBufferIncoming, "BB", sizeof("BB")-1)) led3 = !led3;
    //else led4 = !led4;
    //else if (!strncmp(messageBufferIncoming, "CC33FF00", sizeof("CC33FF00")-1)) led4 = !led4;
    //else if (!strncmp(messageBufferIncoming, "DD22FF00", sizeof("DD22FF00")-1)) led4 = !led4;
    messageReceived = false;
}


int main() {

    messageReceived = false;
    memset(messageBufferIncoming, '\0', sizeof(messageBufferIncoming));
    messageSystem.baud(9600);
    messageSystem.attach(&messageReceive, MODSERIAL::RxIrq);
    //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();
         }
    }
}