Skip to content

Commit a24fa67

Browse files
committed
refactor defaults setting
1 parent dbc1b65 commit a24fa67

File tree

5 files changed

+88
-60
lines changed

5 files changed

+88
-60
lines changed

src/defaultCFG.m

Lines changed: 0 additions & 34 deletions
This file was deleted.

src/utils/setDefaultsPTB.m renamed to src/defaults/checkDefaultsPTB.m

Lines changed: 9 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
function cfg = setDefaultsPTB(cfg)
1+
function cfg = checkDefaultsPTB(cfg)
22
% Set some defaults values if none have been set before.
33
%
44
% USAGE::
55
%
6-
% cfg = setDefaultsPTB(cfg)
6+
% cfg = checkDefaultsPTB(cfg)
77
%
88
% :param cfg:
99
% :type cfg: structure
@@ -16,7 +16,7 @@
1616
cfg = struct;
1717
end
1818

19-
fieldsToSet = defaultCFG();
19+
fieldsToSet = cppPtbDefaults('all');
2020

2121
if isfield(cfg, 'audio') && cfg.audio.do
2222

@@ -47,24 +47,16 @@
4747
end
4848

4949
if isfield(cfg, 'eyeTracker') && cfg.eyeTracker.do
50-
5150
% Calibration environment
52-
fieldsToSet.eyeTracker.defaultCalibration = true;
53-
fieldsToSet.eyeTracker.backgroundColor = [192 192 192];
54-
fieldsToSet.eyeTracker.fontColor = [0 0 0];
55-
fieldsToSet.eyeTracker.calibrationTargetColor = [0 0 0];
56-
fieldsToSet.eyeTracker.calibrationTargetSize = 1;
57-
fieldsToSet.eyeTracker.calibrationTargetWidth = 0.5;
58-
fieldsToSet.eyeTracker.displayCalResults = 1;
59-
51+
fieldsToSet.eyeTracker = cppPtbDefaults('eyeTracker');
6052
end
6153

6254
if isfield(cfg, 'testingDevice') && strcmpi(cfg.testingDevice, 'mri')
6355
fieldsToSet.bids.mri.RepetitionTime = [];
6456
fieldsToSet.pacedByTriggers.do = false;
6557
end
6658

67-
cfg = setDefaults(cfg, fieldsToSet);
59+
cfg = setDefaultFields(cfg, fieldsToSet);
6860

6961
%% checks
7062
if cfg.debug.do
@@ -77,6 +69,10 @@
7769
elseif cfg.skipSyncTests == true
7870
cfg.skipSyncTests = 1;
7971
end
72+
73+
if ~ismember(cfg.fixation.type, {'cross', 'dot', 'bestFixation'})
74+
error('cfg.fixation.type must be one of ''cross'', ''dot'', ''bestFixation''');
75+
end
8076

8177
% sort fields alphabetically
8278
cfg = orderfields(cfg);

src/defaults/cppPtbDefaults.m

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
function value = cppPtbDefaults(type)
2+
%
3+
% USAGE::
4+
%
5+
% value = cppPtbDefaults(type)
6+
%
7+
% (C) Copyright 2022 CPP_PTB developers
8+
9+
value = [];
10+
11+
switch lower(type)
12+
13+
case 'all'
14+
value = struct('testingDevice', 'pc', ...
15+
'color', struct('background', [0 0 0]), ...
16+
'skipSyncTests', 0);
17+
18+
value.aperture.type = 'none';
19+
20+
value.debug = cppPtbDefaults('debug');
21+
value.text = cppPtbDefaults('text');
22+
value.screen = cppPtbDefaults('screen');
23+
value.fixation = cppPtbDefaults('fixation');
24+
value.keyboard = cppPtbDefaults('keyboard');
25+
26+
case 'debug'
27+
value.do = true;
28+
value.transpWin = true;
29+
value.smallWin = true;
30+
31+
case 'keyboard'
32+
value.keyboard = [];
33+
value.responseBox = [];
34+
value.responseKey = {};
35+
value.escapeKey = 'ESCAPE';
36+
37+
case 'text'
38+
value.font = 'Courier New';
39+
value.size = 18;
40+
value.style = 1;
41+
42+
case 'fixation'
43+
value.type = 'cross';
44+
value.xDisplacement = 0;
45+
value.yDisplacement = 0;
46+
value.color = [255 255 255];
47+
value.width = 1;
48+
value.lineWidthPix = 5;
49+
50+
case 'screen'
51+
value.monitorWidth = 42;
52+
value.monitorDistance = 134;
53+
value.resolution = {[], [], []};
54+
55+
case 'eyetracker'
56+
value.defaultCalibration = true;
57+
value.backgroundColor = [192 192 192];
58+
value.fontColor = [0 0 0];
59+
value.calibrationTargetColor = [0 0 0];
60+
value.calibrationTargetSize = 1;
61+
value.calibrationTargetWidth = 0.5;
62+
value.displayCalResults = 1;
63+
64+
end
65+
66+
end

