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