diff --git a/ShimmerDriver/src/main/java/com/shimmerresearch/bluetooth/ShimmerBluetooth.java b/ShimmerDriver/src/main/java/com/shimmerresearch/bluetooth/ShimmerBluetooth.java index 499444017..1b2a67f42 100644 --- a/ShimmerDriver/src/main/java/com/shimmerresearch/bluetooth/ShimmerBluetooth.java +++ b/ShimmerDriver/src/main/java/com/shimmerresearch/bluetooth/ShimmerBluetooth.java @@ -980,7 +980,7 @@ else if(isSupportedInStreamCmds() && bufferTemp[getPacketSizeWithCrc()+2]==INSTR mWaitForResponse=false; mWaitForAck=false; - processInstreamResponse(); + processInstreamResponse(true); // Need to remove here because it is an // in-stream response while streaming so not @@ -1089,7 +1089,9 @@ else if(currentCommand==GET_INFOMEM_COMMAND || currentCommand==GET_CALIB_DUMP_CO } /** process responses to in-stream response */ - protected void processInstreamResponse() { + protected void processInstreamResponse(boolean shouldClearCrcFromBuffer) { + boolean responseWasParsed = true; + byte[] inStreamResponseCommandBuffer = readBytes(1, INSTREAM_CMD_RESPONSE); if(inStreamResponseCommandBuffer!=null){ byte inStreamResponseCommand = inStreamResponseCommandBuffer[0]; @@ -1138,7 +1140,19 @@ else if(inStreamResponseCommand==VBATT_RESPONSE) { + "\tBatt %=" + battStatusDetails.getEstimatedChargePercentageParsed()); } } + else + { + responseWasParsed = false; + } + + if (shouldClearCrcFromBuffer && mBtCommsCrcModeCurrent != BT_CRC_MODE.OFF && responseWasParsed) { + // The driver doesn't currently support checking of CRC bytes on any response + // other then data packets but we still need to clear them from the buffer if + // CRC is enabled. + clearCrcBytesFromBuffer(inStreamResponseCommand); + } } + } private void processFirmwareVerResponse() { @@ -1675,7 +1689,7 @@ else if(responseCommand==RWC_RESPONSE) { } } else if(responseCommand==INSTREAM_CMD_RESPONSE) { - processInstreamResponse(); + processInstreamResponse(false); } else if(responseCommand==LSM303DLHC_ACCEL_LPMODE_RESPONSE) { byte[] responseData = readBytes(1, responseCommand); diff --git a/ShimmerDriverPC/src/test/java/com/shimmerresearch/shimmer3/communication/API_0000X_ByteCommunicationShimmer3.java b/ShimmerDriverPC/src/test/java/com/shimmerresearch/shimmer3/communication/API_0000X_ByteCommunicationShimmer3.java index 58df455b0..c9332a3f3 100644 --- a/ShimmerDriverPC/src/test/java/com/shimmerresearch/shimmer3/communication/API_0000X_ByteCommunicationShimmer3.java +++ b/ShimmerDriverPC/src/test/java/com/shimmerresearch/shimmer3/communication/API_0000X_ByteCommunicationShimmer3.java @@ -8,6 +8,7 @@ import com.shimmerresearch.bluetooth.ShimmerBluetooth.BT_STATE; import com.shimmerresearch.driver.BasicProcessWithCallBack; import com.shimmerresearch.driver.CallbackObject; +import com.shimmerresearch.driver.ObjectCluster; import com.shimmerresearch.driver.ShimmerMsg; import com.shimmerresearch.driver.Configuration.COMMUNICATION_TYPE; import com.shimmerresearch.driverUtilities.ChannelDetails; @@ -28,7 +29,8 @@ @FixMethodOrder(MethodSorters.NAME_ASCENDING) // Test methods will be run in alphabetical order public class API_0000X_ByteCommunicationShimmer3 extends BasicProcessWithCallBack{ ShimmerPC mDevice; - TaskCompletionSource mCalibrationTask; + TaskCompletionSource mWaitTask; + TaskCompletionSource mStreamingTask; ByteCommunicationSimulatorS3 mByteCommunicationSimulatorS3; @Before @@ -42,12 +44,12 @@ public void setUp() { @Test public void test001_testConnectandDisconnect() { mByteCommunicationSimulatorS3.setIsNewBMPSupported(false); - mCalibrationTask = new TaskCompletionSource(); + mWaitTask = new TaskCompletionSource(); mDevice.connect("",""); - mCalibrationTask = new TaskCompletionSource<>(); + mWaitTask = new TaskCompletionSource<>(); try { - boolean result = mCalibrationTask.getTask().waitForCompletion(60, TimeUnit.SECONDS); + mWaitTask.getTask().waitForCompletion(3, TimeUnit.SECONDS); //Just to give time to connect to finish } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); @@ -76,23 +78,18 @@ public void test001_testConnectandDisconnect() { assert(false); } - try { - mDevice.disconnect(); - } catch (ShimmerException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } + } @Test public void test002_testConnectandDisconnect_NewBMPSupported() { mByteCommunicationSimulatorS3.setIsNewBMPSupported(true); - mCalibrationTask = new TaskCompletionSource(); + mWaitTask = new TaskCompletionSource(); mDevice.connect("",""); - mCalibrationTask = new TaskCompletionSource<>(); + mWaitTask = new TaskCompletionSource<>(); try { - boolean result = mCalibrationTask.getTask().waitForCompletion(60, TimeUnit.SECONDS); + boolean result = mWaitTask.getTask().waitForCompletion(5, TimeUnit.SECONDS); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); @@ -144,6 +141,9 @@ public void test002_testConnectandDisconnect_NewBMPSupported() { } } + + ArrayList mListOJC; + @Override protected void processMsgFromCallback(ShimmerMsg shimmerMSG) { // TODO Auto-generated method stub @@ -156,21 +156,24 @@ protected void processMsgFromCallback(ShimmerMsg shimmerMSG) { CallbackObject callbackObject = (CallbackObject)object; if (callbackObject.mState == BT_STATE.CONNECTED) { - try { - Thread.sleep(200); - } catch (InterruptedException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - if (mCalibrationTask!=null) { - mCalibrationTask.setResult(true); - mCalibrationTask = null; + if (mDevice.isInitialised()) { + try { + Thread.sleep(200); + } catch (InterruptedException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } } } - - } - } + } else if (ind == ShimmerPC.MSG_IDENTIFIER_DATA_PACKET) { + System.out.println("Shimmer MSG_IDENTIFIER_DATA_PACKET"); + ObjectCluster objc = (ObjectCluster) shimmerMSG.mB; + mListOJC.add(objc); + } + +} } diff --git a/ShimmerDriverPC/src/test/java/com/shimmerresearch/shimmer3/communication/API_0000X_ByteCommunicationShimmer3R.java b/ShimmerDriverPC/src/test/java/com/shimmerresearch/shimmer3/communication/API_0000X_ByteCommunicationShimmer3R.java index 637bd5d23..31faa7a00 100644 --- a/ShimmerDriverPC/src/test/java/com/shimmerresearch/shimmer3/communication/API_0000X_ByteCommunicationShimmer3R.java +++ b/ShimmerDriverPC/src/test/java/com/shimmerresearch/shimmer3/communication/API_0000X_ByteCommunicationShimmer3R.java @@ -48,7 +48,7 @@ @FixMethodOrder(MethodSorters.NAME_ASCENDING) // Test methods will be run in alphabetical order public class API_0000X_ByteCommunicationShimmer3R extends BasicProcessWithCallBack{ ShimmerPC mDevice; - TaskCompletionSource mCalibrationTask; + TaskCompletionSource mWaitTask; ByteCommunicationSimulatorS3R mByteCommunicationSimulatorS3R; @Before public void setUp() { @@ -60,12 +60,12 @@ public void setUp() { @Test public void test001_testConnectandDisconnect() { - mCalibrationTask = new TaskCompletionSource(); + mWaitTask = new TaskCompletionSource(); mDevice.connect("",""); - mCalibrationTask = new TaskCompletionSource<>(); + mWaitTask = new TaskCompletionSource<>(); try { - boolean result = mCalibrationTask.getTask().waitForCompletion(5, TimeUnit.SECONDS); + mWaitTask.getTask().waitForCompletion(3, TimeUnit.SECONDS);//Just to give time to connect to finish } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); @@ -114,12 +114,12 @@ public void test001_testConnectandDisconnect() { @Test public void test002_ConnectandTestBMP390() { - mCalibrationTask = new TaskCompletionSource(); + mWaitTask = new TaskCompletionSource(); mDevice.connect("",""); - mCalibrationTask = new TaskCompletionSource<>(); + mWaitTask = new TaskCompletionSource<>(); try { - boolean result = mCalibrationTask.getTask().waitForCompletion(5, TimeUnit.SECONDS); + mWaitTask.getTask().waitForCompletion(3, TimeUnit.SECONDS); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); @@ -155,12 +155,12 @@ public void test002_ConnectandTestBMP390() { @Test public void test003_ConnectandTestCalibParamRead() { - mCalibrationTask = new TaskCompletionSource(); + mWaitTask = new TaskCompletionSource(); mDevice.connect("",""); - mCalibrationTask = new TaskCompletionSource<>(); + mWaitTask = new TaskCompletionSource<>(); try { - boolean result = mCalibrationTask.getTask().waitForCompletion(15, TimeUnit.SECONDS); + mWaitTask.getTask().waitForCompletion(3, TimeUnit.SECONDS); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); @@ -210,12 +210,12 @@ public void test003_ConnectandTestCalibParamRead() { @Test public void test004_ConnectandTestDefaultLNAccelAndGyroCalibParam() { - mCalibrationTask = new TaskCompletionSource(); + mWaitTask = new TaskCompletionSource(); mDevice.connect("",""); - mCalibrationTask = new TaskCompletionSource<>(); + mWaitTask = new TaskCompletionSource<>(); try { - boolean result = mCalibrationTask.getTask().waitForCompletion(15, TimeUnit.SECONDS); + mWaitTask.getTask().waitForCompletion(3, TimeUnit.SECONDS); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); @@ -262,12 +262,12 @@ public void test004_ConnectandTestDefaultLNAccelAndGyroCalibParam() { @Test public void test005_ConnectandTestDefaultWRAccelCalibParam() { - mCalibrationTask = new TaskCompletionSource(); + mWaitTask = new TaskCompletionSource(); mDevice.connect("",""); - mCalibrationTask = new TaskCompletionSource<>(); + mWaitTask = new TaskCompletionSource<>(); try { - boolean result = mCalibrationTask.getTask().waitForCompletion(15, TimeUnit.SECONDS); + mWaitTask.getTask().waitForCompletion(3, TimeUnit.SECONDS); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); @@ -302,12 +302,12 @@ public void test005_ConnectandTestDefaultWRAccelCalibParam() { @Test public void test006_ConnectandTestDefaultMagCalibParam() { - mCalibrationTask = new TaskCompletionSource(); + mWaitTask = new TaskCompletionSource(); mDevice.connect("",""); - mCalibrationTask = new TaskCompletionSource<>(); + mWaitTask = new TaskCompletionSource<>(); try { - boolean result = mCalibrationTask.getTask().waitForCompletion(15, TimeUnit.SECONDS); + mWaitTask.getTask().waitForCompletion(3, TimeUnit.SECONDS); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); @@ -339,12 +339,12 @@ public void test006_ConnectandTestDefaultMagCalibParam() { @Test public void test007_ConnectandTestDefaultHighGAccelCalibParam() { - mCalibrationTask = new TaskCompletionSource(); + mWaitTask = new TaskCompletionSource(); mDevice.connect("",""); - mCalibrationTask = new TaskCompletionSource<>(); + mWaitTask = new TaskCompletionSource<>(); try { - boolean result = mCalibrationTask.getTask().waitForCompletion(15, TimeUnit.SECONDS); + mWaitTask.getTask().waitForCompletion(3, TimeUnit.SECONDS); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); @@ -367,12 +367,12 @@ public void test007_ConnectandTestDefaultHighGAccelCalibParam() { @Test public void test008_ConnectandTestDefaultWRMagCalibParam() { - mCalibrationTask = new TaskCompletionSource(); + mWaitTask = new TaskCompletionSource(); mDevice.connect("",""); - mCalibrationTask = new TaskCompletionSource<>(); + mWaitTask = new TaskCompletionSource<>(); try { - boolean result = mCalibrationTask.getTask().waitForCompletion(15, TimeUnit.SECONDS); + mWaitTask.getTask().waitForCompletion(3, TimeUnit.SECONDS); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); @@ -428,10 +428,7 @@ protected void processMsgFromCallback(ShimmerMsg shimmerMSG) { // TODO Auto-generated catch block e.printStackTrace(); } - if (mCalibrationTask!=null) { - mCalibrationTask.setResult(true); - mCalibrationTask = null; - } + } } diff --git a/ShimmerDriverPC/src/test/java/com/shimmerresearch/shimmer3/communication/API_0000X_ByteCommunicationShimmer3_CRC_Streaming.java b/ShimmerDriverPC/src/test/java/com/shimmerresearch/shimmer3/communication/API_0000X_ByteCommunicationShimmer3_CRC_Streaming.java new file mode 100644 index 000000000..568d693c2 --- /dev/null +++ b/ShimmerDriverPC/src/test/java/com/shimmerresearch/shimmer3/communication/API_0000X_ByteCommunicationShimmer3_CRC_Streaming.java @@ -0,0 +1,114 @@ +package com.shimmerresearch.shimmer3.communication; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.FixMethodOrder; +import org.junit.Test; +import org.junit.runners.MethodSorters; + +import com.shimmerresearch.bluetooth.ShimmerBluetooth.BT_STATE; +import com.shimmerresearch.driver.BasicProcessWithCallBack; +import com.shimmerresearch.driver.CallbackObject; +import com.shimmerresearch.driver.ObjectCluster; +import com.shimmerresearch.driver.ShimmerMsg; +import com.shimmerresearch.driver.Configuration.COMMUNICATION_TYPE; +import com.shimmerresearch.driverUtilities.ChannelDetails; +import com.shimmerresearch.driverUtilities.SensorDetails; +import com.shimmerresearch.driverUtilities.ShimmerVerDetails.HW_ID; +import com.shimmerresearch.exceptions.ShimmerException; +import com.shimmerresearch.pcDriver.ShimmerPC; +import com.shimmerresearch.sensors.AbstractSensor; +import com.shimmerresearch.sensors.AbstractSensor.SENSORS; + +import bolts.TaskCompletionSource; + +import static org.junit.Assert.assertEquals; + +import java.util.ArrayList; +import java.util.LinkedHashMap; +import java.util.concurrent.TimeUnit; +@FixMethodOrder(MethodSorters.NAME_ASCENDING) // Test methods will be run in alphabetical order +public class API_0000X_ByteCommunicationShimmer3_CRC_Streaming extends BasicProcessWithCallBack{ + ShimmerPC mDevice; + TaskCompletionSource mCalibrationTask; + TaskCompletionSource mStreamingTask; + ByteCommunicationSimulatorS3 mByteCommunicationSimulatorS3; + + @Before + public void setUp() { + mByteCommunicationSimulatorS3 = new ByteCommunicationSimulatorS3_streaming_instream_crc("COM99"); + mDevice = new ShimmerPC("COM99"); + mDevice.setTestRadio(mByteCommunicationSimulatorS3); + setWaitForData(mDevice); + } + + ArrayList mListOJC; + @Test + public void test001_testStreaming() { + mListOJC = new ArrayList(); + mByteCommunicationSimulatorS3.setIsNewBMPSupported(false); + mCalibrationTask = new TaskCompletionSource(); + mDevice.connect("",""); + + mCalibrationTask = new TaskCompletionSource<>(); + mStreamingTask = new TaskCompletionSource(); + try { + boolean result = mCalibrationTask.getTask().waitForCompletion(5, TimeUnit.SECONDS); + } catch (InterruptedException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + try { + mDevice.startStreaming(); + } catch (ShimmerException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + try { + mStreamingTask.getTask().waitForCompletion(2, TimeUnit.SECONDS); + if(mListOJC.size()!=3) { //three is expected because every packet is followed by an ack which meets ShimmerBluetooth.processPacket requirements + assert(false); + } + } catch (InterruptedException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + + + } + + + @Override + protected void processMsgFromCallback(ShimmerMsg shimmerMSG) { + // TODO Auto-generated method stub + int ind = shimmerMSG.mIdentifier; + + Object object = (Object) shimmerMSG.mB; + + if (ind == ShimmerPC.MSG_IDENTIFIER_STATE_CHANGE) { + if (ind == ShimmerPC.MSG_IDENTIFIER_STATE_CHANGE) { + CallbackObject callbackObject = (CallbackObject)object; + + if (callbackObject.mState == BT_STATE.CONNECTED) { + if (mDevice.isInitialised()) { + try { + Thread.sleep(200); + } catch (InterruptedException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + } + + } + } + } else if (ind == ShimmerPC.MSG_IDENTIFIER_DATA_PACKET) { + System.out.println("Shimmer MSG_IDENTIFIER_DATA_PACKET"); + ObjectCluster objc = (ObjectCluster) shimmerMSG.mB; + mListOJC.add(objc); + } + +} + +} diff --git a/ShimmerDriverPC/src/test/java/com/shimmerresearch/shimmer3/communication/API_0000X_ByteCommunicationShimmer3_Streaming.java b/ShimmerDriverPC/src/test/java/com/shimmerresearch/shimmer3/communication/API_0000X_ByteCommunicationShimmer3_Streaming.java new file mode 100644 index 000000000..fab8ec632 --- /dev/null +++ b/ShimmerDriverPC/src/test/java/com/shimmerresearch/shimmer3/communication/API_0000X_ByteCommunicationShimmer3_Streaming.java @@ -0,0 +1,114 @@ +package com.shimmerresearch.shimmer3.communication; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.FixMethodOrder; +import org.junit.Test; +import org.junit.runners.MethodSorters; + +import com.shimmerresearch.bluetooth.ShimmerBluetooth.BT_STATE; +import com.shimmerresearch.driver.BasicProcessWithCallBack; +import com.shimmerresearch.driver.CallbackObject; +import com.shimmerresearch.driver.ObjectCluster; +import com.shimmerresearch.driver.ShimmerMsg; +import com.shimmerresearch.driver.Configuration.COMMUNICATION_TYPE; +import com.shimmerresearch.driverUtilities.ChannelDetails; +import com.shimmerresearch.driverUtilities.SensorDetails; +import com.shimmerresearch.driverUtilities.ShimmerVerDetails.HW_ID; +import com.shimmerresearch.exceptions.ShimmerException; +import com.shimmerresearch.pcDriver.ShimmerPC; +import com.shimmerresearch.sensors.AbstractSensor; +import com.shimmerresearch.sensors.AbstractSensor.SENSORS; + +import bolts.TaskCompletionSource; + +import static org.junit.Assert.assertEquals; + +import java.util.ArrayList; +import java.util.LinkedHashMap; +import java.util.concurrent.TimeUnit; +@FixMethodOrder(MethodSorters.NAME_ASCENDING) // Test methods will be run in alphabetical order +public class API_0000X_ByteCommunicationShimmer3_Streaming extends BasicProcessWithCallBack{ + ShimmerPC mDevice; + TaskCompletionSource mCalibrationTask; + TaskCompletionSource mStreamingTask; + ByteCommunicationSimulatorS3 mByteCommunicationSimulatorS3; + + @Before + public void setUp() { + mByteCommunicationSimulatorS3 = new ByteCommunicationSimulatorS3_streaming("COM99"); + mDevice = new ShimmerPC("COM99"); + mDevice.setTestRadio(mByteCommunicationSimulatorS3); + setWaitForData(mDevice); + } + + ArrayList mListOJC; + @Test + public void test001_testStreaming() { + mListOJC = new ArrayList(); + mByteCommunicationSimulatorS3.setIsNewBMPSupported(false); + mCalibrationTask = new TaskCompletionSource(); + mDevice.connect("",""); + + mCalibrationTask = new TaskCompletionSource<>(); + mStreamingTask = new TaskCompletionSource(); + try { + boolean result = mCalibrationTask.getTask().waitForCompletion(5, TimeUnit.SECONDS); + } catch (InterruptedException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + try { + mDevice.startStreaming(); + } catch (ShimmerException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + try { + mStreamingTask.getTask().waitForCompletion(2, TimeUnit.SECONDS); + if(mListOJC.size()!=1) {//only one is expected because only the first packet is followed which meets ShimmerBluetooth.processPacket requirements + assert(false); + } + } catch (InterruptedException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + + + } + + + @Override + protected void processMsgFromCallback(ShimmerMsg shimmerMSG) { + // TODO Auto-generated method stub + int ind = shimmerMSG.mIdentifier; + + Object object = (Object) shimmerMSG.mB; + + if (ind == ShimmerPC.MSG_IDENTIFIER_STATE_CHANGE) { + if (ind == ShimmerPC.MSG_IDENTIFIER_STATE_CHANGE) { + CallbackObject callbackObject = (CallbackObject)object; + + if (callbackObject.mState == BT_STATE.CONNECTED) { + if (mDevice.isInitialised()) { + try { + Thread.sleep(200); + } catch (InterruptedException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + } + + } + } + } else if (ind == ShimmerPC.MSG_IDENTIFIER_DATA_PACKET) { + System.out.println("Shimmer MSG_IDENTIFIER_DATA_PACKET"); + ObjectCluster objc = (ObjectCluster) shimmerMSG.mB; + mListOJC.add(objc); + } + +} + +} diff --git a/ShimmerDriverPC/src/test/java/com/shimmerresearch/shimmer3/communication/API_0000X_ByteCommunicationShimmer3lns0_16_11.java b/ShimmerDriverPC/src/test/java/com/shimmerresearch/shimmer3/communication/API_0000X_ByteCommunicationShimmer3lns0_16_11.java index 0d2cdcd5c..352fb6060 100644 --- a/ShimmerDriverPC/src/test/java/com/shimmerresearch/shimmer3/communication/API_0000X_ByteCommunicationShimmer3lns0_16_11.java +++ b/ShimmerDriverPC/src/test/java/com/shimmerresearch/shimmer3/communication/API_0000X_ByteCommunicationShimmer3lns0_16_11.java @@ -28,7 +28,7 @@ @FixMethodOrder(MethodSorters.NAME_ASCENDING) // Test methods will be run in alphabetical order public class API_0000X_ByteCommunicationShimmer3lns0_16_11 extends BasicProcessWithCallBack{ ShimmerPC mDevice; - TaskCompletionSource mCalibrationTask; + TaskCompletionSource mWaitTask; @Before public void setUp() { mDevice = new ShimmerPC("COM99"); @@ -38,12 +38,12 @@ public void setUp() { @Test public void test001_testConnectandDisconnect() { - mCalibrationTask = new TaskCompletionSource(); + mWaitTask = new TaskCompletionSource(); mDevice.connect("",""); - mCalibrationTask = new TaskCompletionSource<>(); + mWaitTask = new TaskCompletionSource<>(); try { - boolean result = mCalibrationTask.getTask().waitForCompletion(5, TimeUnit.SECONDS); + mWaitTask.getTask().waitForCompletion(3, TimeUnit.SECONDS); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); @@ -88,10 +88,6 @@ protected void processMsgFromCallback(ShimmerMsg shimmerMSG) { // TODO Auto-generated catch block e.printStackTrace(); } - if (mCalibrationTask!=null) { - mCalibrationTask.setResult(true); - mCalibrationTask = null; - } } } diff --git a/ShimmerDriverPC/src/test/java/com/shimmerresearch/shimmer3/communication/API_0000X_ByteCommunicationShimmer3lns0_16_11_w_sd_bt_streaming.java b/ShimmerDriverPC/src/test/java/com/shimmerresearch/shimmer3/communication/API_0000X_ByteCommunicationShimmer3lns0_16_11_w_sd_bt_streaming.java index a4eba51ca..26851dbe5 100644 --- a/ShimmerDriverPC/src/test/java/com/shimmerresearch/shimmer3/communication/API_0000X_ByteCommunicationShimmer3lns0_16_11_w_sd_bt_streaming.java +++ b/ShimmerDriverPC/src/test/java/com/shimmerresearch/shimmer3/communication/API_0000X_ByteCommunicationShimmer3lns0_16_11_w_sd_bt_streaming.java @@ -28,7 +28,7 @@ @FixMethodOrder(MethodSorters.NAME_ASCENDING) // Test methods will be run in alphabetical order public class API_0000X_ByteCommunicationShimmer3lns0_16_11_w_sd_bt_streaming extends BasicProcessWithCallBack{ ShimmerPC mDevice; - TaskCompletionSource mCalibrationTask; + TaskCompletionSource mWaitTask; @Before public void setUp() { mDevice = new ShimmerPC("COM99"); @@ -38,12 +38,12 @@ public void setUp() { @Test public void test001_testConnectandDisconnect() { - mCalibrationTask = new TaskCompletionSource(); + mWaitTask = new TaskCompletionSource(); mDevice.connect("",""); - mCalibrationTask = new TaskCompletionSource<>(); + mWaitTask = new TaskCompletionSource<>(); try { - boolean result = mCalibrationTask.getTask().waitForCompletion(5, TimeUnit.SECONDS); + mWaitTask.getTask().waitForCompletion(5, TimeUnit.SECONDS); //Just to give time to connect to finish } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); @@ -108,10 +108,6 @@ protected void processMsgFromCallback(ShimmerMsg shimmerMSG) { // TODO Auto-generated catch block e.printStackTrace(); } - if (mCalibrationTask!=null) { - mCalibrationTask.setResult(true); - mCalibrationTask = null; - } } } diff --git a/ShimmerDriverPC/src/test/java/com/shimmerresearch/shimmer3/communication/API_0000X_ByteCommunicationShimmer3lns0_16_11_w_sd_only.java b/ShimmerDriverPC/src/test/java/com/shimmerresearch/shimmer3/communication/API_0000X_ByteCommunicationShimmer3lns0_16_11_w_sd_only.java index b100711e0..37fba3b78 100644 --- a/ShimmerDriverPC/src/test/java/com/shimmerresearch/shimmer3/communication/API_0000X_ByteCommunicationShimmer3lns0_16_11_w_sd_only.java +++ b/ShimmerDriverPC/src/test/java/com/shimmerresearch/shimmer3/communication/API_0000X_ByteCommunicationShimmer3lns0_16_11_w_sd_only.java @@ -28,7 +28,7 @@ @FixMethodOrder(MethodSorters.NAME_ASCENDING) // Test methods will be run in alphabetical order public class API_0000X_ByteCommunicationShimmer3lns0_16_11_w_sd_only extends BasicProcessWithCallBack{ ShimmerPC mDevice; - TaskCompletionSource mCalibrationTask; + TaskCompletionSource mWaitTask; @Before public void setUp() { mDevice = new ShimmerPC("COM99"); @@ -38,12 +38,12 @@ public void setUp() { @Test public void test001_testConnectandDisconnect() { - mCalibrationTask = new TaskCompletionSource(); + mWaitTask = new TaskCompletionSource(); mDevice.connect("",""); - mCalibrationTask = new TaskCompletionSource<>(); + mWaitTask = new TaskCompletionSource<>(); try { - boolean result = mCalibrationTask.getTask().waitForCompletion(5, TimeUnit.SECONDS); + mWaitTask.getTask().waitForCompletion(3, TimeUnit.SECONDS);//Just to give time to connect to finish } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); @@ -108,10 +108,6 @@ protected void processMsgFromCallback(ShimmerMsg shimmerMSG) { // TODO Auto-generated catch block e.printStackTrace(); } - if (mCalibrationTask!=null) { - mCalibrationTask.setResult(true); - mCalibrationTask = null; - } } } diff --git a/ShimmerDriverPC/src/test/java/com/shimmerresearch/shimmer3/communication/API_0000X_ByteCommunicationShimmer3lns0_16_11_w_sync_master.java b/ShimmerDriverPC/src/test/java/com/shimmerresearch/shimmer3/communication/API_0000X_ByteCommunicationShimmer3lns0_16_11_w_sync_master.java index a675ed754..d849f02df 100644 --- a/ShimmerDriverPC/src/test/java/com/shimmerresearch/shimmer3/communication/API_0000X_ByteCommunicationShimmer3lns0_16_11_w_sync_master.java +++ b/ShimmerDriverPC/src/test/java/com/shimmerresearch/shimmer3/communication/API_0000X_ByteCommunicationShimmer3lns0_16_11_w_sync_master.java @@ -28,7 +28,7 @@ @FixMethodOrder(MethodSorters.NAME_ASCENDING) // Test methods will be run in alphabetical order public class API_0000X_ByteCommunicationShimmer3lns0_16_11_w_sync_master extends BasicProcessWithCallBack{ ShimmerPC mDevice; - TaskCompletionSource mCalibrationTask; + TaskCompletionSource mWaitTask; @Before public void setUp() { mDevice = new ShimmerPC("COM99"); @@ -38,12 +38,12 @@ public void setUp() { @Test public void test001_testConnectandDisconnect() { - mCalibrationTask = new TaskCompletionSource(); + mWaitTask = new TaskCompletionSource(); mDevice.connect("",""); - mCalibrationTask = new TaskCompletionSource<>(); + mWaitTask = new TaskCompletionSource<>(); try { - boolean result = mCalibrationTask.getTask().waitForCompletion(5, TimeUnit.SECONDS); + mWaitTask.getTask().waitForCompletion(3, TimeUnit.SECONDS);//Just to give time to connect to finish } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); @@ -116,10 +116,6 @@ protected void processMsgFromCallback(ShimmerMsg shimmerMSG) { // TODO Auto-generated catch block e.printStackTrace(); } - if (mCalibrationTask!=null) { - mCalibrationTask.setResult(true); - mCalibrationTask = null; - } } } diff --git a/ShimmerDriverPC/src/test/java/com/shimmerresearch/shimmer3/communication/API_0000X_ByteCommunicationShimmer3lns0_16_11_w_sync_slave.java b/ShimmerDriverPC/src/test/java/com/shimmerresearch/shimmer3/communication/API_0000X_ByteCommunicationShimmer3lns0_16_11_w_sync_slave.java index a81b7c54c..9ef38ea74 100644 --- a/ShimmerDriverPC/src/test/java/com/shimmerresearch/shimmer3/communication/API_0000X_ByteCommunicationShimmer3lns0_16_11_w_sync_slave.java +++ b/ShimmerDriverPC/src/test/java/com/shimmerresearch/shimmer3/communication/API_0000X_ByteCommunicationShimmer3lns0_16_11_w_sync_slave.java @@ -28,7 +28,7 @@ @FixMethodOrder(MethodSorters.NAME_ASCENDING) // Test methods will be run in alphabetical order public class API_0000X_ByteCommunicationShimmer3lns0_16_11_w_sync_slave extends BasicProcessWithCallBack{ ShimmerPC mDevice; - TaskCompletionSource mCalibrationTask; + TaskCompletionSource mWaitTask; @Before public void setUp() { mDevice = new ShimmerPC("COM99"); @@ -38,12 +38,12 @@ public void setUp() { @Test public void test001_testConnectandDisconnect() { - mCalibrationTask = new TaskCompletionSource(); + mWaitTask = new TaskCompletionSource(); mDevice.connect("",""); - mCalibrationTask = new TaskCompletionSource<>(); + mWaitTask = new TaskCompletionSource<>(); try { - boolean result = mCalibrationTask.getTask().waitForCompletion(5, TimeUnit.SECONDS); + boolean result = mWaitTask.getTask().waitForCompletion(3, TimeUnit.SECONDS);//Just to give time to connect to finish } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); @@ -113,10 +113,6 @@ protected void processMsgFromCallback(ShimmerMsg shimmerMSG) { // TODO Auto-generated catch block e.printStackTrace(); } - if (mCalibrationTask!=null) { - mCalibrationTask.setResult(true); - mCalibrationTask = null; - } } } diff --git a/ShimmerDriverPC/src/test/java/com/shimmerresearch/shimmer3/communication/ByteCommunicationSimulatorS3.java b/ShimmerDriverPC/src/test/java/com/shimmerresearch/shimmer3/communication/ByteCommunicationSimulatorS3.java index f7bca2534..e6a9a54f0 100644 --- a/ShimmerDriverPC/src/test/java/com/shimmerresearch/shimmer3/communication/ByteCommunicationSimulatorS3.java +++ b/ShimmerDriverPC/src/test/java/com/shimmerresearch/shimmer3/communication/ByteCommunicationSimulatorS3.java @@ -92,6 +92,20 @@ protected void txShimmerVersion() { mBuffer.add((byte) 0x03); } + protected void streaming() { + //not implemented for connect test please see ByteCommunicationS3_streaming.java + } + + protected void inquiryResponse() { + mBuffer.add((byte) 0xff); + mBuffer.add((byte) 0x02); + byte[] bytes = UtilShimmer.hexStringToByteArray("800202FF01080001"); + for (byte b:bytes) { + mBuffer.add(b); + } + mBuffer.add((byte) 0x86); + } + protected void txFirmwareVersion() { mBuffer.add((byte) 0xff); mBuffer.add((byte) 0x2f); @@ -194,13 +208,7 @@ public boolean writeBytes(byte[] buffer) throws SerialPortException { mBuffer.add((byte) 0x21); mBuffer.add((byte) 0xF4); } else if(buffer[0]==ShimmerObject.INQUIRY_COMMAND) { - mBuffer.add((byte) 0xff); - mBuffer.add((byte) 0x02); - byte[] bytes = UtilShimmer.hexStringToByteArray("800202FF01080001"); - for (byte b:bytes) { - mBuffer.add(b); - } - mBuffer.add((byte) 0x86); + inquiryResponse(); } else if(buffer[0]==ShimmerObject.GET_BT_FW_VERSION_STR_COMMAND) { mBuffer.add((byte) 0xff); mBuffer.add((byte) 0xa2); @@ -242,6 +250,18 @@ public boolean writeBytes(byte[] buffer) throws SerialPortException { } else if(buffer[0]==ShimmerObject.SET_RWC_COMMAND) { mBuffer.add((byte) 0xff); mBuffer.add((byte) 0xf4); + } + else if(buffer[0]==ShimmerObject.GET_RWC_COMMAND) { + mBuffer.add((byte) 0xff); + mBuffer.add((byte) 0x90); + //0x00 0xEF 0xBE 0x1B 0xE7 0x09 0x3C 0x08 0x3F 0x09 0x7A + byte[] bytes = UtilShimmer.hexStringToByteArray("A7D7555200340000"); + for (byte b:bytes) { + mBuffer.add(b); + } + mBuffer.add((byte) 0x8E); + }else if(buffer[0]==ShimmerObject.START_STREAMING_COMMAND) { + streaming(); } else { diff --git a/ShimmerDriverPC/src/test/java/com/shimmerresearch/shimmer3/communication/ByteCommunicationSimulatorS3_streaming.java b/ShimmerDriverPC/src/test/java/com/shimmerresearch/shimmer3/communication/ByteCommunicationSimulatorS3_streaming.java new file mode 100644 index 000000000..c2f3a9865 --- /dev/null +++ b/ShimmerDriverPC/src/test/java/com/shimmerresearch/shimmer3/communication/ByteCommunicationSimulatorS3_streaming.java @@ -0,0 +1,60 @@ +package com.shimmerresearch.shimmer3.communication; + +import java.util.concurrent.ArrayBlockingQueue; +import java.util.concurrent.BlockingQueue; + +import com.shimmerresearch.driver.ShimmerObject; +import com.shimmerresearch.driverUtilities.UtilShimmer; +import com.shimmerresearch.verisense.communication.ByteCommunicationListener; + +import jssc.SerialPortException; +import jssc.SerialPortTimeoutException; + +public class ByteCommunicationSimulatorS3_streaming extends ByteCommunicationSimulatorS3{ + + public ByteCommunicationSimulatorS3_streaming(String address) { + super(address); + // TODO Auto-generated constructor stub + } + + @Override + protected void inquiryResponse() { + byte[] bytes = UtilShimmer.hexStringToByteArray("FF02800201FF010803010001020F"); + for (byte b:bytes) { + mBuffer.add(b); + } + } + + @Override + protected void streaming() { + int numberOfPackets = 2; + mBuffer.add((byte) 0xff); + mBuffer.add((byte) 0xf4); + //0x00 0xEF 0xBE 0x1B 0xE7 0x09 0x3C 0x08 0x3F 0x09 0x7A + byte[] bytes = UtilShimmer.hexStringToByteArray("00EFBE1BE7093C083F097A"); + /* + for (byte b:bytes) { + mBuffer.add(b); + } + */ + + // Start a new thread to send data periodically + int intervalMs = 100; // replace with desired interval in milliseconds + Thread streamingThread = new Thread(() -> { + try { + Thread.sleep(200); + for (int i=0;i { + try { + Thread.sleep(200); + for (int i=0;i