Skip to content

Commit a36bb15

Browse files
committed
WIP: AcquireData_NG
1 parent d01791e commit a36bb15

2 files changed

Lines changed: 80 additions & 3 deletions

File tree

Packages/MIES/MIES_AcquireData.ipf

Lines changed: 72 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,7 @@ End
142142
/// @brief Fill the #ACD_DAQSettings structure from a specially crafted string
143143
Function ACD_InitDAQSettingsFromString(STRUCT ACD_DAQSettings &s, string str)
144144

145-
variable md, ra, idx, lidx, bkg_daq, res, headstage, clampMode, ttl
145+
variable md, ra, idx, lidx, bkg_daq, res, headstage, clampMode, ttl, async
146146
string elem, output
147147

148148
sscanf str, "MD%d_RA%d_I%d_L%d_BKG%d", md, ra, idx, lidx, bkg_daq
@@ -176,6 +176,8 @@ Function ACD_InitDAQSettingsFromString(STRUCT ACD_DAQSettings &s, string str)
176176

177177
s.tbp = ACD_ParseNumber(str, "_TBP", defValue = NaN)
178178

179+
s.tad = ACD_ParseNumber(str, "_TAD", defValue = 0)
180+
179181
// default to DAQ if nothing is choosen
180182
if(IsNaN(s.daq) && IsNaN(s.tp))
181183
s.daq = 1
@@ -216,6 +218,13 @@ Function ACD_InitDAQSettingsFromString(STRUCT ACD_DAQSettings &s, string str)
216218
Make/FREE/N=(NUM_HEADSTAGES) s.da = NaN
217219
Make/FREE/N=(NUM_HEADSTAGES) s.cm = NaN
218220
Make/FREE/N=(NUM_HEADSTAGES) s.aso = NaN
221+
Make/FREE/N=(NUM_HEADSTAGES) s.ab = NaN
222+
Make/FREE/N=(NUM_HEADSTAGES)/D s.abv = NaN
223+
Make/FREE/N=(NUM_HEADSTAGES)/D s.abvv = NaN
224+
Make/FREE/N=(NUM_HEADSTAGES) s.asyncAD = NaN
225+
Make/FREE/N=(NUM_HEADSTAGES) s.asyncAlarm = NaN
226+
Make/FREE/N=(NUM_HEADSTAGES)/D s.da_scale = NaN
227+
219228
Make/FREE/T/N=(NUM_HEADSTAGES) s.st, s.ist, s.af, s.st_ttl, s.iaf
220229

221230
for(elem : hsConfig)
@@ -227,6 +236,12 @@ Function ACD_InitDAQSettingsFromString(STRUCT ACD_DAQSettings &s, string str)
227236

228237
s.st_ttl[ttl] = ACD_ParseString(elem, "_ST", defValue = "")
229238
continue
239+
elseif(GrepString(elem, "^ASYNC"))
240+
async = ACD_ParseNumber(elem, "ASYNC")
241+
s.asyncAD[async] = 1
242+
243+
s.asyncAlarm[async] = ACD_ParseNumber(elem, "_ALARM")
244+
continue
230245
endif
231246

232247
headstage = ACD_ParseNumber(elem, "HS")
@@ -262,6 +277,12 @@ Function ACD_InitDAQSettingsFromString(STRUCT ACD_DAQSettings &s, string str)
262277
s.iaf[headstage] = ACD_ParseString(elem, "_IAF", defValue = "")
263278

