Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -1332,7 +1332,8 @@ public static class CompatibilityInfoForMaps{

public static final ShimmerVerObject svoShimmer3RLogAndStream = new ShimmerVerObject(HW_ID.SHIMMER_3R,FW_ID.LOGANDSTREAM,ShimmerVerDetails.ANY_VERSION,ShimmerVerDetails.ANY_VERSION,ShimmerVerDetails.ANY_VERSION,ShimmerVerDetails.ANY_VERSION);
public static final ShimmerVerObject svoShimmer3LogAndStreamWithSDLogSyncSupport = new ShimmerVerObject(HW_ID.SHIMMER_3,FW_ID.LOGANDSTREAM,0,16,11,ShimmerVerDetails.ANY_VERSION);

public static final ShimmerVerObject svoShimmer3RLogAndStreamWithSDLogSyncSupport = new ShimmerVerObject(HW_ID.SHIMMER_3R,FW_ID.LOGANDSTREAM,ShimmerVerDetails.ANY_VERSION,ShimmerVerDetails.ANY_VERSION,ShimmerVerDetails.ANY_VERSION,ShimmerVerDetails.ANY_VERSION);

private static final ShimmerVerObject svoShimmerGq802154Lr = new ShimmerVerObject(HW_ID.SHIMMER_GQ_802154_LR,ShimmerVerDetails.ANY_VERSION,ShimmerVerDetails.ANY_VERSION,ShimmerVerDetails.ANY_VERSION,ShimmerVerDetails.ANY_VERSION,ShimmerVerDetails.ANY_VERSION);
private static final ShimmerVerObject svoShimmerGq802154Nr = new ShimmerVerObject(HW_ID.SHIMMER_GQ_802154_NR,ShimmerVerDetails.ANY_VERSION,ShimmerVerDetails.ANY_VERSION,ShimmerVerDetails.ANY_VERSION,ShimmerVerDetails.ANY_VERSION,ShimmerVerDetails.ANY_VERSION);
private static final ShimmerVerObject svoShimmer2rGq = new ShimmerVerObject(HW_ID.SHIMMER_2R_GQ,ShimmerVerDetails.ANY_VERSION,ShimmerVerDetails.ANY_VERSION,ShimmerVerDetails.ANY_VERSION,ShimmerVerDetails.ANY_VERSION,ShimmerVerDetails.ANY_VERSION);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -841,6 +841,11 @@ public ObjectCluster buildMsg(byte[] newPacket, COMMUNICATION_TYPE fwType, boole
numAdditionalChannels += 1;
}
else {
if (fwType == COMMUNICATION_TYPE.SD && getHardwareVersion()==HW_ID.SHIMMER_3R) {
//plus 1 because of: timestamp, because we are no longer relying on interpretdatapacketformat within ShimmerSDLog
numAdditionalChannels += 1;
}

if (!isRtcDifferenceSet()){
//sd log time stamp already included in mnChannels
}
Expand Down Expand Up @@ -1101,7 +1106,8 @@ else if (isShimmerGen3()) {
// }
}
}
if ((fwType == COMMUNICATION_TYPE.BLUETOOTH) && (mEnabledSensors & BTStream.ACCEL_ALT) > 0) {
if (((fwType == COMMUNICATION_TYPE.BLUETOOTH) && (mEnabledSensors & BTStream.ACCEL_ALT) > 0)
|| ((fwType == COMMUNICATION_TYPE.SD) && (mEnabledSensors & SDLogHeader.ACCEL_MPU) > 0)) {
int iAccelX=getSignalIndex(Shimmer3.ObjectClusterSensorName.ACCEL_HIGHG_X); //find index
int iAccelY=getSignalIndex(Shimmer3.ObjectClusterSensorName.ACCEL_HIGHG_Y); //find index
int iAccelZ=getSignalIndex(Shimmer3.ObjectClusterSensorName.ACCEL_HIGHG_Z); //find index
Expand Down Expand Up @@ -1142,8 +1148,8 @@ else if (isShimmerGen3()) {
accelerometer.z=altAccelCalibratedData[2];
}
}
if ((fwType == COMMUNICATION_TYPE.BLUETOOTH) && (mEnabledSensors & BTStream.MAG_ALT) > 0) {

if (((fwType == COMMUNICATION_TYPE.BLUETOOTH) && (mEnabledSensors & BTStream.MAG_ALT) > 0)
|| ((fwType == COMMUNICATION_TYPE.SD) && (mEnabledSensors & SDLogHeader.MAG_MPU) > 0)) {
int iMagX=getSignalIndex(Shimmer3.ObjectClusterSensorName.MAG_WR_X);
int iMagY=getSignalIndex(Shimmer3.ObjectClusterSensorName.MAG_WR_Y);
int iMagZ=getSignalIndex(Shimmer3.ObjectClusterSensorName.MAG_WR_Z);
Expand Down Expand Up @@ -2921,23 +2927,47 @@ protected int getSignalIndex(String signalName) {
public void interpretDataPacketFormat(int numChannels, byte[] signalId){
String [] signalNameArray=new String[MAX_NUMBER_OF_SIGNALS];
String [] signalDataTypeArray=new String[MAX_NUMBER_OF_SIGNALS];
int packetSize=mTimeStampPacketByteSize; // Time stamp

int iTS=0;

if (getHardwareVersion()==HW_ID.SHIMMER_3R && this.getClass().getSimpleName().equals("ShimmerSDLog") ) {
mNChannels = numChannels;
if (isSyncWhenLogging()
&& (getFirmwareIdentifier()==FW_ID.SDLOG || getFirmwareIdentifier()==FW_ID.GQ_802154
||(UtilShimmer.compareVersions(getShimmerVerObject(),Configuration.Shimmer3.CompatibilityInfoForMaps.svoShimmer3LogAndStreamWithSDLogSyncSupport))
||(UtilShimmer.compareVersions(getShimmerVerObject(),Configuration.Shimmer3.CompatibilityInfoForMaps.svoShimmer3RLogAndStreamWithSDLogSyncSupport)))){
signalNameArray[iTS]=SensorShimmerClock.ObjectClusterSensorName.TIMESTAMP_OFFSET;
if (OFFSET_LENGTH==5){
signalDataTypeArray[iTS]="u32signed";
mNChannels += 1;
packetSize+=5;
} else if (OFFSET_LENGTH==9){
signalDataTypeArray[iTS]="u72";
mNChannels += 1;
packetSize+=9;
}
iTS++;
}
}


if (getHardwareVersion()==HW_ID.SHIMMER_SR30 || getHardwareVersion()==HW_ID.SHIMMER_3 || getHardwareVersion() == HW_ID.SHIMMER_3R){
signalNameArray[0]=Configuration.Shimmer3.ObjectClusterSensorName.TIMESTAMP;
signalNameArray[iTS]=Configuration.Shimmer3.ObjectClusterSensorName.TIMESTAMP;
}
else{
signalNameArray[0]=Configuration.Shimmer2.ObjectClusterSensorName.TIMESTAMP;
signalNameArray[iTS]=Configuration.Shimmer2.ObjectClusterSensorName.TIMESTAMP;
}

int packetSize=mTimeStampPacketByteSize; // Time stamp

if (mTimeStampPacketByteSize==2){
signalDataTypeArray[0]="u16";
signalDataTypeArray[iTS]="u16";
} else if (mTimeStampPacketByteSize==3) {
signalDataTypeArray[0]="u24";
signalDataTypeArray[iTS]="u24";
}

int enabledSensors= 0x00;
for (int i=0;i<numChannels;i++) {
for (int i=iTS;i<numChannels+iTS;i++) {
if ((byte)signalId[i]==(byte)0x00){
if (getHardwareVersion()==HW_ID.SHIMMER_SR30 || getHardwareVersion()==HW_ID.SHIMMER_3 || getHardwareVersion()==HW_ID.SHIMMER_3R){
signalNameArray[i+1]=Shimmer3.ObjectClusterSensorName.ACCEL_LN_X;
Expand Down Expand Up @@ -3940,7 +3970,7 @@ else if (getHardwareVersion()==HW_ID.SHIMMER_3R) {
setLIS2DW12DigitalAccelRate(((int)(mConfigByte0 & 0xF0))>>4);

setLowPowerAccelWR((getLIS2DW12DigitalAccelRate()==1)? true:false);
setMPU9150GyroAccelRate(((int)(mConfigByte0 & 65280))>>8);
setLSM6DSVGyroAccelRate(((int)(mConfigByte0 & 65280))>>8);
checkLowPowerGyro();

int magSamplingRate = (int)((mConfigByte0 >> 18) & 0x07);
Expand Down Expand Up @@ -6576,7 +6606,15 @@ public byte[] generateCalParamLSM303DLHCMag(){
public void parseCalibParamFromPacketAccelLsm(byte[] bufferCalibrationParameters, CALIB_READ_SOURCE calibReadSource) {
getCurrentCalibDetailsAccelWr().parseCalParamByteArray(bufferCalibrationParameters, calibReadSource);
}

public void getCurrentCalibDetailsAccelAlt(byte[] bufferCalibrationParameters, CALIB_READ_SOURCE calibReadSource) {
getCurrentCalibDetailsAccelAlt().parseCalParamByteArray(bufferCalibrationParameters, calibReadSource);
}

public void getCurrentCalibDetailsMagWr(byte[] bufferCalibrationParameters, CALIB_READ_SOURCE calibReadSource) {
getCurrentCalibDetailsMagWr().parseCalParamByteArray(bufferCalibrationParameters, calibReadSource);
}

public void parseCalibParamFromPacketMag(byte[] bufferCalibrationParameters, CALIB_READ_SOURCE calibReadSource) {
getCurrentCalibDetailsMag().parseCalParamByteArray(bufferCalibrationParameters, calibReadSource);
}
Expand Down Expand Up @@ -8441,6 +8479,14 @@ public void setAccelRange(int i){
setDigitalAccelRange(i);
}

public void setDigitalAccelRate(int i) {
if(isShimmerGen3()) {
mSensorLSM303.setLSM303DigitalAccelRate(i);
} else if(isShimmerGen3R()) {
mSensorLIS2DW12.setLIS2DW12DigitalAccelRate(i);
}
}

public void setDigitalAccelRange(int i){
if(isShimmerGen2()) {
mSensorMMA736x.setAccelRange(i);
Expand All @@ -8466,14 +8512,19 @@ public void setLIS2DW12DigitalAccelRate(int mLIS2DW12DigitalAccelRate) {
}
}

/** Use setLSM303MagRange() instead

public void setMagRange(int i){
if(isShimmerGen3()) {
mSensorLSM303.setLSM303MagRange(i);
} else if(isShimmerGen3R()) {
mSensorLIS3MDL.setLISMagRange(i);
}
}

/** Use setMagRange() instead
* @param i
*/
@Deprecated
public void setMagRange(int i){
setLSM303MagRange(i);
}

public void setLSM303MagRange(int i){
if(isShimmerGen3()) {
mSensorLSM303.setLSM303MagRange(i);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -410,7 +410,8 @@ public static boolean isSupportedRtcConfigViaUart(int hwVer, int fwId) {
|| (hwVer==HW_ID.SHIMMER_GQ_802154_NR)
|| (hwVer==HW_ID.SHIMMER_GQ_802154_LR)
|| (hwVer==HW_ID.SHIMMER_2R_GQ)
|| (hwVer==HW_ID.SHIMMER_4_SDK)){
|| (hwVer==HW_ID.SHIMMER_4_SDK)
|| (hwVer==HW_ID.SHIMMER_3R)){
return true;
}
return false;
Expand Down Expand Up @@ -440,6 +441,7 @@ public static boolean isSupportedSdCardAccess(int hwVer, int fwId) {
if ((hwVer==HW_ID.SHIMMER_3 && fwId == FW_ID.SDLOG)
|| (hwVer==HW_ID.SHIMMER_3 && fwId == FW_ID.LOGANDSTREAM)
|| (hwVer==HW_ID.SHIMMER_3 && fwId == FW_ID.STROKARE)
|| (hwVer==HW_ID.SHIMMER_3R)
|| (hwVer==HW_ID.SHIMMER_GQ_BLE && fwId == FW_ID.GQ_BLE)
// || hwVer==HW_ID.SHIMMER_GQ_802154_NR
// || hwVer==HW_ID.SHIMMER_GQ_802154_LR
Expand Down Expand Up @@ -504,6 +506,7 @@ public static boolean isSupportedSdDataImport(int hwVer) {
|| hwVer == HW_ID.SHIMMER_2
|| hwVer == HW_ID.SHIMMER_2R
|| hwVer == HW_ID.SHIMMER_3
|| hwVer == HW_ID.SHIMMER_3R
|| hwVer == HW_ID.SHIMMER_GQ_BLE
|| hwVer == HW_ID.SHIMMER_GQ_802154_LR
|| hwVer == HW_ID.SHIMMER_GQ_802154_NR
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -308,4 +308,53 @@ public static long calculatetwoscomplement(long signedData, int bitLength){

return newData;
}

public static int countBytesFromDataTypes(String[] dataType) {
int totalBytes = 0;

for (String type : dataType) {
if(type==null) {
continue;
}
switch (type) {
case "u8":
case "i8":
totalBytes += 1;
break;
case "u12":
case "u14":
case "i12>":
case "i12*>":
case "u16":
case "u16r":
case "i16":
case "i16r":
totalBytes += 2;
break;
case "u24":
case "u24r":
case "i24r":
totalBytes += 3;
break;
case "u32":
case "u32r":
case "i32":
case "i32r":
totalBytes += 4;
break;
case "u32signed":
totalBytes += 5;
break;
case "u72":
totalBytes += 9;
break;
default:
throw new IllegalArgumentException("Unknown data type: " + type);
}
}

return totalBytes;
}


}
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
package com.shimmerresearch.driverUtilities;
import static org.junit.Assert.*;

import org.junit.Test;

public class API_XXXXX_UtilParseData {
@Test
public void testSingleByteTypes() {
String[] types = {"u8", "i8"};
assertEquals(2, UtilParseData.countBytesFromDataTypes(types));
}

@Test
public void testTwoByteTypes() {
String[] types = {"u12", "u14", "i12>", "i12*>", "u16", "u16r", "i16", "i16r"};
assertEquals(2 * types.length, UtilParseData.countBytesFromDataTypes(types));
}

@Test
public void testThreeByteTypes() {
String[] types = {"u24", "u24r", "i24r"};
assertEquals(9, UtilParseData.countBytesFromDataTypes(types));
}

@Test
public void testFourByteTypes() {
String[] types = {"u32", "u32r", "i32", "i32r"};
assertEquals(4 * types.length, UtilParseData.countBytesFromDataTypes(types));
}

@Test
public void testFiveByteType() {
String[] types = {"u32signed"};
assertEquals(5, UtilParseData.countBytesFromDataTypes(types));
}

@Test
public void testNineByteType() {
String[] types = {"u72"};
assertEquals(9, UtilParseData.countBytesFromDataTypes(types));
}

@Test
public void testMixedTypes() {
String[] types = {"u8", "i8", "u16", "u24", "u32signed", "u72"};
int expected = 1 + 1 + 2 + 3 + 5 + 9;
assertEquals(expected, UtilParseData.countBytesFromDataTypes(types));
}

@Test
public void testEmptyInput() {
String[] types = {};
assertEquals(0, UtilParseData.countBytesFromDataTypes(types));
}

@Test(expected = IllegalArgumentException.class)
public void testUnknownTypeThrows() {
String[] types = {"u8", "invalidType"};
UtilParseData.countBytesFromDataTypes(types);
}
}
Loading