#include "libs/TrigsObj.s2s"
#include "libs/ChanFuncs.s2s"
#include "libs/FileObj.s2s"
#include "libs/Counter.s2s"

var FileObj file;
file.setName(FileName$(3));
file.bringToFront();

var TrigsObj pulseTrigs;
var TrigsObj newStimTrigs;
var interval;
var createNewStimTrigs%;


interval := 0.85;
pulseTrigs.chan% := 3;
pulseTrigs.start_event := Cursor(1);
pulseTrigs.end_event := Cursor(2);


DlgCreate("Stim Trigs Creator");
DlgChan(1, "Pulse Trig Chan", 2);
DlgCheck(2, "Create a new Stim Chan?");
DlgChan(3, "New Stim Chan", 2);
DlgXValue(4, "Max inter-pulse interval");
DlgXValue(5, "start time");
DlgXValue(6, "end time");
var ok% := DlgShow(pulseTrigs.chan%, createNewStimTrigs%, newStimTrigs.chan%, interval, pulseTrigs.start_event, pulseTrigs.end_event);
if ok% = 1 then
    if createNewStimTrigs% = 1 then
        newStimTrigs.setChan(createEventChannel("newST"));
    endif
    pulseTrigs.end_event := LastTime(pulseTrigs.chan%, pulseTrigs.end_event);
    pulseTrigs.start_event := NextTime(pulseTrigs.chan%, pulseTrigs.start_event);
    newStimTrigs.writeEvent(pulseTrigs.start_event);
    newStimTrigs.start_event := pulseTrigs.start_event;
    while pulseTrigs.start_event < pulseTrigs.end_event do
        pulseTrigs.start_event := NextTime(pulseTrigs.chan%, pulseTrigs.start_event);
        PrintLog("tend"+Str$(pulseTrigs.end_event)+"\ttprevious: "+Str$(newStimTrigs.start_event)+"\tcurrent: "+Str$(pulseTrigs.start_event)+"\n");
        if Abs(newStimTrigs.start_event - pulseTrigs.start_event) > interval then
            PrintLog("computed interval: "+Str$(pulseTrigs.start_event - newStimTrigs.start_event)+"\tinterval: "+Str$(interval)+"\n");
            newStimTrigs.writeEvent(pulseTrigs.start_event);
            newStimTrigs.start_event := pulseTrigs.start_event;
        endif
    wend    
endif