Demo Team / Mbed 2 deprecated bluefruit

Dependencies:   mbed

Revision:
7:af2244bedcac
Parent:
5:9af1305f7779
Child:
8:cb50a25a7f8a
--- a/Controller.h	Mon Apr 13 08:31:37 2015 +0000
+++ b/Controller.h	Mon Apr 20 09:58:04 2015 +0000
@@ -12,9 +12,30 @@
 
 LocalFileSystem local("local");
 
-int flag = 0;
+int playflag = 0;
 int s = 0;
-
+char* keys[54] = { 
+    "K 0xFFE", "K 0xFFD", "K 0xFFB", "K 0xFF7", "K 0xFF6", "K 0xFFC", 
+    "K 0xFFA", "K 0xFF5", "K 0xFF9", "K 0xFF3", "K 0xEFF", "K 0xBFF",
+    "K 0xDFF", "K 0x7FF", "K 0xFDF", "K 0xFEF", "K 0xFBF", "K 0xF7F",
+    "K 0xCFF", "K 0x6FF", "K 0x9FF", "K 0x3FF", "K 0xAFF", "K 0x5FF",
+    "K 0xF3F", "K 0xFDE", "K 0xFD7", "K 0xFDB", "K 0xFDD", "K 0xFEE",
+    "K 0xFED", "K 0xFE7", "K 0xFEB", "K 0xFBE", "K 0xFBD", "K 0xFBB",
+    "K 0xFB7", "K 0xEBF", "K 0xBBF", "K 0xDBF", "K 0x7BF", "K 0xF9F",
+    "K 0xFAF", "K 0xF7E", "K 0xF7D", "K 0xF77", "K 0xF7B", "K 0xE7F",
+    "K 0xB7F", "K 0xD7F", "K 0x77F", "K 0xF6F", "K 0xF5F", "K 0xFFF" };
+    
+char* names[53] = {
+    "Up", "Down", "Left", "Right", "Up + Right", "Up + Down",
+    "Up + Left", "Down + Right", "Down + Left", "Right + Left", "W", "S",
+    "A", "D", "Space", "Enter", "One", "Two", 
+    "W + A", "W + D", "S + A", "S + D", "W + S", "A + D", 
+    "One + Two", "Up + Space", "Right + Space", "Left + Space", "Down + Space", "Up + Enter", 
+    "Down + Enter", "Right + Enter", "Left + Enter", "One + Up", "One + Down", "One + Left",
+    "One + Right", "One + W", "One + S", "One + A", "One + D", "One + Space",
+    "One + Enter", "Two + Up", "Two + Down", "Two + Right", "Two + Left", "Two + W",
+    "Two + S", "Two + A", "Two + D", "Two + Enter", "Two + Space" /*, K 0xFFF No button */ };
+    
 /************************************************************
 * string_comparator(): Compares the received string from
 * Bluefruit E-Z Key to a set of preset substrings that each
@@ -25,173 +46,25 @@
 
 void string_comparator(char *b)
 {
-    if (strcmp(strstr(b, "K 0xFFE"), "K 0xFFE") == 0) {  // 1
-        one_button(1);
-    }
-    if (strcmp(strstr(b, "K 0xFFD"), "K 0xFFD") == 0) {  // 2
-        one_button(2);
-    }
-    if (strcmp(strstr(b, "K 0xFFB"), "K 0xFFB") == 0) { // 3
-        one_button(3);
-    }
-    if (strcmp(strstr(b, "K 0xFF7"), "K 0xFF7") == 0) { // 4
-        one_button(4);
-    }
-    if (strcmp(strstr(b, "K 0xFF6"), "K 0xFF6") == 0) { // 5
-        two_buttons(5);
-    }
-    if (strcmp(strstr(b, "K 0xFFC"), "K 0xFFC") == 0) { // 6
-        two_buttons(6);
-    }
-    if (strcmp(strstr(b, "K 0xFFA"), "K 0xFFA") == 0) { // 7
-        two_buttons(7);
-    }
-    if (strcmp(strstr(b, "K 0xFF5"), "K 0xFF5") == 0) { // 8
-        two_buttons(8);
-    }
-    if (strcmp(strstr(b, "K 0xFF9"), "K 0xFF9") == 0) { // 9
-        two_buttons(9);
-    }
-    if (strcmp(strstr(b, "K 0xFF3"), "K 0xFF3") == 0) { //10
-        two_buttons(10);
-    }
-    if (strcmp(strstr(b, "K 0xEFF"), "K 0xEFF") == 0) { // 11
-        one_button(11);
-    }
-    if (strcmp(strstr(b, "K 0xBFF"), "K 0xBFF") == 0) { // 12
-        one_button(12);
-    }
-    if (strcmp(strstr(b, "K 0xDFF"), "K 0xDFF") == 0) { // 13
-        one_button(13);
-    }
-    if (strcmp(strstr(b, "K 0x7FF"), "K 0x7FF") == 0) { // 14
-        one_button(14);
-    }
-    if (strcmp(strstr(b, "K 0xFDF"), "K 0xFDF") == 0) { // 15
-        one_button(15);
-    }
-    if (strcmp(strstr(b, "K 0xFEF"), "K 0xFEF") == 0) { // 16
-        one_button(16);
-    }
-    if (strcmp(strstr(b, "K 0xFBF"), "K 0xFBF") == 0) { // 17
-        one_button(17);
-    }
-    if (strcmp(strstr(b, "K 0xF7F"), "K 0xF7F") == 0) { // 18
-        one_button(18);
-    }
-    if (strcmp(strstr(b, "K 0xCFF"), "K 0xCFF") == 0) { // 19
-        two_buttons(19);
-    }
-    if (strcmp(strstr(b, "K 0x6FF"), "K 0x6FF") == 0) { // 20
-        two_buttons(20);
-    }
-    if (strcmp(strstr(b, "K 0x9FF"), "K 0x9FF") == 0) { // 21
-        two_buttons(21);
-    }
-    if (strcmp(strstr(b, "K 0x3FF"), "K 0x3FF") == 0) { // 22
-        two_buttons(22);
-    }
-    if (strcmp(strstr(b, "K 0xAFF"), "K 0xAFF") == 0) { // 23
-        two_buttons(23);
-    }
-    if (strcmp(strstr(b, "K 0x5FF"), "K 0x5FF") == 0) { // 24
-        two_buttons(24);
-    }
-    if (strcmp(strstr(b, "K 0xF3F"), "K 0xF3F") == 0) { // 25
-        two_buttons(25);
-    }
-    if (strcmp(strstr(b, "K 0xFDE"), "K 0xFDE") == 0) { // 26
-        two_buttons(26);
-    }
-    if (strcmp(strstr(b, "K 0xFD7"), "K 0xFD7") == 0) { // 27
-        two_buttons(27);
-    }
-    if (strcmp(strstr(b, "K 0xFDB"), "K 0xFDB") == 0) { // 28
-        two_buttons(28);
-    }
-    if (strcmp(strstr(b, "K 0xFDD"), "K 0xFDD") == 0) { //29
-        two_buttons(29);
-    }
-    if (strcmp(strstr(b, "K 0xFEE"), "K 0xFEE") == 0) { // 30
-        two_buttons(30);
-    }
-    if (strcmp(strstr(b, "K 0xFED"), "K 0xFED") == 0) { // 31
-        two_buttons(31);
-    }
-    if (strcmp(strstr(b, "K 0xFE7"), "K 0xFE7") == 0) { // 32
-        two_buttons(32);
-    }
-    if (strcmp(strstr(b, "K 0xFEB"), "K 0xFEB") == 0) { // 33
-        two_buttons(33);
-    }
-    if (strcmp(strstr(b, "K 0xFBE"), "K 0xFBE") == 0) { // 34
-        two_buttons(34);
-    }
-    if (strcmp(strstr(b, "K 0xFBD"), "K 0xFBD") == 0) { // 35
-        two_buttons(35);
-    }
-    if (strcmp(strstr(b, "K 0xFBB"), "K 0xFBB") == 0) { // 36
-        two_buttons(36);
-    }
-    if (strcmp(strstr(b, "K 0xFB7"), "K 0xFB7") == 0) { // 37
-        two_buttons(37);
-    }
-    if (strcmp(strstr(b, "K 0xEBF"), "K 0xEBF") == 0) { // 38
-        two_buttons(38);
-    }
-    if (strcmp(strstr(b, "K 0xBBF"), "K 0xBBF") == 0) { // 39
-        two_buttons(39);
-    }
-    if (strcmp(strstr(b, "K 0xDBF"), "K 0xDBF") == 0) { // 40
-        two_buttons(40);
-    }
-    if (strcmp(strstr(b, "K 0x7BF"), "K 0x7BF") == 0) { // 41
-        two_buttons(41);
-    }
-    if (strcmp(strstr(b, "K 0xF9F"), "K 0xF9F") == 0) { // 42
-        two_buttons(42);
-    }
-    if (strcmp(strstr(b, "K 0xFAF"), "K 0xFAF") == 0) { // 43
-        two_buttons(43);
-    }
-    if (strcmp(strstr(b, "K 0xF7E"), "K 0xF7E") == 0) { // 44
-        two_buttons(44);
-    }
-    if (strcmp(strstr(b, "K 0xF7D"), "K 0xF7D") == 0) { // 45
-        two_buttons(45);
-    }
-    if (strcmp(strstr(b, "K 0xF77"), "K 0xF77") == 0) { // 46
-        two_buttons(46);
-    }
-    if (strcmp(strstr(b, "K 0xF7B"), "K 0xF7B") == 0) { // 47
-        two_buttons(47);
-    }
-    if (strcmp(strstr(b, "K 0xE7F"), "K 0xE7F") == 0) { // 48
-        two_buttons(48);
-    }
-    if (strcmp(strstr(b, "K 0xB7F"), "K 0xB7F") == 0) { // 49
-        two_buttons(49);
-    }
-    if (strcmp(strstr(b, "K 0xD7F"), "K 0xD7F") == 0) { // 50
-        two_buttons(50);
-    }
-    if (strcmp(strstr(b, "K 0x77F"), "K 0x77F") == 0) { // 51
-        two_buttons(51);
-    }
-    if (strcmp(strstr(b, "K 0xF6F"), "K 0xF6F") == 0) { // 52
-        two_buttons(52);
-    }
-    if (strcmp(strstr(b, "K 0xF5F"), "K 0xF5F") == 0) { // 53
-        two_buttons(53);
-    }
-    if (strcmp(strstr(b, "K 0xFFF"), "K 0xFFF") == 0) {
-        if(one_pressed) {
-            one_pressed = 0;
-            press_time_stop();
-        }
-        if (two_pressed) {
-            two_button_controller();
-            press_time.reset();
+    for (int k = 1; k < 55; k++) {
+        char* c = strstr(b, keys[k-1]);
+        // strstr returns null if the substring isn't found
+        if (c) { 
+            if (k < 5 || k > 10 && k < 19) {
+                one_button(k);
+            } else if (k == 54) {
+                if(one_pressed) {
+                    one_pressed = 0;
+                    press_time_stop();
+                }
+                if (two_pressed) {
+                    two_button_controller();
+                    press_time.reset();
+                }
+            } else {
+                two_buttons(k);
+            }
+            break;
         }
     }
 }
@@ -206,13 +79,13 @@
     int f = 0;
     FILE *fp = fopen("/local/out.txt", "w");
     fseek(fp, 0, SEEK_SET);
-lb:
-    if (f < i) {
-        fprintf(fp, "%d \n", move_type[f]);
-        fprintf(fp, "%d \n", wait_times[f]);
-        fprintf(fp, "%d \n", press_times[f]);
+    while (f < i) {
+        if (press_times[f] != 0) {
+            fprintf(fp, "%d \n", move_type[f]);
+            fprintf(fp, "%d \n", wait_times[f]);
+            fprintf(fp, "%d \n", press_times[f]);
+        }
         f++;
-        goto lb;
     }
     fclose(fp);
 }
@@ -250,7 +123,7 @@
                             move_type[s] = r;
                             break;
                         case 2:
-                            wait_wait_times[s] = (unsigned long long) r;
+                            wait_times[s] = (unsigned long long) r;
                             break;
                         case 3:
                             press_times[s] = (unsigned long long) r;
@@ -269,11 +142,12 @@
                 }
             }
         }
-        for (int i = 0; i < s; i++) {
+        for (int i = 0; i <= s; i++) {
             pc.printf("\n\r %d", move_type[i]);
-            pc.printf(" %d", wait_wait_times[i]);
+            pc.printf(" %d", wait_times[i]);
             pc.printf(" %d", press_times[i]);
         }
+        pc.printf("\n\r");
         fclose(fp);
     }
 }
@@ -286,221 +160,6 @@
 
 void display_move(int b, int c)
 {   
-    switch(b) {
-        case 1:
-            pc.printf("\n\r Move: Up");
-            break;
-
-        case 2:
-            pc.printf("\n\r Move: Down");
-            break;
-
-        case 3:
-            pc.printf("\n\r Move: Left");
-            break;
-
-        case 4:
-            pc.printf("\n\r Move: Right");
-            break;
-
-        case 5:
-            pc.printf("\n\r Move: Up + Right");
-            break;
-
-        case 6:
-            pc.printf("\n\r Move:  Up + Down");
-            break;
-
-        case 7:
-            pc.printf("\n\r Move: Up + Left");
-            break;
-
-        case 8:
-            pc.printf("\n\r Move: Down + Right");
-            break;
-
-        case 9:
-            pc.printf("\n\r Move: Down + Left");
-            break;
-
-        case 10:
-            pc.printf("\n\r Move: Right + Left");
-            break;
-
-        case 11:
-            pc.printf("\n\r Move: W");
-            break;
-
-        case 12:
-            pc.printf("\n\r Move: S");
-            break;
-
-        case 13:
-            pc.printf("\n\r Move: A");
-            break;
-
-        case 14:
-            pc.printf("\n\r Move: D");
-            break;
-
-        case 15:
-            pc.printf("\n\r Move: Space");
-            break;
-
-        case 16:
-            pc.printf("\n\r Move: Enter");
-            break;
-
-        case 17:
-            pc.printf("\n\r Move: One");
-            break;
-
-        case 18:
-            pc.printf("\n\r Move: Two");
-            break;
-
-        case 19:
-            pc.printf("\n\r Move: W + A");
-            break;
-
-        case 20:
-            pc.printf("\n\r Move: W + D");
-            break;
-
-        case 21:
-            pc.printf("\n\r Move: S + A");
-            break;
-
-        case 22:
-            pc.printf("\n\r Move: S + D");
-            break;
-
-        case 23:
-            pc.printf("\n\r Move: W + S");
-            break;
-
-        case 24:
-            pc.printf("\n\r Move: A + D");
-            break;
-
-        case 25:
-            pc.printf("\n\r Move: One + Two");
-            break;
-
-        case 26:
-            pc.printf("\n\r Move: Up + Space");
-            break;
-
-        case 27:
-            pc.printf("\n\r Move: Right + Space");
-            break;
-
-        case 28:
-            pc.printf("\n\r Move: Left + Space");
-            break;
-
-        case 29:
-            pc.printf("\n\r Move: Down + Space");
-            break;
-
-        case 30:
-            pc.printf("\n\r Move: Up + Enter");
-            break;
-
-        case 31:
-            pc.printf("\n\r Move: Down + Enter");
-            break;
-
-        case 32:
-            pc.printf("\n\r Move: Right + Enter");
-            break;
-
-        case 33:
-            pc.printf("\n\r Move: Left + Enter");
-            break;
-
-        case 34:
-            pc.printf("\n\r Move: One + Up");
-            break;
-
-        case 35:
-            pc.printf("\n\r Move: One + Down");
-            break;
-
-        case 36:
-            pc.printf("\n\r Move: One + Left");
-            break;
-
-        case 37:
-            pc.printf("\n\r Move: One + Right");
-            break;
-
-        case 38:
-            pc.printf("\n\r Move: One + W");
-            break;
-
-        case 39:
-            pc.printf("\n\r Move: One + S");
-            break;
-
-        case 40:
-            pc.printf("\n\r Move: One + A");
-            break;
-
-        case 41:
-            pc.printf("\n\r Move: One + D");
-            break;
-
-        case 42:
-            pc.printf("\n\r Move: One + Space");
-            break;
-
-        case 43:
-            pc.printf("\n\r Move: One + Enter");
-            break;
-
-        case 44:
-            pc.printf("\n\r Move: Two + Up");
-            break;
-
-        case 45:
-            pc.printf("\n\r Move: Two + Down");
-            break;
-
-        case 46:
-            pc.printf("\n\r Move: Two + Right");
-            break;
-
-        case 47:
-            pc.printf("\n\r Move: Two + Left");
-            break;
-
-        case 48:
-            pc.printf("\n\r Move: Two + W");
-            break;
-
-        case 49:
-            pc.printf("\n\r Move: Two + S");
-            break;
-
-        case 50:
-            pc.printf("\n\r Move: Two + A");
-            break;
-
-        case 51:
-            pc.printf("\n\r Move: Two + D");
-            break;
-
-        case 52:
-            pc.printf("\n\r Move: Two + Enter");
-            break;
-
-        case 53:
-            pc.printf("\n\r Move: Two + Space");
-            break;
-
-        default:
-            break;
-    }
+    pc.printf("\n\r Move: %s", names[b - 1]);
     pc.printf("\n\r Position: %d", c);
 }
\ No newline at end of file