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
- Committer:
- pwright01
- Date:
- 2015-04-20
- Revision:
- 7:af2244bedcac
- Parent:
- 5:9af1305f7779
- Child:
- 8:cb50a25a7f8a
File content as of revision 7:af2244bedcac:
/*****************************************
* 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 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
* 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)
{
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;
}
}
}
/*************************************************************
* 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);
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++;
}
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_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_times[i]);
pc.printf(" %d", press_times[i]);
}
pc.printf("\n\r");
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)
{
pc.printf("\n\r Move: %s", names[b - 1]);
pc.printf("\n\r Position: %d", c);
}