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
IR.cpp@5:e4c3ce3f66a2, 2015-05-04 (annotated)
- 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?
User | Revision | Line number | New 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 | } |