Skip to content

Commit 5031e54

Browse files
authored
Merge pull request #220 from ShimmerEngineering/DEV-269
DEV-269 Shimmer3R Configuration Support
2 parents 2c2b211 + aeb69fd commit 5031e54

4 files changed

Lines changed: 57 additions & 26 deletions

File tree

ShimmerDriver/src/main/java/com/shimmerresearch/sensors/adxl371/SensorADXL371.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -546,6 +546,14 @@ public void generateCalibMap() {
546546
updateCurrentAccelHighGCalibInUse();
547547
}
548548

549+
@Override
550+
public boolean isSensorUsingDefaultCal(int sensorId) {
551+
if(sensorId==Configuration.Shimmer3.SENSOR_ID.SHIMMER_ADXL371_ACCEL_HIGHG){
552+
return isUsingDefaultHighGAccelParam();
553+
}
554+
return false;
555+
}
556+
549557
//--------- Optional methods to override in Sensor Class end --------
550558

551559
//--------- Sensor specific methods start --------------

ShimmerDriver/src/main/java/com/shimmerresearch/sensors/lisxmdl/SensorLIS2MDL.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -428,6 +428,14 @@ public void generateCalibMap() {
428428
updateCurrentMagCalibInUse();
429429
}
430430

431+
@Override
432+
public boolean isSensorUsingDefaultCal(int sensorId) {
433+
if(sensorId==Configuration.Shimmer3.SENSOR_ID.SHIMMER_LIS2MDL_MAG){
434+
return isUsingDefaultMagParam();
435+
}
436+
return false;
437+
}
438+
431439
//--------- Optional methods to override in Sensor Class end --------
432440

433441
//--------- Sensor specific methods start --------------

ShimmerDriver/src/main/java/com/shimmerresearch/sensors/lisxmdl/SensorLIS3MDL.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -519,6 +519,14 @@ public void generateCalibMap() {
519519

520520
updateCurrentMagAltCalibInUse();
521521
}
522+
523+
@Override
524+
public boolean isSensorUsingDefaultCal(int sensorId) {
525+
if(sensorId==Configuration.Shimmer3.SENSOR_ID.SHIMMER_LIS3MDL_MAG_ALT){
526+
return isUsingDefaultMagAltParam();
527+
}
528+
return false;
529+
}
522530

523531
// --------- Optional methods to override in Sensor Class end --------
524532

ShimmerDriver/src/main/java/com/shimmerresearch/sensors/lsm6dsv/SensorLSM6DSV.java