264279
s.aso[headstage] = ACD_ParseNumber(elem, "_ASO", defValue = 1)
280+
281+
s.ab[headstage] = ACD_ParseNumber(str, "_AB", defValue = NaN)
282+
s.abv[headstage] = ACD_ParseNumber(str, "_ABV", defValue = NaN)
283+
s.abvv[headstage] = ACD_ParseNumber(str, "_ABVV", defValue = NaN)
284+
285+
s.da_scale[headstage] = ACD_ParseNumber(elem, "_DS", defValue = NaN)
265286
endfor
266287
endif
267288
End
@@ -324,6 +345,8 @@ End
324345
/// - TP Baseline Percentage: (TBP: [25, 49])
325346
/// - Fixed frequency acquisition: (FFR: see @ref DAP_GetSamplingFrequencies() for available values)
326347
/// - TP Duration: (TPD: [5, inf[)
348+
/// - TP Amplitute IC: (TAI) @todo check if this is really HS independent
349+
/// - TP After DAQ: (TAD: 1/0)
327350
///
328351
/// HeadstageConfig:
329352
/// - Full specification: __HSXX_ADXX_DAXX_CM:XX:_ST:XX:_IST:XX:_AF:XX:_IAF:XX:_ASOXX
@@ -333,6 +356,7 @@ End
333356
/// - DA
334357
/// - CM (VC/IC/IZ): clamp mode
335358
/// Optional:
359+
/// - TAI: Testpulse Amplitude IC
336360
/// - ST: stimulus set
337361
/// - IST: indexing stimulus set
338362
/// - AF: analysis function for stimulus set
@@ -347,6 +371,10 @@ End
347371
/// Optional:
348372
/// - ST: TTL stimulus set
349373
///
374+
/// AsyncConfig:
375+
/// - Full specification: __ASYNCXX_ADXX_AlARMXX_TTE:XX:_UN:XX:
376+
/// TODO
377+
///
350378
/// For tweaking data acquisition with full flexibility we also support
351379
/// customization functions before initialization, preInit aka before the DAEphys
352380
/// panel is created, and before acquisition, preAcq aka before the Start DAQ/TP
@@ -407,7 +435,7 @@ Function ACD_AcquireData(STRUCT ACD_DAQSettings &s, string device)
407435
PGC_SetAndActivateControl(device, "Popup_Settings_IC_AD", str = num2str(s.ad[i]))
408436
#endif // !TESTS_WITH_SUTTER_HARDWARE
409437

410-
if(s.aso[i] != 1)
438+
if(WaveExists(s.aso) && s.aso[i] != 1)
411439
#ifdef TESTS_WITH_SUTTER_HARDWARE
412440
INFO("Unassociated channel %d is setup on an existing HS", n0 = i)
413441
CHECK_GT_VAR(i + 1, deviceInfo[%DA])
@@ -467,6 +495,17 @@ Function ACD_AcquireData(STRUCT ACD_DAQSettings &s, string device)
467495
PGC_SetAndActivateControl(device, ctrl, val = 1)
468496
DoUpdate/W=$device
469497

498+
if(s.cm[i] == I_CLAMP_MODE)
499+
PGC_SetAndActivateControl(device, "check_DataAcq_AutoBias", val = s.ab[i])
500+
PGC_SetAndActivateControl(device, "setvar_DataAcq_AutoBiasV", val = s.abv[i])
501+
PGC_SetAndActivateControl(device, "setvar_DataAcq_AutoBiasVrange", val = s.abvv[i])
502+
endif
503+
504+
if(IsFinite(s.da_scale[i]))
505+
ctrl = GetPanelControl(s.da[i], CHANNEL_TYPE_DAC, CHANNEL_CONTROL_SCALE)
506+
PGC_SetAndActivateControl(device, ctrl, val = s.da_scale[i])
507+
endif
508+
470509
activeHS += 1
471510
endfor
472511

@@ -492,6 +531,31 @@ Function ACD_AcquireData(STRUCT ACD_DAQSettings &s, string device)
492531
endif
493532
endfor
494533

