Skip to content

Commit 8160155

Browse files
authored
Merge branch 'Dev' into CON-656
2 parents f0ce923 + 63a0c95 commit 8160155

10 files changed

Lines changed: 145 additions & 6 deletions

File tree

ShimmerBluetoothManager/.settings/org.eclipse.buildship.core.prefs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,4 @@ connection.project.dir=../ShimmerDriverPC
77
derived.resources=.gradle,build
88
eclipse.preferences.version=1
99
natures=org.eclipse.jdt.core.javanature
10-
project.path=\:ShimmerBluetoothManager
10+
project.path=\:ShimmerBluetoothManager

ShimmerDriver/grpcprotosrc/src/LiteProtocolInstructionSet.proto

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,7 @@ message LiteProtocolInstructionSet {
120120
GET_CALIB_DUMP_COMMAND = 0x9A;
121121
GET_I2C_BATT_STATUS_COMMAND = 0x9E;
122122
GET_BMP280_CALIBRATION_COEFFICIENTS_COMMAND = 0xA0;
123+
GET_BT_FW_VERSION_STR_COMMAND = 0xA1;
123124
}
124125

125126
enum InstructionsResponse {
@@ -173,5 +174,6 @@ message LiteProtocolInstructionSet {
173174
RSP_CALIB_DUMP_COMMAND = 0x99 [(response_size) = -1];
174175
RSP_I2C_BATT_STATUS_COMMAND = 0x9D [(response_size) = 10];
175176
BMP280_CALIBRATION_COEFFICIENTS_RESPONSE = 0x9F [(response_size) = 24];
177+
BT_FW_VERSION_STR_RESPONSE = 0xA2 [(response_size) = -1];
176178
}
177179
}

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

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -332,6 +332,7 @@ public String toString() {
332332
aMap.put(GET_CALIB_DUMP_COMMAND, new BtCommandDetails(GET_CALIB_DUMP_COMMAND, "GET_CALIB_DUMP_COMMAND", RSP_CALIB_DUMP_COMMAND));
333333
aMap.put(GET_RWC_COMMAND, new BtCommandDetails(GET_RWC_COMMAND, "GET_RWC_COMMAND", RWC_RESPONSE));
334334
aMap.put(GET_VBATT_COMMAND, new BtCommandDetails(GET_VBATT_COMMAND, "GET_VBATT_COMMAND", VBATT_RESPONSE));
335+
aMap.put(GET_BT_FW_VERSION_STR_COMMAND, new BtCommandDetails(GET_BT_FW_VERSION_STR_COMMAND, "GET_BT_FW_VERSION_STR_COMMAND", BT_FW_VERSION_STR_RESPONSE));
335336

336337
mBtGetCommandMap = Collections.unmodifiableMap(aMap);
337338
}
@@ -450,6 +451,7 @@ public String toString() {
450451
aMap.put(RSP_CALIB_DUMP_COMMAND, new BtCommandDetails(RSP_CALIB_DUMP_COMMAND, "RSP_CALIB_DUMP_COMMAND", -1)); // first+second bytes indicate length to subsequently read
451452
aMap.put(RWC_RESPONSE, new BtCommandDetails(RWC_RESPONSE, "RWC_RESPONSE", 8));
452453
aMap.put(VBATT_RESPONSE, new BtCommandDetails(VBATT_RESPONSE, "VBATT_RESPONSE", 3));
454+
aMap.put(BT_FW_VERSION_STR_RESPONSE, new BtCommandDetails(BT_FW_VERSION_STR_RESPONSE, "BT_FW_VERSION_STR_RESPONSE", -1));
453455

454456
mBtResponseMap = Collections.unmodifiableMap(aMap);
455457
}
@@ -1697,8 +1699,20 @@ else if(responseCommand==RSP_CALIB_DUMP_COMMAND) {
16971699
}
16981700
}
16991701
}
1700-
17011702
}
1703+
1704+
else if(responseCommand==BT_FW_VERSION_STR_RESPONSE) {
1705+
byte[] length = readBytes(1, responseCommand);
1706+
1707+
if(length!=null && length.length>0) {
1708+
int lengthToRead = (int)(length[0]&0xFF);
1709+
byte[] responseData = readBytes(lengthToRead, responseCommand);
1710+
if(responseData!=null) {
1711+
super.getBtFwVerDetails().parseBtModuleVerBytes(responseData);
1712+
}
1713+
}
1714+
}
1715+
17021716
else {
17031717
consolePrintLn("Unhandled BT response: " + responseCommand);
17041718
}
@@ -2486,6 +2500,10 @@ private void initializeShimmer3(){
24862500
readBattery();
24872501
}
24882502

