Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: EthernetInterface HTTPServer RemoteIR SDFileSystem mbed-rpc mbed-rtos mbed
Fork of SmartRemote by
IR.cpp
- Committer:
- sammacjunkie
- Date:
- 2013-12-03
- Revision:
- 6:70a0af38edcc
- Parent:
- 4:36e0aa194b45
File content as of revision 6:70a0af38edcc:
#include "mbed.h"
#include "IR.h"
#include "ReceiverIR.h"
#include "TransmitterIR.h"
ReceiverIR ir_rx(p15);
TransmitterIR ir_tx(p21);
/**
* Receive.
*
* @param format Pointer to a format.
* @param buf Pointer to a buffer.
* @param bufsiz Size of the buffer.
*
* @return Bit length of the received data.
*/
int receive(RemoteIR::Format *format, uint8_t *buf, int bufsiz, int timeout) {
int cnt = 0;
while (ir_rx.getState() != ReceiverIR::Received) {
cnt++;
if (timeout < cnt) {
return -1;
}
}
return ir_rx.getData(format, buf, bufsiz * 8);
}
/**
* Transmit.
*
* @param format Format.
* @param buf Pointer to a buffer.
* @param bitlength Bit length of the data.
*
* @return Bit length of the received data.
*/
int transmit(RemoteIR::Format format, uint8_t *buf, int bitlength, int timeout) {
int cnt = 0;
while (ir_tx.getState() != TransmitterIR::Idle) {
cnt++;
if (timeout < cnt) {
return -1;
}
}
return ir_tx.setData(format, buf, bitlength);
}
/**
* Display a current status.
*/
void display_status(char *status, int bitlength) {
printf("%-5.5s:%02d \n \r", status, bitlength);
}
/**
* Display a format of a data.
*/
void display_format(RemoteIR::Format format) {
switch (format) {
case RemoteIR::UNKNOWN:
printf("????????");
break;
case RemoteIR::NEC:
printf("NEC ");
break;
case RemoteIR::NEC_REPEAT:
printf("NEC (R)");
break;
case RemoteIR::AEHA:
printf("AEHA ");
break;
case RemoteIR::AEHA_REPEAT:
printf("AEHA (R)");
break;
case RemoteIR::SONY:
printf("SONY ");
break;
}
}
/**
* Display a data.
*
* @param buf Pointer to a buffer.
* @param bitlength Bit length of a data.
*/
void display_data(uint8_t *buf, int bitlength) {
//lcd.locate(0, 1);
const int n = bitlength / 8 + (((bitlength % 8) != 0) ? 1 : 0);
for (int i = 0; i < n; i++) {
printf("%02X", buf[i]);
}
for (int i = 0; i < 8 - n; i++) {
printf("--\n \r");
}
}