534+
for(i = 0; i < NUM_ASYNC_CHANNELS; i += 1)
535+
536+
if(s.asyncAD[i] != 1)
537+
continue
538+
endif
539+
540+
ctrl = GetPanelControl(i, CHANNEL_TYPE_ASYNC, CHANNEL_CONTROL_CHECK)
541+
PGC_SetAndActivateControl(device, ctrl, val = s.asyncAD[i])
542+
543+
ctrl = GetPanelControl(i, CHANNEL_TYPE_ALARM, CHANNEL_CONTROL_CHECK)
544+
PGC_SetAndActivateControl(device, ctrl, val = s.asyncAlarm[i])
545+
546+
ctrl = GetPanelControl(i, CHANNEL_TYPE_ASYNC, CHANNEL_CONTROL_ALARM_MIN)
547+
PGC_SetAndActivateControl(device, ctrl, val = s.asyncAlarmMin[i])
548+
549+
ctrl = GetPanelControl(i, CHANNEL_TYPE_ASYNC, CHANNEL_CONTROL_ALARM_MAX)
550+
PGC_SetAndActivateControl(device, ctrl, val = s.asyncAlarmMax[i])
551+
552+
ctrl = GetPanelControl(i, CHANNEL_TYPE_ASYNC, CHANNEL_CONTROL_TITLE)
553+
PGC_SetAndActivateControl(device, ctrl, str = s.asyncTitle[i])
554+
555+
ctrl = GetPanelControl(i, CHANNEL_TYPE_ASYNC, CHANNEL_CONTROL_UNIT)
556+
PGC_SetAndActivateControl(device, ctrl, str = s.asyncUnit[i])
557+
endfor
558+
495559
PGC_SetAndActivateControl(device, "check_Settings_RequireAmpConn", val = (s.amp ? CHECKBOX_SELECTED : CHECKBOX_UNSELECTED))
496560
PGC_SetAndActivateControl(device, "check_Settings_MD", val = s.MD)
497561
PGC_SetAndActivateControl(device, "Check_DataAcq1_RepeatAcq", val = s.RA)
@@ -505,6 +569,8 @@ Function ACD_AcquireData(STRUCT ACD_DAQSettings &s, string device)
505569
PGC_SetAndActivateControl(device, "setvar_DataAcq_TerminationDelay", val = s.td)
506570
PGC_SetAndActivateControl(device, "Setvar_DataAcq_dDAQDelay", val = s.ddl)
507571

572+
PGC_SetAndActivateControl(device, "check_Settings_TPAfterDAQ", val = s.tad)
573+
508574
PGC_SetAndActivateControl(device, "Check_DataAcq_Get_Set_ITI", val = s.gsi)
509575

510576
PGC_SetAndActivateControl(device, "Popup_Settings_SampIntMult", str = num2str(s.sim))
@@ -535,6 +601,10 @@ Function ACD_AcquireData(STRUCT ACD_DAQSettings &s, string device)
535601
PGC_SetAndActivateControl(device, "SetVar_DataAcq_SetRepeats", val = s.RES)
536602
PGC_SetAndActivateControl(device, "check_Settings_TP_SaveTP", val = s.STP)
537603

604+
if(IsFinite(s.TAI))
605+
PGC_SetAndActivateControl(device, "SetVar_DataAcq_TPAmplitudeIC", val = s.TAI)
606+
endif
607+
538608
if(IsFinite(s.TBP))
539609
PGC_SetAndActivateControl(device, "SetVar_DataAcq_TPBaselinePerc", val = s.TBP)
540610
endif

Packages/MIES/MIES_Structures.ipf

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -674,11 +674,18 @@ EndStructure
674674

675675
Structure ACD_DAQSettings
676676
variable MD, RA, IDX, LIDX, BKG_DAQ, RES, DB, AMP, ITP, FAR
677-
variable oodDAQ, dDAQ, OD, TD, TP, ITI, GSI, TPI, DAQ, DDL, SIM, STP, TBP, TPD
677+
variable oodDAQ, dDAQ, OD, TD, TP, ITI, GSI, TPI, DAQ, DDL, SIM, STP, TBP, TPD, TAD
678+
variable tai
678679
string FFR
679680

680681
WAVE hs, da, ad, cm, ttl, aso
682+
WAVE/D da_scale
681683
WAVE/T st, ist, af, st_ttl, iaf
682684
FUNCREF ACD_CALLABLE_PROTO preAcquireFunc, preInitFunc
683685
FUNCREF ACD_CALLABLE_PROTO globalPreAcquireFunc, globalPreInitFunc
686+
WAVE ab
687+
WAVE/D abv, abvv
688+
WAVE asyncAD, asyncAlarm
689+
WAVE/D asyncAlarmMin, asyncAlarmMax
690+
WAVE/T asyncTitle, asyncUnit
684691
EndStructure

0 commit comments

Comments
 (0)