![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
Export for Dan
Diff: main.cpp
- Revision:
- 4:810c3971bb3e
- Parent:
- 3:4039b6c8da2e
- Child:
- 5:14a21c3812ed
--- a/main.cpp Tue Oct 27 20:45:57 2015 +0000 +++ b/main.cpp Thu Oct 29 20:18:49 2015 +0000 @@ -10,11 +10,11 @@ DigitalOut led3(LED3); DigitalOut led4(LED4); -MODSERIAL messageSystem(USBTX, USBRX); +MODSERIAL messageSystem(p13, p14); -char messageBufferIncoming[MESSAGE_BUFFER_SIZE]; +//char messageBufferIncoming[MESSAGE_BUFFER_SIZE]; int hexBufferIncoming[MESSAGE_BUFFER_SIZE]; -char messageBufferOutgoing[MESSAGE_BUFFER_SIZE]; +unsigned char messageBufferOutgoing[MESSAGE_BUFFER_SIZE]; int count = 0; int i = 0; bool messageReceived; @@ -25,11 +25,11 @@ MODSERIAL *sys = q->serial; //dereference rxGetLasChar() of sys object - int c = sys->rxGetLastChar(); // Returns the last byte to pass through the RX interrupt handler. + unsigned int c = sys->rxGetLastChar(); // Returns the last byte to pass through the RX interrupt handler. //add char c to messageBufferIncoming if(i <=MESSAGE_BUFFER_SIZE){ - messageBufferIncoming[i] = c; + // messageBufferIncoming[i] = c; hexBufferIncoming[i] = c; // if (c == 0xAA) led4 = !led4; @@ -40,75 +40,110 @@ count++; if (count == 4){ //Need to be able to find the string anywhere in the buffer - //need to change to HEX. When I change to Hex, I can just use '==' instead of strncmp - // led4 = !led4; + //led4 = !led4; + wait(.05); - if (hexBufferIncoming[0] == 0xAA){ + if (hexBufferIncoming[0] == 0xAA){ //Start Calibration + // led1 = !led1; if (hexBufferIncoming[1] == 0x55){ + // led2 = !led2; if (hexBufferIncoming[2] == 0xFF){ + // led3 = !led3; if (hexBufferIncoming[3] == 0x00){ led1 = !led1; + //Add disable interrupt?? + messageSystem.printf("%c", messageBufferOutgoing[0]= 0xAB); + messageSystem.printf("%c", messageBufferOutgoing[1] = 0x54); + messageSystem.printf("%c", messageBufferOutgoing[2] = 0xFF); + messageSystem.printf("%c", messageBufferOutgoing[3] = 0x00); + } } } } - else if (hexBufferIncoming[0] == 0xBB){ + else if (hexBufferIncoming[0] == 0xBB){ //Stop Calibration if (hexBufferIncoming[1] == 0x44){ if (hexBufferIncoming[2] == 0xFF){ if (hexBufferIncoming[3] == 0x00){ led2 = !led2; + messageSystem.printf("%c", messageBufferOutgoing[0]= 0xBC); + messageSystem.printf("%c", messageBufferOutgoing[1]= 0x43); + messageSystem.printf("%c", messageBufferOutgoing[2]= 0xFF); + messageSystem.printf("%c", messageBufferOutgoing[3]= 0x00); } } } } - else if (hexBufferIncoming[0] == 0xCC){ + else if (hexBufferIncoming[0] == 0xCC){ //Get Calibration Value Leave room for data bits if (hexBufferIncoming[1] == 0x33){ if (hexBufferIncoming[2] == 0xFF){ if (hexBufferIncoming[3] == 0x00){ led3 = !led3; + messageSystem.printf("%c", messageBufferOutgoing[0]= 0xCD); + messageSystem.printf("%c", messageBufferOutgoing[1]= 0x32); + messageSystem.printf("%c", messageBufferOutgoing[2]= 0xFF); + messageSystem.printf("%c", messageBufferOutgoing[3]= 0x00); } } } } - else if (hexBufferIncoming[0] == 0xDD){ + else if (hexBufferIncoming[0] == 0xDD){ //Get Dynamic Data Leave room for data bits if (hexBufferIncoming[1] == 0x22){ if (hexBufferIncoming[2] == 0xFF){ if (hexBufferIncoming[3] == 0x00){ led4 = !led4; + messageSystem.printf("%c", messageBufferOutgoing[0]= 0xDE); + messageSystem.printf("%c", messageBufferOutgoing[1]= 0x21); + messageSystem.printf("%c", messageBufferOutgoing[2]= 0xFF); + messageSystem.printf("%c", messageBufferOutgoing[3]= 0x00); } } } } - else if (hexBufferIncoming[0] == 0xDB){ //Get Heading + else if (hexBufferIncoming[0] == 0xDB){ //Get Heading //Add space for responses if (hexBufferIncoming[1] == 0x24){ if (hexBufferIncoming[2] == 0xFF){ if (hexBufferIncoming[3] == 0x00){ led1 = !led1; + messageSystem.printf("%c", messageBufferOutgoing[0]= 0xDC); + messageSystem.printf("%c", messageBufferOutgoing[1]= 0x23); + messageSystem.printf("%c", messageBufferOutgoing[2]= 0x00); + messageSystem.printf("%c", messageBufferOutgoing[3]= 0x00); } } } } - else if (hexBufferIncoming[0] == 0xD9){ //Get Temperature + else if (hexBufferIncoming[0] == 0xD9){ //Get Temperature //Add space for response if (hexBufferIncoming[1] == 0x26){ if (hexBufferIncoming[2] == 0xFF){ if (hexBufferIncoming[3] == 0x00){ led2 = !led2; + messageSystem.printf("%c", messageBufferOutgoing[0]= 0xDA); + messageSystem.printf("%c", messageBufferOutgoing[1]= 0x25); + messageSystem.printf("%c", messageBufferOutgoing[2]= 0x00); + messageSystem.printf("%c", messageBufferOutgoing[3]= 0x00); } } } } - else if (hexBufferIncoming[0] == 0xEE){ //Get Elapsed Time On + else if (hexBufferIncoming[0] == 0xEE){ //Get Elapsed Time On //Add space for response if (hexBufferIncoming[1] == 0x11){ if (hexBufferIncoming[2] == 0x00){ if (hexBufferIncoming[3] == 0x01){ led3 = !led3; + messageSystem.printf("%c", messageBufferOutgoing[0]= 0xEF); + messageSystem.printf("%c", messageBufferOutgoing[1]= 0x10); + messageSystem.printf("%c", messageBufferOutgoing[2]= 0x00); + messageSystem.printf("%c", messageBufferOutgoing[3]= 0x00); } } } } - memset(messageBufferIncoming, '\0', sizeof(messageBufferIncoming)); + // memset(messageBufferIncoming, '\0', sizeof(messageBufferIncoming)); + memset(hexBufferIncoming, '\0', sizeof(hexBufferIncoming)); + memset(messageBufferOutgoing, '\0', sizeof(messageBufferOutgoing)); i = 0; messageReceived = true; count = 0; @@ -126,7 +161,9 @@ int main() { messageReceived = false; - memset(messageBufferIncoming, '\0', sizeof(messageBufferIncoming)); + // memset(messageBufferIncoming, '\0', sizeof(messageBufferIncoming)); + memset(hexBufferIncoming, '\0', sizeof(hexBufferIncoming)); + memset(messageBufferOutgoing, '\0', sizeof(messageBufferOutgoing)); messageSystem.baud(9600); messageSystem.attach(&messageReceive, MODSERIAL::RxIrq); //Attach a C++ type object/method pointer as the callback. @@ -134,10 +171,12 @@ LPC_GPIOINT->IO2IntClr = (1UL << 5) | (1UL << 4) | (1UL << 3) | (1UL << 2); \ while(1) { - + //led1 = !led1; + wait(.05); if (messageReceived) { - // led1 = !led1; + //led2 = !led2; + wait(.05); messageProcess(); } }