Demo Team / Mbed 2 deprecated bluefruit

Dependencies:   mbed

Committer:
pwright01
Date:
Mon Apr 20 10:03:22 2015 +0000
Revision:
8:cb50a25a7f8a
Parent:
7:af2244bedcac
Parent:
6:ee7485ea71c9
Merged branches

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ShalajLawania 5:9af1305f7779 1 /*****************************************
ShalajLawania 5:9af1305f7779 2 * Bluetooth Remote control methods library
ShalajLawania 5:9af1305f7779 3 * Author: Shalaj Lawania.
ShalajLawania 5:9af1305f7779 4 *****************************************/
ShalajLawania 5:9af1305f7779 5
ShalajLawania 5:9af1305f7779 6 #include "mbed.h"
ShalajLawania 5:9af1305f7779 7
ShalajLawania 5:9af1305f7779 8 /**********************************************************
ShalajLawania 5:9af1305f7779 9 * LocalFileSystem local declared to save test sequence in a
ShalajLawania 5:9af1305f7779 10 * .txt file which can be read by the play() function
ShalajLawania 5:9af1305f7779 11 **********************************************************/
ShalajLawania 5:9af1305f7779 12
ShalajLawania 5:9af1305f7779 13 LocalFileSystem local("local");
ShalajLawania 5:9af1305f7779 14
pwright01 7:af2244bedcac 15 int playflag = 0;
ShalajLawania 5:9af1305f7779 16 int s = 0;
pwright01 7:af2244bedcac 17 char* keys[54] = {
pwright01 7:af2244bedcac 18 "K 0xFFE", "K 0xFFD", "K 0xFFB", "K 0xFF7", "K 0xFF6", "K 0xFFC",
pwright01 7:af2244bedcac 19 "K 0xFFA", "K 0xFF5", "K 0xFF9", "K 0xFF3", "K 0xEFF", "K 0xBFF",
pwright01 7:af2244bedcac 20 "K 0xDFF", "K 0x7FF", "K 0xFDF", "K 0xFEF", "K 0xFBF", "K 0xF7F",
pwright01 7:af2244bedcac 21 "K 0xCFF", "K 0x6FF", "K 0x9FF", "K 0x3FF", "K 0xAFF", "K 0x5FF",
pwright01 7:af2244bedcac 22 "K 0xF3F", "K 0xFDE", "K 0xFD7", "K 0xFDB", "K 0xFDD", "K 0xFEE",
pwright01 7:af2244bedcac 23 "K 0xFED", "K 0xFE7", "K 0xFEB", "K 0xFBE", "K 0xFBD", "K 0xFBB",
pwright01 7:af2244bedcac 24 "K 0xFB7", "K 0xEBF", "K 0xBBF", "K 0xDBF", "K 0x7BF", "K 0xF9F",
pwright01 7:af2244bedcac 25 "K 0xFAF", "K 0xF7E", "K 0xF7D", "K 0xF77", "K 0xF7B", "K 0xE7F",
pwright01 7:af2244bedcac 26 "K 0xB7F", "K 0xD7F", "K 0x77F", "K 0xF6F", "K 0xF5F", "K 0xFFF" };
pwright01 7:af2244bedcac 27
pwright01 7:af2244bedcac 28 char* names[53] = {
pwright01 7:af2244bedcac 29 "Up", "Down", "Left", "Right", "Up + Right", "Up + Down",
pwright01 7:af2244bedcac 30 "Up + Left", "Down + Right", "Down + Left", "Right + Left", "W", "S",
pwright01 7:af2244bedcac 31 "A", "D", "Space", "Enter", "One", "Two",
pwright01 7:af2244bedcac 32 "W + A", "W + D", "S + A", "S + D", "W + S", "A + D",
pwright01 7:af2244bedcac 33 "One + Two", "Up + Space", "Right + Space", "Left + Space", "Down + Space", "Up + Enter",
pwright01 7:af2244bedcac 34 "Down + Enter", "Right + Enter", "Left + Enter", "One + Up", "One + Down", "One + Left",
pwright01 7:af2244bedcac 35 "One + Right", "One + W", "One + S", "One + A", "One + D", "One + Space",
pwright01 7:af2244bedcac 36 "One + Enter", "Two + Up", "Two + Down", "Two + Right", "Two + Left", "Two + W",
pwright01 7:af2244bedcac 37 "Two + S", "Two + A", "Two + D", "Two + Enter", "Two + Space" /*, K 0xFFF No button */ };
pwright01 7:af2244bedcac 38
ShalajLawania 5:9af1305f7779 39 /************************************************************
ShalajLawania 5:9af1305f7779 40 * string_comparator(): Compares the received string from
ShalajLawania 5:9af1305f7779 41 * Bluefruit E-Z Key to a set of preset substrings that each
ShalajLawania 5:9af1305f7779 42 * contain a sequence unique to a key or set of keys. A unique
ShalajLawania 5:9af1305f7779 43 * value is sent to one_button() or two_buttons() for each key
ShalajLawania 5:9af1305f7779 44 * or combination of keys
ShalajLawania 5:9af1305f7779 45 ************************************************************/
ShalajLawania 5:9af1305f7779 46
ShalajLawania 5:9af1305f7779 47 void string_comparator(char *b)
ShalajLawania 5:9af1305f7779 48 {
pwright01 7:af2244bedcac 49 for (int k = 1; k < 55; k++) {
pwright01 7:af2244bedcac 50 char* c = strstr(b, keys[k-1]);
pwright01 7:af2244bedcac 51 // strstr returns null if the substring isn't found
pwright01 7:af2244bedcac 52 if (c) {
pwright01 7:af2244bedcac 53 if (k < 5 || k > 10 && k < 19) {
pwright01 7:af2244bedcac 54 one_button(k);
pwright01 7:af2244bedcac 55 } else if (k == 54) {
pwright01 7:af2244bedcac 56 if(one_pressed) {
pwright01 7:af2244bedcac 57 one_pressed = 0;
pwright01 7:af2244bedcac 58 press_time_stop();
pwright01 7:af2244bedcac 59 }
pwright01 7:af2244bedcac 60 if (two_pressed) {
pwright01 7:af2244bedcac 61 two_button_controller();
pwright01 7:af2244bedcac 62 press_time.reset();
pwright01 7:af2244bedcac 63 }
pwright01 7:af2244bedcac 64 } else {
pwright01 7:af2244bedcac 65 two_buttons(k);
pwright01 7:af2244bedcac 66 }
pwright01 7:af2244bedcac 67 break;
ShalajLawania 5:9af1305f7779 68 }
ShalajLawania 5:9af1305f7779 69 }
ShalajLawania 5:9af1305f7779 70 }
ShalajLawania 5:9af1305f7779 71
ShalajLawania 5:9af1305f7779 72 /*************************************************************
ShalajLawania 5:9af1305f7779 73 * save_file(): Saves the new sequence in a file titled OUT.txt
ShalajLawania 5:9af1305f7779 74 * saves it in the format 'move_type wait_time press_time'
ShalajLawania 5:9af1305f7779 75 *************************************************************/
ShalajLawania 5:9af1305f7779 76
ShalajLawania 5:9af1305f7779 77 void save_file()
ShalajLawania 5:9af1305f7779 78 {
ShalajLawania 5:9af1305f7779 79 int f = 0;
ShalajLawania 5:9af1305f7779 80 FILE *fp = fopen("/local/out.txt", "w");
ShalajLawania 5:9af1305f7779 81 fseek(fp, 0, SEEK_SET);
pwright01 7:af2244bedcac 82 while (f < i) {
pwright01 7:af2244bedcac 83 if (press_times[f] != 0) {
pwright01 7:af2244bedcac 84 fprintf(fp, "%d \n", move_type[f]);
pwright01 7:af2244bedcac 85 fprintf(fp, "%d \n", wait_times[f]);
pwright01 7:af2244bedcac 86 fprintf(fp, "%d \n", press_times[f]);
pwright01 7:af2244bedcac 87 }
ShalajLawania 5:9af1305f7779 88 f++;
ShalajLawania 5:9af1305f7779 89 }
ShalajLawania 5:9af1305f7779 90 fclose(fp);
ShalajLawania 5:9af1305f7779 91 }
ShalajLawania 5:9af1305f7779 92
ShalajLawania 5:9af1305f7779 93 /*****************************************************************
ShalajLawania 5:9af1305f7779 94 * read_file(): reads the saved sequence from a file titled OUT.txt
ShalajLawania 5:9af1305f7779 95 * inteprets the data in the order move_type, wait_time and press_time
ShalajLawania 5:9af1305f7779 96 * prints the stored values
ShalajLawania 5:9af1305f7779 97 *****************************************************************/
ShalajLawania 5:9af1305f7779 98
ShalajLawania 5:9af1305f7779 99 void read_file()
ShalajLawania 5:9af1305f7779 100 {
ShalajLawania 5:9af1305f7779 101 pc.printf("\n\r");
ShalajLawania 5:9af1305f7779 102 char c;
ShalajLawania 5:9af1305f7779 103 char f[6];
ShalajLawania 5:9af1305f7779 104 int r = 0, q = 0, t = 0;
ShalajLawania 5:9af1305f7779 105
ShalajLawania 5:9af1305f7779 106 s = 0;
ShalajLawania 5:9af1305f7779 107
ShalajLawania 5:9af1305f7779 108 FILE *fp = fopen("/local/out.txt", "r");
ShalajLawania 5:9af1305f7779 109 if (fp) {
ShalajLawania 5:9af1305f7779 110 fseek(fp, 0, SEEK_SET);
ShalajLawania 5:9af1305f7779 111 while (!feof(fp)) {
ShalajLawania 5:9af1305f7779 112 c = fgetc(fp);
ShalajLawania 5:9af1305f7779 113 if (c != '\n') {
ShalajLawania 5:9af1305f7779 114 if (c == ' ') {
ShalajLawania 5:9af1305f7779 115 t++;
ShalajLawania 5:9af1305f7779 116 if (t == 4) {
ShalajLawania 5:9af1305f7779 117 s++;
ShalajLawania 5:9af1305f7779 118 t = 1;
ShalajLawania 5:9af1305f7779 119 }
ShalajLawania 5:9af1305f7779 120 sscanf(f, "%d", &r);
ShalajLawania 5:9af1305f7779 121 switch(t) {
ShalajLawania 5:9af1305f7779 122 case 1:
ShalajLawania 5:9af1305f7779 123 move_type[s] = r;
ShalajLawania 5:9af1305f7779 124 break;
ShalajLawania 5:9af1305f7779 125 case 2:
ShalajLawania 6:ee7485ea71c9 126 wait_times[s] = (unsigned long long) r;
ShalajLawania 5:9af1305f7779 127 break;
ShalajLawania 5:9af1305f7779 128 case 3:
ShalajLawania 5:9af1305f7779 129 press_times[s] = (unsigned long long) r;
ShalajLawania 5:9af1305f7779 130 break;
ShalajLawania 5:9af1305f7779 131 default:
ShalajLawania 5:9af1305f7779 132 break;
ShalajLawania 5:9af1305f7779 133 }
ShalajLawania 5:9af1305f7779 134 for (int i = 0; i < q; i++) {
ShalajLawania 5:9af1305f7779 135 f[i] = '\0';
ShalajLawania 5:9af1305f7779 136 }
ShalajLawania 5:9af1305f7779 137 q = 0;
ShalajLawania 5:9af1305f7779 138 } else {
ShalajLawania 5:9af1305f7779 139 //pc.printf("%c", c);
ShalajLawania 5:9af1305f7779 140 f[q] = c;
ShalajLawania 5:9af1305f7779 141 q++;
ShalajLawania 5:9af1305f7779 142 }
ShalajLawania 5:9af1305f7779 143 }
ShalajLawania 5:9af1305f7779 144 }
pwright01 7:af2244bedcac 145 for (int i = 0; i <= s; i++) {
ShalajLawania 5:9af1305f7779 146 pc.printf("\n\r %d", move_type[i]);
ShalajLawania 6:ee7485ea71c9 147 pc.printf(" %d", wait_times[i]);
ShalajLawania 5:9af1305f7779 148 pc.printf(" %d", press_times[i]);
ShalajLawania 5:9af1305f7779 149 }
pwright01 7:af2244bedcac 150 pc.printf("\n\r");
ShalajLawania 5:9af1305f7779 151 fclose(fp);
ShalajLawania 5:9af1305f7779 152 }
ShalajLawania 5:9af1305f7779 153 }
ShalajLawania 5:9af1305f7779 154
ShalajLawania 5:9af1305f7779 155 /***********************************************************
ShalajLawania 5:9af1305f7779 156 * display_move() displays the type of move depending on the
ShalajLawania 5:9af1305f7779 157 * unique number assigned to it and also it's position in the
ShalajLawania 5:9af1305f7779 158 * array
ShalajLawania 5:9af1305f7779 159 ***********************************************************/
ShalajLawania 5:9af1305f7779 160
ShalajLawania 5:9af1305f7779 161 void display_move(int b, int c)
ShalajLawania 5:9af1305f7779 162 {
pwright01 7:af2244bedcac 163 pc.printf("\n\r Move: %s", names[b - 1]);
ShalajLawania 5:9af1305f7779 164 pc.printf("\n\r Position: %d", c);
ShalajLawania 5:9af1305f7779 165 }