Lines changed: 33 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ public class SensorLSM6DSV extends AbstractSensor{
4848
private static final long serialVersionUID = -1336807717590498430L;
4949
// LN ACCEL
5050
protected int mSensorIdAccelLN = -1;
51-
private int mAccelRange = 1;
51+
private int mAccelRange = 0;
5252
public boolean mIsUsingDefaultLNAccelParam = true;
5353
public static final double[][] AlignmentMatrixLowNoiseAccelShimmer3r = {{-1,0,0},{0,1,0},{0,0,-1}};
5454
public static final double[][] OffsetVectorLowNoiseAccelShimmer3r = {{0},{0},{0}};
@@ -99,7 +99,7 @@ public class SensorLSM6DSV extends AbstractSensor{
9999

100100
// GYRO
101101
public boolean mIsUsingDefaultGyroParam = true;
102-
private int mGyroRange = 1;
102+
private int mGyroRange = 0;
103103
protected int mLSM6DSVGyroAccelRate=0;
104104
protected int mSensorIdGyro = -1;
105105

@@ -272,7 +272,6 @@ public class LABEL_SENSOR_TILE{
272272

273273
// GYRO
274274
public static final String[] ListofGyroRange = {"+/- 125dps","+/- 250dps","+/- 500dps","+/- 1000dps","+/- 2000dps","+/- 4000dps"};
275-
//public static final Integer[] ListofLSM6DSVGyroRangeConfigValues = {0,1,4,5,3,6};
276275
public static final Integer[] ListofLSM6DSVGyroRangeConfigValues = {0,1,2,3,4,5};
277276
public static final String[] ListofLSM6DSVGyroRate={"Power-down","1.875Hz","7.5Hz","12.0Hz","30.0Hz","60.0Hz","120.0Hz","240.0Hz","480.0Hz","960.0Hz","1920.0Hz","3840.0Hz","7680.0Hz"};
278277
public static final Double[] ListofLSM6DSVGyroRateDouble={0.0,1.875,7.5,12.0,30.0,60.0,120.0,240.0,480.0,960.0,1920.0,3840.0,7680.0};
@@ -549,6 +548,7 @@ public byte[] generateCalParamByteArrayAccelLn(){
549548
public int getAccelRange(){
550549
return mAccelRange;
551550
}
551+
552552
public void setAccelRange(int accelRange){
553553
setLSM6DSVAccelRange(accelRange);
554554
}
@@ -560,6 +560,11 @@ public void setLSM6DSVAccelRange(int i){
560560
}
561561
}
562562

563+
public void setDefaultLSM6DSVAccelSensorConfig(boolean isSensorEnabled) {
564+
if(isSensorEnabled) {
565+
setLSM6DSVAccelRange(0);
566+
}
567+
}
563568

564569
//--------- LN Accel methods end --------------
565570

@@ -787,6 +792,7 @@ public void generateSensorMap() {
787792
public LinkedHashMap<String, Object> generateConfigMap() {
788793
LinkedHashMap<String, Object> mapOfConfig = new LinkedHashMap<String, Object>();
789794

795+
mapOfConfig.put(SensorLSM6DSV.DatabaseConfigHandle.ACCEL_RANGE, getAccelRange());
790796
mapOfConfig.put(SensorLSM6DSV.DatabaseConfigHandle.GYRO_RANGE, getGyroRange());
791797
mapOfConfig.put(SensorLSM6DSV.DatabaseConfigHandle.GYRO_RATE, getLSM6DSVGyroAccelRate());
792798

@@ -805,33 +811,35 @@ public LinkedHashMap<String, Object> generateConfigMap() {
805811

806812
@Override
807813
public void parseConfigMap(LinkedHashMap<String, Object> mapOfConfigPerShimmer) {
808-
//Analog Accel Calibration Configuration
809-
parseCalibDetailsKinematicFromDb(mapOfConfigPerShimmer,
810-
Configuration.Shimmer3.SENSOR_ID.SHIMMER_LSM6DSV_ACCEL_LN,
811-
0,
812-
SensorLSM6DSV.DatabaseConfigHandle.LIST_OF_CALIB_HANDLES_LN_ACC,
813-
SensorLSM6DSV.DatabaseConfigHandle.LN_ACC_CALIB_TIME);
814814

815+
if(mapOfConfigPerShimmer.containsKey(DatabaseConfigHandle.ACCEL_RANGE)){
816+
setAccelRange(((Double) mapOfConfigPerShimmer.get(DatabaseConfigHandle.ACCEL_RANGE)).intValue());
817+
}
815818
if(mapOfConfigPerShimmer.containsKey(DatabaseConfigHandle.GYRO_RATE)){
816819
setLSM6DSVGyroAccelRate(((Double) mapOfConfigPerShimmer.get(DatabaseConfigHandle.GYRO_RATE)).intValue());
817820
}
818821
if(mapOfConfigPerShimmer.containsKey(DatabaseConfigHandle.GYRO_RANGE)){
819822
setGyroRange(((Double) mapOfConfigPerShimmer.get(DatabaseConfigHandle.GYRO_RANGE)).intValue());
820823
}
821824

825+
//LN Accel Calibration Configuration
826+
parseCalibDetailsKinematicFromDb(mapOfConfigPerShimmer,
827+
Configuration.Shimmer3.SENSOR_ID.SHIMMER_LSM6DSV_ACCEL_LN,
828+
getAccelRange(),
829+
SensorLSM6DSV.DatabaseConfigHandle.LIST_OF_CALIB_HANDLES_LN_ACC,
830+
SensorLSM6DSV.DatabaseConfigHandle.LN_ACC_CALIB_TIME);
831+
822832
//Gyroscope Calibration Configuration
823833
parseCalibDetailsKinematicFromDb(mapOfConfigPerShimmer,
824-
mSensorIdGyro,
834+
Configuration.Shimmer3.SENSOR_ID.SHIMMER_LSM6DSV_GYRO,
825835
getGyroRange(),
826836
SensorLSM6DSV.DatabaseConfigHandle.LIST_OF_CALIB_HANDLES_GYRO,
827837
SensorLSM6DSV.DatabaseConfigHandle.GYRO_CALIB_TIME);
828838
}
829839

830840
@Override
831841
public void generateConfigOptionsMap() {
832-
// No Configuration Needed for Accel
833-
834-
// For Gyro
842+
// For Gyro & Accel
835843
mConfigOptionsMap.clear();
836844
addConfigOption(configOptionLSM6DSVGyroRange);
837845
addConfigOption(configOptionLSM6DSVAccelRange);
@@ -846,7 +854,7 @@ public void generateSensorGroupMapping() {
846854
mSensorGroupingMap.put(Configuration.Shimmer3.LABEL_SENSOR_TILE.LOW_NOISE_ACCEL_3R.ordinal(), sensorGroupLnAccelLSM6DSV);
847855
mSensorGroupingMap.put(Configuration.Shimmer3.LABEL_SENSOR_TILE.GYRO_3R.ordinal(), new SensorGroupingDetails(
848856
LABEL_SENSOR_TILE.GYRO,
849-
Arrays.asList(mSensorIdGyro),
857+
Arrays.asList(Configuration.Shimmer3.SENSOR_ID.SHIMMER_LSM6DSV_GYRO),
850858
CompatibilityInfoForMaps.listOfCompatibleVersionInfoLSM6DSV));
851859

852860
super.updateSensorGroupingMap();
@@ -987,7 +995,7 @@ public void configBytesParse(ShimmerDevice shimmerDevice, byte[] configBytes, CO
987995
if(configByteLayout instanceof ConfigByteLayoutShimmer3){
988996
ConfigByteLayoutShimmer3 configByteLayoutCast = (ConfigByteLayoutShimmer3) configByteLayout;
989997

990-
setAccelRange((configBytes[configByteLayoutCast.idxConfigSetupByte3] >> configByteLayoutCast.bitShiftMPU9150AccelRange) & configByteLayoutCast.maskMPU9150AccelRange);
998+
setLSM6DSVAccelRange((configBytes[configByteLayoutCast.idxConfigSetupByte3] >> configByteLayoutCast.bitShiftMPU9150AccelRange) & configByteLayoutCast.maskMPU9150AccelRange);
991999

9921000
if (shimmerDevice.isConnected()){
9931001
getCurrentCalibDetailsAccelLn().mCalibReadSource=CALIB_READ_SOURCE.INFOMEM;
@@ -1057,7 +1065,7 @@ public Object setConfigValueUsingConfigLabel(Integer sensorId, String configLabe
10571065
case(GuiLabelConfigCommon.RANGE):
10581066
if(sensorId==mSensorIdGyro){
10591067
this.setConfigValueUsingConfigLabel(GuiLabelConfig.LSM6DSV_GYRO_RANGE, valueToSet);
1060-
}else if(sensorId==mSensorIdAccelLN){
1068+
} else if(sensorId==mSensorIdAccelLN){
10611069
this.setConfigValueUsingConfigLabel(GuiLabelConfig.LSM6DSV_ACCEL_RANGE, valueToSet);
10621070
}
10631071
break;
@@ -1102,7 +1110,7 @@ public Object getConfigValueUsingConfigLabel(Integer sensorId, String configLabe
11021110
case(GuiLabelConfigCommon.RANGE):
11031111
if(sensorId==mSensorIdGyro){
11041112
returnValue = this.getConfigValueUsingConfigLabel(GuiLabelConfig.LSM6DSV_GYRO_RANGE);
1105-
}else if(sensorId==mSensorIdAccelLN){
1113+
} else if(sensorId==mSensorIdAccelLN){
11061114
returnValue = this.getConfigValueUsingConfigLabel(GuiLabelConfig.LSM6DSV_ACCEL_RANGE);
11071115
}
11081116
break;
@@ -1126,13 +1134,14 @@ public void setSensorSamplingRate(double samplingRateHz) {
11261134
@Override
11271135
public boolean setDefaultConfigForSensor(int sensorId, boolean isSensorEnabled) {
11281136
if(mSensorMap.containsKey(sensorId)){
1129-
updateCurrentAccelLnCalibInUse();
1137+
if(sensorId==mSensorIdAccelLN) {
1138+
setDefaultLSM6DSVAccelSensorConfig(isSensorEnabled);
1139+
}
1140+
else if(sensorId==mSensorIdGyro) {
1141+
setDefaultLSM6DSVGyroSensorConfig(isSensorEnabled);
1142+
}
11301143
return true;
11311144
}
1132-
if(sensorId==mSensorIdGyro){
1133-
setDefaultLSM6DSVGyroSensorConfig(isSensorEnabled);
1134-
}
1135-
11361145
return false;
11371146
}
11381147

@@ -1168,6 +1177,7 @@ public boolean processResponse(int responseCommand, Object parsedResponse, COMMU
11681177
public void checkShimmerConfigBeforeConfiguring() {
11691178
if(!(isSensorEnabled(mSensorIdGyro) || isSensorEnabled(mSensorIdAccelLN))) {
11701179
setDefaultLSM6DSVGyroSensorConfig(false);
1180+
setDefaultLSM6DSVAccelSensorConfig(false);
11711181
}
11721182
}
11731183

@@ -1185,9 +1195,6 @@ public void initialise() {
11851195
updateCurrentAccelLnCalibInUse();
11861196
setCalibSensitivityScaleFactor(mSensorIdGyro, CALIBRATION_SCALE_FACTOR.ONE_HUNDRED);
11871197
updateCurrentGyroCalibInUse();
1188-
1189-
// Set CurrentValues (Fix Calibration Not Read)
1190-
// mCurrentCalibDetailsAccelLn.setCurrentValues(OffsetVectorLowNoiseAccelShimmer3r, SensitivityMatrixLowNoiseAccel2gShimmer3r, AlignmentMatrixLowNoiseAccelShimmer3r, false);
11911198
}
11921199

11931200
@Override
@@ -1222,7 +1229,7 @@ public boolean isSensorUsingDefaultCal(int sensorId) {
12221229
if(sensorId==Configuration.Shimmer3.SENSOR_ID.SHIMMER_LSM6DSV_ACCEL_LN){
12231230
return isUsingDefaultLNAccelParam();
12241231
}
1225-
if(sensorId==mSensorIdGyro){
1232+
else if(sensorId==Configuration.Shimmer3.SENSOR_ID.SHIMMER_LSM6DSV_GYRO){
12261233
return isUsingDefaultGyroParam();
12271234
}
12281235
return false;

0 commit comments

Comments
 (0)