src/utils/setDefaults.m renamed to src/defaults/setDefaultFields.m

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1-
function structure = setDefaults(structure, fieldsToSet)
1+
function structure = setDefaultFields(structure, fieldsToSet)
22
%
33
% Recursively loop through the fields of a structure and sets a value if they don't exist.
44
%
55
% USAGE::
66
%
7-
% structure = setDefaults(structure, fieldsToSet)
7+
% structure = setDefaultFields(structure, fieldsToSet)
88
%
99
% :param structure:
1010
% :type structure: structure
@@ -27,7 +27,7 @@
2727
if isfield(structure, names{i}) && isstruct(structure.(names{i}))
2828

2929
structure.(names{i}) = ...
30-
setDefaults( ...
30+
setDefaultFields( ...
3131
structure.(names{i}), ...
3232
fieldsToSet.(names{i}) ...
3333
);

tests/test_setDefaultsPTB.m

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,10 @@
1111
function test_setDefaultsPtb_basic()
1212

1313
% set up
14-
cfg = setDefaultsPTB;
14+
cfg = checkDefaultsPTB();
1515

1616
% test data
17-
expectedCfg = defaultCFG();
17+
expectedCfg = cppPtbDefaults('all');
1818
expectedCfg.eyeTracker.do = false;
1919
expectedCfg.skipSyncTests = 2;
2020

@@ -26,10 +26,10 @@ function test_setDefaultsPtb_basic()
2626
function test_setDefaultsPtb_no_debug()
2727

2828
% set up
29-
cfg = setDefaultsPTB;
29+
cfg = checkDefaultsPTB();
3030

3131
% test data
32-
expectedCfg = defaultCFG();
32+
expectedCfg = cppPtbDefaults('all');
3333
expectedCfg.eyeTracker.do = false;
3434
expectedCfg.skipSyncTests = 2;
3535

@@ -42,10 +42,10 @@ function test_setDefaultsPtb_overwrite()
4242

4343
% set up
4444
cfg.screen.monitorWidth = 36;
45-
cfg = setDefaultsPTB(cfg);
45+
cfg = checkDefaultsPTB(cfg);
4646

4747
% test data
48-
expectedCfg = defaultCFG();
48+
expectedCfg = cppPtbDefaults('all');
4949
expectedCfg.screen.monitorWidth = 36;
5050
expectedCfg.eyeTracker.do = false;
5151
expectedCfg.skipSyncTests = 2;
@@ -59,10 +59,10 @@ function test_setDefaultsPtb_audio()
5959

6060
% set up
6161
cfg.audio.do = 1;
62-
cfg = setDefaultsPTB(cfg);
62+
cfg = checkDefaultsPTB(cfg);
6363

6464
% test data
65-
expectedCfg = defaultCFG();
65+
expectedCfg = cppPtbDefaults('all');
6666
expectedCfg.audio = struct('do', true, ...
6767
'devIdx', [], ...
6868
'playbackMode', 1, ...
@@ -92,10 +92,10 @@ function test_setDefaultsPtb_mri()
9292

9393
% set up
9494
cfg.testingDevice = 'mri';
95-
cfg = setDefaultsPTB(cfg);
95+
cfg = checkDefaultsPTB(cfg);
9696

9797
% test data
98-
expectedCfg = defaultCFG();
98+
expectedCfg = cppPtbDefaults('all');
9999
expectedCfg.testingDevice = 'mri';
100100
expectedCfg.bids.mri.RepetitionTime = [];
101101
expectedCfg.pacedByTriggers.do = false;

0 commit comments

Comments
 (0)