Advanced Settings Panel
[pierogi] / pirkeysetmetadata.h
1 #ifndef PIRKEYSETMETADATA_H
2 #define PIRKEYSETMETADATA_H
3
4 #include "pirkeynames.h"
5 #include "pirmakenames.h"
6 //#include "pirdevicetypenames.h"
7
8 #include "pirdeviceinfo.h"
9
10 #include <map>
11 //#include <list>
12
13 class QThread;
14 class QObject;
15
16 class PIRSelectDeviceForm;
17 class PIRProtocol;
18
19 typedef std::map<PIRKeyName, const char *> KeyCollection;
20
21
22 class PIRKeysetMetaData
23 {
24 public:
25   PIRKeysetMetaData(
26     const char *keysetName,
27     PIRMakeName make,
28     unsigned int index);
29
30   ~PIRKeysetMetaData();
31
32   bool hasKey(
33     PIRKeyName name) const;
34
35   unsigned int getID() const;
36
37   PIRMakeName getMake() const;
38
39   const char *getKeysetName() const;
40
41   unsigned int getCarrierFrequency() const;
42
43   void setCarrierFrequency(
44     unsigned int carrierFrequency);
45
46   unsigned int getDutyCycle() const;
47
48   void setDutyCycle(
49     unsigned int dutyCycle);
50
51   virtual void populateProtocol(
52     QObject *guiObject) = 0;
53
54   bool clearProtocol();
55
56   void moveToThread(
57     QThread *thread);
58
59   static void populateDevices(
60     PIRSelectDeviceForm *sdf);
61
62 protected:
63   void addControlledDevice(
64     PIRMakeName make,
65     const char *model,
66     PIRDeviceTypeName type);
67
68   void addDeviceType(
69     PIRDeviceTypeName n);
70
71   void addKey(
72     const char *name,
73     PIRKeyName key,
74     unsigned long data,
75     unsigned int size);
76
77   // Special helper methods for SIRC keys:
78   void addSIRC12Key(
79     const char *name,
80     PIRKeyName key,
81     unsigned int addressData,
82     unsigned int commandData);
83
84   void addSIRC15Key(
85     const char *name,
86     PIRKeyName key,
87     unsigned int addressData,
88     unsigned int commandData);
89
90   void addSIRC20Key(
91     const char *name,
92     PIRKeyName key,
93     unsigned int secondaryAddressData,
94     unsigned int primaryAddressData,
95     unsigned int commandData);
96
97   // Helper method for Sharp keys:
98   void addSharpKey(
99     const char *name,
100     PIRKeyName key,
101     unsigned int addressData,
102     unsigned int commandData);
103
104   void addNECKey(
105     const char *name,
106     PIRKeyName key,
107     unsigned int addressData,
108     unsigned int commandData);
109
110   void addPanOldKey(
111     const char *name,
112     PIRKeyName key,
113     unsigned int addressData,
114     unsigned int commandData);
115
116   void addPioneerKey(
117     const char *name,
118     PIRKeyName key,
119     unsigned int addressOne,
120     unsigned int commandOne,
121     unsigned int addressTwo,
122     unsigned int commandTwo);
123
124 /*
125   void addRCAKey(
126     const char *name,
127     PIRKeyName key,
128     unsigned int addressData,
129     unsigned int commandData);
130 */
131
132   void addKaseikyoKey(
133     const char *name,
134     PIRKeyName key,
135     unsigned int addressData,
136     unsigned int commandData);
137
138   void addDishKey(
139     const char *name,
140     PIRKeyName key,
141     unsigned int firstCommand,
142     unsigned int secondCommand);
143
144   void addXMPKey(
145     const char *name,
146     PIRKeyName key,
147     unsigned int firstCommand,
148     unsigned int secondCommand);
149
150   void setPreData(
151     unsigned long data,
152     unsigned int bits);
153
154   void setPostData(
155     unsigned long data,
156     unsigned int bits);
157
158   void setKeysetName(
159     const char *name);
160
161   KeyCollection keys;
162
163   PIRProtocol *threadableProtocol;
164   unsigned int index;
165
166 private:
167   const char *keysetName;
168   PIRMakeName make;
169   static PIRDeviceCollection controlledDevices;
170 //  PIRDeviceTypeCollection deviceTypes;
171 };
172
173
174 #endif // PIRKEYSETMETADATA_H