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 "IR.h"
mskamoona 0:c08dc0b2963b 3 #include "ReceiverIR.h"
mskamoona 0:c08dc0b2963b 4 #include "TransmitterIR.h"
mskamoona 0:c08dc0b2963b 5
mskamoona 0:c08dc0b2963b 6 ReceiverIR ir_rx(A0); //Analog in
mskamoona 0:c08dc0b2963b 7 TransmitterIR ir_tx(A5); //pwmout
mskamoona 0:c08dc0b2963b 8
mskamoona 0:c08dc0b2963b 9 /**
mskamoona 0:c08dc0b2963b 10 * Receive.
mskamoona 0:c08dc0b2963b 11 *
mskamoona 0:c08dc0b2963b 12 * @param format Pointer to a format.
mskamoona 0:c08dc0b2963b 13 * @param buf Pointer to a buffer.
mskamoona 0:c08dc0b2963b 14 * @param bufsiz Size of the buffer.
mskamoona 0:c08dc0b2963b 15 *
mskamoona 0:c08dc0b2963b 16 * @return Bit length of the received data.
mskamoona 0:c08dc0b2963b 17 */
mskamoona 0:c08dc0b2963b 18 int receive(RemoteIR::Format *format, uint8_t *buf, int bufsiz, int timeout) {
mskamoona 0:c08dc0b2963b 19 int cnt = 0;
mskamoona 0:c08dc0b2963b 20 printf("In receive function\n");
mskamoona 0:c08dc0b2963b 21 while (ir_rx.getState() != ReceiverIR::Received) {
mskamoona 0:c08dc0b2963b 22 printf("Trying to receive more data!!\n");
mskamoona 0:c08dc0b2963b 23 cnt++;
mskamoona 0:c08dc0b2963b 24 if (timeout < cnt) {
mskamoona 0:c08dc0b2963b 25 return -1;
mskamoona 0:c08dc0b2963b 26 }
mskamoona 0:c08dc0b2963b 27 }
mskamoona 0:c08dc0b2963b 28 return ir_rx.getData(format, buf, bufsiz * 8);
mskamoona 0:c08dc0b2963b 29 }
mskamoona 0:c08dc0b2963b 30
mskamoona 0:c08dc0b2963b 31 /**
mskamoona 0:c08dc0b2963b 32 * Transmit.
mskamoona 0:c08dc0b2963b 33 *
mskamoona 0:c08dc0b2963b 34 * @param format Format.
mskamoona 0:c08dc0b2963b 35 * @param buf Pointer to a buffer.
mskamoona 0:c08dc0b2963b 36 * @param bitlength Bit length of the data.
mskamoona 0:c08dc0b2963b 37 *
mskamoona 0:c08dc0b2963b 38 * @return Bit length of the received data.
mskamoona 0:c08dc0b2963b 39 */
mskamoona 0:c08dc0b2963b 40 int transmit(RemoteIR::Format format, uint8_t *buf, int bitlength, int timeout) {
mskamoona 0:c08dc0b2963b 41 int cnt = 0;
mskamoona 0:c08dc0b2963b 42 while (ir_tx.getState() != TransmitterIR::Idle) {
mskamoona 0:c08dc0b2963b 43 cnt++;
mskamoona 0:c08dc0b2963b 44 if (timeout < cnt) {
mskamoona 0:c08dc0b2963b 45 return -1;
mskamoona 0:c08dc0b2963b 46 }
mskamoona 0:c08dc0b2963b 47 }
mskamoona 0:c08dc0b2963b 48 return ir_tx.setData(format, buf, bitlength);
mskamoona 0:c08dc0b2963b 49 }
mskamoona 0:c08dc0b2963b 50
mskamoona 0:c08dc0b2963b 51 /**
mskamoona 0:c08dc0b2963b 52 * Display a current status.
mskamoona 0:c08dc0b2963b 53 */
mskamoona 0:c08dc0b2963b 54 void display_status(char *status, int bitlength) {
mskamoona 0:c08dc0b2963b 55
mskamoona 0:c08dc0b2963b 56 printf("%-5.5s:%02d \n \r", status, bitlength);
mskamoona 0:c08dc0b2963b 57 }
mskamoona 0:c08dc0b2963b 58
mskamoona 0:c08dc0b2963b 59 /**
mskamoona 0:c08dc0b2963b 60 * Display a format of a data.
mskamoona 0:c08dc0b2963b 61 */
mskamoona 0:c08dc0b2963b 62 void display_format(RemoteIR::Format format) {
mskamoona 0:c08dc0b2963b 63
mskamoona 0:c08dc0b2963b 64 switch (format) {
mskamoona 0:c08dc0b2963b 65 case RemoteIR::UNKNOWN:
mskamoona 0:c08dc0b2963b 66 printf("????????");
mskamoona 0:c08dc0b2963b 67 break;
mskamoona 0:c08dc0b2963b 68 case RemoteIR::NEC:
mskamoona 0:c08dc0b2963b 69 printf("NEC ");
mskamoona 0:c08dc0b2963b 70 break;
mskamoona 0:c08dc0b2963b 71 case RemoteIR::NEC_REPEAT:
mskamoona 0:c08dc0b2963b 72 printf("NEC (R)");
mskamoona 0:c08dc0b2963b 73 break;
mskamoona 0:c08dc0b2963b 74 case RemoteIR::AEHA:
mskamoona 0:c08dc0b2963b 75 printf("AEHA ");
mskamoona 0:c08dc0b2963b 76 break;
mskamoona 0:c08dc0b2963b 77 case RemoteIR::AEHA_REPEAT:
mskamoona 0:c08dc0b2963b 78 printf("AEHA (R)");
mskamoona 0:c08dc0b2963b 79 break;
mskamoona 0:c08dc0b2963b 80 case RemoteIR::SONY:
mskamoona 0:c08dc0b2963b 81 printf("SONY \n");
mskamoona 0:c08dc0b2963b 82 break;
mskamoona 0:c08dc0b2963b 83
mskamoona 0:c08dc0b2963b 84 case RemoteIR::KAMOONA:
mskamoona 0:c08dc0b2963b 85 printf("KAMOONA\n");
mskamoona 0:c08dc0b2963b 86 break;
mskamoona 0:c08dc0b2963b 87
mskamoona 0:c08dc0b2963b 88
mskamoona 0:c08dc0b2963b 89 }
mskamoona 0:c08dc0b2963b 90 }
mskamoona 0:c08dc0b2963b 91
mskamoona 0:c08dc0b2963b 92 /**
mskamoona 0:c08dc0b2963b 93 * Display a data.
mskamoona 0:c08dc0b2963b 94 *
mskamoona 0:c08dc0b2963b 95 * @param buf Pointer to a buffer.
mskamoona 0:c08dc0b2963b 96 * @param bitlength Bit length of a data.
mskamoona 0:c08dc0b2963b 97 */
mskamoona 0:c08dc0b2963b 98 void display_data(uint8_t *buf, int bitlength) {
mskamoona 0:c08dc0b2963b 99 //lcd.locate(0, 1);
mskamoona 0:c08dc0b2963b 100 const int n = bitlength / 8 + (((bitlength % 8) != 0) ? 1 : 0);
mskamoona 0:c08dc0b2963b 101 for (int i = 0; i < n; i++) {
mskamoona 0:c08dc0b2963b 102 printf("%02X", buf[i]);
mskamoona 0:c08dc0b2963b 103 }
mskamoona 0:c08dc0b2963b 104 for (int i = 0; i < 8 - n; i++) {
mskamoona 0:c08dc0b2963b 105 printf("--\n \r");
mskamoona 0:c08dc0b2963b 106 }
mskamoona 0:c08dc0b2963b 107
mskamoona 0:c08dc0b2963b 108 }