Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed
Controller.h@8:cb50a25a7f8a, 2015-04-20 (annotated)
- 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?
User | Revision | Line number | New 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 | } |