From 73793a6ef2565e89d666f95646eae4dd9e1065a4 Mon Sep 17 00:00:00 2001 From: Danesh Mariapan <161300025+dmariapan-shimmer@users.noreply.github.com> Date: Tue, 27 May 2025 15:11:57 +0800 Subject: [PATCH 1/3] Fixed Issues - Inaccurate Config & Default Calib Markers displayed --- .../sensors/adxl371/SensorADXL371.java | 8 ++++++++ .../sensors/lisxmdl/SensorLIS2MDL.java | 8 ++++++++ .../sensors/lisxmdl/SensorLIS3MDL.java | 8 ++++++++ .../sensors/lsm6dsv/SensorLSM6DSV.java | 14 +++++++------- 4 files changed, 31 insertions(+), 7 deletions(-) diff --git a/ShimmerDriver/src/main/java/com/shimmerresearch/sensors/adxl371/SensorADXL371.java b/ShimmerDriver/src/main/java/com/shimmerresearch/sensors/adxl371/SensorADXL371.java index d61dbb91b..ec2c5f7aa 100644 --- a/ShimmerDriver/src/main/java/com/shimmerresearch/sensors/adxl371/SensorADXL371.java +++ b/ShimmerDriver/src/main/java/com/shimmerresearch/sensors/adxl371/SensorADXL371.java @@ -546,6 +546,14 @@ public void generateCalibMap() { updateCurrentAccelHighGCalibInUse(); } + @Override + public boolean isSensorUsingDefaultCal(int sensorId) { + if(sensorId==Configuration.Shimmer3.SENSOR_ID.SHIMMER_ADXL371_ACCEL_HIGHG){ + return isUsingDefaultHighGAccelParam(); + } + return false; + } + //--------- Optional methods to override in Sensor Class end -------- //--------- Sensor specific methods start -------------- diff --git a/ShimmerDriver/src/main/java/com/shimmerresearch/sensors/lisxmdl/SensorLIS2MDL.java b/ShimmerDriver/src/main/java/com/shimmerresearch/sensors/lisxmdl/SensorLIS2MDL.java index f72dc5a52..8ae3d67be 100644 --- a/ShimmerDriver/src/main/java/com/shimmerresearch/sensors/lisxmdl/SensorLIS2MDL.java +++ b/ShimmerDriver/src/main/java/com/shimmerresearch/sensors/lisxmdl/SensorLIS2MDL.java @@ -428,6 +428,14 @@ public void generateCalibMap() { updateCurrentMagCalibInUse(); } + @Override + public boolean isSensorUsingDefaultCal(int sensorId) { + if(sensorId==Configuration.Shimmer3.SENSOR_ID.SHIMMER_LIS2MDL_MAG){ + return isUsingDefaultMagParam(); + } + return false; + } + //--------- Optional methods to override in Sensor Class end -------- //--------- Sensor specific methods start -------------- diff --git a/ShimmerDriver/src/main/java/com/shimmerresearch/sensors/lisxmdl/SensorLIS3MDL.java b/ShimmerDriver/src/main/java/com/shimmerresearch/sensors/lisxmdl/SensorLIS3MDL.java index 7b0ede344..05908ec81 100644 --- a/ShimmerDriver/src/main/java/com/shimmerresearch/sensors/lisxmdl/SensorLIS3MDL.java +++ b/ShimmerDriver/src/main/java/com/shimmerresearch/sensors/lisxmdl/SensorLIS3MDL.java @@ -519,6 +519,14 @@ public void generateCalibMap() { updateCurrentMagAltCalibInUse(); } + + @Override + public boolean isSensorUsingDefaultCal(int sensorId) { + if(sensorId==Configuration.Shimmer3.SENSOR_ID.SHIMMER_LIS3MDL_MAG_ALT){ + return isUsingDefaultMagAltParam(); + } + return false; + } // --------- Optional methods to override in Sensor Class end -------- diff --git a/ShimmerDriver/src/main/java/com/shimmerresearch/sensors/lsm6dsv/SensorLSM6DSV.java b/ShimmerDriver/src/main/java/com/shimmerresearch/sensors/lsm6dsv/SensorLSM6DSV.java index 4d546a036..b37260396 100644 --- a/ShimmerDriver/src/main/java/com/shimmerresearch/sensors/lsm6dsv/SensorLSM6DSV.java +++ b/ShimmerDriver/src/main/java/com/shimmerresearch/sensors/lsm6dsv/SensorLSM6DSV.java @@ -48,7 +48,7 @@ public class SensorLSM6DSV extends AbstractSensor{ private static final long serialVersionUID = -1336807717590498430L; // LN ACCEL protected int mSensorIdAccelLN = -1; - private int mAccelRange = 1; + private int mAccelRange = 0; public boolean mIsUsingDefaultLNAccelParam = true; public static final double[][] AlignmentMatrixLowNoiseAccelShimmer3r = {{-1,0,0},{0,1,0},{0,0,-1}}; public static final double[][] OffsetVectorLowNoiseAccelShimmer3r = {{0},{0},{0}}; @@ -99,7 +99,7 @@ public class SensorLSM6DSV extends AbstractSensor{ // GYRO public boolean mIsUsingDefaultGyroParam = true; - private int mGyroRange = 1; + private int mGyroRange = 0; protected int mLSM6DSVGyroAccelRate=0; protected int mSensorIdGyro = -1; @@ -549,9 +549,6 @@ public byte[] generateCalParamByteArrayAccelLn(){ public int getAccelRange(){ return mAccelRange; } - public void setAccelRange(int accelRange){ - setLSM6DSVAccelRange(accelRange); - } public void setLSM6DSVAccelRange(int i){ if(ArrayUtils.contains(ListofLSM6DSVAccelRangeConfigValues, i)){ @@ -812,6 +809,9 @@ public void parseConfigMap(LinkedHashMap mapOfConfigPerShimmer) SensorLSM6DSV.DatabaseConfigHandle.LIST_OF_CALIB_HANDLES_LN_ACC, SensorLSM6DSV.DatabaseConfigHandle.LN_ACC_CALIB_TIME); + if(mapOfConfigPerShimmer.containsKey(DatabaseConfigHandle.ACCEL_RANGE)){ + setLSM6DSVAccelRange(((Double) mapOfConfigPerShimmer.get(DatabaseConfigHandle.ACCEL_RANGE)).intValue()); + } if(mapOfConfigPerShimmer.containsKey(DatabaseConfigHandle.GYRO_RATE)){ setLSM6DSVGyroAccelRate(((Double) mapOfConfigPerShimmer.get(DatabaseConfigHandle.GYRO_RATE)).intValue()); } @@ -987,7 +987,7 @@ public void configBytesParse(ShimmerDevice shimmerDevice, byte[] configBytes, CO if(configByteLayout instanceof ConfigByteLayoutShimmer3){ ConfigByteLayoutShimmer3 configByteLayoutCast = (ConfigByteLayoutShimmer3) configByteLayout; - setAccelRange((configBytes[configByteLayoutCast.idxConfigSetupByte3] >> configByteLayoutCast.bitShiftMPU9150AccelRange) & configByteLayoutCast.maskMPU9150AccelRange); + setLSM6DSVAccelRange((configBytes[configByteLayoutCast.idxConfigSetupByte3] >> configByteLayoutCast.bitShiftMPU9150AccelRange) & configByteLayoutCast.maskMPU9150AccelRange); if (shimmerDevice.isConnected()){ getCurrentCalibDetailsAccelLn().mCalibReadSource=CALIB_READ_SOURCE.INFOMEM; @@ -1222,7 +1222,7 @@ public boolean isSensorUsingDefaultCal(int sensorId) { if(sensorId==Configuration.Shimmer3.SENSOR_ID.SHIMMER_LSM6DSV_ACCEL_LN){ return isUsingDefaultLNAccelParam(); } - if(sensorId==mSensorIdGyro){ + if(sensorId==Configuration.Shimmer3.SENSOR_ID.SHIMMER_LSM6DSV_GYRO){ return isUsingDefaultGyroParam(); } return false; From 6da95e53ecc2a38f1285e197a6bd1a3ad5a57083 Mon Sep 17 00:00:00 2001 From: Danesh Mariapan <161300025+dmariapan-shimmer@users.noreply.github.com> Date: Thu, 29 May 2025 15:02:25 +0800 Subject: [PATCH 2/3] Fixed AccelLN ConfigMap Issues --- .../sensors/lsm6dsv/SensorLSM6DSV.java | 60 ++++++++++++------- 1 file changed, 38 insertions(+), 22 deletions(-) diff --git a/ShimmerDriver/src/main/java/com/shimmerresearch/sensors/lsm6dsv/SensorLSM6DSV.java b/ShimmerDriver/src/main/java/com/shimmerresearch/sensors/lsm6dsv/SensorLSM6DSV.java index b37260396..8e69d3ee3 100644 --- a/ShimmerDriver/src/main/java/com/shimmerresearch/sensors/lsm6dsv/SensorLSM6DSV.java +++ b/ShimmerDriver/src/main/java/com/shimmerresearch/sensors/lsm6dsv/SensorLSM6DSV.java @@ -272,7 +272,6 @@ public class LABEL_SENSOR_TILE{ // GYRO public static final String[] ListofGyroRange = {"+/- 125dps","+/- 250dps","+/- 500dps","+/- 1000dps","+/- 2000dps","+/- 4000dps"}; - //public static final Integer[] ListofLSM6DSVGyroRangeConfigValues = {0,1,4,5,3,6}; public static final Integer[] ListofLSM6DSVGyroRangeConfigValues = {0,1,2,3,4,5}; 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"}; 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}; @@ -550,6 +549,10 @@ public int getAccelRange(){ return mAccelRange; } + public void setAccelRange(int accelRange){ + setLSM6DSVAccelRange(accelRange); + } + public void setLSM6DSVAccelRange(int i){ if(ArrayUtils.contains(ListofLSM6DSVAccelRangeConfigValues, i)){ mAccelRange = i; @@ -557,6 +560,12 @@ public void setLSM6DSVAccelRange(int i){ } } + public void setDefaultLSM6DSVAccelSensorConfig(boolean isSensorEnabled) { + if(isSensorEnabled) { + setLSM6DSVAccelRange(0); + } + } + //--------- LN Accel methods end -------------- @@ -784,6 +793,7 @@ public void generateSensorMap() { public LinkedHashMap generateConfigMap() { LinkedHashMap mapOfConfig = new LinkedHashMap(); + mapOfConfig.put(SensorLSM6DSV.DatabaseConfigHandle.ACCEL_RANGE, getAccelRange()); mapOfConfig.put(SensorLSM6DSV.DatabaseConfigHandle.GYRO_RANGE, getGyroRange()); mapOfConfig.put(SensorLSM6DSV.DatabaseConfigHandle.GYRO_RATE, getLSM6DSVGyroAccelRate()); @@ -802,15 +812,9 @@ public LinkedHashMap generateConfigMap() { @Override public void parseConfigMap(LinkedHashMap mapOfConfigPerShimmer) { - //Analog Accel Calibration Configuration - parseCalibDetailsKinematicFromDb(mapOfConfigPerShimmer, - Configuration.Shimmer3.SENSOR_ID.SHIMMER_LSM6DSV_ACCEL_LN, - 0, - SensorLSM6DSV.DatabaseConfigHandle.LIST_OF_CALIB_HANDLES_LN_ACC, - SensorLSM6DSV.DatabaseConfigHandle.LN_ACC_CALIB_TIME); if(mapOfConfigPerShimmer.containsKey(DatabaseConfigHandle.ACCEL_RANGE)){ - setLSM6DSVAccelRange(((Double) mapOfConfigPerShimmer.get(DatabaseConfigHandle.ACCEL_RANGE)).intValue()); + setAccelRange(((Double) mapOfConfigPerShimmer.get(DatabaseConfigHandle.ACCEL_RANGE)).intValue()); } if(mapOfConfigPerShimmer.containsKey(DatabaseConfigHandle.GYRO_RATE)){ setLSM6DSVGyroAccelRate(((Double) mapOfConfigPerShimmer.get(DatabaseConfigHandle.GYRO_RATE)).intValue()); @@ -819,9 +823,16 @@ public void parseConfigMap(LinkedHashMap mapOfConfigPerShimmer) setGyroRange(((Double) mapOfConfigPerShimmer.get(DatabaseConfigHandle.GYRO_RANGE)).intValue()); } + //LN Accel Calibration Configuration + parseCalibDetailsKinematicFromDb(mapOfConfigPerShimmer, + Configuration.Shimmer3.SENSOR_ID.SHIMMER_LSM6DSV_ACCEL_LN, + getAccelRange(), + SensorLSM6DSV.DatabaseConfigHandle.LIST_OF_CALIB_HANDLES_LN_ACC, + SensorLSM6DSV.DatabaseConfigHandle.LN_ACC_CALIB_TIME); + //Gyroscope Calibration Configuration parseCalibDetailsKinematicFromDb(mapOfConfigPerShimmer, - mSensorIdGyro, + Configuration.Shimmer3.SENSOR_ID.SHIMMER_LSM6DSV_GYRO, getGyroRange(), SensorLSM6DSV.DatabaseConfigHandle.LIST_OF_CALIB_HANDLES_GYRO, SensorLSM6DSV.DatabaseConfigHandle.GYRO_CALIB_TIME); @@ -829,9 +840,7 @@ public void parseConfigMap(LinkedHashMap mapOfConfigPerShimmer) @Override public void generateConfigOptionsMap() { - // No Configuration Needed for Accel - - // For Gyro + // For Gyro & Accel mConfigOptionsMap.clear(); addConfigOption(configOptionLSM6DSVGyroRange); addConfigOption(configOptionLSM6DSVAccelRange); @@ -846,7 +855,7 @@ public void generateSensorGroupMapping() { mSensorGroupingMap.put(Configuration.Shimmer3.LABEL_SENSOR_TILE.LOW_NOISE_ACCEL_3R.ordinal(), sensorGroupLnAccelLSM6DSV); mSensorGroupingMap.put(Configuration.Shimmer3.LABEL_SENSOR_TILE.GYRO_3R.ordinal(), new SensorGroupingDetails( LABEL_SENSOR_TILE.GYRO, - Arrays.asList(mSensorIdGyro), + Arrays.asList(Configuration.Shimmer3.SENSOR_ID.SHIMMER_LSM6DSV_GYRO), CompatibilityInfoForMaps.listOfCompatibleVersionInfoLSM6DSV)); super.updateSensorGroupingMap(); @@ -1057,7 +1066,7 @@ public Object setConfigValueUsingConfigLabel(Integer sensorId, String configLabe case(GuiLabelConfigCommon.RANGE): if(sensorId==mSensorIdGyro){ this.setConfigValueUsingConfigLabel(GuiLabelConfig.LSM6DSV_GYRO_RANGE, valueToSet); - }else if(sensorId==mSensorIdAccelLN){ + } else if(sensorId==mSensorIdAccelLN){ this.setConfigValueUsingConfigLabel(GuiLabelConfig.LSM6DSV_ACCEL_RANGE, valueToSet); } break; @@ -1102,7 +1111,7 @@ public Object getConfigValueUsingConfigLabel(Integer sensorId, String configLabe case(GuiLabelConfigCommon.RANGE): if(sensorId==mSensorIdGyro){ returnValue = this.getConfigValueUsingConfigLabel(GuiLabelConfig.LSM6DSV_GYRO_RANGE); - }else if(sensorId==mSensorIdAccelLN){ + } else if(sensorId==mSensorIdAccelLN){ returnValue = this.getConfigValueUsingConfigLabel(GuiLabelConfig.LSM6DSV_ACCEL_RANGE); } break; @@ -1126,12 +1135,21 @@ public void setSensorSamplingRate(double samplingRateHz) { @Override public boolean setDefaultConfigForSensor(int sensorId, boolean isSensorEnabled) { if(mSensorMap.containsKey(sensorId)){ - updateCurrentAccelLnCalibInUse(); + if(sensorId==mSensorIdAccelLN) { + setDefaultLSM6DSVAccelSensorConfig(isSensorEnabled); + } + else if(sensorId==mSensorIdGyro) { + setDefaultLSM6DSVGyroSensorConfig(isSensorEnabled); + } return true; } - if(sensorId==mSensorIdGyro){ + + if(sensorId==mSensorIdGyro || sensorId == Configuration.Shimmer3.SENSOR_ID.SHIMMER_LSM6DSV_ACCEL_LN){ setDefaultLSM6DSVGyroSensorConfig(isSensorEnabled); } + if(sensorId==mSensorIdAccelLN || sensorId == Configuration.Shimmer3.SENSOR_ID.SHIMMER_LSM6DSV_GYRO){ + setDefaultLSM6DSVAccelSensorConfig(isSensorEnabled); + } return false; } @@ -1168,6 +1186,7 @@ public boolean processResponse(int responseCommand, Object parsedResponse, COMMU public void checkShimmerConfigBeforeConfiguring() { if(!(isSensorEnabled(mSensorIdGyro) || isSensorEnabled(mSensorIdAccelLN))) { setDefaultLSM6DSVGyroSensorConfig(false); + setDefaultLSM6DSVAccelSensorConfig(false); } } @@ -1185,9 +1204,6 @@ public void initialise() { updateCurrentAccelLnCalibInUse(); setCalibSensitivityScaleFactor(mSensorIdGyro, CALIBRATION_SCALE_FACTOR.ONE_HUNDRED); updateCurrentGyroCalibInUse(); - - // Set CurrentValues (Fix Calibration Not Read) -// mCurrentCalibDetailsAccelLn.setCurrentValues(OffsetVectorLowNoiseAccelShimmer3r, SensitivityMatrixLowNoiseAccel2gShimmer3r, AlignmentMatrixLowNoiseAccelShimmer3r, false); } @Override @@ -1219,10 +1235,10 @@ public void generateCalibMap() { @Override public boolean isSensorUsingDefaultCal(int sensorId) { - if(sensorId==Configuration.Shimmer3.SENSOR_ID.SHIMMER_LSM6DSV_ACCEL_LN){ + if(sensorId==Configuration.Shimmer3.SENSOR_ID.SHIMMER_LSM6DSV_ACCEL_LN || sensorId == mSensorIdAccelLN){ return isUsingDefaultLNAccelParam(); } - if(sensorId==Configuration.Shimmer3.SENSOR_ID.SHIMMER_LSM6DSV_GYRO){ + if(sensorId==Configuration.Shimmer3.SENSOR_ID.SHIMMER_LSM6DSV_GYRO || sensorId == mSensorIdGyro){ return isUsingDefaultGyroParam(); } return false; From aeb69fde5c610301be021cefdf1de414a1c47518 Mon Sep 17 00:00:00 2001 From: Danesh Mariapan <161300025+dmariapan-shimmer@users.noreply.github.com> Date: Tue, 3 Jun 2025 12:48:08 +0800 Subject: [PATCH 3/3] Tidy up --- .../sensors/lsm6dsv/SensorLSM6DSV.java | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) diff --git a/ShimmerDriver/src/main/java/com/shimmerresearch/sensors/lsm6dsv/SensorLSM6DSV.java b/ShimmerDriver/src/main/java/com/shimmerresearch/sensors/lsm6dsv/SensorLSM6DSV.java index 8e69d3ee3..badf09739 100644 --- a/ShimmerDriver/src/main/java/com/shimmerresearch/sensors/lsm6dsv/SensorLSM6DSV.java +++ b/ShimmerDriver/src/main/java/com/shimmerresearch/sensors/lsm6dsv/SensorLSM6DSV.java @@ -566,7 +566,6 @@ public void setDefaultLSM6DSVAccelSensorConfig(boolean isSensorEnabled) { } } - //--------- LN Accel methods end -------------- @@ -1143,14 +1142,6 @@ else if(sensorId==mSensorIdGyro) { } return true; } - - if(sensorId==mSensorIdGyro || sensorId == Configuration.Shimmer3.SENSOR_ID.SHIMMER_LSM6DSV_ACCEL_LN){ - setDefaultLSM6DSVGyroSensorConfig(isSensorEnabled); - } - if(sensorId==mSensorIdAccelLN || sensorId == Configuration.Shimmer3.SENSOR_ID.SHIMMER_LSM6DSV_GYRO){ - setDefaultLSM6DSVAccelSensorConfig(isSensorEnabled); - } - return false; } @@ -1235,10 +1226,10 @@ public void generateCalibMap() { @Override public boolean isSensorUsingDefaultCal(int sensorId) { - if(sensorId==Configuration.Shimmer3.SENSOR_ID.SHIMMER_LSM6DSV_ACCEL_LN || sensorId == mSensorIdAccelLN){ + if(sensorId==Configuration.Shimmer3.SENSOR_ID.SHIMMER_LSM6DSV_ACCEL_LN){ return isUsingDefaultLNAccelParam(); } - if(sensorId==Configuration.Shimmer3.SENSOR_ID.SHIMMER_LSM6DSV_GYRO || sensorId == mSensorIdGyro){ + else if(sensorId==Configuration.Shimmer3.SENSOR_ID.SHIMMER_LSM6DSV_GYRO){ return isUsingDefaultGyroParam(); } return false;