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 @@ -65,6 +65,8 @@ public class ConfigByteLayoutShimmer3 extends ConfigByteLayout implements Serial
public int idxMPU9150GyroCalibration = 52;
public int idxLSM303DLHCMagCalibration = 73;
public int idxLSM303DLHCAccelCalibration = 94; //94->114
public int idxADXL371AltAccelCalibration = 256;
public int idxLIS2MDLAltMagCalibration = 285;

// Derived Channels - used by SW not FW
public int idxDerivedSensors0 = 0;
Expand Down Expand Up @@ -151,6 +153,11 @@ public class ConfigByteLayoutShimmer3 extends ConfigByteLayout implements Serial
public int bitShiftEXPPowerEnable = 0;
public int maskEXPPowerEnable = 0x01;
//Unused bits 3-0
//Config Byte4
public int bitShiftLIS2MDLAltMagSamplingRate = 4;
public int maskLIS2MDLAltMagSamplingRate = 0x03;
public int bitShiftADXL371AltAccelSamplingRate = 6;
public int maskADXL371AltAccelSamplingRate = 0x03;

// Derived Channels - used by SW not FW
public int maskDerivedChannelsByte = 0xFF;
Expand Down Expand Up @@ -336,6 +343,8 @@ public ConfigByteLayoutShimmer3(int firmwareIdentifier, int firmwareVersionMajor
idxMPU9150GyroCalibration = 55;
idxLSM303DLHCMagCalibration = 76;
idxLSM303DLHCAccelCalibration = 97;
idxADXL371AltAccelCalibration = 256;
idxLIS2MDLAltMagCalibration = 285;
}

