Skip to content

Commit ac6a2f7

Browse files
committed
MIES_AmplifierInteraction.ipf: Rework amplifier getting and setting
The current approach uses AI_SendToAmp with separate getter and setter constants. For setting people should also prefer AI_UpdateAmpModel but as both functions are non-static it can happen that the wrong function is called. We have now reworked the interfaces with the following outcome: - One public function to read/write amplifier settings (AI_WriteToAmplifier, AI_ReadFromAmplifier). These functions also do the right thing out of the box. - Deduplicated getter/setter constants to only denote the type of setting. The access type, read or write, is now passed in separately. - Public accessible functions now only accept mcc function constants - Introduce low level AI_ReadFromMCC/AI_WriteToMCC functions which make AI_SendToAmp remarkable shorter - Introduce various helper functions which translate between control names, function constants and human readable names.
1 parent 500b898 commit ac6a2f7

18 files changed

+1408
-852
lines changed

Packages/MIES/MIES_AmplifierInteraction.ipf

+897-669
Large diffs are not rendered by default.

Packages/MIES/MIES_AnalysisFunctions_PatchSeq.ipf

+3-3
Original file line numberDiff line numberDiff line change
@@ -6276,15 +6276,15 @@ Function PSQ_Chirp(string device, STRUCT AnalysisFunction_V3 &s)
62766276
endif
62776277

62786278
WAVE result = LBN_GetNumericWave()
6279-
initLPF = AI_SendToAmp(device, s.headstage, I_CLAMP_MODE, MCC_GETPRIMARYSIGNALLPF_FUNC, NaN)
6279+
initLPF = AI_ReadFromAmplifier(device, s.headstage, I_CLAMP_MODE, MCC_PRIMARYSIGNALLPF_FUNC)
62806280
ASSERT(IsFinite(initLPF), "Queried LPF value from MCC amp is non-finite")
62816281
result[INDEP_HEADSTAGE] = initLPF
62826282
key = CreateAnaFuncLBNKey(PSQ_CHIRP, PSQ_FMT_LBN_CR_INIT_LPF)
62836283
ED_AddEntryToLabnotebook(device, key, result, overrideSweepNo = s.sweepNo, unit = "Hz")
62846284

62856285
ampBesselFilter = AFH_GetAnalysisParamNumerical("AmpBesselFilter", s.params, defValue = PSQ_CR_DEFAULT_LPF)
62866286

6287-
ret = AI_SendToAmp(device, s.headstage, I_CLAMP_MODE, MCC_SETPRIMARYSIGNALLPF_FUNC, ampBesselFilter, selectAmp = 0)
6287+
ret = AI_WriteToAmplifier(device, s.headstage, I_CLAMP_MODE, MCC_PRIMARYSIGNALLPF_FUNC, ampBesselFilter, selectAmp = 0)
62886288
ASSERT(!ret, "Could not set LPF in MCC")
62896289
endif
62906290
break
@@ -6410,7 +6410,7 @@ Function PSQ_Chirp(string device, STRUCT AnalysisFunction_V3 &s)
64106410
key = CreateAnaFuncLBNKey(PSQ_CHIRP, PSQ_FMT_LBN_CR_INIT_LPF, query = 1)
64116411
ampBesselFilter = GetLastSettingIndepSCI(numericalValues, s.sweepNo, key, s.headstage, UNKNOWN_MODE)
64126412
ASSERT(IsFinite(ampBesselFilter), "Expected finite value for the amplifier bessel filter")
6413-
ret = AI_SendToAmp(device, s.headstage, I_CLAMP_MODE, MCC_SETPRIMARYSIGNALLPF_FUNC, ampBesselFilter)
6413+
ret = AI_WriteToAmplifier(device, s.headstage, I_CLAMP_MODE, MCC_PRIMARYSIGNALLPF_FUNC, ampBesselFilter)
64146414
ASSERT(IsFinite(ret), "Can not set LPF value in MCC amp")
64156415
endif
64166416

Packages/MIES/MIES_Configuration.ipf

