IR

Dependencies:   RemoteIR mbed

Committer:
anykovar
Date:
Tue Jan 10 22:23:27 2017 +0000
Revision:
1:c81bb0a316d4
Parent:
0:0b36c6926bfd
IR;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
anykovar 0:0b36c6926bfd 1 #include <mbed.h>
anykovar 0:0b36c6926bfd 2
anykovar 0:0b36c6926bfd 3 #include "ReceiverIR.h"
anykovar 0:0b36c6926bfd 4 #include "TransmitterIR.h"
anykovar 0:0b36c6926bfd 5 #define TEST_LOOP_BACK 0
anykovar 0:0b36c6926bfd 6
anykovar 0:0b36c6926bfd 7 ReceiverIR ir_rx(p2);
anykovar 0:0b36c6926bfd 8 TransmitterIR ir_tx(p1);
anykovar 0:0b36c6926bfd 9 // opravit čísla pinů
anykovar 0:0b36c6926bfd 10
anykovar 0:0b36c6926bfd 11 //Receiver
anykovar 0:0b36c6926bfd 12 int receive(RemoteIR::Format *format, uint8_t *buf, int bufsiz, int timeout = 100)
anykovar 0:0b36c6926bfd 13 {
anykovar 0:0b36c6926bfd 14 int cnt = 0;
anykovar 0:0b36c6926bfd 15 while (ir_rx.getState() != ReceiverIR::Received) {
anykovar 0:0b36c6926bfd 16 cnt++;
anykovar 0:0b36c6926bfd 17 if (timeout < cnt) {
anykovar 0:0b36c6926bfd 18 return -1;
anykovar 0:0b36c6926bfd 19 }
anykovar 0:0b36c6926bfd 20 }
anykovar 0:0b36c6926bfd 21 return ir_rx.getData(format, buf, bufsiz * 8);
anykovar 0:0b36c6926bfd 22 }
anykovar 0:0b36c6926bfd 23
anykovar 0:0b36c6926bfd 24 //Transmitter
anykovar 0:0b36c6926bfd 25 int transmit(RemoteIR::Format format, uint8_t *buf, int bitlength, int timeout = 100)
anykovar 0:0b36c6926bfd 26 {
anykovar 0:0b36c6926bfd 27 int cnt = 0;
anykovar 0:0b36c6926bfd 28 while (ir_tx.getState() != TransmitterIR::Idle) {
anykovar 0:0b36c6926bfd 29 cnt++;
anykovar 0:0b36c6926bfd 30 if (timeout < cnt) {
anykovar 0:0b36c6926bfd 31 return -1;
anykovar 0:0b36c6926bfd 32 }
anykovar 0:0b36c6926bfd 33 }
anykovar 0:0b36c6926bfd 34 return ir_tx.setData(format, buf, bitlength);
anykovar 0:0b36c6926bfd 35 }
anykovar 0:0b36c6926bfd 36
anykovar 1:c81bb0a316d4 37 int main(void) {
anykovar 1:c81bb0a316d4 38
anykovar 1:c81bb0a316d4 39 while (1)
anykovar 0:0b36c6926bfd 40 {
anykovar 1:c81bb0a316d4 41 uint8_t buf1[32];
anykovar 1:c81bb0a316d4 42 uint8_t buf2[32];
anykovar 1:c81bb0a316d4 43 int bitlength1;
anykovar 1:c81bb0a316d4 44 int bitlength2;
anykovar 1:c81bb0a316d4 45 RemoteIR::Format format;
anykovar 1:c81bb0a316d4 46
anykovar 1:c81bb0a316d4 47 memset(buf1, 0x00, sizeof(buf1));
anykovar 1:c81bb0a316d4 48 memset(buf2, 0x00, sizeof(buf2));
anykovar 1:c81bb0a316d4 49
anykovar 1:c81bb0a316d4 50 {
anykovar 1:c81bb0a316d4 51 bitlength1 = receive(&format, buf1, sizeof(buf1));
anykovar 1:c81bb0a316d4 52 if (bitlength1 < 0) {
anykovar 1:c81bb0a316d4 53 continue;
anykovar 1:c81bb0a316d4 54 }
anykovar 1:c81bb0a316d4 55 }
anykovar 1:c81bb0a316d4 56
anykovar 1:c81bb0a316d4 57 #if TEST_LOOP_BACK
anykovar 1:c81bb0a316d4 58 wait_ms(100);
anykovar 0:0b36c6926bfd 59
anykovar 1:c81bb0a316d4 60 {
anykovar 1:c81bb0a316d4 61 bitlength1 = transmit(format, buf1, bitlength1);
anykovar 1:c81bb0a316d4 62 if (bitlength1 < 0) {
anykovar 1:c81bb0a316d4 63 continue;
anykovar 1:c81bb0a316d4 64 }
anykovar 1:c81bb0a316d4 65 }
anykovar 1:c81bb0a316d4 66
anykovar 1:c81bb0a316d4 67 wait_ms(100);
anykovar 0:0b36c6926bfd 68
anykovar 1:c81bb0a316d4 69 {
anykovar 1:c81bb0a316d4 70 bitlength2 = receive(&format, buf2, sizeof(buf2));
anykovar 1:c81bb0a316d4 71 if (bitlength2 < 0) {
anykovar 1:c81bb0a316d4 72 continue;
anykovar 1:c81bb0a316d4 73 }
anykovar 1:c81bb0a316d4 74 }
anykovar 0:0b36c6926bfd 75
anykovar 1:c81bb0a316d4 76 wait_ms(100);
anykovar 1:c81bb0a316d4 77
anykovar 1:c81bb0a316d4 78 {
anykovar 1:c81bb0a316d4 79 for (int i = 0; i < sizeof(buf1); i++) {
anykovar 1:c81bb0a316d4 80 if (buf1[i] != buf2[i]) {
anykovar 1:c81bb0a316d4 81 wait(1);
anykovar 0:0b36c6926bfd 82 continue;
anykovar 0:0b36c6926bfd 83 }
anykovar 0:0b36c6926bfd 84 }
anykovar 1:c81bb0a316d4 85 }
anykovar 0:0b36c6926bfd 86 #endif
anykovar 1:c81bb0a316d4 87 }
anykovar 0:0b36c6926bfd 88 }