Skip to content

Commit 7c74b4b

Browse files
committed
Consensys v1.0.3 - for Esmedtek(Essen) - three unipolar leads support
1 parent c6b25d1 commit 7c74b4b

3 files changed

Lines changed: 164 additions & 73 deletions

File tree

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

Lines changed: 39 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1904,6 +1904,11 @@ else if (isEXGUsingDefaultTestSignalConfiguration()){
19041904
objectCluster.addData(Shimmer3.ObjectClusterSensorName.EXG_TEST_CHIP2_CH1_24BIT,CHANNEL_TYPE.CAL.toString(),CHANNEL_UNITS.MILLIVOLTS,calexg2ch1);
19051905
objectCluster.addData(Shimmer3.ObjectClusterSensorName.EXG_TEST_CHIP2_CH2_24BIT,CHANNEL_TYPE.CAL.toString(),CHANNEL_UNITS.MILLIVOLTS,calexg2ch2);
19061906
}
1907+
else if (isEXGUsingDefaultThreeUnipolarConfiguration()){
1908+
sensorNames[iexg2ch2]=Shimmer3.ObjectClusterSensorName.EXG2_CH2_24BIT;
1909+
objectCluster.addData(Shimmer3.ObjectClusterSensorName.EXG2_CH2_24BIT,CHANNEL_TYPE.UNCAL.toString(),CHANNEL_UNITS.NO_UNITS,exg2ch2);
1910+
objectCluster.addData(Shimmer3.ObjectClusterSensorName.EXG2_CH2_24BIT,CHANNEL_TYPE.CAL.toString(),CHANNEL_UNITS.MILLIVOLTS,calexg2ch2);
1911+
}
19071912
else {
19081913
sensorNames[iexg2ch1]=Shimmer3.ObjectClusterSensorName.EXG2_CH1_24BIT;
19091914
sensorNames[iexg2ch2]=Shimmer3.ObjectClusterSensorName.EXG2_CH2_24BIT;
@@ -2012,7 +2017,7 @@ else if (isEXGUsingDefaultTestSignalConfiguration()){
20122017
calibratedDataUnits[iexg2ch1]=CHANNEL_UNITS.MILLIVOLTS;
20132018
calibratedDataUnits[iexg2ch2]=CHANNEL_UNITS.MILLIVOLTS;
20142019

2015-
objectCluster.addData(Shimmer3.ObjectClusterSensorName.EXG2_STATUS,CHANNEL_TYPE.CAL.toString(),CHANNEL_UNITS.NO_UNITS,iexg2sta);
2020+
objectCluster.addData(Shimmer3.ObjectClusterSensorName.EXG2_STATUS,CHANNEL_TYPE.CAL.toString(),CHANNEL_UNITS.NO_UNITS,exg2sta);
20162021

20172022

20182023
if (isEXGUsingDefaultECGConfiguration()||isEXGUsingDefaultRespirationConfiguration()){
@@ -2044,6 +2049,11 @@ else if (isEXGUsingDefaultTestSignalConfiguration()){
20442049
objectCluster.addData(Shimmer3.ObjectClusterSensorName.EXG_TEST_CHIP2_CH1_16BIT,CHANNEL_TYPE.CAL.toString(),CHANNEL_UNITS.MILLIVOLTS,calexg2ch1);
20452050
objectCluster.addData(Shimmer3.ObjectClusterSensorName.EXG_TEST_CHIP2_CH2_16BIT,CHANNEL_TYPE.CAL.toString(),CHANNEL_UNITS.MILLIVOLTS,calexg2ch2);
20462051
}
2052+
else if (isEXGUsingDefaultThreeUnipolarConfiguration()){
2053+
sensorNames[iexg2ch2]=Shimmer3.ObjectClusterSensorName.EXG2_CH2_16BIT;
2054+
objectCluster.addData(Shimmer3.ObjectClusterSensorName.EXG2_CH2_16BIT,CHANNEL_TYPE.UNCAL.toString(),CHANNEL_UNITS.NO_UNITS,exg2ch2);
2055+
objectCluster.addData(Shimmer3.ObjectClusterSensorName.EXG2_CH2_16BIT,CHANNEL_TYPE.CAL.toString(),CHANNEL_UNITS.MILLIVOLTS,calexg2ch2);
2056+
}
20472057
else {
20482058
sensorNames[iexg2ch1]=Shimmer3.ObjectClusterSensorName.EXG2_CH1_16BIT;
20492059
sensorNames[iexg2ch2]=Shimmer3.ObjectClusterSensorName.EXG2_CH2_16BIT;
@@ -8961,12 +8971,19 @@ else if(mode==1){//DC Current
89618971
setExgPropertyBothChips(EXG_SETTING_OPTIONS.REG3.LEAD_OFF_FREQUENCY.DC);
89628972
setExgPropertyBothChips(EXG_SETTING_OPTIONS.REG2.LEAD_OFF_COMPARATORS.ON);
89638973
setExgPropertySingleChip(EXG_CHIP_INDEX.CHIP1, EXG_SETTING_OPTIONS.REG6.RLD_LEAD_OFF_SENSE_FUNCTION.ON);
8964-
8965-
setExgPropertySingleChip(EXG_CHIP_INDEX.CHIP1, EXG_SETTING_OPTIONS.REG7.LEAD_OFF_DETECT_NEG_INPUTS_CH2.OFF);
8966-
setExgPropertySingleChip(EXG_CHIP_INDEX.CHIP1, EXG_SETTING_OPTIONS.REG7.LEAD_OFF_DETECT_POS_INPUTS_CH2.ON);
8967-
setExgPropertySingleChip(EXG_CHIP_INDEX.CHIP1, EXG_SETTING_OPTIONS.REG7.LEAD_OFF_DETECT_NEG_INPUTS_CH1.ON);
8968-
setExgPropertySingleChip(EXG_CHIP_INDEX.CHIP1, EXG_SETTING_OPTIONS.REG7.LEAD_OFF_DETECT_POS_INPUTS_CH1.ON);
89698974

8975+
if(isEXGUsingDefaultThreeUnipolarConfiguration()){
8976+
setExgPropertySingleChip(EXG_CHIP_INDEX.CHIP1, EXG_SETTING_OPTIONS.REG7.LEAD_OFF_DETECT_NEG_INPUTS_CH2.OFF);
8977+
setExgPropertySingleChip(EXG_CHIP_INDEX.CHIP1, EXG_SETTING_OPTIONS.REG7.LEAD_OFF_DETECT_POS_INPUTS_CH2.ON);
8978+
setExgPropertySingleChip(EXG_CHIP_INDEX.CHIP1, EXG_SETTING_OPTIONS.REG7.LEAD_OFF_DETECT_NEG_INPUTS_CH1.OFF);
8979+
setExgPropertySingleChip(EXG_CHIP_INDEX.CHIP1, EXG_SETTING_OPTIONS.REG7.LEAD_OFF_DETECT_POS_INPUTS_CH1.ON);
8980+
} else {
8981+
setExgPropertySingleChip(EXG_CHIP_INDEX.CHIP1, EXG_SETTING_OPTIONS.REG7.LEAD_OFF_DETECT_NEG_INPUTS_CH2.OFF);
8982+
setExgPropertySingleChip(EXG_CHIP_INDEX.CHIP1, EXG_SETTING_OPTIONS.REG7.LEAD_OFF_DETECT_POS_INPUTS_CH2.ON);
8983+
setExgPropertySingleChip(EXG_CHIP_INDEX.CHIP1, EXG_SETTING_OPTIONS.REG7.LEAD_OFF_DETECT_NEG_INPUTS_CH1.ON);
8984+
setExgPropertySingleChip(EXG_CHIP_INDEX.CHIP1, EXG_SETTING_OPTIONS.REG7.LEAD_OFF_DETECT_POS_INPUTS_CH1.ON);
8985+
}
8986+
89708987
setExgPropertySingleChip(EXG_CHIP_INDEX.CHIP2, EXG_SETTING_OPTIONS.REG7.LEAD_OFF_DETECT_NEG_INPUTS_CH2.OFF);
89718988
setExgPropertySingleChip(EXG_CHIP_INDEX.CHIP2, EXG_SETTING_OPTIONS.REG7.LEAD_OFF_DETECT_POS_INPUTS_CH2.ON);
89728989
setExgPropertySingleChip(EXG_CHIP_INDEX.CHIP2, EXG_SETTING_OPTIONS.REG7.LEAD_OFF_DETECT_NEG_INPUTS_CH1.OFF);
@@ -8975,6 +8992,7 @@ else if(mode==1){//DC Current
89758992
setExgPropertyBothChips(ExGConfigBytesDetails.EXG_SETTING_OPTIONS.REG3.LEAD_OFF_CURRENT.CURRENT_22NA);
89768993
setExgPropertyBothChips(ExGConfigBytesDetails.EXG_SETTING_OPTIONS.REG3.COMPARATOR_THRESHOLD.POS90NEG10);
89778994

8995+
//For EMG the second chip needs to be powered up in order to support lead-off detection
89788996
if(isEXGUsingDefaultEMGConfiguration()){
89798997
setExgPropertySingleChip(EXG_CHIP_INDEX.CHIP2, EXG_SETTING_OPTIONS.REG5.CH2_POWER_DOWN.NORMAL_OPERATION);
89808998
}
@@ -8984,16 +9002,24 @@ else if(mode==2){//AC Current
89849002
setExgPropertyBothChips(EXG_SETTING_OPTIONS.REG2.LEAD_OFF_COMPARATORS.ON);
89859003
setExgPropertySingleChip(EXG_CHIP_INDEX.CHIP1, EXG_SETTING_OPTIONS.REG6.RLD_LEAD_OFF_SENSE_FUNCTION.ON);
89869004

8987-
setExgPropertySingleChip(EXG_CHIP_INDEX.CHIP1, EXG_SETTING_OPTIONS.REG7.LEAD_OFF_DETECT_NEG_INPUTS_CH2.OFF);
8988-
setExgPropertySingleChip(EXG_CHIP_INDEX.CHIP1, EXG_SETTING_OPTIONS.REG7.LEAD_OFF_DETECT_POS_INPUTS_CH2.ON);
8989-
setExgPropertySingleChip(EXG_CHIP_INDEX.CHIP1, EXG_SETTING_OPTIONS.REG7.LEAD_OFF_DETECT_NEG_INPUTS_CH1.ON);
8990-
setExgPropertySingleChip(EXG_CHIP_INDEX.CHIP1, EXG_SETTING_OPTIONS.REG7.LEAD_OFF_DETECT_POS_INPUTS_CH1.ON);
89919005

9006+
if(isEXGUsingDefaultThreeUnipolarConfiguration()){
9007+
setExgPropertySingleChip(EXG_CHIP_INDEX.CHIP1, EXG_SETTING_OPTIONS.REG7.LEAD_OFF_DETECT_NEG_INPUTS_CH2.OFF);
9008+
setExgPropertySingleChip(EXG_CHIP_INDEX.CHIP1, EXG_SETTING_OPTIONS.REG7.LEAD_OFF_DETECT_POS_INPUTS_CH2.ON);
9009+
setExgPropertySingleChip(EXG_CHIP_INDEX.CHIP1, EXG_SETTING_OPTIONS.REG7.LEAD_OFF_DETECT_NEG_INPUTS_CH1.OFF);
9010+
setExgPropertySingleChip(EXG_CHIP_INDEX.CHIP1, EXG_SETTING_OPTIONS.REG7.LEAD_OFF_DETECT_POS_INPUTS_CH1.ON);
9011+
} else {
9012+
setExgPropertySingleChip(EXG_CHIP_INDEX.CHIP1, EXG_SETTING_OPTIONS.REG7.LEAD_OFF_DETECT_NEG_INPUTS_CH2.OFF);
9013+
setExgPropertySingleChip(EXG_CHIP_INDEX.CHIP1, EXG_SETTING_OPTIONS.REG7.LEAD_OFF_DETECT_POS_INPUTS_CH2.ON);
9014+
setExgPropertySingleChip(EXG_CHIP_INDEX.CHIP1, EXG_SETTING_OPTIONS.REG7.LEAD_OFF_DETECT_NEG_INPUTS_CH1.ON);
9015+
setExgPropertySingleChip(EXG_CHIP_INDEX.CHIP1, EXG_SETTING_OPTIONS.REG7.LEAD_OFF_DETECT_POS_INPUTS_CH1.ON);
9016+
}
89929017
setExgPropertySingleChip(EXG_CHIP_INDEX.CHIP2, EXG_SETTING_OPTIONS.REG7.LEAD_OFF_DETECT_NEG_INPUTS_CH2.OFF);
89939018
setExgPropertySingleChip(EXG_CHIP_INDEX.CHIP2, EXG_SETTING_OPTIONS.REG7.LEAD_OFF_DETECT_POS_INPUTS_CH2.ON);
89949019
setExgPropertySingleChip(EXG_CHIP_INDEX.CHIP2, EXG_SETTING_OPTIONS.REG7.LEAD_OFF_DETECT_NEG_INPUTS_CH1.OFF);
89959020
setExgPropertySingleChip(EXG_CHIP_INDEX.CHIP2, EXG_SETTING_OPTIONS.REG7.LEAD_OFF_DETECT_POS_INPUTS_CH1.OFF);
89969021

9022+
//For EMG the second chip needs to be powered up in order to support lead-off detection
89979023
if(isEXGUsingDefaultEMGConfiguration()){
89989024
setExgPropertySingleChip(EXG_CHIP_INDEX.CHIP2, EXG_SETTING_OPTIONS.REG5.CH2_POWER_DOWN.NORMAL_OPERATION);
89999025
}
@@ -9327,6 +9353,9 @@ else if(isEXGUsingDefaultEMGConfiguration()) {
93279353
else if(isEXGUsingDefaultTestSignalConfiguration()) {
93289354
nonStandardIndex = ConfigOptionDetailsSensor.VALUE_INDEXES.EXG_REFERENCE_ELECTRODE.TEST;
93299355
}
9356+
else if(isEXGUsingDefaultThreeUnipolarConfiguration()) {
9357+
nonStandardIndex = ConfigOptionDetailsSensor.VALUE_INDEXES.EXG_REFERENCE_ELECTRODE.UNIPOLAR;
9358+
}
93309359
else {
93319360
nonStandardIndex = ConfigOptionDetailsSensor.VALUE_INDEXES.EXG_REFERENCE_ELECTRODE.CUSTOM;
93329361
}

ShimmerDriver/src/com/shimmerresearch/driverUtilities/ConfigOptionDetailsSensor.java

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,12 +28,14 @@ public static final class EXG_RESPIRATION_DETECT_PHASE{
2828
public static final int PHASE_32KHZ = 0;
2929
public static final int PHASE_64KHZ = 1;
3030
}
31+
/** Used for providing different reference electrode options for individual ExG operation modes */
3132
public static final class EXG_REFERENCE_ELECTRODE{
3233
public static final int ECG = 0;
3334
public static final int EMG = 1;
3435
public static final int RESP = 2;
3536
public static final int TEST = 3;
3637
public static final int CUSTOM = 4;
38+
public static final int UNIPOLAR = 5;
3739
}
3840
}
3941

@@ -46,6 +48,10 @@ public static final class EXG_REFERENCE_ELECTRODE{
4648
private Integer[] mConfigValuesAlt3;
4749
private String[] mGuiValuesAlt4;
4850
private Integer[] mConfigValuesAlt4;
51+
private String[] mGuiValuesAlt5;
52+
private Integer[] mConfigValuesAlt5;
53+
private String[] mGuiValuesAlt6;
54+
private Integer[] mConfigValuesAlt6;
4955
private int mIndexValuesToUse = 0;
5056
private COMMUNICATION_TYPE mCommunicationType;
5157

@@ -170,6 +176,12 @@ else if(mIndexValuesToUse==3){
170176
else if(mIndexValuesToUse==4){
171177
return mGuiValuesAlt4;
172178
}
179+
else if(mIndexValuesToUse==5){
180+
return mGuiValuesAlt5;
181+
}
182+
else if(mIndexValuesToUse==6){
183+
return mGuiValuesAlt6;
184+
}
173185
else{
174186
return mGuiValues;
175187
}
@@ -192,6 +204,12 @@ else if(mIndexValuesToUse==3){
192204
else if(mIndexValuesToUse==4){
193205
return mConfigValuesAlt4;
194206
}
207+
else if(mIndexValuesToUse==5){
208+
return mConfigValuesAlt5;
209+
}
210+
else if(mIndexValuesToUse==6){
211+
return mConfigValuesAlt6;
212+
}
195213
else{
196214
return mConfigValues;
197215
}
@@ -223,6 +241,12 @@ else if(index==3){
223241
else if(index==4){
224242
this.mGuiValuesAlt4 = guiValues;
225243
}
244+
else if(index==5){
245+
this.mGuiValuesAlt5 = guiValues;
246+
}
247+
else if(index==6){
248+
this.mGuiValuesAlt6 = guiValues;
249+
}
226250
}
227251

228252
/**
@@ -244,6 +268,12 @@ else if(index==3){
244268
else if(index==4){
245269
this.mConfigValuesAlt4 = configValues;
246270
}
271+
else if(index==5){
272+
this.mConfigValuesAlt5 = configValues;
273+
}
274+
else if(index==6){
275+
this.mConfigValuesAlt6 = configValues;
276+
}
247277
}
248278

249279
public COMMUNICATION_TYPE getmCommunicationType() {

0 commit comments

Comments
 (0)