'-------------------------------------------------------------------------------- ' IMPORT RIG-SPECIFIC PARAMETERS AND UNIVERSAL PARAMETERS '-------------------------------------------------------------------------------- #include "C:\\Users\\Public\\RaymondLabCode\\Experiment Protocols\\RigChoice.s2s" #include "C:\\Users\\Public\\RaymondLabCode\\Experiment Protocols\\Parameters_Universal.s2s" '-------------------------------------------------------------------------------- ' MAIN PROGRAM '-------------------------------------------------------------------------------- ' 0 = GAP A ' 1 = Gap B ' 2 = test ' 3 = train ' 9 = quit experiment const Order%[] := {0, 1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 3, 0, 1, 2, 0, 1, 2, 0, 1, 2, 0, 9}; var expmtIndx := 0; runLength := 3600; '1 Hour (60 minutes x 60 seconds) testLength := 45; ToolbarConfig(); '-------------------------------------------------------------------------------- ' Toolbar Callbacks '-------------------------------------------------------------------------------- Func ToolbarIdle%() 'This function calls repeatedly whenever nothing else is happening 'if runexpmt=1, it is used to run a full expmt automatically. -HP 'expmtMode: 0=habit, 1=0x, 2=2x, 3=ipsi stim, 4=contra stim 'test: 0=wait, 1=test, 2=train ' Check a valid sampling view is running var currView := ViewKind(); if currView <> 0 then return 1; endif; ' Keep sine wave from drifting if MaxTime() > (prevTime + 1/((stepPeriod+245)/1000)) then if driftFix = 1 then driftFix%(); endif; endif; 'If an experiment is running: if runExpmt% = 1 then 'Check the time. Seconds is the current time - compare it to the goal time of each segment if MaxTime() > goalTime then SampleKey(str$(Order%[expmtIndx])); docase ' GAP A case Order%[expmtIndx] = 0 then SampleKey("x"); goalTime := MaxTime() + 5; ToolbarInit%(); Yield(); ' GAP B case Order%[expmtIndx] = 1 then goalTime := MaxTime() + 5; ToolbarInit%(); Yield(); runFlash(); Yield(); ToolbarInit%(); Yield(); ' TEST case Order%[expmtIndx] = 2 then SampleKey("X"); goalTime := MaxTime() + testLength; stepPeriod := 1000; stepLength := 250; stepAmpChair := 10; stepAmpDrum := 0; ToolbarStepConfig%(); toolbarStepOn%(); ' TRAIN case Order%[expmtIndx] = 3 then SampleKey("X"); goalTime := MaxTime() + runLength; stepPeriod := 10000; stepLength := 5000; stepAmpChair := 0; stepAmpDrum := -10; QueTime := 495; ToolbarStepConfig%(); toolbarStepOn%(); ' QUIT EXPMT case Order%[expmtIndx] = 9 then ToolbarQuitExpmt%(); Return(1); endcase; expmtIndx := expmtIndx + 1; endif; endif; Return(1); End '-------------------------------------------------------------------------------- 'Configure expmt settings window '-------------------------------------------------------------------------------- Func ToolbarConfigExpmt%() DlgCreate("Experiment settings"); 'Start new dialog DlgReal(1,"Run length (s)",0,5000); DlgReal(2,"Test length (s)",0,5000); DlgInteger(3,"Light flash on?)",0,1,0,0,"0|1"); DlgShow(runLength, testLength, flashon%,testStim); SetSequencerValues(); Return(1); End