2503+
if(getShimmerVerObject().isSupportedBtFwVerRequest()) {
2504+
readBtFwVersion();
2505+
}
2506+
24892507
// Only read calibration dump over bluetooth if the Shimmer is not
24902508
// docked as the Shimmer won't have access to the SD card
24912509
if(!isDocked()){
@@ -3054,6 +3072,12 @@ public void readStatusLogAndStream(){
30543072
}
30553073
}
30563074

3075+
public void readBtFwVersion() {
3076+
if (getShimmerVerObject().isSupportedBtFwVerRequest()) {
3077+
writeInstruction(GET_BT_FW_VERSION_STR_COMMAND);
3078+
consolePrintLn("GET_BT_FW_VERSION_STR_COMMAND Instruction added to the list");
3079+
}
3080+
}
30573081

30583082
//endregion --------- READ ONLY FUNCTIONS (NO WRITE EQUIVALENT - implemented anyway) ---------
30593083

ShimmerDriver/src/main/java/com/shimmerresearch/comms/wiredProtocol/CommsProtocolWiredShimmerViaDock.java

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55

66
import com.shimmerresearch.comms.serialPortInterface.InterfaceSerialPortHal;
77
import com.shimmerresearch.driver.ShimmerMsg;
8+
import com.shimmerresearch.driver.shimmer2r3.BluetoothModuleVersionDetails;
89
import com.shimmerresearch.driverUtilities.ExpansionBoardDetails;
910
import com.shimmerresearch.driverUtilities.ShimmerBattStatusDetails;
1011
import com.shimmerresearch.driverUtilities.ShimmerVerObject;
@@ -239,6 +240,24 @@ public byte[] read802154RadioSettings() throws ExecutionException {
239240

240241
return rxBuf;
241242
}
243+
244+
/** Read the BT FW version
245+
* @return String in bytes format
246+
* @throws ExecutionException
247+
*/
248+
public BluetoothModuleVersionDetails readBtFwVersion() throws ExecutionException {
249+
int errorCode = ErrorCodesWiredProtocol.SHIMMERUART_CMD_ERR_BT_FW_VERSION_INFO_GET;
250+
byte[] rxBuf = processShimmerGetCommand(UartPacketDetails.UART_COMPONENT_AND_PROPERTY.BLUETOOTH.VER, errorCode);
251+
252+
// Parse response string
253+
if(rxBuf.length == 0) {
254+
throw new DockException(mUniqueId, mComPort,errorCode,ErrorCodesWiredProtocol.SHIMMERUART_COMM_ERR_MESSAGE_CONTENTS);
255+
}
256+
BluetoothModuleVersionDetails bluetoothModuleVersionDetails = new BluetoothModuleVersionDetails();
257+
bluetoothModuleVersionDetails.parseBtModuleVerBytes(rxBuf);
258+
259+
return bluetoothModuleVersionDetails;
260+
}
242261

