...

Dependencies:   RemoteIR mbed

Fork of SmartRemote by Sam Kirsch

Committer:
sammacjunkie
Date:
Tue Dec 03 02:40:59 2013 +0000
Revision:
4:36e0aa194b45
Child:
6:70a0af38edcc
libraries all fixed. RPCVariable added in and working

Who changed what in which revision?

UserRevisionLine numberNew 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 4:36e0aa194b45 54 printf("%-5.5s:%02d", 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 4:36e0aa194b45 97 printf("--");
sammacjunkie 4:36e0aa194b45 98 }
sammacjunkie 4:36e0aa194b45 99 }