4 // The generic remote controller.
8 #include "pirkeynames.h"
9 //#include "pirdevice.h"
14 // We'll define a maximum number of repetitions, regardless of how long the
15 // user presses the button. (This is just in case we miss the point at which
16 // he stops pressing it...) 500 should be plenty.
17 #define MAX_REPEAT_COUNT 500
19 typedef std::deque<bool> CommandSequence;
21 // I'll go ahead and use associative arrays to build up lists of keycodes.
22 typedef std::map<int, CommandSequence> KeycodeCollection;
25 // Right now, the only reason for this object to inherit from QObject is
26 // so it can participate in Qt-style threading. Note that it has no
27 // event loop, and no access to the GUI, so don't go trying to communicate
28 // with the user here...
29 class PIRProtocol: public QObject
45 // A special addKey used for Sony's SIRC protocol:
48 unsigned int addressData,
50 unsigned int commandData);
54 unsigned int secondaryAddressData,
55 unsigned int primaryAddressData,
56 unsigned int commandData);
60 unsigned int addressData,
61 unsigned int commandData);
63 void setCarrierFrequency(
69 void setMinimumRepetitions(
81 virtual void startSendingCommand(
82 unsigned int threadableID,
83 PIRKeyName command) = 0;
87 const char *errString);
90 bool isCommandSupported(
93 void clearRepeatFlag();
94 bool checkRepeatFlag();
96 unsigned int carrierFrequency;
97 unsigned int dutyCycle;
99 // "appendToBitSeq" really doesn't belong in this class...
101 CommandSequence &sequence,
103 int significantBits);
105 KeycodeCollection keycodes;
107 // A sleep function for all protocols:
108 void sleepUntilRepeat(
109 int commandDuration);
111 // The "gap" parameter from LIRC. If the commands are "variable-length",
112 // this indicates the amount of time between the last pulse of one
113 // command and the first pulse of the next. If "constant-length", it is
114 // the time between the _first_ pulse of one command and the first pulse
117 bool isConstantLength;
120 // More administrative data wrapped around the actual command:
121 CommandSequence preData;
122 CommandSequence postData;
124 // Some remotes require a minimum number of repetitions:
125 // Note: thinking about removing this -- don't know if it is needed
126 int minimumRepetitions;
131 #endif // PIRPROTOCOL_H