243262
@Override
244263
protected void processMsgFromCallback(ShimmerMsg shimmerMSG) {

ShimmerDriver/src/main/java/com/shimmerresearch/comms/wiredProtocol/ErrorCodesWiredProtocol.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ public class ErrorCodesWiredProtocol extends AbstractErrorCodes {
2828
public final static int SHIMMERUART_CMD_ERR_DAUGHTER_MEM_GET = (ERROR_CODES_ID*1000) + 29;
2929
public final static int SHIMMERUART_CMD_ERR_INFOMEM_SET = (ERROR_CODES_ID*1000) + 32;
3030
public final static int SHIMMERUART_CMD_ERR_INFOMEM_GET = (ERROR_CODES_ID*1000) + 31;
31+
public final static int SHIMMERUART_CMD_ERR_BT_FW_VERSION_INFO_GET = (ERROR_CODES_ID*1000) + 37;
3132

3233
//SR7 (802.15.4 radio) related errors
3334
public final static int SHIMMERUART_CMD_ERR_RADIO_802154_SET_SETTINGS = (ERROR_CODES_ID*1000) + 33;

ShimmerDriver/src/main/java/com/shimmerresearch/comms/wiredProtocol/UartPacketDetails.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,8 @@ public static enum UART_COMPONENT {
6060
LSM303DLHC_ACCEL ((byte)0x06),
6161
MPU9X50_ACCEL ((byte)0x07),
6262
BEACON ((byte)0x08),
63-
RADIO_802154 ((byte)0x09);
63+
RADIO_802154 ((byte)0x09),
64+
RADIO_BLUETOOTH ((byte)0x0A);
6465

6566
private final byte command;
6667

@@ -138,6 +139,10 @@ public static class RADIO_802154 {
138139
public static final UartComponentPropertyDetails SPECTRUM_SCAN = new UartComponentPropertyDetails(UART_COMPONENT.RADIO_802154, 0x07, PERMISSION.READ_ONLY, listOfCompatibleVersionInfoGq802154, "SPECTRUM_SCAN");
139140
}
140141

142+
public static class BLUETOOTH {
143+
public static final UartComponentPropertyDetails VER = new UartComponentPropertyDetails(UART_COMPONENT.RADIO_BLUETOOTH, 0x03, PERMISSION.READ_ONLY, null, "BT_FW_VER");
144+
}
145+
141146
}
142147

143148
public static final List<UartComponentPropertyDetails> mListOfUartCommandsConfig;

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4663,4 +4663,8 @@ public List<ISensorConfig> getSensorConfig() {
46634663
return listOfSensorConfig;
46644664
}
46654665

4666+
public String getRadioModel() {
4667+
return "";
4668+
}
4669+
46664670
}

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

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535
import com.shimmerresearch.driver.calibration.CalibDetailsKinematic;
3636
import com.shimmerresearch.driver.calibration.UtilCalibration;
3737
import com.shimmerresearch.driver.calibration.CalibDetails.CALIB_READ_SOURCE;
38+
import com.shimmerresearch.driver.shimmer2r3.BluetoothModuleVersionDetails;
3839
import com.shimmerresearch.driver.shimmer2r3.ConfigByteLayoutShimmer3;
3940
import com.shimmerresearch.driver.shimmerGq.ConfigByteLayoutShimmerGq802154;
4041
import com.shimmerresearch.driverUtilities.ChannelDetails;
@@ -464,7 +465,10 @@ public class BTStream {
464465
public static final byte UPD_CALIB_DUMP_COMMAND = (byte) 0x9B;
465466
//new BT + SD command to Write config file after all of InfoMem is written.
466467
public static final byte UPD_SDLOG_CFG_COMMAND = (byte) 0x9C;
467-
468+
469+
public static final byte GET_BT_FW_VERSION_STR_COMMAND = (byte) 0xA1;
470+
public static final byte BT_FW_VERSION_STR_RESPONSE = (byte) 0xA2;
471+
468472
public static final int MAX_NUMBER_OF_SIGNALS = 77;//50; //used to be 11 but now 13 because of the SR30 + 8 for 3d orientation
469473
public static final int MAX_INQUIRY_PACKET_SIZE = 47;
470474

@@ -503,6 +507,8 @@ public class BTStream {
503507
// protected String mMacIdFromUart = "";
504508
/** Read from the InfoMem from UART command through the base/dock*/
505509
protected String mMacIdFromInfoMem = "";
510+
511+
protected BluetoothModuleVersionDetails bluetoothModuleVersionDetails = new BluetoothModuleVersionDetails();
506512

507513
// protected String mShimmerUserAssignedName=""; // This stores the user assigned name
508514

@@ -9855,6 +9861,16 @@ public void enableArraysDataStructure(boolean enable) {
98559861
mUseArraysDataStructureInObjectCluster = enable;
98569862
}
98579863

9858-
}
9859-
9864+
public void setBtFwVerDetails(BluetoothModuleVersionDetails bluetoothModuleVersionDetails) {
9865+
this.bluetoothModuleVersionDetails = bluetoothModuleVersionDetails;
9866+
}
98609867

9868+
public BluetoothModuleVersionDetails getBtFwVerDetails() {
9869+
return bluetoothModuleVersionDetails;
9870+
}
9871+
9872+
@Override
9873+
public String getRadioModel() {
9874+
return getBtFwVerDetails().getUserFriendlyName();
9875+
}
9876+
}
Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
package com.shimmerresearch.driver.shimmer2r3;
2+
3+
import java.io.Serializable;
4+
import java.nio.charset.StandardCharsets;
5+
6+
/**
7+
* @author Mark Nolan
8+
*
9+
*/
10+
public class BluetoothModuleVersionDetails implements Serializable {
11+
12+
private static final long serialVersionUID = -4602970064289358794L;
13+
14+
public static enum BT_MODULE_VERSION {
15+
NOT_READ("", "", ""),
16+
17+
RN41_VERSION_RESPONSE_V4_77("Ver 4.77 05/12/09 \r\n(c) Roving Networks", "Ver 4.77 05", "RN41 v4.77"),
18+
19+
RN42_VERSION_RESPONSE_V4_77("Ver 4.77 RN-42 01/05/10 \r\n(c) Roving Networks", "Ver 4.77 RN-42", "RN42 v4.77"),
20+
RN42_VERSION_RESPONSE_V6_15("Ver 6.15 04/26/2013\r\n(c) Roving Networks", "Ver 6.15 04", "RN42 v6.15"),
21+
22+
RN4678_VERSION_RESPONSE_V1_00_5("RN4678 V1.00.5 11/15/2016 (c)Microchip Technology Inc", "RN4678 V1.00.5 ", "RN4678 v1.00.5"),
23+
RN4678_VERSION_RESPONSE_V1_11_0("RN4678 V1.11.00 6/1/2017 (c)Microchip Technology Inc", "RN4678 V1.11.00 ", "RN4678 v1.11.0"),
24+
RN4678_VERSION_RESPONSE_V1_13_5("RN4678 V1.13.5 8/29/2018 (c)Microchip Technology Inc", "RN4678 V1.13.5 ", "RN4678 v1.15.5"),
25+
RN4678_VERSION_RESPONSE_V1_22_0("RN4678 V1.22 12/08/2020 (c)Microchip Technology Inc ", "RN4678 V1.22 ", "RN4678 v1.23"),
26+
RN4678_VERSION_RESPONSE_V1_23_0("RN4678 V1.23 06/30/2021 (c)Microchip Technology Inc", "RN4678 V1.23 ", "RN4678 v1.23"),
27+
28+
UNKNOWN("Unknown", "Unknown", "Unknown");
29+
30+
public String btModuleVerStrFull = "";
31+
public String btModuleVerStrComparison = "";
32+
public String btModuleVerStrUserFriendly = "";
33+
34+
BT_MODULE_VERSION(String btModuleVerStrExpected, String btModuleVerStrComparison, String btModuleVerStrUserFriendly) {
35+
this.btModuleVerStrFull = btModuleVerStrExpected;
36+
this.btModuleVerStrComparison = btModuleVerStrComparison;
37+
this.btModuleVerStrUserFriendly = btModuleVerStrUserFriendly;
38+
}
39+
}
40+
41+
public BT_MODULE_VERSION mBtModuleVersionParsed = BT_MODULE_VERSION.NOT_READ;
42+
public String mBtModuleVersionReceived = mBtModuleVersionParsed.btModuleVerStrFull;
43+
44+
public void parseBtModuleVerBytes(byte[] responseData) {
45+
mBtModuleVersionReceived = new String(responseData, StandardCharsets.UTF_8);
46+
47+
mBtModuleVersionParsed = BT_MODULE_VERSION.UNKNOWN;
48+
for (BT_MODULE_VERSION btModuleVersion : BT_MODULE_VERSION.values()) {
49+
if(mBtModuleVersionReceived.contains(btModuleVersion.btModuleVerStrComparison)) {
50+
mBtModuleVersionParsed = btModuleVersion;
51+
}
52+
}
53+
}
54+
55+
public String getUserFriendlyName() {
56+
if (mBtModuleVersionParsed == BT_MODULE_VERSION.UNKNOWN) {
57+
return mBtModuleVersionReceived;
58+
} else {
59+
return mBtModuleVersionParsed.btModuleVerStrUserFriendly;
60+
}
61+
}
62+
63+
}

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -674,6 +674,11 @@ public static final boolean isSupportedExgChipClocksJoined(ShimmerVerObject svo,
674674
return false;
675675
}
676676

677+
public boolean isSupportedBtFwVerRequest() {
678+
return (compareVersions(FW_ID.LOGANDSTREAM, 0, 13, 7)
679+
|| compareVersions(FW_ID.SDLOG, 0, 20, 1));
680+
}
681+
677682
public String generateDebugString() {
678683
return "HW_ID: " + getHardwareVersion() + "\tHardwareVersionParsed: " + getHardwareVersionParsed()
679684
+ "\tFW_ID: " + getFirmwareIdentifier() + "\tFirmwareVersionParsed: " + getFirmwareVersionParsed();

0 commit comments

Comments
 (0)