4 #include "pirprotocol.h"
5 #include "pirrx51hardware.h"
8 // The "NEC" Protocol is, more or less, followed by the majority of
9 // remotes defined in the LIRC config files, which means it is probably
10 // followed by most of the remotes out there.
12 // Remotes using this protocol seem to use a frequency of 38000 Hz, lead off
13 // each command with a signal that should be unique to the manufacturer,
14 // and mostly define 0s and 1s by the length of time between pulses...
17 class NECProtocol: public PIRProtocol
20 // An NEC protocol will always have differing times for "zero" and "one".
21 // Also, all protocols have some space set between commands. However,
22 // some protocols specify a fixed delay between the end of one
23 // command and the start of the next, and others specify each command be
24 // started at a precise interval (so the spacing between the end of one
25 // and the start of another may vary).
27 // Constructor for standard NEC:
32 // Constructor for non-standard NEC:
40 unsigned int gapSpace,
54 void setRepeatNeedsHeader(
57 void setFullHeadlessRepeat(
60 void setElevenBitToggle(
64 void startSendingCommand(
65 unsigned int threadableID,
69 // First, define what is used to represent 0 and 1:
70 unsigned int zeroPulse;
71 unsigned int zeroSpace;
72 unsigned int onePulse;
73 unsigned int oneSpace;
75 // Some administrative data that most NEC Protocol remotes have:
76 unsigned int headerPulse;
77 unsigned int headerSpace;
80 // A tailing on-request, not followed by a specific off time:
81 unsigned int trailerPulse;
84 // Each remote key has a unique command sequence:
85 // KeyCommandMap commands;
87 // A pulse that means "repeat the last command":
88 unsigned int repeatPulse;
89 unsigned int repeatSpace;
91 bool repeatNeedsHeader; // Put the header ahead of the repeat pulse
92 bool fullHeadlessRepeat; // Repeat full command but without header
93 bool elevenBitToggle; // A few remotes toggle the last eleven bits on repeat
95 int generateStandardCommand(
96 const CommandSequence &bits,
97 PIRRX51Hardware &device);
99 int generateHeadlessCommand(
100 const CommandSequence &bits,
101 PIRRX51Hardware &device);
103 int generateRepeatCommand(
104 PIRRX51Hardware &device);
106 int generateToggledCommand(
107 const CommandSequence &bits,
108 PIRRX51Hardware &device);
111 const CommandSequence &bits,
112 PIRRX51Hardware &device);
115 #endif // NECPROTOCOL_H