UI--checksum checking functions. Updated to set UI to previous UI on error.

Fork of UI by Bradley Perry

Revision:
3:19c08e8a552a
Parent:
2:d6595294497c
Child:
4:48d23d12b3a3
--- a/UserInterface.cpp	Wed Feb 25 01:41:17 2015 +0000
+++ b/UserInterface.cpp	Wed Feb 25 22:00:04 2015 +0000
@@ -117,28 +117,32 @@
 
 void UserInterface::checkUI_XBee()
 {
-    int sum = 0;
+    //int sum = 0;
     _buttonA_prev = _buttonA;
     _buttonB_prev = _buttonB;
     char * idx = strchr(_xbeeBuffer,0x7e);
     if (idx != NULL) {
-        _buttonA = (_xbeeBuffer[idx-_xbeeBuffer+21]>>1) & 1;  // on DIO1
-        _buttonB = (_xbeeBuffer[idx-_xbeeBuffer+21]>>2) & 1;  // on DIO2
+        
         int size[3];
         find_length(idx, size);
         printf("Size: %d, Datacount: %d\r\n", size[1], _dataCnt);
+        _buttonA = (_xbeeBuffer[idx-_xbeeBuffer+21]>>1) & 1;  // on DIO1
+        _buttonB = (_xbeeBuffer[idx-_xbeeBuffer+21]>>2) & 1;  // on DIO2
         if(_dataCnt >= size[1]) {
 
-            //_buttonA = (_xbeeBuffer[idx-_xbeeBuffer+21]>>1) & 1;  // on DIO1
-            //_buttonB = (_xbeeBuffer[idx-_xbeeBuffer+21]>>2) & 1;  // on DIO2
-
             if (checksum_check(idx+size[2], size[0])) {
                 printf("Checksums match\r\n");
             } else {
                 printf("Checksums don't match\r\n");
+                UI = _prev_UI;
+                return;
             }
             _dataCnt = 0;
+        } else {
+            UI = _prev_UI;
+            return;
         }
+       
         if (_buttonA == 0 && _buttonA_prev == 1) {//buton was just pressed
             _time_pressA.reset();
             _time_pressA.start();
@@ -182,6 +186,7 @@
 
     memset(_xbeeBuffer,0xFF,250);
     _dataCnt = 0;
+    _prev_UI = UI;
 }
 
 void UserInterface::initializeUI()