Skip to content

Commit 3734192

Browse files
authored
Merge pull request #263 from ShimmerEngineering/DEV-331_S3R_DFU_MN
DEV-331 Fill in missing dock job error entry
2 parents dc054f1 + 2d3a229 commit 3734192

7 files changed

Lines changed: 85 additions & 28 deletions

File tree

ShimmerDriver/src/main/java/com/shimmerresearch/driver/BasicProcessWithCallBack.java

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -235,10 +235,7 @@ public void removeSetWaitForDataAll(){
235235
}
236236

237237
mWaitForData = null;
238-
Iterator<WaitForData> entries = mListWaitForData.iterator();
239-
while (entries.hasNext()) {
240-
entries.remove();
241-
}
238+
mListWaitForData.clear();
242239
}
243240

244241
public void setWaitForDataWithSingleInstanceCheck(BasicProcessWithCallBack b){

ShimmerDriver/src/main/java/com/shimmerresearch/driver/ShimmerDevice.java

Lines changed: 46 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -20,12 +20,11 @@
2020

2121
import org.apache.commons.lang3.ArrayUtils;
2222

23-
import com.shimmerresearch.driver.Configuration;
24-
import com.shimmerresearch.driver.ObjectCluster;
2523
import com.shimmerresearch.algorithms.AbstractAlgorithm;
2624
import com.shimmerresearch.algorithms.AlgorithmResultObject;
2725
import com.shimmerresearch.algorithms.gyroOnTheFlyCal.GyroOnTheFlyCalLoader;
2826
import com.shimmerresearch.algorithms.AlgorithmDetails;
27+
import com.shimmerresearch.algorithms.AlgorithmDetails.SENSOR_CHECK_METHOD;
2928
import com.shimmerresearch.algorithms.AlgorithmLoaderInterface;
3029
import com.shimmerresearch.algorithms.orientation.OrientationModule6DOFLoader;
3130
import com.shimmerresearch.algorithms.orientation.OrientationModule9DOFLoader;
@@ -36,7 +35,6 @@
3635
import com.shimmerresearch.comms.serialPortInterface.AbstractSerialPortHal;
3736
import com.shimmerresearch.comms.wiredProtocol.UartComponentPropertyDetails;
3837
import com.shimmerresearch.driver.Configuration.COMMUNICATION_TYPE;
39-
import com.shimmerresearch.driver.Configuration.Shimmer3;
4038
import com.shimmerresearch.driver.calibration.CalibDetails;
4139
import com.shimmerresearch.driver.calibration.CalibDetailsKinematic;
4240
import com.shimmerresearch.driver.calibration.CalibDetails.CALIB_READ_SOURCE;
@@ -67,7 +65,6 @@
6765
import com.shimmerresearch.sensors.SensorShimmerClock;
6866
import com.shimmerresearch.shimmerConfig.FixedShimmerConfigs;
6967
import com.shimmerresearch.shimmerConfig.FixedShimmerConfigs.FIXED_SHIMMER_CONFIG_MODE;
70-
import com.shimmerresearch.verisense.communication.VerisenseProtocolByteCommunication;
7168
import com.shimmerresearch.verisense.sensors.ISensorConfig;
7269

7370
public abstract class ShimmerDevice extends BasicProcessWithCallBack implements Serializable{
@@ -142,13 +139,17 @@ public abstract class ShimmerDevice extends BasicProcessWithCallBack implements
142139
private boolean mConfigurationReadSuccess = false;
143140
public boolean mReadDaughterIDSuccess = false;
144141
public boolean writeRealWorldClockFromPcTimeSuccess = false;
142+
public boolean mReadBtVerSuccess = false;
143+
public boolean mReadBtModeSuccess = false;
145144

146145
protected boolean mIsConnected = false;
147146
protected boolean mIsSensing = false;
148147
protected boolean mIsStreaming = false; // This is used to monitor whether the device is in streaming mode
149148
protected boolean mIsInitialised = false;
150149
private boolean mIsDocked = false;
151-
private boolean mIsUsbPluggedIn= false;
150+
private boolean mIsUsbPluggedIn = false;
151+
private boolean mIsDockCommsSuccessful = false;
152+
public boolean mIsUsbDfuMode= false;
152153
protected boolean mHaveAttemptedToReadConfig = false;
153154

154155
//BSL related start
@@ -754,7 +755,11 @@ public void addCommunicationRoute(COMMUNICATION_TYPE communicationType) {
754755
// Collections.sort(mListOfAvailableCommunicationTypes);
755756

756757
if(communicationType==COMMUNICATION_TYPE.DOCK){
757-
setIsDocked(true);
758+
if(mDockID.contains(DEVICE_TYPE.SHIMMER3R.toString())) {
759+
setIsUsbPluggedIn(true);
760+
}else {
761+
setIsDocked(true);
762+
}
758763
}
759764

760765
//TODO temp here -> check if the best place for it
@@ -780,7 +785,8 @@ public void removeCommunicationRoute(COMMUNICATION_TYPE communicationType) {
780785
}
781786
// Collections.sort(mListOfAvailableCommunicationTypes);
782787

783-
if(communicationType==COMMUNICATION_TYPE.DOCK){
788+
if(communicationType==COMMUNICATION_TYPE.DOCK){
789+
setIsUsbPluggedIn(false);
784790
setIsDocked(false);
785791
setFirstDockRead();
786792
clearDockInfo(mDockID, mSlotNumber);
@@ -1102,6 +1108,14 @@ public boolean isDocked() {
11021108
public boolean isUsbPluggedIn() {
11031109
return mIsUsbPluggedIn;
11041110
}
1111+
1112+
public boolean isUsbDfuMode(){
1113+
return mIsUsbDfuMode;
1114+
}
1115+
1116+
public void setUsbDfuMode(boolean state) {
1117+
mIsUsbDfuMode = state;
1118+
}
11051119

11061120
public void setIsConnected(boolean state) {
11071121
mIsConnected = state;
@@ -1691,6 +1705,8 @@ public void setFirstDockRead() {
16911705
mReadHwFwSuccess = false;
16921706
mReadDaughterIDSuccess = false;
16931707
writeRealWorldClockFromPcTimeSuccess = false;
1708+
mReadBtVerSuccess = false;
1709+
mReadBtModeSuccess = false;
16941710
}
16951711

16961712
// ----------------- Overrides from ShimmerDevice end -------------
@@ -3076,9 +3092,22 @@ public void setIsAlgorithmEnabled(String algorithmName, boolean state){
30763092
if(abstractAlgorithm!=null && abstractAlgorithm.mAlgorithmDetails!=null){
30773093
if(state){
30783094
//switch on the required sensors
3079-
//TODO add support for ANY/ALL sensors
30803095
for (Integer sensorId:abstractAlgorithm.mAlgorithmDetails.mListOfRequiredSensors) {
3081-
setSensorEnabledState(sensorId, true);
3096+
if (abstractAlgorithm.mAlgorithmDetails.mSensorCheckMethod==SENSOR_CHECK_METHOD.ANY) {
3097+
3098+
int tempSensorId = handleSpecCasesBeforeSetSensorState(sensorId,state);
3099+
SensorDetails sensorDetails = getSensorDetails(tempSensorId);
3100+
if(sensorDetails!=null){
3101+
setSensorEnabledState(sensorId, true);
3102+
}
3103+
}
3104+
else if (abstractAlgorithm.mAlgorithmDetails.mSensorCheckMethod==SENSOR_CHECK_METHOD.ALL) {
3105+
boolean success = setSensorEnabledState(sensorId, true);
3106+
if(!success){
3107+
consolePrintErrLn("Failed to enable required sensor ID " + sensorId + " for algorithm:\t" + abstractAlgorithm.getAlgorithmName());
3108+
return;
3109+
}
3110+
}
30823111
}
30833112
}
30843113
abstractAlgorithm.setIsEnabled(state);
@@ -4768,4 +4797,12 @@ public String getRadioModel() {
47684797
return "";
47694798
}
47704799

4800+
public boolean isDockCommsSuccessful() {
4801+
return mIsDockCommsSuccessful;
4802+
}
4803+
4804+
public void setDockCommsSuccessful(boolean isDockCommsSuccessful) {
4805+
mIsDockCommsSuccessful = isDockCommsSuccessful;
4806+
}
4807+
47714808
}

ShimmerDriver/src/main/java/com/shimmerresearch/driver/ShimmerShell.java

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@ public class ShimmerShell extends ShimmerDevice {
2626
/** * */
2727
private static final long serialVersionUID = 3505947289367382624L;
2828

29+
public String macIDParsed = "";
30+
2931
public ShimmerShell() {
3032
setFirstDockRead();
3133
}
@@ -147,5 +149,23 @@ protected void dataHandler(ObjectCluster ojc) {
147149
// TODO Auto-generated method stub
148150

149151
}
152+
153+
@Override
154+
public String getMacIdFromUartParsed() {
155+
if(!macIDParsed.isEmpty()) {
156+
return macIDParsed;
157+
} else {
158+
return super.getMacIdFromUartParsed();
159+
}
160+
}
161+
162+
@Override
163+
public String getMacIdParsed() {
164+
if(!macIDParsed.isEmpty()) {
165+
return macIDParsed;
166+
} else {
167+
return super.getMacIdParsed();
168+
}
169+
}
150170

151171
}

ShimmerDriver/src/main/java/com/shimmerresearch/driverUtilities/AssembleShimmerConfig.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,7 @@ public static void generateMultipleShimmerConfig(List<ShimmerDevice> listOfShimm
141141
for(ShimmerDevice shimmerDevice:listOfShimmersToConfigureClone) {
142142
// Configure for docks.
143143
if(commType==COMMUNICATION_TYPE.DOCK
144-
&& shimmerDevice.isDocked()
144+
&& (shimmerDevice.isDocked() || shimmerDevice.isUsbPluggedIn())
145145
&& !shimmerDevice.isStreaming()){
146146
listForConfiguringDocked.add(shimmerDevice.deepClone());
147147
}

ShimmerDriver/src/main/java/com/shimmerresearch/driverUtilities/DockJobDetails.java

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -99,17 +99,16 @@ public enum DOCK_JOB_TYPE {
9999
aMap.put(getJobErrorCode(DOCK_JOB_TYPE.SET_INDICATOR_LEDS_STATE), "INDICATOR_LEDS_SET");
100100
aMap.put(getJobErrorCode(DOCK_JOB_TYPE.GET_INDICATOR_LEDS_STATE), "INDICATOR_LEDS_GET");
101101
aMap.put(getJobErrorCode(DOCK_JOB_TYPE.ACCESS_SD_CARD), "ACCESS_SD_CARD");
102-
103-
aMap.put(getJobErrorCode(DOCK_JOB_TYPE.FW_DOCK), "FW_DOCK");
104-
105-
106-
aMap.put(getJobErrorCode(DOCK_JOB_TYPE.SHIMMER_WRITE_EXP_BRD_MEMORY), "SHIMMER_WRITE_EXP");
107102

108-
109103
aMap.put(getJobErrorCode(DOCK_JOB_TYPE.DOCK_BOOT), "Fail to detect bootup");
110104
aMap.put(getJobErrorCode(DOCK_JOB_TYPE.DOCK_RESET_VIA_FW), "Failed to reset Base");
111105
aMap.put(getJobErrorCode(DOCK_JOB_TYPE.DOCK_RESET_VIA_BSL), "Failed to reset Base");
112106

107+
aMap.put(getJobErrorCode(DOCK_JOB_TYPE.FW_DOCK), "FW_DOCK");
108+
109+
aMap.put(getJobErrorCode(DOCK_JOB_TYPE.SHIMMER_WRITE_EXP_BRD_MEMORY), "SHIMMER_WRITE_EXP");
110+
aMap.put(getJobErrorCode(DOCK_JOB_TYPE.SHIMMER_WRITE_DAUGHTER_CARD_ID), "SHIMMER_WRITE_DAUGHTER_CARD_ID");
111+
113112
//Experimental
114113
aMap.put(getJobErrorCode(DOCK_JOB_TYPE.DOCK_MANAGER_RELOAD), "DOCK_MANAGER_RELOAD");
115114
aMap.put(getJobErrorCode(DOCK_JOB_TYPE.DOCK_MANAGER_LOAD), "DOCK_MANAGER_LOAD");

ShimmerDriver/src/main/java/com/shimmerresearch/driverUtilities/HwDriverDeviceDetails.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,5 +40,6 @@ public class HwDriverDeviceDetails {
4040
public String deviceDriverVersion = "";
4141

4242
public String devInterfaceGuid = "";
43-
43+
44+
public String deviceInstanceId = "";
4445
}

ShimmerDriver/src/main/java/com/shimmerresearch/driverUtilities/HwDriverShimmerDeviceDetails.java

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -145,15 +145,10 @@ public static final class MASS_STORAGE_DEVICE {
145145
"VID_0424&PID_2640",
146146
};
147147

148-
public static final String[] SHIMMER_3R = new String[] {
149-
"VID_0483&PID_52A4",
150-
};
151-
152148
public static final String[] SHIMMER_3R_USB_DFU = new String[] {
153149
"VID_0483&PID_DF11",
154150
};
155151

156-
157152
public static final String[] SHIMMER = new String[] {
158153
"shimmer",
159154
};
@@ -170,6 +165,8 @@ public static final class MASS_STORAGE_DEVICE {
170165

171166
public static final String[] SHIMMER3R_MSC_DEVICE = new String[] { "SHIMMER MSC","STM32 MSC DEVICE" };
172167

168+
public static final String[] SHIMMER3R_DFU_DEVICE_BUS_DESCRITION = new String[] { "DFU in HS Mode" };
169+
173170
public static final class SERVICE_DESCRIPTION {
174171
public static final String[] COMPOSITE_DEVICE = new String[]{"USB Composite Device"};
175172

@@ -203,6 +200,10 @@ public static final class SERIAL_PORT {
203200
public static final String FTDI_FT4232H_PROD_ID = "6011";
204201

205202
public static final String VIRTUAL_PORT = "COM0COM";
203+
204+
public static final String[] SHIMMER_3R = new String[] {
205+
"VID_0483&PID_52A4"
206+
};
206207
}
207208

208209
public static final class BT {
@@ -272,6 +273,8 @@ public static final class BASE_HARDWARE_IDS{
272273
public HwDriverDeviceDetails portableDevice = null;
273274
public HwDriverDeviceDetails storageVolume = null;
274275

276+
public HwDriverDeviceDetails dfuDevice = null;
277+
275278
public String mDockID= "";
276279
public String mSmartDockFwComPort= "";
277280
public String mSmartDockUartComPort= "";
@@ -282,8 +285,8 @@ public static final class BASE_HARDWARE_IDS{
282285

283286
public HIDDeviceInfo mHidDeviceInfo = null;
284287

285-
/** Normally used to store the FTDI serial ID. */
286-
public String mFtdiSerialID = "";
288+
/** Unique HW ID (e.g., FTDI serial ID or location path). */
289+
public String mUniqueHwID = "";
287290
public SPAN_VERSION mSpanVersion = SPAN_VERSION.UNKNOWN;
288291

289292
public HwDriverShimmerDeviceDetails() {

0 commit comments

Comments
 (0)