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
Diff: Controller.h
- Revision:
- 5:9af1305f7779
- Child:
- 6:ee7485ea71c9
- Child:
- 7:af2244bedcac
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Controller.h Mon Apr 13 08:31:37 2015 +0000 @@ -0,0 +1,506 @@ +/***************************************** +* Bluetooth Remote control methods library +* Author: Shalaj Lawania. +*****************************************/ + +#include "mbed.h" + +/********************************************************** +* LocalFileSystem local declared to save test sequence in a +* .txt file which can be read by the play() function +**********************************************************/ + +LocalFileSystem local("local"); + +int flag = 0; +int s = 0; + +/************************************************************ +* string_comparator(): Compares the received string from +* Bluefruit E-Z Key to a set of preset substrings that each +* contain a sequence unique to a key or set of keys. A unique +* value is sent to one_button() or two_buttons() for each key +* or combination of keys +************************************************************/ + +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(); + } + } +} + +/************************************************************* +* save_file(): Saves the new sequence in a file titled OUT.txt +* saves it in the format 'move_type wait_time press_time' +*************************************************************/ + +void save_file() +{ + 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]); + f++; + goto lb; + } + fclose(fp); +} + +/***************************************************************** +* read_file(): reads the saved sequence from a file titled OUT.txt +* inteprets the data in the order move_type, wait_time and press_time +* prints the stored values +*****************************************************************/ + +void read_file() +{ + pc.printf("\n\r"); + char c; + char f[6]; + int r = 0, q = 0, t = 0; + + s = 0; + + FILE *fp = fopen("/local/out.txt", "r"); + if (fp) { + fseek(fp, 0, SEEK_SET); + while (!feof(fp)) { + c = fgetc(fp); + if (c != '\n') { + if (c == ' ') { + t++; + if (t == 4) { + s++; + t = 1; + } + sscanf(f, "%d", &r); + switch(t) { + case 1: + move_type[s] = r; + break; + case 2: + wait_wait_times[s] = (unsigned long long) r; + break; + case 3: + press_times[s] = (unsigned long long) r; + break; + default: + break; + } + for (int i = 0; i < q; i++) { + f[i] = '\0'; + } + q = 0; + } else { + //pc.printf("%c", c); + f[q] = c; + q++; + } + } + } + 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", press_times[i]); + } + fclose(fp); + } +} + +/*********************************************************** +* display_move() displays the type of move depending on the +* unique number assigned to it and also it's position in the +* array +***********************************************************/ + +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 Position: %d", c); +} \ No newline at end of file