+18-18
Original file line numberDiff line numberDiff line change
@@ -2208,8 +2208,8 @@ static Function CONF_GetAmplifierSettings(string device)
22082208
JSON_AddBoolean(jsonID, jsonPath + EXPCONFIG_JSON_AMP_COMP_CHAIN, DAG_GetNumericalValue(device, "check_DataAcq_Amp_Chain"))
22092209

22102210
// MCC settings without GUI control
2211-
JSON_AddVariable(jsonID, jsonPath + EXPCONFIG_JSON_AMP_LPF, AI_SendToAmp(device, i, V_CLAMP_MODE, MCC_GETPRIMARYSIGNALLPF_FUNC, NaN))
2212-
JSON_AddVariable(jsonID, jsonPath + EXPCONFIG_JSON_AMP_GAIN, AI_SendToAmp(device, i, V_CLAMP_MODE, MCC_GETPRIMARYSIGNALGAIN_FUNC, NaN))
2211+
JSON_AddVariable(jsonID, jsonPath + EXPCONFIG_JSON_AMP_LPF, AI_ReadFromAmplifier(device, i, V_CLAMP_MODE, MCC_PRIMARYSIGNALLPF_FUNC))
2212+
JSON_AddVariable(jsonID, jsonPath + EXPCONFIG_JSON_AMP_GAIN, AI_ReadFromAmplifier(device, i, V_CLAMP_MODE, MCC_PRIMARYSIGNALGAIN_FUNC))
22132213

22142214
jsonPath = basePath + "/" + EXPCONFIG_JSON_AMPBLOCK + "/" + EXPCONFIG_JSON_ICBLOCK + "/"
22152215

@@ -2233,8 +2233,8 @@ static Function CONF_GetAmplifierSettings(string device)
22332233
JSON_AddVariable(jsonID, jsonPath + EXPCONFIG_JSON_AMP_PIPETTE_OFFSET_IC, DAG_GetNumericalValue(device, "setvar_DataAcq_PipetteOffset_IC"))
22342234

22352235
// MCC settings without GUI control
2236-
JSON_AddVariable(jsonID, jsonPath + EXPCONFIG_JSON_AMP_LPF, AI_SendToAmp(device, i, I_CLAMP_MODE, MCC_GETPRIMARYSIGNALLPF_FUNC, NaN))
2237-
JSON_AddVariable(jsonID, jsonPath + EXPCONFIG_JSON_AMP_GAIN, AI_SendToAmp(device, i, I_CLAMP_MODE, MCC_GETPRIMARYSIGNALGAIN_FUNC, NaN))
2236+
JSON_AddVariable(jsonID, jsonPath + EXPCONFIG_JSON_AMP_LPF, AI_ReadFromAmplifier(device, i, I_CLAMP_MODE, MCC_PRIMARYSIGNALLPF_FUNC))
2237+
JSON_AddVariable(jsonID, jsonPath + EXPCONFIG_JSON_AMP_GAIN, AI_ReadFromAmplifier(device, i, I_CLAMP_MODE, MCC_PRIMARYSIGNALGAIN_FUNC))
22382238

