62 lines
2.1 KiB
Matlab
62 lines
2.1 KiB
Matlab
classdef RegisterDataClass < DataBaseClass
|
|
|
|
%% Public 'read-only' properties
|
|
properties (SetAccess = private)
|
|
FileNameAppendage = '_Registers.csv';
|
|
Address = [];
|
|
Value = [];
|
|
FloatValue = [];
|
|
Name = {};
|
|
end
|
|
|
|
%% Public methods
|
|
methods (Access = public)
|
|
function obj = RegisterDataClass(fileNamePrefix)
|
|
data = obj.ImportCSVmixed(fileNamePrefix, '%f %f %f %f %s');
|
|
obj.Address = data{2};
|
|
obj.Value = data{3};
|
|
obj.FloatValue = data{4};
|
|
obj.Name = data{5};
|
|
end
|
|
function value = GetValueAtAddress(obj, address)
|
|
value = obj.ValueAtIndexes(obj.IndexesOfAddress(address));
|
|
end
|
|
function floatValue = GetFloatValueAtAddress(obj, address)
|
|
floatValue = obj.FloatValueAtIndexes(obj.IndexesOfAddress(address));
|
|
end
|
|
function value = GetValueAtName(obj, name)
|
|
value = obj.ValueAtIndexes(obj.IndexesOfName(name));
|
|
end
|
|
function floatValue = GetFloatValueAtName(obj, name)
|
|
floatValue = obj.FloatValueAtIndexes(obj.IndexesOfName(name));
|
|
end
|
|
end
|
|
|
|
%% Private methods
|
|
methods (Access = private)
|
|
function indexes = IndexesOfAddress(obj, address)
|
|
indexes = find(obj.Address == address);
|
|
if(isempty(indexes))
|
|
error('Register address not found.');
|
|
end
|
|
end
|
|
function indexes = IndexesOfName(obj, name)
|
|
indexes = find(ismember(obj.Name, name));
|
|
if(isempty(indexes))
|
|
error('Register name not found.');
|
|
end
|
|
end
|
|
function value = ValueAtIndexes(obj, indexes)
|
|
if(numel(unique(obj.Value(indexes))) > 1)
|
|
error('Conflicting register values exist.');
|
|
end
|
|
value = obj.Value(indexes(1));
|
|
end
|
|
function floatValue = FloatValueAtIndexes(obj, indexes)
|
|
if(numel(unique(obj.FloatValue(indexes))) > 1)
|
|
error('Conflicting register values exist.');
|
|
end
|
|
floatValue = obj.FloatValue(indexes(1));
|
|
end
|
|
end
|
|
end |