1 package SpeakerController;
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 SpeakerSmart_Stub implements SpeakerSmart {
19 private int objectId = 1;
20 private IoTRMIComm rmiComm;
21 // Synchronization variables
22 private AtomicBoolean retValueReceived6 = new AtomicBoolean(false);
23 private AtomicBoolean retValueReceived2 = new AtomicBoolean(false);
24 private AtomicBoolean retValueReceived1 = new AtomicBoolean(false);
25 private AtomicBoolean retValueReceived3 = new AtomicBoolean(false);
26 private AtomicBoolean retValueReceived4 = new AtomicBoolean(false);
27 private AtomicBoolean retValueReceived5 = new AtomicBoolean(false);
30 public SpeakerSmart_Stub(int _localPortSend, int _localPortRecv, int _portSend, int _portRecv, String _skeletonAddress, int _rev) throws Exception {
31 if (_localPortSend != 0 && _localPortRecv != 0) {
32 rmiComm = new IoTRMICommClient(_localPortSend, _localPortRecv, _portSend, _portRecv, _skeletonAddress, _rev);
35 rmiComm = new IoTRMICommClient(_portSend, _portRecv, _skeletonAddress, _rev);
37 rmiComm.registerStub(objectId, 6, retValueReceived6);
38 rmiComm.registerStub(objectId, 2, retValueReceived2);
39 rmiComm.registerStub(objectId, 1, retValueReceived1);
40 rmiComm.registerStub(objectId, 3, retValueReceived3);
41 rmiComm.registerStub(objectId, 4, retValueReceived4);
42 rmiComm.registerStub(objectId, 5, retValueReceived5);
43 IoTRMIUtil.mapStub.put(objectId, this);
46 public SpeakerSmart_Stub(IoTRMIComm _rmiComm, int _objectId) throws Exception {
49 rmiComm.registerStub(objectId, 6, retValueReceived6);
50 rmiComm.registerStub(objectId, 2, retValueReceived2);
51 rmiComm.registerStub(objectId, 1, retValueReceived1);
52 rmiComm.registerStub(objectId, 3, retValueReceived3);
53 rmiComm.registerStub(objectId, 4, retValueReceived4);
54 rmiComm.registerStub(objectId, 5, retValueReceived5);
57 public int getPosition() {
59 Class<?> retType = int.class;
60 Class<?>[] paramCls = new Class<?>[] { };
61 Object[] paramObj = new Object[] { };
62 rmiComm.remoteCall(objectId, methodId, paramCls, paramObj);
63 // Waiting for return value
64 while (!retValueReceived6.get());
65 Object retObj = rmiComm.getReturnValue(retType, null);
66 retValueReceived6.set(false);
67 rmiComm.setGetReturnBytes();
72 public boolean stopPlayback() {
74 Class<?> retType = boolean.class;
75 Class<?>[] paramCls = new Class<?>[] { };
76 Object[] paramObj = new Object[] { };
77 rmiComm.remoteCall(objectId, methodId, paramCls, paramObj);
78 // Waiting for return value
79 while (!retValueReceived2.get());
80 Object retObj = rmiComm.getReturnValue(retType, null);
81 retValueReceived2.set(false);
82 rmiComm.setGetReturnBytes();
84 return (boolean)retObj;
87 public void clearData() {
89 Class<?> retType = void.class;
90 Class<?>[] paramCls = new Class<?>[] { };
91 Object[] paramObj = new Object[] { };
92 rmiComm.remoteCall(objectId, methodId, paramCls, paramObj);
95 public boolean startPlayback() {
97 Class<?> retType = boolean.class;
98 Class<?>[] paramCls = new Class<?>[] { };
99 Object[] paramObj = new Object[] { };
100 rmiComm.remoteCall(objectId, methodId, paramCls, paramObj);
101 // Waiting for return value
102 while (!retValueReceived1.get());
103 Object retObj = rmiComm.getReturnValue(retType, null);
104 retValueReceived1.set(false);
105 rmiComm.setGetReturnBytes();
107 return (boolean)retObj;
110 public boolean getPlaybackState() {
112 Class<?> retType = boolean.class;
113 Class<?>[] paramCls = new Class<?>[] { };
114 Object[] paramObj = new Object[] { };
115 rmiComm.remoteCall(objectId, methodId, paramCls, paramObj);
116 // Waiting for return value
117 while (!retValueReceived3.get());
118 Object retObj = rmiComm.getReturnValue(retType, null);
119 retValueReceived3.set(false);
120 rmiComm.setGetReturnBytes();
122 return (boolean)retObj;
125 public boolean setVolume(float _percent) {
127 Class<?> retType = boolean.class;
128 Class<?>[] paramCls = new Class<?>[] { float.class };
129 Object[] paramObj = new Object[] { _percent };
130 rmiComm.remoteCall(objectId, methodId, paramCls, paramObj);
131 // Waiting for return value
132 while (!retValueReceived4.get());
133 Object retObj = rmiComm.getReturnValue(retType, null);
134 retValueReceived4.set(false);
135 rmiComm.setGetReturnBytes();
137 return (boolean)retObj;
140 public float getVolume() {
142 Class<?> retType = float.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 (!retValueReceived5.get());
148 Object retObj = rmiComm.getReturnValue(retType, null);
149 retValueReceived5.set(false);
150 rmiComm.setGetReturnBytes();
152 return (float)retObj;
155 public void setPosition(int _mSec) {
157 Class<?> retType = void.class;
158 Class<?>[] paramCls = new Class<?>[] { int.class };
159 Object[] paramObj = new Object[] { _mSec };
160 rmiComm.remoteCall(objectId, methodId, paramCls, paramObj);
163 public void loadData(short _samples[], int _offs, int _len) {
165 Class<?> retType = void.class;
166 Class<?>[] paramCls = new Class<?>[] { short[].class, int.class, int.class };
167 Object[] paramObj = new Object[] { _samples, _offs, _len };
168 rmiComm.remoteCall(objectId, methodId, paramCls, paramObj);
173 Class<?> retType = void.class;
174 Class<?>[] paramCls = new Class<?>[] { };
175 Object[] paramObj = new Object[] { };
176 rmiComm.remoteCall(objectId, methodId, paramCls, paramObj);
179 public void registerCallback(SpeakerCallback _cb) {
180 int[] objIdSent0 = new int[1];
182 if (!IoTRMIUtil.mapSkel.containsKey(_cb)) {
183 int newObjIdSent = rmiComm.getObjectIdCounter();
184 objIdSent0[0] = newObjIdSent;
185 rmiComm.decrementObjectIdCounter();
186 SpeakerCallback_Skeleton skel0 = new SpeakerCallback_Skeleton(_cb, rmiComm, newObjIdSent);
187 IoTRMIUtil.mapSkel.put(_cb, skel0);
188 IoTRMIUtil.mapSkelId.put(_cb, newObjIdSent);
189 Thread thread = new Thread() {
192 skel0.___waitRequestInvokeMethod();
193 } catch (Exception ex) {
194 ex.printStackTrace();
195 throw new Error("Exception when trying to run ___waitRequestInvokeMethod() for SpeakerCallback_Skeleton!");
200 while(!skel0.didAlreadyInitWaitInvoke());
204 int newObjIdSent = IoTRMIUtil.mapSkelId.get(_cb);
205 objIdSent0[0] = newObjIdSent;
207 } catch (Exception ex) {
208 ex.printStackTrace();
209 throw new Error("Exception when generating skeleton objects!");
213 Class<?> retType = void.class;
214 Class<?>[] paramCls = new Class<?>[] { int[].class };
215 Object[] paramObj = new Object[] { objIdSent0 };
216 rmiComm.remoteCall(objectId, methodId, paramCls, paramObj);