Mirror with some correction
Dependencies: mbed FastIO FastPWM USBDevice
IRRemote/IRProtocolList.h@116:7a67265d7c19, 2021-10-01 (annotated)
- Committer:
- arnoz
- Date:
- Fri Oct 01 08:19:46 2021 +0000
- Revision:
- 116:7a67265d7c19
- Parent:
- 77:0b96f6867312
- Correct information regarding your last merge
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
mjr | 77:0b96f6867312 | 1 | // IR Protocol List |
mjr | 77:0b96f6867312 | 2 | // |
mjr | 77:0b96f6867312 | 3 | // This file provides a list of the protocol singletons. It's |
mjr | 77:0b96f6867312 | 4 | // designed to be included multiple times in the compilation. |
mjr | 77:0b96f6867312 | 5 | // On each inclusion, we insert a desired bit of code for each |
mjr | 77:0b96f6867312 | 6 | // of the singletons. We use this to declare all of the singleton |
mjr | 77:0b96f6867312 | 7 | // instances, then to call various methods in all of them. |
mjr | 77:0b96f6867312 | 8 | // |
mjr | 77:0b96f6867312 | 9 | // By convention, the singletons are named s_ClassName. |
mjr | 77:0b96f6867312 | 10 | // |
mjr | 77:0b96f6867312 | 11 | // To use this file, #define ONE of the following macros: |
mjr | 77:0b96f6867312 | 12 | // |
mjr | 77:0b96f6867312 | 13 | // * IR_PROTOCOL_RXTX(className) - define this if you want to include |
mjr | 77:0b96f6867312 | 14 | // expansions for all of the protocol classes, send or receive. This |
mjr | 77:0b96f6867312 | 15 | // includes the dual use classes, the send-only classes, and the |
mjr | 77:0b96f6867312 | 16 | // receive-only classes. |
mjr | 77:0b96f6867312 | 17 | // |
mjr | 77:0b96f6867312 | 18 | // * IR_PROTOCOL_RX(className) - define this if you only want to include |
mjr | 77:0b96f6867312 | 19 | // expansions for RECEIVER protocol classes. This includes dual-purpose |
mjr | 77:0b96f6867312 | 20 | // classes with both sender and receiver, plus the receive-only classes. |
mjr | 77:0b96f6867312 | 21 | // |
mjr | 77:0b96f6867312 | 22 | // * IR_PROTOCOL_TX(className) - define this if you only want to include |
mjr | 77:0b96f6867312 | 23 | // expansions for TRANSMITTER protocol classes. This includes the |
mjr | 77:0b96f6867312 | 24 | // dual-purpose classes with both sender and receiver, plus the |
mjr | 77:0b96f6867312 | 25 | // transmit-only classes. |
mjr | 77:0b96f6867312 | 26 | // |
mjr | 77:0b96f6867312 | 27 | // After #define'ing the desired macro, #include this file. This file |
mjr | 77:0b96f6867312 | 28 | // can be #include'd multiple times in one file for different expansions |
mjr | 77:0b96f6867312 | 29 | // of the list. |
mjr | 77:0b96f6867312 | 30 | |
mjr | 77:0b96f6867312 | 31 | |
mjr | 77:0b96f6867312 | 32 | // Internally, we use the same three macros: |
mjr | 77:0b96f6867312 | 33 | // |
mjr | 77:0b96f6867312 | 34 | // IR_PROTOCOL_RXTX(className) - define a send/receive class |
mjr | 77:0b96f6867312 | 35 | // IR_PROTOCOL_RX(className) - define a send-only class |
mjr | 77:0b96f6867312 | 36 | // IR_PROTOCOL_TX(className) - define a receive-only class |
mjr | 77:0b96f6867312 | 37 | // |
mjr | 77:0b96f6867312 | 38 | // To set things up, see which one the caller defined, and implicitly |
mjr | 77:0b96f6867312 | 39 | // create expansions for the other two. If the caller wants all classes, |
mjr | 77:0b96f6867312 | 40 | // define _RX and _TX to expand to the same thing as _RXTX. If the caller |
mjr | 77:0b96f6867312 | 41 | // only wants senders, define _RXTX to expand to _TX, and define _RX to |
mjr | 77:0b96f6867312 | 42 | // empty. Vice versa with receive-only. |
mjr | 77:0b96f6867312 | 43 | // |
mjr | 77:0b96f6867312 | 44 | #if defined(IR_PROTOCOL_RXTX) |
mjr | 77:0b96f6867312 | 45 | # define IR_PROTOCOL_RX(cls) IR_PROTOCOL_RXTX(cls) |
mjr | 77:0b96f6867312 | 46 | # define IR_PROTOCOL_TX(cls) IR_PROTOCOL_RXTX(cls) |
mjr | 77:0b96f6867312 | 47 | #elif defined(IR_PROTOCOL_RX) |
mjr | 77:0b96f6867312 | 48 | # define IR_PROTOCOL_RXTX(cls) IR_PROTOCOL_RX(cls) |
mjr | 77:0b96f6867312 | 49 | # define IR_PROTOCOL_TX(cls) |
mjr | 77:0b96f6867312 | 50 | #elif defined(IR_PROTOCOL_TX) |
mjr | 77:0b96f6867312 | 51 | # define IR_PROTOCOL_RXTX(cls) IR_PROTOCOL_TX(cls) |
mjr | 77:0b96f6867312 | 52 | # define IR_PROTOCOL_RX(cls) |
mjr | 77:0b96f6867312 | 53 | #endif |
mjr | 77:0b96f6867312 | 54 | |
mjr | 77:0b96f6867312 | 55 | // define the protocol handlers |
mjr | 77:0b96f6867312 | 56 | IR_PROTOCOL_RXTX(IRPNEC_32_48) |
mjr | 77:0b96f6867312 | 57 | IR_PROTOCOL_RXTX(IRPNEC_32x) |
mjr | 77:0b96f6867312 | 58 | IR_PROTOCOL_RXTX(IRPRC5) |
mjr | 77:0b96f6867312 | 59 | IR_PROTOCOL_RXTX(IRPRC6) |
mjr | 77:0b96f6867312 | 60 | IR_PROTOCOL_RXTX(IRPSony) |
mjr | 77:0b96f6867312 | 61 | IR_PROTOCOL_RXTX(IRPDenon) |
mjr | 77:0b96f6867312 | 62 | IR_PROTOCOL_RXTX(IRPKaseikyo) |
mjr | 77:0b96f6867312 | 63 | IR_PROTOCOL_RXTX(IRPSamsung20) |
mjr | 77:0b96f6867312 | 64 | IR_PROTOCOL_RXTX(IRPSamsung36) |
mjr | 77:0b96f6867312 | 65 | IR_PROTOCOL_RXTX(IRPLutron) |
mjr | 77:0b96f6867312 | 66 | IR_PROTOCOL_RXTX(IRPOrtekMCE) |
mjr | 77:0b96f6867312 | 67 | |
mjr | 77:0b96f6867312 | 68 | // clear the macros to make way for future definitions |
mjr | 77:0b96f6867312 | 69 | #undef IR_PROTOCOL_RXTX |
mjr | 77:0b96f6867312 | 70 | #undef IR_PROTOCOL_RX |
mjr | 77:0b96f6867312 | 71 | #undef IR_PROTOCOL_TX |