Minor fixes in LifxLightBulb driver (not fully tested yet)
[iot2.git] / benchmarks / IrrigationController / CameraSmart_Stub.java
1 package IrrigationController;
2
3 import java.io.IOException;
4 import java.util.List;
5 import java.util.ArrayList;
6 import java.util.Arrays;
7 import iotrmi.Java.IoTRMICall;
8 import iotrmi.Java.IoTRMIObject;
9
10 import iotcode.interfaces.*;
11
12 public class CameraSmart_Stub implements CameraSmart {
13
14         private IoTRMICall rmiCall;
15         private String callbackAddress;
16         private int[] ports;
17
18         private final static int objectId = 0;
19         // Callback properties
20         private IoTRMIObject rmiObj;
21         List<CameraCallback> listCallbackObj;
22         private static int objIdCnt = 0;
23         private final static int object0Id = 0; //CameraSmartCallback
24         private static Integer[] object0Permission = { 0 };
25         private static List<Integer> set0Allowed;
26         
27
28         public CameraSmart_Stub(int _port, String _skeletonAddress, String _callbackAddress, int _rev, int[] _ports) throws Exception {
29                 callbackAddress = _callbackAddress;
30                 ports = _ports;
31                 rmiCall = new IoTRMICall(_port, _skeletonAddress, _rev);
32                 set0Allowed = new ArrayList<Integer>(Arrays.asList(object0Permission));
33                 listCallbackObj = new ArrayList<CameraCallback>();
34                 set0Allowed.add(-9999);
35                 ___initCallBack();
36         }
37
38         public int getMaxFPS() {
39                 int methodId = 8;
40                 Class<?> retType = int.class;
41                 Class<?>[] paramCls = new Class<?>[] {  };
42                 Object[] paramObj = new Object[] {  };
43                 Object retObj = rmiCall.remoteCall(objectId, methodId, retType, null, paramCls, paramObj);
44                 return (int)retObj;
45         }
46
47         public boolean setFPS(int _fps) {
48                 int methodId = 7;
49                 Class<?> retType = boolean.class;
50                 Class<?>[] paramCls = new Class<?>[] { int.class };
51                 Object[] paramObj = new Object[] { _fps };
52                 Object retObj = rmiCall.remoteCall(objectId, methodId, retType, null, paramCls, paramObj);
53                 return (boolean)retObj;
54         }
55
56         public int getMinFPS() {
57                 int methodId = 9;
58                 Class<?> retType = int.class;
59                 Class<?>[] paramCls = new Class<?>[] {  };
60                 Object[] paramObj = new Object[] {  };
61                 Object retObj = rmiCall.remoteCall(objectId, methodId, retType, null, paramCls, paramObj);
62                 return (int)retObj;
63         }
64
65         public boolean setResolution(Resolution _res) {
66                 int methodId = 6;
67                 Class<?> retType = boolean.class;
68                 int paramEnum0[] = new int[1];
69                 paramEnum0[0] = _res.ordinal();
70                 Class<?>[] paramCls = new Class<?>[] { int[].class };
71                 Object[] paramObj = new Object[] { paramEnum0 };
72                 Object retObj = rmiCall.remoteCall(objectId, methodId, retType, null, paramCls, paramObj);
73                 return (boolean)retObj;
74         }
75
76         public void stop() {
77                 int methodId = 2;
78                 Class<?> retType = void.class;
79                 Class<?>[] paramCls = new Class<?>[] {  };
80                 Object[] paramObj = new Object[] {  };
81                 rmiCall.remoteCall(objectId, methodId, retType, null, paramCls, paramObj);
82         }
83
84         public void start() {
85                 int methodId = 1;
86                 Class<?> retType = void.class;
87                 Class<?>[] paramCls = new Class<?>[] {  };
88                 Object[] paramObj = new Object[] {  };
89                 rmiCall.remoteCall(objectId, methodId, retType, null, paramCls, paramObj);
90         }
91
92         public long getTimestamp() {
93                 int methodId = 4;
94                 Class<?> retType = long.class;
95                 Class<?>[] paramCls = new Class<?>[] {  };
96                 Object[] paramObj = new Object[] {  };
97                 Object retObj = rmiCall.remoteCall(objectId, methodId, retType, null, paramCls, paramObj);
98                 return (long)retObj;
99         }
100
101         public byte[] getLatestFrame() {
102                 int methodId = 3;
103                 Class<?> retType = byte[].class;
104                 Class<?>[] paramCls = new Class<?>[] {  };
105                 Object[] paramObj = new Object[] {  };
106                 Object retObj = rmiCall.remoteCall(objectId, methodId, retType, null, paramCls, paramObj);
107                 return (byte[])retObj;
108         }
109
110         public void init() {
111                 int methodId = 0;
112                 Class<?> retType = void.class;
113                 Class<?>[] paramCls = new Class<?>[] {  };
114                 Object[] paramObj = new Object[] {  };
115                 rmiCall.remoteCall(objectId, methodId, retType, null, paramCls, paramObj);
116         }
117
118         public void registerCallback(CameraCallback _callbackTo) {
119                 try {
120                         CameraCallback_CallbackSkeleton skel0 = new CameraCallback_CallbackSkeleton(_callbackTo, callbackAddress, objIdCnt++);
121                         listCallbackObj.add(skel0);
122                 } catch (Exception ex) {
123                         ex.printStackTrace();
124                         throw new Error("Exception when generating skeleton objects!");
125                 }
126
127                 int methodId = 10;
128                 Class<?> retType = void.class;
129                 Class<?>[] paramCls = new Class<?>[] { int.class };
130                 Object[] paramObj = new Object[] { new Integer(1) };
131                 rmiCall.remoteCall(objectId, methodId, retType, null, paramCls, paramObj);
132         }
133
134         public void ___initCallBack() {
135                 Thread thread = new Thread() {
136                         public void run() {
137                                 try {
138                                         rmiObj = new IoTRMIObject(ports[0]);
139                                         while (true) {
140                                                 byte[] method = rmiObj.getMethodBytes();
141                                                 int objId = IoTRMIObject.getObjectId(method);
142                                                 CameraCallback_CallbackSkeleton skel = (CameraCallback_CallbackSkeleton) listCallbackObj.get(objId);
143                                                 if (skel != null) {
144                                                         int methodId = IoTRMIObject.getMethodId(method);
145                                                         if (!set0Allowed.contains(methodId)) {
146                                                                 throw new Error("Callback object for CameraCallback is not allowed to access method: " + methodId);
147                                                         }
148                                                         skel.invokeMethod(rmiObj);
149                                                 } else {
150                                                         throw new Error("CameraCallback: Object with Id " + objId + " not found!");
151                                                 }
152                                         }
153                                 } catch (Exception ex) {
154                                         ex.printStackTrace();
155                                         throw new Error("Error instantiating class CameraCallback_CallbackSkeleton!");
156                                 }
157                         }
158                 };
159                 thread.start();
160
161                 int methodId = -9998;
162                 Class<?> retType = void.class;
163                 Class<?>[] paramCls = new Class<?>[] { int[].class, String.class, int.class };
164                 Object[] paramObj = new Object[] { ports, callbackAddress, 0 };
165                 rmiCall.remoteCall(objectId, methodId, retType, null, paramCls, paramObj);
166         }
167
168         public List<Resolution> getSupportedResolutions() {
169                 int methodId = 5;
170                 Class<?> retType = int[].class;
171                 Class<?>[] paramCls = new Class<?>[] {  };
172                 Object[] paramObj = new Object[] {  };
173                 Object retObj = rmiCall.remoteCall(objectId, methodId, retType, null, paramCls, paramObj);
174                 int[] retEnum = (int[]) retObj;
175                 Resolution[] enumVals = Resolution.values();
176                 int retLen = retEnum.length;
177                 List<Resolution> enumRetVal = new ArrayList<Resolution>();
178                 for (int i = 0; i < retLen; i++) {
179                         enumRetVal.add(enumVals[retEnum[i]]);
180                 }
181                 return enumRetVal;
182         }
183
184 }