Skip to content

Commit 156e355

Browse files
committed
Merge branch 'master' into DEV-175
2 parents 74210e8 + 917e83e commit 156e355

13 files changed

Lines changed: 471 additions & 104 deletions

ShimmerDriver/src/main/java/com/shimmerresearch/bluetooth/ShimmerBluetooth.java

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -980,7 +980,7 @@ else if(isSupportedInStreamCmds() && bufferTemp[getPacketSizeWithCrc()+2]==INSTR
980980
mWaitForResponse=false;
981981
mWaitForAck=false;
982982

983-
processInstreamResponse();
983+
processInstreamResponse(true);
984984

985985
// Need to remove here because it is an
986986
// in-stream response while streaming so not
@@ -1089,7 +1089,9 @@ else if(currentCommand==GET_INFOMEM_COMMAND || currentCommand==GET_CALIB_DUMP_CO
10891089
}
10901090

10911091
/** process responses to in-stream response */
1092-
protected void processInstreamResponse() {
1092+
protected void processInstreamResponse(boolean shouldClearCrcFromBuffer) {
1093+
boolean responseWasParsed = true;
1094+
10931095
byte[] inStreamResponseCommandBuffer = readBytes(1, INSTREAM_CMD_RESPONSE);
10941096
if(inStreamResponseCommandBuffer!=null){
10951097
byte inStreamResponseCommand = inStreamResponseCommandBuffer[0];
@@ -1138,7 +1140,19 @@ else if(inStreamResponseCommand==VBATT_RESPONSE) {
11381140
+ "\tBatt %=" + battStatusDetails.getEstimatedChargePercentageParsed());
11391141
}
11401142
}
1143+
else
1144+
{
1145+
responseWasParsed = false;
1146+
}
1147+
1148+
if (shouldClearCrcFromBuffer && mBtCommsCrcModeCurrent != BT_CRC_MODE.OFF && responseWasParsed) {
1149+
// The driver doesn't currently support checking of CRC bytes on any response
1150+
// other then data packets but we still need to clear them from the buffer if
1151+
// CRC is enabled.
1152+
clearCrcBytesFromBuffer(inStreamResponseCommand);
1153+
}
11411154
}
1155+
11421156
}
11431157

