TeamE7
Dependencies: EthernetInterface HTTPServer RemoteIR SDFileSystem mbed-rpc mbed-rtos mbed
Fork of SmartRemote by
IR.cpp@6:70a0af38edcc, 2013-12-03 (annotated)
- Committer:
- sammacjunkie
- Date:
- Tue Dec 03 03:49:12 2013 +0000
- Revision:
- 6:70a0af38edcc
- Parent:
- 4:36e0aa194b45
updated
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
sammacjunkie | 4:36e0aa194b45 | 1 | #include "mbed.h" |
sammacjunkie | 4:36e0aa194b45 | 2 | #include "IR.h" |
sammacjunkie | 4:36e0aa194b45 | 3 | #include "ReceiverIR.h" |
sammacjunkie | 4:36e0aa194b45 | 4 | #include "TransmitterIR.h" |
sammacjunkie | 4:36e0aa194b45 | 5 | |
sammacjunkie | 4:36e0aa194b45 | 6 | ReceiverIR ir_rx(p15); |
sammacjunkie | 4:36e0aa194b45 | 7 | TransmitterIR ir_tx(p21); |
sammacjunkie | 4:36e0aa194b45 | 8 | |
sammacjunkie | 4:36e0aa194b45 | 9 | /** |
sammacjunkie | 4:36e0aa194b45 | 10 | * Receive. |
sammacjunkie | 4:36e0aa194b45 | 11 | * |
sammacjunkie | 4:36e0aa194b45 | 12 | * @param format Pointer to a format. |
sammacjunkie | 4:36e0aa194b45 | 13 | * @param buf Pointer to a buffer. |
sammacjunkie | 4:36e0aa194b45 | 14 | * @param bufsiz Size of the buffer. |
sammacjunkie | 4:36e0aa194b45 | 15 | * |
sammacjunkie | 4:36e0aa194b45 | 16 | * @return Bit length of the received data. |
sammacjunkie | 4:36e0aa194b45 | 17 | */ |
sammacjunkie | 4:36e0aa194b45 | 18 | int receive(RemoteIR::Format *format, uint8_t *buf, int bufsiz, int timeout) { |
sammacjunkie | 4:36e0aa194b45 | 19 | int cnt = 0; |
sammacjunkie | 4:36e0aa194b45 | 20 | while (ir_rx.getState() != ReceiverIR::Received) { |
sammacjunkie | 4:36e0aa194b45 | 21 | cnt++; |
sammacjunkie | 4:36e0aa194b45 | 22 | if (timeout < cnt) { |
sammacjunkie | 4:36e0aa194b45 | 23 | return -1; |
sammacjunkie | 4:36e0aa194b45 | 24 | } |
sammacjunkie | 4:36e0aa194b45 | 25 | } |
sammacjunkie | 4:36e0aa194b45 | 26 | return ir_rx.getData(format, buf, bufsiz * 8); |
sammacjunkie | 4:36e0aa194b45 | 27 | } |
sammacjunkie | 4:36e0aa194b45 | 28 | |
sammacjunkie | 4:36e0aa194b45 | 29 | /** |
sammacjunkie | 4:36e0aa194b45 | 30 | * Transmit. |
sammacjunkie | 4:36e0aa194b45 | 31 | * |
sammacjunkie | 4:36e0aa194b45 | 32 | * @param format Format. |
sammacjunkie | 4:36e0aa194b45 | 33 | * @param buf Pointer to a buffer. |
sammacjunkie | 4:36e0aa194b45 | 34 | * @param bitlength Bit length of the data. |
sammacjunkie | 4:36e0aa194b45 | 35 | * |
sammacjunkie | 4:36e0aa194b45 | 36 | * @return Bit length of the received data. |
sammacjunkie | 4:36e0aa194b45 | 37 | */ |
sammacjunkie | 4:36e0aa194b45 | 38 | int transmit(RemoteIR::Format format, uint8_t *buf, int bitlength, int timeout) { |
sammacjunkie | 4:36e0aa194b45 | 39 | int cnt = 0; |
sammacjunkie | 4:36e0aa194b45 | 40 | while (ir_tx.getState() != TransmitterIR::Idle) { |
sammacjunkie | 4:36e0aa194b45 | 41 | cnt++; |
sammacjunkie | 4:36e0aa194b45 | 42 | if (timeout < cnt) { |
sammacjunkie | 4:36e0aa194b45 | 43 | return -1; |
sammacjunkie | 4:36e0aa194b45 | 44 | } |
sammacjunkie | 4:36e0aa194b45 | 45 | } |
sammacjunkie | 4:36e0aa194b45 | 46 | return ir_tx.setData(format, buf, bitlength); |
sammacjunkie | 4:36e0aa194b45 | 47 | } |
sammacjunkie | 4:36e0aa194b45 | 48 | |
sammacjunkie | 4:36e0aa194b45 | 49 | /** |
sammacjunkie | 4:36e0aa194b45 | 50 | * Display a current status. |
sammacjunkie | 4:36e0aa194b45 | 51 | */ |
sammacjunkie | 4:36e0aa194b45 | 52 | void display_status(char *status, int bitlength) { |
sammacjunkie | 4:36e0aa194b45 | 53 | |
sammacjunkie | 6:70a0af38edcc | 54 | printf("%-5.5s:%02d \n \r", status, bitlength); |
sammacjunkie | 4:36e0aa194b45 | 55 | } |
sammacjunkie | 4:36e0aa194b45 | 56 | |
sammacjunkie | 4:36e0aa194b45 | 57 | /** |
sammacjunkie | 4:36e0aa194b45 | 58 | * Display a format of a data. |
sammacjunkie | 4:36e0aa194b45 | 59 | */ |
sammacjunkie | 4:36e0aa194b45 | 60 | void display_format(RemoteIR::Format format) { |
sammacjunkie | 4:36e0aa194b45 | 61 | |
sammacjunkie | 4:36e0aa194b45 | 62 | switch (format) { |
sammacjunkie | 4:36e0aa194b45 | 63 | case RemoteIR::UNKNOWN: |
sammacjunkie | 4:36e0aa194b45 | 64 | printf("????????"); |
sammacjunkie | 4:36e0aa194b45 | 65 | break; |
sammacjunkie | 4:36e0aa194b45 | 66 | case RemoteIR::NEC: |
sammacjunkie | 4:36e0aa194b45 | 67 | printf("NEC "); |
sammacjunkie | 4:36e0aa194b45 | 68 | break; |
sammacjunkie | 4:36e0aa194b45 | 69 | case RemoteIR::NEC_REPEAT: |
sammacjunkie | 4:36e0aa194b45 | 70 | printf("NEC (R)"); |
sammacjunkie | 4:36e0aa194b45 | 71 | break; |
sammacjunkie | 4:36e0aa194b45 | 72 | case RemoteIR::AEHA: |
sammacjunkie | 4:36e0aa194b45 | 73 | printf("AEHA "); |
sammacjunkie | 4:36e0aa194b45 | 74 | break; |
sammacjunkie | 4:36e0aa194b45 | 75 | case RemoteIR::AEHA_REPEAT: |
sammacjunkie | 4:36e0aa194b45 | 76 | printf("AEHA (R)"); |
sammacjunkie | 4:36e0aa194b45 | 77 | break; |
sammacjunkie | 4:36e0aa194b45 | 78 | case RemoteIR::SONY: |
sammacjunkie | 4:36e0aa194b45 | 79 | printf("SONY "); |
sammacjunkie | 4:36e0aa194b45 | 80 | break; |
sammacjunkie | 4:36e0aa194b45 | 81 | } |
sammacjunkie | 4:36e0aa194b45 | 82 | } |
sammacjunkie | 4:36e0aa194b45 | 83 | |
sammacjunkie | 4:36e0aa194b45 | 84 | /** |
sammacjunkie | 4:36e0aa194b45 | 85 | * Display a data. |
sammacjunkie | 4:36e0aa194b45 | 86 | * |
sammacjunkie | 4:36e0aa194b45 | 87 | * @param buf Pointer to a buffer. |
sammacjunkie | 4:36e0aa194b45 | 88 | * @param bitlength Bit length of a data. |
sammacjunkie | 4:36e0aa194b45 | 89 | */ |
sammacjunkie | 4:36e0aa194b45 | 90 | void display_data(uint8_t *buf, int bitlength) { |
sammacjunkie | 4:36e0aa194b45 | 91 | //lcd.locate(0, 1); |
sammacjunkie | 4:36e0aa194b45 | 92 | const int n = bitlength / 8 + (((bitlength % 8) != 0) ? 1 : 0); |
sammacjunkie | 4:36e0aa194b45 | 93 | for (int i = 0; i < n; i++) { |
sammacjunkie | 4:36e0aa194b45 | 94 | printf("%02X", buf[i]); |
sammacjunkie | 4:36e0aa194b45 | 95 | } |
sammacjunkie | 4:36e0aa194b45 | 96 | for (int i = 0; i < 8 - n; i++) { |
sammacjunkie | 6:70a0af38edcc | 97 | printf("--\n \r"); |
sammacjunkie | 4:36e0aa194b45 | 98 | } |
sammacjunkie | 6:70a0af38edcc | 99 | |
sammacjunkie | 4:36e0aa194b45 | 100 | } |