22392239
if(clampMode != I_CLAMP_MODE)
22402240
DAP_ChangeHeadStageMode(device, clampMode, i, DO_MCC_MIES_SYNCING)
@@ -2307,13 +2307,13 @@ static Function CONF_RestoreAmplifierSettings(string device, variable headStage,
23072307
// MCC settings without GUI control
23082308
val = JSON_GetVariable(jsonID, path + EXPCONFIG_JSON_AMP_LPF, ignoreErr = 1)
23092309
if(!IsNaN(val))
2310-
ret = AI_SendToAmp(device, headstage, V_CLAMP_MODE, MCC_SETPRIMARYSIGNALLPF_FUNC, val)
2310+
ret = AI_WriteToAmplifier(device, headstage, V_CLAMP_MODE, MCC_PRIMARYSIGNALLPF_FUNC, val)
23112311
ASSERT(ret == 0, "Could not set LPF primary output")
23122312
endif
23132313

23142314
val = JSON_GetVariable(jsonID, path + EXPCONFIG_JSON_AMP_GAIN, ignoreErr = 1)
23152315
if(!IsNaN(val))
2316-
ret = AI_SendToAmp(device, headstage, V_CLAMP_MODE, MCC_SETPRIMARYSIGNALGAIN_FUNC, val)
2316+
ret = AI_WriteToAmplifier(device, headstage, V_CLAMP_MODE, MCC_PRIMARYSIGNALGAIN_FUNC, val)
23172317
ASSERT(ret == 0, "Could not set primary output gain")
23182318
endif
23192319

@@ -2341,13 +2341,13 @@ static Function CONF_RestoreAmplifierSettings(string device, variable headStage,
23412341
// MCC settings without GUI control
23422342
val = JSON_GetVariable(jsonID, path + EXPCONFIG_JSON_AMP_LPF, ignoreErr = 1)
23432343
if(!IsNaN(val))
2344-
ret = AI_SendToAmp(device, headstage, I_CLAMP_MODE, MCC_SETPRIMARYSIGNALLPF_FUNC, val)
2344+
ret = AI_WriteToAmplifier(device, headstage, I_CLAMP_MODE, MCC_PRIMARYSIGNALLPF_FUNC, val)
23452345
ASSERT(ret == 0, "Could not set LPF primary output")
23462346
endif
23472347

23482348
val = JSON_GetVariable(jsonID, path + EXPCONFIG_JSON_AMP_GAIN, ignoreErr = 1)
23492349
if(!IsNaN(val))
2350-
ret = AI_SendToAmp(device, headstage, I_CLAMP_MODE, MCC_SETPRIMARYSIGNALGAIN_FUNC, val)
2350+
ret = AI_WriteToAmplifier(device, headstage, I_CLAMP_MODE, MCC_PRIMARYSIGNALGAIN_FUNC, val)
23512351
ASSERT(ret == 0, "Could not set LPF primary output")
23522352
endif
23532353

@@ -2389,30 +2389,30 @@ static Function CONF_MCC_MidExp(string device, variable headStage, variable json
23892389

23902390
if(clampMode == V_CLAMP_MODE)
23912391

2392-
settingValue = AI_SendToAmp(device, headStage, V_CLAMP_MODE, MCC_GETPIPETTEOFFSET_FUNC, NaN, checkBeforeWrite = 1)
2392+
settingValue = AI_ReadFromAmplifier(device, headStage, V_CLAMP_MODE, MCC_PIPETTEOFFSET_FUNC)
23932393
PGC_SetAndActivateControl(device, "setvar_DataAcq_PipetteOffset_VC", val = settingValue)
23942394
PGC_SetAndActivateControl(device, "setvar_DataAcq_PipetteOffset_IC", val = settingValue)
2395-
settingValue = AI_SendToAmp(device, headStage, V_CLAMP_MODE, MCC_GETHOLDING_FUNC, NaN, checkBeforeWrite = 1)
2395+
settingValue = AI_ReadFromAmplifier(device, headStage, V_CLAMP_MODE, MCC_HOLDING_FUNC)
23962396
PGC_SetAndActivateControl(device, "setvar_DataAcq_Hold_VC", val = settingValue)
2397-
settingValue = AI_SendToAmp(device, headStage, V_CLAMP_MODE, MCC_GETHOLDINGENABLE_FUNC, NaN, checkBeforeWrite = 1)
2397+
settingValue = AI_ReadFromAmplifier(device, headStage, V_CLAMP_MODE, MCC_HOLDINGENABLE_FUNC)
23982398
PGC_SetAndActivateControl(device, "check_DatAcq_HoldEnableVC", val = settingValue)
23992399
PGC_SetAndActivateControl(device, "check_DataAcq_AutoBias", val = CHECKBOX_SELECTED)
24002400
printf "HeadStage %d is in V-Clamp mode and has been configured from the MCC. I-Clamp settings were reset to initial values, check before switching!\r", headStage
24012401
elseif(clampMode == I_CLAMP_MODE)
2402-
settingValue = AI_SendToAmp(device, headStage, I_CLAMP_MODE, MCC_GETPIPETTEOFFSET_FUNC, NaN, checkBeforeWrite = 1)
2402+
settingValue = AI_ReadFromAmplifier(device, headStage, I_CLAMP_MODE, MCC_PIPETTEOFFSET_FUNC)
24032403
PGC_SetAndActivateControl(device, "setvar_DataAcq_PipetteOffset_VC", val = settingValue)
24042404
PGC_SetAndActivateControl(device, "setvar_DataAcq_PipetteOffset_IC", val = settingValue)
2405-
settingValue = AI_SendToAmp(device, headStage, I_CLAMP_MODE, MCC_GETHOLDING_FUNC, NaN, checkBeforeWrite = 1)
2405+
settingValue = AI_ReadFromAmplifier(device, headStage, I_CLAMP_MODE, MCC_HOLDING_FUNC)
24062406
PGC_SetAndActivateControl(device, "setvar_DataAcq_Hold_IC", val = settingValue)
2407-
settingValue = AI_SendToAmp(device, headStage, I_CLAMP_MODE, MCC_GETHOLDINGENABLE_FUNC, NaN, checkBeforeWrite = 1)
2407+
settingValue = AI_ReadFromAmplifier(device, headStage, I_CLAMP_MODE, MCC_HOLDINGENABLE_FUNC)
24082408
PGC_SetAndActivateControl(device, "check_DatAcq_HoldEnable", val = settingValue)
2409-
settingValue = AI_SendToAmp(device, headStage, I_CLAMP_MODE, MCC_GETBRIDGEBALRESIST_FUNC, NaN, checkBeforeWrite = 1)
2409+
settingValue = AI_ReadFromAmplifier(device, headStage, I_CLAMP_MODE, MCC_BRIDGEBALRESIST_FUNC)
24102410
PGC_SetAndActivateControl(device, "setvar_DataAcq_BB", val = settingValue)
2411-
settingValue = AI_SendToAmp(device, headStage, I_CLAMP_MODE, MCC_GETBRIDGEBALENABLE_FUNC, NaN, checkBeforeWrite = 1)
2411+
settingValue = AI_ReadFromAmplifier(device, headStage, I_CLAMP_MODE, MCC_BRIDGEBALENABLE_FUNC)
24122412
PGC_SetAndActivateControl(device, "check_DatAcq_BBEnable", val = settingValue)
2413-
settingValue = AI_SendToAmp(device, headStage, I_CLAMP_MODE, MCC_GETNEUTRALIZATIONCAP_FUNC, NaN, checkBeforeWrite = 1)
2413+
settingValue = AI_ReadFromAmplifier(device, headStage, I_CLAMP_MODE, MCC_NEUTRALIZATIONCAP_FUNC)
24142414
PGC_SetAndActivateControl(device, "setvar_DataAcq_CN", val = settingValue)
2415-
settingValue = AI_SendToAmp(device, headStage, I_CLAMP_MODE, MCC_GETNEUTRALIZATIONENABL_FUNC, NaN, checkBeforeWrite = 1)
2415+
settingValue = AI_ReadFromAmplifier(device, headStage, I_CLAMP_MODE, MCC_NEUTRALIZATIONENABL_FUNC)
24162416
PGC_SetAndActivateControl(device, "check_DatAcq_CNEnable", val = settingValue)
24172417
PGC_SetAndActivateControl(device, "check_DataAcq_AutoBias", val = CHECKBOX_UNSELECTED)
24182418
PGC_SetAndActivateControl(device, "check_DatAcq_HoldEnableVC", val = CHECKBOX_UNSELECTED)

Packages/MIES/MIES_Constants.ipf

+55-63
Original file line numberDiff line numberDiff line change
@@ -404,69 +404,61 @@ Constant NUM_CLAMP_MODES = 3
404404
/// @name Possible values for the function parameter of AI_SendToAmp
405405
/// @anchor AI_SendToAmpConstants
406406
///@{
407-
Constant MCC_BEGIN_INVALID_FUNC = 10000
408-
Constant MCC_SETHOLDING_FUNC = 10001
409-
Constant MCC_GETHOLDING_FUNC = 10002
410-
Constant MCC_SETHOLDINGENABLE_FUNC = 10003
411-
Constant MCC_GETHOLDINGENABLE_FUNC = 10004
412-
Constant MCC_SETBRIDGEBALENABLE_FUNC = 10005
413-
Constant MCC_GETBRIDGEBALENABLE_FUNC = 10006
414-
Constant MCC_SETBRIDGEBALRESIST_FUNC = 10007
415-
Constant MCC_GETBRIDGEBALRESIST_FUNC = 10008
416-
Constant MCC_AUTOBRIDGEBALANCE_FUNC = 10009
417-
Constant MCC_SETNEUTRALIZATIONENABL_FUNC = 10010
418-
Constant MCC_GETNEUTRALIZATIONENABL_FUNC = 10011
419-
Constant MCC_SETNEUTRALIZATIONCAP_FUNC = 10012
420-
Constant MCC_GETNEUTRALIZATIONCAP_FUNC = 10013
421-
Constant MCC_SETWHOLECELLCOMPENABLE_FUNC = 10014
422-
Constant MCC_GETWHOLECELLCOMPENABLE_FUNC = 10015
423-
Constant MCC_SETWHOLECELLCOMPCAP_FUNC = 10016
424-
Constant MCC_GETWHOLECELLCOMPCAP_FUNC = 10017
425-
Constant MCC_SETWHOLECELLCOMPRESIST_FUNC = 10018
426-
Constant MCC_GETWHOLECELLCOMPRESIST_FUNC = 10019
427-
Constant MCC_AUTOWHOLECELLCOMP_FUNC = 10020
428-
Constant MCC_SETRSCOMPENABLE_FUNC = 10021
429-
Constant MCC_GETRSCOMPENABLE_FUNC = 10022
430-
Constant MCC_SETRSCOMPBANDWIDTH_FUNC = 10023
431-
Constant MCC_GETRSCOMPBANDWIDTH_FUNC = 10024
432-
Constant MCC_SETRSCOMPCORRECTION_FUNC = 10025
433-
Constant MCC_GETRSCOMPCORRECTION_FUNC = 10026
434-
Constant MCC_SETRSCOMPPREDICTION_FUNC = 10027
435-
Constant MCC_GETRSCOMPPREDICTION_FUNC = 10028
436-
Constant MCC_SETOSCKILLERENABLE_FUNC = 10029
437-
Constant MCC_GETOSCKILLERENABLE_FUNC = 10030
438-
Constant MCC_AUTOPIPETTEOFFSET_FUNC = 10031
439-
Constant MCC_SETPIPETTEOFFSET_FUNC = 10032
440-
Constant MCC_GETPIPETTEOFFSET_FUNC = 10033
441-
Constant MCC_SETFASTCOMPCAP_FUNC = 10034
442-
Constant MCC_GETFASTCOMPCAP_FUNC = 10035
443-
Constant MCC_SETSLOWCOMPCAP_FUNC = 10036
444-
Constant MCC_GETSLOWCOMPCAP_FUNC = 10037
445-
Constant MCC_SETFASTCOMPTAU_FUNC = 10038
446-
Constant MCC_GETFASTCOMPTAU_FUNC = 10039
447-
Constant MCC_SETSLOWCOMPTAU_FUNC = 10040
448-
Constant MCC_GETSLOWCOMPTAU_FUNC = 10041
449-
Constant MCC_SETSLOWCOMPTAUX20ENAB_FUNC = 10042
450-
Constant MCC_GETSLOWCOMPTAUX20ENAB_FUNC = 10043
451-
Constant MCC_AUTOFASTCOMP_FUNC = 10044
452-
Constant MCC_AUTOSLOWCOMP_FUNC = 10045
453-
Constant MCC_SETSLOWCURRENTINJENABL_FUNC = 10046
454-
Constant MCC_GETSLOWCURRENTINJENABL_FUNC = 10047
455-
Constant MCC_SETSLOWCURRENTINJLEVEL_FUNC = 10048
456-
Constant MCC_GETSLOWCURRENTINJLEVEL_FUNC = 10049
457-
Constant MCC_SETSLOWCURRENTINJSETLT_FUNC = 10050
458-
Constant MCC_GETSLOWCURRENTINJSETLT_FUNC = 10051
459-
Constant MCC_SETPRIMARYSIGNALGAIN_FUNC = 10052
460-
Constant MCC_GETPRIMARYSIGNALGAIN_FUNC = 10053
461-
Constant MCC_SETSECONDARYSIGNALGAIN_FUNC = 10054
462-
Constant MCC_GETSECONDARYSIGNALGAIN_FUNC = 10055
463-
Constant MCC_SETPRIMARYSIGNALHPF_FUNC = 10056
464-
Constant MCC_GETPRIMARYSIGNALHPF_FUNC = 10057
465-
Constant MCC_SETPRIMARYSIGNALLPF_FUNC = 10058
466-
Constant MCC_GETPRIMARYSIGNALLPF_FUNC = 10059
467-
Constant MCC_SETSECONDARYSIGNALLPF_FUNC = 10060
468-
Constant MCC_GETSECONDARYSIGNALLPF_FUNC = 10061
469-
Constant MCC_END_INVALID_FUNC = 10062
407+
Constant MCC_BEGIN_INVALID_FUNC = 10000
408+
Constant MCC_HOLDING_FUNC = 10001
409+
Constant MCC_HOLDINGENABLE_FUNC = 10002
410+
Constant MCC_BRIDGEBALENABLE_FUNC = 10003
411+
Constant MCC_BRIDGEBALRESIST_FUNC = 10004
412+
Constant MCC_AUTOBRIDGEBALANCE_FUNC = 10005
413+
Constant MCC_NEUTRALIZATIONENABL_FUNC = 10006
414+
Constant MCC_NEUTRALIZATIONCAP_FUNC = 10007
415+
Constant MCC_WHOLECELLCOMPENABLE_FUNC = 10008
416+
Constant MCC_WHOLECELLCOMPCAP_FUNC = 10009
417+
Constant MCC_WHOLECELLCOMPRESIST_FUNC = 10010
418+
Constant MCC_AUTOWHOLECELLCOMP_FUNC = 10011
419+
Constant MCC_RSCOMPENABLE_FUNC = 10012
420+
Constant MCC_RSCOMPBANDWIDTH_FUNC = 10013
421+
Constant MCC_RSCOMPCORRECTION_FUNC = 10014
422+
Constant MCC_RSCOMPPREDICTION_FUNC = 10015
423+
Constant MCC_OSCKILLERENABLE_FUNC = 10016
424+
Constant MCC_AUTOPIPETTEOFFSET_FUNC = 10017
425+
Constant MCC_PIPETTEOFFSET_FUNC = 10018
426+
Constant MCC_FASTCOMPCAP_FUNC = 10019
427+
Constant MCC_SLOWCOMPCAP_FUNC = 10020
428+
Constant MCC_FASTCOMPTAU_FUNC = 10021
429+
Constant MCC_SLOWCOMPTAU_FUNC = 10022
430+
Constant MCC_SLOWCOMPTAUX20ENAB_FUNC = 10023
431+
Constant MCC_AUTOFASTCOMP_FUNC = 10024
432+
Constant MCC_AUTOSLOWCOMP_FUNC = 10025
433+
Constant MCC_SLOWCURRENTINJENABL_FUNC = 10026
434+
Constant MCC_SLOWCURRENTINJLEVEL_FUNC = 10027
435+
Constant MCC_SLOWCURRENTINJSETLT_FUNC = 10028
436+
Constant MCC_PRIMARYSIGNALGAIN_FUNC = 10029
437+
Constant MCC_SECONDARYSIGNALGAIN_FUNC = 10030
438+
Constant MCC_PRIMARYSIGNALHPF_FUNC = 10031
439+
Constant MCC_PRIMARYSIGNALLPF_FUNC = 10032
440+
Constant MCC_SECONDARYSIGNALLPF_FUNC = 10033
441+
442+
Constant MCC_LAST_HARDWARE_FUNC = 10033 // needs updating if the above list changes
443+
444+
///@name Constants which don't represent MCC amplifier settings on the front panel/hardware
445+
///@{
446+
Constant MCC_NO_AMPCHAIN_FUNC = 10034
447+
Constant MCC_NO_AUTOBIAS_V_FUNC = 10035
448+
Constant MCC_NO_AUTOBIAS_VRANGE_FUNC = 10036
449+
Constant MCC_NO_AUTOBIAS_IBIASMAX_FUNC = 10037
450+
Constant MCC_NO_AUTOBIAS_ENABLE_FUNC = 10038
451+
///@}
452+
453+
Constant MCC_END_INVALID_FUNC = 10039
454+
///@}
455+
456+
/// @name Access type for amplifier read/write functions
457+
///
458+
/// @anchor MCCAccessType
459+
///@{
460+
Constant MCC_READ = 0x1
461+
Constant MCC_WRITE = 0x2
470462
///@}
471463

472464
/// Magic value for selecting "Bypass" in the bessel filter for the primary output

Packages/MIES/MIES_DAEphys.ipf

+12-9
Original file line numberDiff line numberDiff line change
@@ -3596,16 +3596,17 @@ End
35963596
Function DAP_SetVarProc_AmpCntrls(STRUCT WMSetVariableAction &sva) : SetVariableControl
35973597

35983598
string device, ctrl
3599-
variable headStage
3599+
variable headStage, func, clampMode
36003600

36013601
switch(sva.eventCode)
36023602
case 1: // mouse up
36033603
case 2: // Enter key
36043604
device = sva.win
36053605
ctrl = sva.ctrlName
36063606
DAG_Update(sva.win, sva.ctrlName, val = sva.dval)
3607-
headStage = DAG_GetNumericalValue(device, "slider_DataAcq_ActiveHeadstage")
3608-
AI_UpdateAmpModel(device, ctrl, headStage)
3607+
headStage = DAG_GetNumericalValue(device, "slider_DataAcq_ActiveHeadstage")
3608+
[func, clampMode] = AI_mapcontrolNameToFunctionConstant(ctrl)
3609+
AI_WriteToAmplifier(device, headStage, clampMode, func, sva.dval, GUIWrite = 0)
36093610
break
36103611
default:
36113612
break
@@ -3617,15 +3618,16 @@ End
36173618
Function DAP_ButtonProc_AmpCntrls(STRUCT WMButtonAction &ba) : ButtonControl
36183619

36193620
string device, ctrl
3620-
variable headStage
3621+
variable headStage, func, clampMode
36213622

36223623
switch(ba.eventCode)
36233624
case 2: // mouse up
36243625
device = ba.win
36253626
ctrl = ba.ctrlName
36263627

3627-
headStage = DAG_GetNumericalValue(device, "slider_DataAcq_ActiveHeadstage")
3628-
AI_UpdateAmpModel(device, ctrl, headstage)
3628+
headStage = DAG_GetNumericalValue(device, "slider_DataAcq_ActiveHeadstage")
3629+
[func, clampMode] = AI_mapcontrolNameToFunctionConstant(ctrl)
3630+
AI_WriteToAmplifier(device, headstage, clampMode, func, 1, GUIWrite = 0)
36293631
break
36303632
default:
36313633
break
@@ -3637,16 +3639,17 @@ End
36373639
Function DAP_CheckProc_AmpCntrls(STRUCT WMCheckboxAction &cba) : CheckBoxControl
36383640

36393641
string device, ctrl
3640-
variable headStage
3642+
variable headStage, func, clampMode
36413643

36423644
switch(cba.eventCode)
36433645
case 2: // mouse up
36443646
device = cba.win
36453647
ctrl = cba.ctrlName
36463648

36473649
DAG_Update(cba.win, cba.ctrlName, val = cba.checked)
3648-
headStage = DAG_GetNumericalValue(device, "slider_DataAcq_ActiveHeadstage")
3649-
AI_UpdateAmpModel(device, ctrl, headStage)
3650+
headStage = DAG_GetNumericalValue(device, "slider_DataAcq_ActiveHeadstage")
3651+
[func, clampMode] = AI_mapcontrolNameToFunctionConstant(ctrl)
3652+
AI_WriteToAmplifier(device, headStage, clampMode, func, cba.checked, GUIWrite = 0)
36503653
break
36513654
default:
36523655
break

Packages/MIES/MIES_DataAcquisition.ipf

+4-4
Original file line numberDiff line numberDiff line change
@@ -294,8 +294,8 @@ Function DQ_ApplyAutoBias(string device, WAVE TPResults)
294294
current *= DAG_GetNumericalValue(device, "setvar_Settings_AutoBiasPerc") * PERCENT_TO_ONE
295295

296296
// check if holding is enabled. If it is not, ignore holding current value.
297-
if(AI_SendToAmp(device, headStage, I_CLAMP_MODE, MCC_GETHOLDINGENABLE_FUNC, NaN))
298-
actualCurrent = AI_SendToAmp(device, headStage, I_CLAMP_MODE, MCC_GETHOLDING_FUNC, NaN, usePrefixes = 0)
297+
if(AI_ReadFromAmplifier(device, headStage, I_CLAMP_MODE, MCC_HOLDINGENABLE_FUNC))
298+
actualCurrent = AI_ReadFromAmplifier(device, headStage, I_CLAMP_MODE, MCC_HOLDING_FUNC, usePrefixes = 0)
299299
else
300300
actualCurrent = 0
301301
endif
@@ -316,8 +316,8 @@ Function DQ_ApplyAutoBias(string device, WAVE TPResults)
316316
endif
317317

318318
DEBUGPRINT("current[A] to send=", var = current)
319-
AI_UpdateAmpModel(device, "check_DatAcq_HoldEnable", headStage, value = 1, sendToAll = 0)
320-
AI_UpdateAmpModel(device, "setvar_DataAcq_Hold_IC", headstage, value = current * ONE_TO_PICO, sendToAll = 0)
319+
AI_WriteToAmplifier(device, headStage, I_CLAMP_MODE, MCC_HOLDINGENABLE_FUNC, 1, sendToAll = 0)
320+
AI_WriteToAmplifier(device, headStage, I_CLAMP_MODE, MCC_HOLDING_FUNC, current * ONE_TO_PICO, sendToAll = 0)
321321
endfor
322322
End
323323

Packages/MIES/MIES_ExperimentDocumentation.ipf

+4-4
Original file line numberDiff line numberDiff line change
@@ -868,10 +868,10 @@ Function ED_TPDocumentation(string device)
868868
continue
869869
endif
870870

871-
TPSettingsWave[0][4][i] = AI_SendToAmp(device, i, V_CLAMP_MODE, MCC_GETFASTCOMPCAP_FUNC, NaN, selectAmp = 0)
872-
TPSettingsWave[0][5][i] = AI_SendToAmp(device, i, V_CLAMP_MODE, MCC_GETSLOWCOMPCAP_FUNC, NaN, selectAmp = 0)
873-
TPSettingsWave[0][6][i] = AI_SendToAmp(device, i, V_CLAMP_MODE, MCC_GETFASTCOMPTAU_FUNC, NaN, selectAmp = 0)
874-
TPSettingsWave[0][7][i] = AI_SendToAmp(device, i, V_CLAMP_MODE, MCC_GETSLOWCOMPTAU_FUNC, NaN, selectAmp = 0)
871+
TPSettingsWave[0][4][i] = AI_ReadFromAmplifier(device, i, V_CLAMP_MODE, MCC_FASTCOMPCAP_FUNC, selectAmp = 0)
872+
TPSettingsWave[0][5][i] = AI_ReadFromAmplifier(device, i, V_CLAMP_MODE, MCC_SLOWCOMPCAP_FUNC, selectAmp = 0)
873+
TPSettingsWave[0][6][i] = AI_ReadFromAmplifier(device, i, V_CLAMP_MODE, MCC_FASTCOMPTAU_FUNC, selectAmp = 0)
874+
TPSettingsWave[0][7][i] = AI_ReadFromAmplifier(device, i, V_CLAMP_MODE, MCC_SLOWCOMPTAU_FUNC, selectAmp = 0)
875875
endfor
876876

877877
TPSettingsWave[0][1][0, NUM_HEADSTAGES - 1] = (hsProp[r][%ClampMode] == V_CLAMP_MODE) ? TPResults[%BaselineSteadyState][r] : NaN

0 commit comments

Comments
 (0)