For Wifi personal security mode. It is always cumbersome to change the password whenever there is a breach in the network. and even more annoying is to distribute the passwords to the clients/guests. WifiFlexManager is a project that can change the password (with a random predefined length string) whenever the admin sends a specific IR code (through android app) and can retrieve the current password or the connected users (Through Bluetooth screen). So as a client who wants to get connected to the router, you only need to point your phone's IR towards the mbed and press a button, and the current password will be shown at your phone's screen.

Dependencies:   EthernetInterface HTTPServer RemoteIR SDFileSystem mbed-rpc mbed-rtos mbed

Committer:
mskamoona
Date:
Mon May 04 03:41:46 2015 +0000
Revision:
5:e4c3ce3f66a2
Parent:
0:c08dc0b2963b
IR, Bluetooth, Telnet are working!

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mskamoona 0:c08dc0b2963b 1 #include "mbed.h"
mskamoona 0:c08dc0b2963b 2 #include "db.h"
mskamoona 0:c08dc0b2963b 3 #include "SDFileSystem.h"
mskamoona 0:c08dc0b2963b 4
mskamoona 0:c08dc0b2963b 5 void db_insert_tuple(char *new_name, char *new_code, char *bitlength, char *format)
mskamoona 0:c08dc0b2963b 6 {
mskamoona 0:c08dc0b2963b 7
mskamoona 0:c08dc0b2963b 8 char tuple_code[128];
mskamoona 0:c08dc0b2963b 9 char tuple_name[128];
mskamoona 0:c08dc0b2963b 10 char tuple_id[128];
mskamoona 0:c08dc0b2963b 11 char tuple_bitlength[128];
mskamoona 0:c08dc0b2963b 12 char tuple_format[128];
mskamoona 0:c08dc0b2963b 13 int id = 0;
mskamoona 0:c08dc0b2963b 14
mskamoona 0:c08dc0b2963b 15 // create file if it does not exist
mskamoona 0:c08dc0b2963b 16 FILE *ftemp = fopen("/sd/SmartRemote/db.txt", "a");
mskamoona 0:c08dc0b2963b 17 fclose(ftemp);
mskamoona 0:c08dc0b2963b 18
mskamoona 0:c08dc0b2963b 19 // read file to get last id
mskamoona 0:c08dc0b2963b 20 FILE *fdb = fopen("/sd/SmartRemote/db.txt", "r");
mskamoona 0:c08dc0b2963b 21 while ( !feof(fdb) ) {
mskamoona 0:c08dc0b2963b 22 db_get_tuple(fdb, tuple_id, tuple_name, tuple_code, tuple_bitlength, tuple_format);
mskamoona 0:c08dc0b2963b 23 if (strlen(tuple_name) != 0) {
mskamoona 0:c08dc0b2963b 24 printf("Tuple: |%s| \t |%s| \t |%s| \t |%s| \t |%s|\n", tuple_id, tuple_name, tuple_code, tuple_bitlength, tuple_format);
mskamoona 0:c08dc0b2963b 25 id = atoi(tuple_id);
mskamoona 0:c08dc0b2963b 26 }
mskamoona 0:c08dc0b2963b 27 }
mskamoona 0:c08dc0b2963b 28 fclose(fdb);
mskamoona 0:c08dc0b2963b 29
mskamoona 0:c08dc0b2963b 30 // id of new tuple
mskamoona 0:c08dc0b2963b 31 id++;
mskamoona 0:c08dc0b2963b 32 sprintf(tuple_id, "%d", id);
mskamoona 0:c08dc0b2963b 33
mskamoona 0:c08dc0b2963b 34 // write new tuple to file
mskamoona 0:c08dc0b2963b 35 char new_row[128];
mskamoona 0:c08dc0b2963b 36 FILE *fwrite = fopen("/sd/SmartRemote/db.txt", "a");
mskamoona 0:c08dc0b2963b 37
mskamoona 0:c08dc0b2963b 38 if (fwrite == NULL) { // if error
mskamoona 0:c08dc0b2963b 39 printf("Could not open file for write\n");
mskamoona 0:c08dc0b2963b 40 }
mskamoona 0:c08dc0b2963b 41
mskamoona 0:c08dc0b2963b 42 // create new row
mskamoona 0:c08dc0b2963b 43 sprintf(new_row, "%s\n%s\n%s\n%s\n%s\n", tuple_id, new_name, new_code, bitlength, format);
mskamoona 0:c08dc0b2963b 44
mskamoona 0:c08dc0b2963b 45 fprintf(fwrite, new_row); // write to file
mskamoona 0:c08dc0b2963b 46 fclose(fwrite); // close file
mskamoona 0:c08dc0b2963b 47
mskamoona 0:c08dc0b2963b 48 printf("Record Added: %s\n", new_row);
mskamoona 0:c08dc0b2963b 49 }
mskamoona 0:c08dc0b2963b 50
mskamoona 0:c08dc0b2963b 51 void db_print_all(FILE *fread)
mskamoona 0:c08dc0b2963b 52 {
mskamoona 0:c08dc0b2963b 53 char c;
mskamoona 0:c08dc0b2963b 54 while ( !feof(fread) ) {
mskamoona 0:c08dc0b2963b 55 c=fgetc(fread);
mskamoona 0:c08dc0b2963b 56 printf("%c", c);
mskamoona 0:c08dc0b2963b 57 }
mskamoona 0:c08dc0b2963b 58 }
mskamoona 0:c08dc0b2963b 59
mskamoona 0:c08dc0b2963b 60 void db_find_tuple(int id_to_find, char *tuple_name, char *tuple_code, char *tuple_bitlength, char *tuple_format)
mskamoona 0:c08dc0b2963b 61 {
mskamoona 0:c08dc0b2963b 62 FILE *fread = fopen("/sd/SmartRemote/db.txt", "r");
mskamoona 0:c08dc0b2963b 63
mskamoona 0:c08dc0b2963b 64 char tuple_id[128];
mskamoona 0:c08dc0b2963b 65 int id;
mskamoona 0:c08dc0b2963b 66
mskamoona 0:c08dc0b2963b 67 while ( !feof(fread) ) {
mskamoona 0:c08dc0b2963b 68 db_get_tuple(fread, tuple_id, tuple_name, tuple_code, tuple_bitlength, tuple_format);
mskamoona 0:c08dc0b2963b 69 if (strlen(tuple_name) != 0) {
mskamoona 0:c08dc0b2963b 70 id = atoi(tuple_id);
mskamoona 0:c08dc0b2963b 71 if (id == id_to_find) {
mskamoona 0:c08dc0b2963b 72 break;
mskamoona 0:c08dc0b2963b 73 }
mskamoona 0:c08dc0b2963b 74 }
mskamoona 0:c08dc0b2963b 75 else {
mskamoona 0:c08dc0b2963b 76 sprintf(tuple_id, "%d", 0);
mskamoona 0:c08dc0b2963b 77 sprintf(tuple_name, "%s", "");
mskamoona 0:c08dc0b2963b 78 sprintf(tuple_code, "%s", "");
mskamoona 0:c08dc0b2963b 79 sprintf(tuple_bitlength, "%s", "");
mskamoona 0:c08dc0b2963b 80 sprintf(tuple_format, "%s", "");
mskamoona 0:c08dc0b2963b 81 }
mskamoona 0:c08dc0b2963b 82 }
mskamoona 0:c08dc0b2963b 83
mskamoona 0:c08dc0b2963b 84 printf("Tuple Found: |%s| \t |%s| \t |%s| \t |%s| \t |%s|\n", tuple_id, tuple_name, tuple_code, tuple_bitlength, tuple_format);
mskamoona 0:c08dc0b2963b 85
mskamoona 0:c08dc0b2963b 86 fclose(fread);
mskamoona 0:c08dc0b2963b 87 }
mskamoona 0:c08dc0b2963b 88
mskamoona 0:c08dc0b2963b 89 void db_get_tuple(FILE *fread, char *id_str, char *name_str, char *code_str, char *bitlength_str, char *format_str)
mskamoona 0:c08dc0b2963b 90 {
mskamoona 0:c08dc0b2963b 91
mskamoona 0:c08dc0b2963b 92 unsigned char c;
mskamoona 0:c08dc0b2963b 93 int index;
mskamoona 0:c08dc0b2963b 94
mskamoona 0:c08dc0b2963b 95 // read ID;
mskamoona 0:c08dc0b2963b 96 index = 0;
mskamoona 0:c08dc0b2963b 97 do {
mskamoona 0:c08dc0b2963b 98 c = fgetc(fread);
mskamoona 0:c08dc0b2963b 99 id_str[index] = c;
mskamoona 0:c08dc0b2963b 100 index++;
mskamoona 0:c08dc0b2963b 101 } while (c != '\n' && !feof(fread) );
mskamoona 0:c08dc0b2963b 102 id_str[index-1] = 0;
mskamoona 0:c08dc0b2963b 103
mskamoona 0:c08dc0b2963b 104 // read NAME;
mskamoona 0:c08dc0b2963b 105 index = 0;
mskamoona 0:c08dc0b2963b 106 do {
mskamoona 0:c08dc0b2963b 107 c = fgetc(fread);
mskamoona 0:c08dc0b2963b 108 name_str[index] = c;
mskamoona 0:c08dc0b2963b 109 index++;
mskamoona 0:c08dc0b2963b 110 } while (c != '\n' && !feof(fread) );
mskamoona 0:c08dc0b2963b 111 name_str[index-1] = 0;
mskamoona 0:c08dc0b2963b 112
mskamoona 0:c08dc0b2963b 113 // read CODE
mskamoona 0:c08dc0b2963b 114 index = 0;
mskamoona 0:c08dc0b2963b 115 do {
mskamoona 0:c08dc0b2963b 116 c = fgetc(fread);
mskamoona 0:c08dc0b2963b 117 code_str[index] = c;
mskamoona 0:c08dc0b2963b 118 index++;
mskamoona 0:c08dc0b2963b 119 } while (c != '\n' && !feof(fread) );
mskamoona 0:c08dc0b2963b 120 code_str[index-1] = 0;
mskamoona 0:c08dc0b2963b 121
mskamoona 0:c08dc0b2963b 122 // read BITLENGTH
mskamoona 0:c08dc0b2963b 123 index = 0;
mskamoona 0:c08dc0b2963b 124 do {
mskamoona 0:c08dc0b2963b 125 c = fgetc(fread);
mskamoona 0:c08dc0b2963b 126 bitlength_str[index] = c;
mskamoona 0:c08dc0b2963b 127 index++;
mskamoona 0:c08dc0b2963b 128 } while (c != '\n' && !feof(fread) );
mskamoona 0:c08dc0b2963b 129 bitlength_str[index-1] = 0;
mskamoona 0:c08dc0b2963b 130
mskamoona 0:c08dc0b2963b 131 // read FORMAT
mskamoona 0:c08dc0b2963b 132 index = 0;
mskamoona 0:c08dc0b2963b 133 do {
mskamoona 0:c08dc0b2963b 134 c = fgetc(fread);
mskamoona 0:c08dc0b2963b 135 format_str[index] = c;
mskamoona 0:c08dc0b2963b 136 index++;
mskamoona 0:c08dc0b2963b 137 } while (c != '\n' && !feof(fread) );
mskamoona 0:c08dc0b2963b 138 format_str[index-1] = 0;
mskamoona 0:c08dc0b2963b 139 }