New Keysets
[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   virtual void populateProtocol(
42     QObject *guiObject) = 0;
43
44   void clearProtocol();
45
46   void moveToThread(
47     QThread *thread);
48
49   static void populateDevices(
50     PIRSelectDeviceForm *sdf);
51
52 protected:
53   void addControlledDevice(
54     PIRMakeName make,
55     const char *model,
56     PIRDeviceTypeName type);
57
58   void addDeviceType(
59     PIRDeviceTypeName n);
60
61   void addKey(
62     const char *name,
63     PIRKeyName key,
64     unsigned long data,
65     unsigned int size);
66
67   // Special helper methods for SIRC keys:
68   void addSIRC12Key(
69     const char *name,
70     PIRKeyName key,
71     unsigned int addressData,
72     unsigned int commandData);
73
74   void addSIRC15Key(
75     const char *name,
76     PIRKeyName key,
77     unsigned int addressData,
78     unsigned int commandData);
79
80   void addSIRC20Key(
81     const char *name,
82     PIRKeyName key,
83     unsigned int secondaryAddressData,
84     unsigned int primaryAddressData,
85     unsigned int commandData);
86
87   // Helper method for Sharp keys:
88   void addSharpKey(
89     const char *name,
90     PIRKeyName key,
91     unsigned int addressData,
92     unsigned int commandData);
93
94   void addNECKey(
95     const char *name,
96     PIRKeyName key,
97     unsigned int addressData,
98     unsigned int commandData);
99
100   void addPanOldKey(
101     const char *name,
102     PIRKeyName key,
103     unsigned int addressData,
104     unsigned int commandData);
105
106   void addPioneerKey(
107     const char *name,
108     PIRKeyName key,
109     unsigned int addressOne,
110     unsigned int commandOne,
111     unsigned int addressTwo,
112     unsigned int commandTwo);
113
114 /*
115   void addRCAKey(
116     const char *name,
117     PIRKeyName key,
118     unsigned int addressData,
119     unsigned int commandData);
120 */
121
122   void addKaseikyoKey(
123     const char *name,
124     PIRKeyName key,
125     unsigned int addressData,
126     unsigned int commandData);
127
128   void addDishKey(
129     const char *name,
130     PIRKeyName key,
131     unsigned int firstCommand,
132     unsigned int secondCommand);
133
134   void addXMPKey(
135     const char *name,
136     PIRKeyName key,
137     unsigned int firstCommand,
138     unsigned int secondCommand);
139
140   void setPreData(
141     unsigned long data,
142     unsigned int bits);
143
144   void setPostData(
145     unsigned long data,
146     unsigned int bits);
147
148   void setKeysetName(
149     const char *name);
150
151   KeyCollection keys;
152
153   PIRProtocol *threadableProtocol;
154   unsigned int index;
155
156 private:
157   const char *keysetName;
158   PIRMakeName make;
159   static PIRDeviceCollection controlledDevices;
160 //  PIRDeviceTypeCollection deviceTypes;
161 };
162
163
164 #endif // PIRKEYSETMETADATA_H