1 package HomeSecurityController;
3 import java.io.IOException;
5 import java.util.ArrayList;
6 import java.util.Arrays;
8 import java.util.HashMap;
9 import java.util.concurrent.atomic.AtomicBoolean;
10 import iotrmi.Java.IoTRMIComm;
11 import iotrmi.Java.IoTRMICommClient;
12 import iotrmi.Java.IoTRMICommServer;
13 import iotrmi.Java.IoTRMIUtil;
15 import iotcode.interfaces.*;
17 public class SmartthingsActuatorSmart_Stub implements SmartthingsActuatorSmart {
19 private int objectId = 1;
20 private IoTRMIComm rmiComm;
21 // Synchronization variables
22 private AtomicBoolean retValueReceived5 = new AtomicBoolean(false);
23 private AtomicBoolean retValueReceived7 = new AtomicBoolean(false);
24 private AtomicBoolean retValueReceived4 = new AtomicBoolean(false);
25 private AtomicBoolean retValueReceived3 = new AtomicBoolean(false);
26 private AtomicBoolean retValueReceived1 = new AtomicBoolean(false);
29 public SmartthingsActuatorSmart_Stub(int _localPortSend, int _localPortRecv, int _portSend, int _portRecv, String _skeletonAddress, int _rev) throws Exception {
30 if (_localPortSend != 0 && _localPortRecv != 0) {
31 rmiComm = new IoTRMICommClient(_localPortSend, _localPortRecv, _portSend, _portRecv, _skeletonAddress, _rev);
34 rmiComm = new IoTRMICommClient(_portSend, _portRecv, _skeletonAddress, _rev);
36 rmiComm.registerStub(objectId, 5, retValueReceived5);
37 rmiComm.registerStub(objectId, 7, retValueReceived7);
38 rmiComm.registerStub(objectId, 4, retValueReceived4);
39 rmiComm.registerStub(objectId, 3, retValueReceived3);
40 rmiComm.registerStub(objectId, 1, retValueReceived1);
41 IoTRMIUtil.mapStub.put(objectId, this);
44 public SmartthingsActuatorSmart_Stub(IoTRMIComm _rmiComm, int _objectId) throws Exception {
47 rmiComm.registerStub(objectId, 5, retValueReceived5);
48 rmiComm.registerStub(objectId, 7, retValueReceived7);
49 rmiComm.registerStub(objectId, 4, retValueReceived4);
50 rmiComm.registerStub(objectId, 3, retValueReceived3);
51 rmiComm.registerStub(objectId, 1, retValueReceived1);
54 public long getTimestampOfLastReading() {
56 Class<?> retType = long.class;
57 Class<?>[] paramCls = new Class<?>[] { };
58 Object[] paramObj = new Object[] { };
59 rmiComm.remoteCall(objectId, methodId, paramCls, paramObj);
60 // Waiting for return value
61 while (!retValueReceived5.get());
62 Object retObj = rmiComm.getReturnValue(retType, null);
63 retValueReceived5.set(false);
64 rmiComm.setGetReturnBytes();
71 Class<?> retType = int.class;
72 Class<?>[] paramCls = new Class<?>[] { };
73 Object[] paramObj = new Object[] { };
74 rmiComm.remoteCall(objectId, methodId, paramCls, paramObj);
75 // Waiting for return value
76 while (!retValueReceived7.get());
77 Object retObj = rmiComm.getReturnValue(retType, null);
78 retValueReceived7.set(false);
79 rmiComm.setGetReturnBytes();
84 public void registerCallback(SmartthingsActuatorCallback _callbackTo) {
85 int[] objIdSent0 = new int[1];
87 if (!IoTRMIUtil.mapSkel.containsKey(_callbackTo)) {
88 int newObjIdSent = rmiComm.getObjectIdCounter();
89 objIdSent0[0] = newObjIdSent;
90 rmiComm.decrementObjectIdCounter();
91 SmartthingsActuatorCallback_Skeleton skel0 = new SmartthingsActuatorCallback_Skeleton(_callbackTo, rmiComm, newObjIdSent);
92 IoTRMIUtil.mapSkel.put(_callbackTo, skel0);
93 IoTRMIUtil.mapSkelId.put(_callbackTo, newObjIdSent);
94 Thread thread = new Thread() {
97 skel0.___waitRequestInvokeMethod();
98 } catch (Exception ex) {
100 throw new Error("Exception when trying to run ___waitRequestInvokeMethod() for SmartthingsActuatorCallback_Skeleton!");
105 while(!skel0.didAlreadyInitWaitInvoke());
109 int newObjIdSent = IoTRMIUtil.mapSkelId.get(_callbackTo);
110 objIdSent0[0] = newObjIdSent;
112 } catch (Exception ex) {
113 ex.printStackTrace();
114 throw new Error("Exception when generating skeleton objects!");
118 Class<?> retType = void.class;
119 Class<?>[] paramCls = new Class<?>[] { int[].class };
120 Object[] paramObj = new Object[] { objIdSent0 };
121 rmiComm.remoteCall(objectId, methodId, paramCls, paramObj);
124 public void requestStatus() {
126 Class<?> retType = void.class;
127 Class<?>[] paramCls = new Class<?>[] { };
128 Object[] paramObj = new Object[] { };
129 rmiComm.remoteCall(objectId, methodId, paramCls, paramObj);
132 public void setId(int id) {
134 Class<?> retType = void.class;
135 Class<?>[] paramCls = new Class<?>[] { int.class };
136 Object[] paramObj = new Object[] { id };
137 rmiComm.remoteCall(objectId, methodId, paramCls, paramObj);
140 public boolean isActiveStatus() {
142 Class<?> retType = boolean.class;
143 Class<?>[] paramCls = new Class<?>[] { };
144 Object[] paramObj = new Object[] { };
145 rmiComm.remoteCall(objectId, methodId, paramCls, paramObj);
146 // Waiting for return value
147 while (!retValueReceived4.get());
148 Object retObj = rmiComm.getReturnValue(retType, null);
149 retValueReceived4.set(false);
150 rmiComm.setGetReturnBytes();
152 return (boolean)retObj;
155 public int getStatus() {
157 Class<?> retType = int.class;
158 Class<?>[] paramCls = new Class<?>[] { };
159 Object[] paramObj = new Object[] { };
160 rmiComm.remoteCall(objectId, methodId, paramCls, paramObj);
161 // Waiting for return value
162 while (!retValueReceived3.get());
163 Object retObj = rmiComm.getReturnValue(retType, null);
164 retValueReceived3.set(false);
165 rmiComm.setGetReturnBytes();
172 Class<?> retType = void.class;
173 Class<?>[] paramCls = new Class<?>[] { };
174 Object[] paramObj = new Object[] { };
175 rmiComm.remoteCall(objectId, methodId, paramCls, paramObj);
178 public boolean actuate(int value) {
180 Class<?> retType = boolean.class;
181 Class<?>[] paramCls = new Class<?>[] { int.class };
182 Object[] paramObj = new Object[] { value };
183 rmiComm.remoteCall(objectId, methodId, paramCls, paramObj);
184 // Waiting for return value
185 while (!retValueReceived1.get());
186 Object retObj = rmiComm.getReturnValue(retType, null);
187 retValueReceived1.set(false);
188 rmiComm.setGetReturnBytes();
190 return (boolean)retObj;