diff --git a/scenarios/scripts/p300-tactile-target.lua b/scenarios/scripts/p300-tactile-target.lua new file mode 100644 index 0000000..b6473b0 --- /dev/null +++ b/scenarios/scripts/p300-tactile-target.lua @@ -0,0 +1,65 @@ +-- This Lua script generates target stimulations the 1x6 p300-tactile matrix +-- +-- Author : Tobias Baumann +-- Date : 2021-06-09 + +-- this function is called when the box is initialized +function initialize(box) + + dofile(box:get_config("${Path_Data}") .. "/plugins/stimulation/lua-stimulator-stim-codes.lua") + + math.randomseed(os.time()) + row_base = _G[box:get_setting(2)] + col_base = _G[box:get_setting(3)] + delay = box:get_setting(4) + if box:get_setting(5) == 'true' then + free_spelling = true + else + free_spelling = false + end +end + +-- this function is called when the box is uninitialized +function uninitialize(box) +end + +-- this function is called once by the box +function process(box) + + -- loop until box:keep_processing() returns zero + -- cpu will be released with a call to sleep + -- at the end of the loop + while box:keep_processing() do + + -- gets current simulated time + t = box:get_current_time() + + -- loops on every received stimulation for a given input + for stimulation = 1, box:get_stimulation_count(1) do + + -- gets stimulation + stimulation_id, stimulation_time, stimulation_duration = box:get_stimulation(1, 1) + + if not free_spelling then + if stimulation_id == OVTK_StimulationId_RestStart then + + -- triggers the target + box:send_stimulation(1, row_base+math.random(1,6)-1, t+delay, 0) + box:send_stimulation(1, col_base, t+delay, 0) + + elseif stimulation_id == OVTK_StimulationId_ExperimentStop then + + -- triggers train stimulation + box:send_stimulation(1, OVTK_StimulationId_Train, t+delay+1, 0) + + end + end + -- discards it + box:remove_stimulation(1, 1) + + end + + -- releases cpu + box:sleep() + end +end