11441158
private void processFirmwareVerResponse() {
@@ -1675,7 +1689,7 @@ else if(responseCommand==RWC_RESPONSE) {
16751689
}
16761690
}
16771691
else if(responseCommand==INSTREAM_CMD_RESPONSE) {
1678-
processInstreamResponse();
1692+
processInstreamResponse(false);
16791693
}
16801694
else if(responseCommand==LSM303DLHC_ACCEL_LPMODE_RESPONSE) {
16811695
byte[] responseData = readBytes(1, responseCommand);

ShimmerDriverPC/src/test/java/com/shimmerresearch/shimmer3/communication/API_0000X_ByteCommunicationShimmer3.java

Lines changed: 28 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import com.shimmerresearch.bluetooth.ShimmerBluetooth.BT_STATE;
99
import com.shimmerresearch.driver.BasicProcessWithCallBack;
1010
import com.shimmerresearch.driver.CallbackObject;
11+
import com.shimmerresearch.driver.ObjectCluster;
1112
import com.shimmerresearch.driver.ShimmerMsg;
1213
import com.shimmerresearch.driver.Configuration.COMMUNICATION_TYPE;
1314
import com.shimmerresearch.driverUtilities.ChannelDetails;
@@ -28,7 +29,8 @@
2829
@FixMethodOrder(MethodSorters.NAME_ASCENDING) // Test methods will be run in alphabetical order
2930
public class API_0000X_ByteCommunicationShimmer3 extends BasicProcessWithCallBack{
3031
ShimmerPC mDevice;
31-
TaskCompletionSource<Boolean> mCalibrationTask;
32+
TaskCompletionSource<Boolean> mWaitTask;
33+
TaskCompletionSource<Boolean> mStreamingTask;
3234
ByteCommunicationSimulatorS3 mByteCommunicationSimulatorS3;
3335

3436
@Before
@@ -42,12 +44,12 @@ public void setUp() {
4244
@Test
4345
public void test001_testConnectandDisconnect() {
4446
mByteCommunicationSimulatorS3.setIsNewBMPSupported(false);
45-
mCalibrationTask = new TaskCompletionSource<Boolean>();
47+
mWaitTask = new TaskCompletionSource<Boolean>();
4648
mDevice.connect("","");
4749

48-
mCalibrationTask = new TaskCompletionSource<>();
50+
mWaitTask = new TaskCompletionSource<>();
4951
try {
50-
boolean result = mCalibrationTask.getTask().waitForCompletion(60, TimeUnit.SECONDS);
52+
mWaitTask.getTask().waitForCompletion(3, TimeUnit.SECONDS); //Just to give time to connect to finish
5153
} catch (InterruptedException e) {
5254
// TODO Auto-generated catch block
5355
e.printStackTrace();
@@ -76,23 +78,18 @@ public void test001_testConnectandDisconnect() {
7678
assert(false);
7779
}
7880

79-
try {
80-
mDevice.disconnect();
81-
} catch (ShimmerException e) {
82-
// TODO Auto-generated catch block
83-
e.printStackTrace();
84-
}
81+
8582
}
8683

8784
@Test
8885
public void test002_testConnectandDisconnect_NewBMPSupported() {
8986
mByteCommunicationSimulatorS3.setIsNewBMPSupported(true);
90-
mCalibrationTask = new TaskCompletionSource<Boolean>();
87+
mWaitTask = new TaskCompletionSource<Boolean>();
9188
mDevice.connect("","");
9289

93-
mCalibrationTask = new TaskCompletionSource<>();
90+
mWaitTask = new TaskCompletionSource<>();
9491
try {
95-
boolean result = mCalibrationTask.getTask().waitForCompletion(60, TimeUnit.SECONDS);
92+
boolean result = mWaitTask.getTask().waitForCompletion(5, TimeUnit.SECONDS);
9693
} catch (InterruptedException e) {
9794
// TODO Auto-generated catch block
9895
e.printStackTrace();
@@ -144,6 +141,9 @@ public void test002_testConnectandDisconnect_NewBMPSupported() {
144141
}
145142
}
146143

144+
145+
ArrayList<ObjectCluster> mListOJC;
146+
147147
@Override
148148
protected void processMsgFromCallback(ShimmerMsg shimmerMSG) {
149149
// TODO Auto-generated method stub
@@ -156,21 +156,24 @@ protected void processMsgFromCallback(ShimmerMsg shimmerMSG) {
156156
CallbackObject callbackObject = (CallbackObject)object;
157157

158158
if (callbackObject.mState == BT_STATE.CONNECTED) {
159-
try {
160-
Thread.sleep(200);
161-
} catch (InterruptedException e) {
162-
// TODO Auto-generated catch block
163-
e.printStackTrace();
164-
}
165-
if (mCalibrationTask!=null) {
166-
mCalibrationTask.setResult(true);
167-
mCalibrationTask = null;
159+
if (mDevice.isInitialised()) {
160+
try {
161+
Thread.sleep(200);
162+
} catch (InterruptedException e) {
163+
// TODO Auto-generated catch block
164+
e.printStackTrace();
165+
}
166+
168167
}
169168

170169
}
171170
}
172-
173-
}
174-
}
171+
} else if (ind == ShimmerPC.MSG_IDENTIFIER_DATA_PACKET) {
172+
System.out.println("Shimmer MSG_IDENTIFIER_DATA_PACKET");
173+
ObjectCluster objc = (ObjectCluster) shimmerMSG.mB;
174+
mListOJC.add(objc);
175+
}
176+
177+
}
175178

176179
}

ShimmerDriverPC/src/test/java/com/shimmerresearch/shimmer3/communication/API_0000X_ByteCommunicationShimmer3R.java

Lines changed: 26 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@
4848
@FixMethodOrder(MethodSorters.NAME_ASCENDING) // Test methods will be run in alphabetical order
4949
public class API_0000X_ByteCommunicationShimmer3R extends BasicProcessWithCallBack{
5050
ShimmerPC mDevice;
51-
TaskCompletionSource<Boolean> mCalibrationTask;
51+
TaskCompletionSource<Boolean> mWaitTask;
5252
ByteCommunicationSimulatorS3R mByteCommunicationSimulatorS3R;
5353
@Before
5454
public void setUp() {
@@ -60,12 +60,12 @@ public void setUp() {
6060

6161
@Test
6262
public void test001_testConnectandDisconnect() {
63-
mCalibrationTask = new TaskCompletionSource<Boolean>();
63+
mWaitTask = new TaskCompletionSource<Boolean>();
6464
mDevice.connect("","");
6565

66-
mCalibrationTask = new TaskCompletionSource<>();
66+
mWaitTask = new TaskCompletionSource<>();
6767
try {
68-
boolean result = mCalibrationTask.getTask().waitForCompletion(5, TimeUnit.SECONDS);
68+
mWaitTask.getTask().waitForCompletion(3, TimeUnit.SECONDS);//Just to give time to connect to finish
6969
} catch (InterruptedException e) {
7070
// TODO Auto-generated catch block
7171
e.printStackTrace();
@@ -114,12 +114,12 @@ public void test001_testConnectandDisconnect() {
114114

115115
@Test
116116
public void test002_ConnectandTestBMP390() {
117-
mCalibrationTask = new TaskCompletionSource<Boolean>();
117+
mWaitTask = new TaskCompletionSource<Boolean>();
118118
mDevice.connect("","");
119119

120-
mCalibrationTask = new TaskCompletionSource<>();
120+
mWaitTask = new TaskCompletionSource<>();
121121
try {
122-
boolean result = mCalibrationTask.getTask().waitForCompletion(5, TimeUnit.SECONDS);
122+
mWaitTask.getTask().waitForCompletion(3, TimeUnit.SECONDS);
123123
} catch (InterruptedException e) {
124124
// TODO Auto-generated catch block
125125
e.printStackTrace();
@@ -155,12 +155,12 @@ public void test002_ConnectandTestBMP390() {
155155
@Test
156156
public void test003_ConnectandTestCalibParamRead() {
157157

158-
mCalibrationTask = new TaskCompletionSource<Boolean>();
158+
mWaitTask = new TaskCompletionSource<Boolean>();
159159
mDevice.connect("","");
160160

161-
mCalibrationTask = new TaskCompletionSource<>();
161+
mWaitTask = new TaskCompletionSource<>();
162162
try {
163-
boolean result = mCalibrationTask.getTask().waitForCompletion(15, TimeUnit.SECONDS);
163+
mWaitTask.getTask().waitForCompletion(3, TimeUnit.SECONDS);
164164
} catch (InterruptedException e) {
165165
// TODO Auto-generated catch block
166166
e.printStackTrace();
@@ -210,12 +210,12 @@ public void test003_ConnectandTestCalibParamRead() {
210210
@Test
211211
public void test004_ConnectandTestDefaultLNAccelAndGyroCalibParam() {
212212

213-
mCalibrationTask = new TaskCompletionSource<Boolean>();
213+
mWaitTask = new TaskCompletionSource<Boolean>();
214214
mDevice.connect("","");
215215

216-
mCalibrationTask = new TaskCompletionSource<>();
216+
mWaitTask = new TaskCompletionSource<>();
217217
try {
218-
boolean result = mCalibrationTask.getTask().waitForCompletion(15, TimeUnit.SECONDS);
218+
mWaitTask.getTask().waitForCompletion(3, TimeUnit.SECONDS);
219219
} catch (InterruptedException e) {
220220
// TODO Auto-generated catch block
221221
e.printStackTrace();
@@ -262,12 +262,12 @@ public void test004_ConnectandTestDefaultLNAccelAndGyroCalibParam() {
262262
@Test
263263
public void test005_ConnectandTestDefaultWRAccelCalibParam() {
264264

265-
mCalibrationTask = new TaskCompletionSource<Boolean>();
265+
mWaitTask = new TaskCompletionSource<Boolean>();
266266
mDevice.connect("","");
267267

268-
mCalibrationTask = new TaskCompletionSource<>();
268+
mWaitTask = new TaskCompletionSource<>();
269269
try {
270-
boolean result = mCalibrationTask.getTask().waitForCompletion(15, TimeUnit.SECONDS);
270+
mWaitTask.getTask().waitForCompletion(3, TimeUnit.SECONDS);
271271
} catch (InterruptedException e) {
272272
// TODO Auto-generated catch block
273273
e.printStackTrace();
@@ -302,12 +302,12 @@ public void test005_ConnectandTestDefaultWRAccelCalibParam() {
302302
@Test
303303
public void test006_ConnectandTestDefaultMagCalibParam() {
304304

305-
mCalibrationTask = new TaskCompletionSource<Boolean>();
305+
mWaitTask = new TaskCompletionSource<Boolean>();
306306
mDevice.connect("","");
307307

308-
mCalibrationTask = new TaskCompletionSource<>();
308+
mWaitTask = new TaskCompletionSource<>();
309309
try {
310-
boolean result = mCalibrationTask.getTask().waitForCompletion(15, TimeUnit.SECONDS);
310+
mWaitTask.getTask().waitForCompletion(3, TimeUnit.SECONDS);
311311
} catch (InterruptedException e) {
312312
// TODO Auto-generated catch block
313313
e.printStackTrace();
@@ -339,12 +339,12 @@ public void test006_ConnectandTestDefaultMagCalibParam() {
339339
@Test
340340
public void test007_ConnectandTestDefaultHighGAccelCalibParam() {
341341

342-
mCalibrationTask = new TaskCompletionSource<Boolean>();
342+
mWaitTask = new TaskCompletionSource<Boolean>();
343343
mDevice.connect("","");
344344

345-
mCalibrationTask = new TaskCompletionSource<>();
345+
mWaitTask = new TaskCompletionSource<>();
346346
try {
347-
boolean result = mCalibrationTask.getTask().waitForCompletion(15, TimeUnit.SECONDS);
347+
mWaitTask.getTask().waitForCompletion(3, TimeUnit.SECONDS);
348348
} catch (InterruptedException e) {
349349
// TODO Auto-generated catch block
350350
e.printStackTrace();
@@ -367,12 +367,12 @@ public void test007_ConnectandTestDefaultHighGAccelCalibParam() {
367367
@Test
368368
public void test008_ConnectandTestDefaultWRMagCalibParam() {
369369

370-
mCalibrationTask = new TaskCompletionSource<Boolean>();
370+
mWaitTask = new TaskCompletionSource<Boolean>();
371371
mDevice.connect("","");
372372

373-
mCalibrationTask = new TaskCompletionSource<>();
373+
mWaitTask = new TaskCompletionSource<>();
374374
try {
375-
boolean result = mCalibrationTask.getTask().waitForCompletion(15, TimeUnit.SECONDS);
375+
mWaitTask.getTask().waitForCompletion(3, TimeUnit.SECONDS);
376376
} catch (InterruptedException e) {
377377
// TODO Auto-generated catch block
378378
e.printStackTrace();
@@ -428,10 +428,7 @@ protected void processMsgFromCallback(ShimmerMsg shimmerMSG) {
428428
// TODO Auto-generated catch block
429429
e.printStackTrace();
430430
}
431-
if (mCalibrationTask!=null) {
432-
mCalibrationTask.setResult(true);
433-
mCalibrationTask = null;
434-
}
431+
435432
}
436433
}
437434

0 commit comments

Comments
 (0)