if(mShimmerVerObject.mHardwareVersion == HW_ID.SHIMMER_3R
Expand Down Expand Up @@ -460,7 +469,9 @@ public HashMap<Integer, String> getMapOfByteDescriptions(){
mapOfByteDescriptions.put(idxMPU9150GyroCalibration, "idxMPU9150GyroCalibration");
mapOfByteDescriptions.put(idxLSM303DLHCMagCalibration, "idxLSM303DLHCMagCalibration");
mapOfByteDescriptions.put(idxLSM303DLHCAccelCalibration, "idxLSM303DLHCAccelCalibration");

mapOfByteDescriptions.put(idxADXL371AltAccelCalibration, "idxADXL371AccelCalibration");
mapOfByteDescriptions.put(idxLIS2MDLAltMagCalibration, "idxLIS2MDLMagCalibration");

if(idxDerivedSensors0>0){
mapOfByteDescriptions.put(idxDerivedSensors0, "DerivedSensors0");
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -337,16 +337,15 @@ public void checkShimmerConfigBeforeConfiguring() {

@Override
public void configBytesGenerate(ShimmerDevice shimmerDevice, byte[] configBytes, COMMUNICATION_TYPE commType) {
// currently use wr accel sensor as placeholder

ConfigByteLayout configByteLayout = shimmerDevice.getConfigByteLayout();
if(configByteLayout instanceof ConfigByteLayoutShimmer3){
ConfigByteLayoutShimmer3 configByteLayoutCast = (ConfigByteLayoutShimmer3) configByteLayout;

configBytes[configByteLayoutCast.idxConfigSetupByte0] |= (byte) ((getADXL371AnalogAccelRate() & configByteLayoutCast.maskLSM303DLHCAccelSamplingRate) << configByteLayoutCast.bitShiftLSM303DLHCAccelSamplingRate);
configBytes[configByteLayoutCast.idxConfigSetupByte0] |= (byte) ((getAccelRange() & configByteLayoutCast.maskLSM303DLHCAccelRange) << configByteLayoutCast.bitShiftLSM303DLHCAccelRange);
// LSM303DLHC Digital Accel Calibration Parameters
configBytes[configByteLayoutCast.idxConfigSetupByte4] |= (byte) ((getADXL371AnalogAccelRate() & configByteLayoutCast.maskADXL371AltAccelSamplingRate) << configByteLayoutCast.bitShiftADXL371AltAccelSamplingRate);

byte[] bufferCalibrationParameters = generateCalParamADXL371Accel();
System.arraycopy(bufferCalibrationParameters, 0, configBytes, configByteLayoutCast.idxLSM303DLHCAccelCalibration, configByteLayoutCast.lengthGeneralCalibrationBytes);
System.arraycopy(bufferCalibrationParameters, 0, configBytes, configByteLayoutCast.idxADXL371AltAccelCalibration, configByteLayoutCast.lengthGeneralCalibrationBytes);

}
}
Expand All @@ -358,16 +357,15 @@ public void configBytesParse(ShimmerDevice shimmerDevice, byte[] configBytes, CO
if(configByteLayout instanceof ConfigByteLayoutShimmer3){
ConfigByteLayoutShimmer3 configByteLayoutCast = (ConfigByteLayoutShimmer3) configByteLayout;

setADXL371AnalogAccelRate((configBytes[configByteLayoutCast.idxConfigSetupByte0] >> configByteLayoutCast.bitShiftLSM303DLHCAccelSamplingRate) & configByteLayoutCast.maskLSM303DLHCAccelSamplingRate);
setADXL371AccelRange((configBytes[configByteLayoutCast.idxConfigSetupByte0] >> configByteLayoutCast.bitShiftLSM303DLHCAccelRange) & configByteLayoutCast.maskLSM303DLHCAccelRange);

setADXL371AnalogAccelRate((configBytes[configByteLayoutCast.idxConfigSetupByte4] >> configByteLayoutCast.bitShiftADXL371AltAccelSamplingRate) & configByteLayoutCast.maskADXL371AltAccelSamplingRate);

if (shimmerDevice.isConnected()){
getCurrentCalibDetailsAccelHighG().mCalibReadSource=CALIB_READ_SOURCE.INFOMEM;
}

// LSM303DLHC Digital Accel Calibration Parameters
byte[] bufferCalibrationParameters = new byte[configByteLayoutCast.lengthGeneralCalibrationBytes];
System.arraycopy(configBytes, configByteLayoutCast.idxLSM303DLHCAccelCalibration, bufferCalibrationParameters, 0 , configByteLayoutCast.lengthGeneralCalibrationBytes);
System.arraycopy(configBytes, configByteLayoutCast.idxADXL371AltAccelCalibration, bufferCalibrationParameters, 0 , configByteLayoutCast.lengthGeneralCalibrationBytes);
parseCalibParamFromPacketAccelAdxl(bufferCalibrationParameters, CALIB_READ_SOURCE.INFOMEM);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -503,13 +503,10 @@ public void configBytesGenerate(ShimmerDevice shimmerDevice, byte[] configBytes,
if(configByteLayout instanceof ConfigByteLayoutShimmer3){
ConfigByteLayoutShimmer3 configByteLayoutCast = (ConfigByteLayoutShimmer3) configByteLayout;

// TBD; Currently use Magnetometer Calibration Parameters
configBytes[configByteLayoutCast.idxConfigSetupByte2] |= (byte) ((getWRMagRange() & configByteLayoutCast.maskLSM303DLHCMagRange) << configByteLayoutCast.bitShiftLSM303DLHCMagRange);
configBytes[configByteLayoutCast.idxConfigSetupByte2] |= (byte) ((getLIS2MDLWRMagRate() & configByteLayoutCast.maskLSM303DLHCMagSamplingRate) << configByteLayoutCast.bitShiftLSM303DLHCMagSamplingRate);
configBytes[configByteLayoutCast.idxConfigSetupByte4] |= (byte) ((getLIS2MDLWRMagRate() & configByteLayoutCast.maskLIS2MDLAltMagSamplingRate) << configByteLayoutCast.bitShiftLIS2MDLAltMagSamplingRate);

// TBD; Currently use Magnetometer Calibration Parameters
byte[] bufferCalibrationParameters = generateCalParamLIS2MDLMag();
System.arraycopy(bufferCalibrationParameters, 0, configBytes, configByteLayoutCast.idxLSM303DLHCMagCalibration, configByteLayoutCast.lengthGeneralCalibrationBytes);
System.arraycopy(bufferCalibrationParameters, 0, configBytes, configByteLayoutCast.idxLIS2MDLAltMagCalibration, configByteLayoutCast.lengthGeneralCalibrationBytes);
}
}

Expand All @@ -524,18 +521,14 @@ public void configBytesParse(ShimmerDevice shimmerDevice, byte[] configBytes, CO
if(configByteLayout instanceof ConfigByteLayoutShimmer3){
ConfigByteLayoutShimmer3 configByteLayoutCast = (ConfigByteLayoutShimmer3) configByteLayout;

// TBD; Currently use Magnetometer Calibration Parameters
setLIS2MDLWRMagRange((configBytes[configByteLayoutCast.idxConfigSetupByte2] >> configByteLayoutCast.bitShiftLSM303DLHCMagRange) & configByteLayoutCast.maskLSM303DLHCMagRange);
setLIS2MDLWRMagRate((configBytes[configByteLayoutCast.idxConfigSetupByte2] >> configByteLayoutCast.bitShiftLSM303DLHCMagSamplingRate) & configByteLayoutCast.maskLSM303DLHCMagSamplingRate);

setLIS2MDLWRMagRate((configBytes[configByteLayoutCast.idxConfigSetupByte4] >> configByteLayoutCast.bitShiftLIS2MDLAltMagSamplingRate) & configByteLayoutCast.maskLIS2MDLAltMagSamplingRate);

if (shimmerDevice.isConnected()){
getCurrentCalibDetailsMagWr().mCalibReadSource=CALIB_READ_SOURCE.INFOMEM;
}

// TBD; Currently use Magnetometer Calibration Parameters
byte[] bufferCalibrationParameters = new byte[configByteLayoutCast.lengthGeneralCalibrationBytes];
System.arraycopy(configBytes, configByteLayoutCast.idxLSM303DLHCMagCalibration, bufferCalibrationParameters, 0 , configByteLayoutCast.lengthGeneralCalibrationBytes);
System.arraycopy(configBytes, configByteLayoutCast.idxLIS2MDLAltMagCalibration, bufferCalibrationParameters, 0 , configByteLayoutCast.lengthGeneralCalibrationBytes);
parseCalibParamFromPacketMagWr(bufferCalibrationParameters, CALIB_READ_SOURCE.INFOMEM);
}
}
Expand Down