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: mbed FastIO FastPWM USBDevice
Fork of Pinscape_Controller by
IRRemote/IRProtocolList.h@77:0b96f6867312, 2017-03-17 (annotated)
- Committer:
- mjr
- Date:
- Fri Mar 17 22:02:08 2017 +0000
- Revision:
- 77:0b96f6867312
New memory pool management; keeping old ones as #ifdefs for now for reference.
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 | 
