![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
IR
main.cpp@1:c81bb0a316d4, 2017-01-10 (annotated)
- Committer:
- anykovar
- Date:
- Tue Jan 10 22:23:27 2017 +0000
- Revision:
- 1:c81bb0a316d4
- Parent:
- 0:0b36c6926bfd
IR;
Who changed what in which revision?
User | Revision | Line number | New 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 | } |