forked from Stage-VSS/matlab-lcr
-
Notifications
You must be signed in to change notification settings - Fork 0
/
MockLightCrafter4500.m
110 lines (89 loc) · 3.39 KB
/
MockLightCrafter4500.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
classdef MockLightCrafter4500 < LightCrafter4500
%emulates a lightcrafter connection
properties (Access=private)
mode = true;
led_enable = false(4,1);
led_currents = zeros(3,1);
bitDepth
color
numPatterns
end
methods
function self = MockLightCrafter4500(refreshRate, colorMode)
self@LightCrafter4500(refreshRate, colorMode);
self.color = {self.LEDS_EACH{1}, 'none', 'none'};
self.bitDepth = self.MAX_PATTERN_BIT_DEPTH;
self.numPatterns = 1;
end
function connect(~)
return
end
function disconnect(~)
return
end
function m = getMode(self)
if self.mode
m = 'pattern';
else
m = 'video';
end
end
function setMode(self, mode)
if strcmpi(mode, 'video')
self.mode = false;
elseif strcmpi(mode, 'pattern')
self.mode = true;
else
error('Mode must be ''video'' or ''pattern''');
end
end
function varargout = getLedEnables(self)
[varargout(:)] = num2cell(self.led_enable);
end
function setLedEnables(self, varargin)
self.led_enable = cellfun(@logical, varargin);
end
function varargout = getLedCurrents(self)
[varargout(:)] = num2cell(self.led_currents);
end
function setLedCurrents(self, varargin)
self.led_currents = cell2mat(varargin);
end
function setImageOrientation(~,~,~)
return
end
function [firstBitDepth, color, numPatterns] = getPatternAttributes(self)
if ~strcmpi(self.getMode(), 'pattern')
error('Must be in pattern mode to get pattern attributes');
end
%not so sure about this one...
firstBitDepth = self.bitDepth;
color = self.color;
numPatterns = self.numPatterns;
end
function setPatternAttributes(self, bitDepth, color, numPatterns)
if ~isa(color, 'cell')
color = {color, 'none', 'none'};
end
if any(~ismember(color, self.LEDS))
error('A selected color(s) does not exist for this projector.');
end
maxNumPatterns = self.maxNumPatternsForBitDepth(bitDepth);
if nargin < 4 || isempty(numPatterns)
numPatterns = maxNumPatterns;
end
if numPatterns > maxNumPatterns
error(['The number of patterns must be less than or equal to ' num2str(maxNumPatterns)]);
end
if ~strcmpi(self.getMode(), 'pattern')
error('Must be in pattern mode to set pattern attributes');
end
if bitDepth < self.MIN_PATTERN_BIT_DEPTH || bitDepth > self.MAX_PATTERN_BIT_DEPTH
error(['Bit depth must be between ' num2str(self.MIN_PATTERN_BIT_DEPTH) ' and ' num2str(self.MAX_PATTERN_BIT_DEPTH)]);
end
self.color = color;
self.bitDepth = bitDepth;
self.numPatterns = numPatterns;
end
end
end