1 #ifndef _LIGHTBULB_SKELETON_HPP__
2 #define _LIGHTBULB_SKELETON_HPP__
5 #include "LightBulb.hpp"
9 #include "IoTRMICall.hpp"
10 #include "IoTRMIObject.hpp"
14 class LightBulb_Skeleton : public LightBulb
20 string callbackAddress;
23 const static int object0Id = 0; //LightBulbSmart
24 static set<int> set0Allowed;
29 LightBulb_Skeleton(LightBulb *_mainObj, string _callbackAddress, int _port) {
30 bool _bResult = false;
32 callbackAddress = _callbackAddress;
35 string file = "LightBulb_Skeleton_cpp" + to_string(i) + ".log";
36 while (ifstream(file.c_str())) {
38 file = "LightBulb_Skeleton_cpp" + to_string(i) + ".log";
41 log << "Callback address: " << callbackAddress << endl;
42 log << "Port: " << _port << endl;
43 rmiObj = new IoTRMIObject(_port, &_bResult);
44 log << "Established connection with slave! Wait request invoke now..." << endl;
45 ___waitRequestInvokeMethod();
48 ~LightBulb_Skeleton() {
68 return mainObj->getState();
71 void setColor(double _hue, double _saturation, double _brightness) {
72 mainObj->setColor(_hue, _saturation, _brightness);
75 void setTemperature(int _temperature) {
76 mainObj->setTemperature(_temperature);
79 double getBrightness() {
80 return mainObj->getBrightness();
84 return mainObj->getHue();
87 double getSaturation() {
88 return mainObj->getSaturation();
91 int getTemperature() {
92 return mainObj->getTemperature();
95 double getBrightnessRangeLowerBound() {
96 return mainObj->getBrightnessRangeLowerBound();
99 double getBrightnessRangeUpperBound() {
100 return mainObj->getBrightnessRangeUpperBound();
103 double getHueRangeLowerBound() {
104 return mainObj->getHueRangeLowerBound();
107 double getHueRangeUpperBound() {
108 return mainObj->getHueRangeUpperBound();
111 double getSaturationRangeLowerBound() {
112 return mainObj->getSaturationRangeLowerBound();
115 double getSaturationRangeUpperBound() {
116 return mainObj->getSaturationRangeUpperBound();
119 int getTemperatureRangeLowerBound() {
120 return mainObj->getTemperatureRangeLowerBound();
123 int getTemperatureRangeUpperBound() {
124 return mainObj->getTemperatureRangeUpperBound();
128 string paramCls[] = { };
130 void* paramObj[] = { };
131 rmiObj->getMethodParams(paramCls, numParam, paramObj);
136 string paramCls[] = { };
138 void* paramObj[] = { };
139 rmiObj->getMethodParams(paramCls, numParam, paramObj);
144 string paramCls[] = { };
146 void* paramObj[] = { };
147 rmiObj->getMethodParams(paramCls, numParam, paramObj);
152 string paramCls[] = { };
154 void* paramObj[] = { };
155 rmiObj->getMethodParams(paramCls, numParam, paramObj);
156 bool retVal = getState();
157 void* retObj = &retVal;
158 rmiObj->sendReturnObj(retObj, "boolean");
162 string paramCls[] = { "double", "double", "double" };
167 void* paramObj[] = { &_hue, &_saturation, &_brightness };
168 rmiObj->getMethodParams(paramCls, numParam, paramObj);
169 setColor(_hue, _saturation, _brightness);
172 void ___setTemperature() {
173 string paramCls[] = { "int" };
176 void* paramObj[] = { &_temperature };
177 rmiObj->getMethodParams(paramCls, numParam, paramObj);
178 setTemperature(_temperature);
181 void ___getBrightness() {
182 string paramCls[] = { };
184 void* paramObj[] = { };
185 rmiObj->getMethodParams(paramCls, numParam, paramObj);
186 double retVal = getBrightness();
187 void* retObj = &retVal;
188 rmiObj->sendReturnObj(retObj, "double");
192 string paramCls[] = { };
194 void* paramObj[] = { };
195 rmiObj->getMethodParams(paramCls, numParam, paramObj);
196 double retVal = getHue();
197 void* retObj = &retVal;
198 rmiObj->sendReturnObj(retObj, "double");
201 void ___getSaturation() {
202 string paramCls[] = { };
204 void* paramObj[] = { };
205 rmiObj->getMethodParams(paramCls, numParam, paramObj);
206 double retVal = getSaturation();
207 void* retObj = &retVal;
208 rmiObj->sendReturnObj(retObj, "double");
211 void ___getTemperature() {
212 string paramCls[] = { };
214 void* paramObj[] = { };
215 rmiObj->getMethodParams(paramCls, numParam, paramObj);
216 int retVal = getTemperature();
217 void* retObj = &retVal;
218 rmiObj->sendReturnObj(retObj, "int");
221 void ___getBrightnessRangeLowerBound() {
222 string paramCls[] = { };
224 void* paramObj[] = { };
225 rmiObj->getMethodParams(paramCls, numParam, paramObj);
226 double retVal = getBrightnessRangeLowerBound();
227 void* retObj = &retVal;
228 rmiObj->sendReturnObj(retObj, "double");
231 void ___getBrightnessRangeUpperBound() {
232 string paramCls[] = { };
234 void* paramObj[] = { };
235 rmiObj->getMethodParams(paramCls, numParam, paramObj);
236 double retVal = getBrightnessRangeUpperBound();
237 void* retObj = &retVal;
238 rmiObj->sendReturnObj(retObj, "double");
241 void ___getHueRangeLowerBound() {
242 string paramCls[] = { };
244 void* paramObj[] = { };
245 rmiObj->getMethodParams(paramCls, numParam, paramObj);
246 double retVal = getHueRangeLowerBound();
247 void* retObj = &retVal;
248 rmiObj->sendReturnObj(retObj, "double");
251 void ___getHueRangeUpperBound() {
252 string paramCls[] = { };
254 void* paramObj[] = { };
255 rmiObj->getMethodParams(paramCls, numParam, paramObj);
256 double retVal = getHueRangeUpperBound();
257 void* retObj = &retVal;
258 rmiObj->sendReturnObj(retObj, "double");
261 void ___getSaturationRangeLowerBound() {
262 string paramCls[] = { };
264 void* paramObj[] = { };
265 rmiObj->getMethodParams(paramCls, numParam, paramObj);
266 double retVal = getSaturationRangeLowerBound();
267 void* retObj = &retVal;
268 rmiObj->sendReturnObj(retObj, "double");
271 void ___getSaturationRangeUpperBound() {
272 string paramCls[] = { };
274 void* paramObj[] = { };
275 rmiObj->getMethodParams(paramCls, numParam, paramObj);
276 double retVal = getSaturationRangeUpperBound();
277 void* retObj = &retVal;
278 rmiObj->sendReturnObj(retObj, "double");
281 void ___getTemperatureRangeLowerBound() {
282 string paramCls[] = { };
284 void* paramObj[] = { };
285 rmiObj->getMethodParams(paramCls, numParam, paramObj);
286 int retVal = getTemperatureRangeLowerBound();
287 void* retObj = &retVal;
288 rmiObj->sendReturnObj(retObj, "int");
291 void ___getTemperatureRangeUpperBound() {
292 string paramCls[] = { };
294 void* paramObj[] = { };
295 rmiObj->getMethodParams(paramCls, numParam, paramObj);
296 int retVal = getTemperatureRangeUpperBound();
297 void* retObj = &retVal;
298 rmiObj->sendReturnObj(retObj, "int");
301 void ___waitRequestInvokeMethod() {
303 log << "Getting into the while loop" << endl;
304 rmiObj->getMethodBytes();
305 log << "Getting method bytes now" << endl;
306 log << "Method len: " << rmiObj->getMethodBytesLen() << endl;
307 int _objectId = rmiObj->getObjectId();
308 log << "Object Id: " << _objectId << endl;
309 int methodId = rmiObj->getMethodId();
310 log << "Method Id: " << methodId << endl;
311 if (_objectId == object0Id) {
312 if (set0Allowed.find(methodId) == set0Allowed.end()) {
313 cerr << "Object with object Id: " << _objectId << " is not allowed to access method: " << methodId << endl;
318 cerr << "Object Id: " << _objectId << " not recognized!" << endl;
322 case 0: ___init(); break;
323 case 1: ___turnOff(); break;
324 case 2: ___turnOn(); break;
325 case 3: ___getState(); break;
326 case 4: ___setColor(); break;
327 case 5: ___setTemperature(); break;
328 case 6: ___getBrightness(); break;
329 case 7: ___getHue(); break;
330 case 8: ___getSaturation(); break;
331 case 9: ___getTemperature(); break;
332 case 10: ___getBrightnessRangeLowerBound(); break;
333 case 11: ___getBrightnessRangeUpperBound(); break;
334 case 12: ___getHueRangeLowerBound(); break;
335 case 13: ___getHueRangeUpperBound(); break;
336 case 14: ___getSaturationRangeLowerBound(); break;
337 case 15: ___getSaturationRangeUpperBound(); break;
338 case 16: ___getTemperatureRangeLowerBound(); break;
339 case 17: ___getTemperatureRangeUpperBound(); break;
341 cerr << "Method Id " << methodId << " not recognized!" << endl;
349 set<int> LightBulb_Skeleton::set0Allowed { 2, 10, 1, 3, 11, 8, 12, 7, 13, 9, 6, 16, 17, 4, 0, 14, 15, 5 };