0001 function [DataStruct, ErrorFlag] = family2datastruct(varargin)
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029 UnitsFlagCell = {};
0030 for i = length(varargin):-1:1
0031 if isstruct(varargin{i})
0032
0033 elseif iscell(varargin{i})
0034
0035 elseif strcmpi(varargin{i},'struct')
0036
0037 varargin(i) = [];
0038 elseif strcmpi(varargin{i},'numeric')
0039
0040 varargin(i) = [];
0041 elseif strcmpi(varargin{i},'simulator') || strcmpi(varargin{i},'model') || strcmpi(varargin{i},'Online') || strcmpi(varargin{i},'Manual')
0042
0043 varargin(i) = [];
0044 elseif strcmpi(varargin{i},'physics')
0045 UnitsFlagCell = {'Physics'};
0046 varargin(i) = [];
0047 elseif strcmpi(varargin{i},'hardware')
0048 UnitsFlagCell = {'Hardware'};
0049 varargin(i) = [];
0050 end
0051 end
0052
0053 if isempty(varargin)
0054 error('Must have at least a family name input');
0055 end
0056
0057
0058
0059
0060
0061 if iscell(varargin{1})
0062 for i = 1:length(varargin{1})
0063 if length(varargin) < 2
0064 [DataStruct{i}, ErrorFlag{i}] = family2datastruct(varargin{1}{i}, UnitsFlagCell{:});
0065 elseif length(varargin) < 3
0066 if iscell(varargin{2})
0067 [DataStruct{i}, ErrorFlag{i}] = family2datastruct(varargin{1}{i}, varargin{2}{i}, UnitsFlagCell{:});
0068 else
0069 [DataStruct{i}, ErrorFlag{i}] = family2datastruct(varargin{1}{i}, varargin{2}, UnitsFlagCell{:});
0070 end
0071 else
0072 if iscell(varargin{2})
0073 if iscell(varargin{3})
0074 [DataStruct{i}, ErrorFlag{i}] = family2datastruct(varargin{1}{i}, varargin{2}{i}, varargin{3}{i}, UnitsFlagCell{:});
0075 else
0076 [DataStruct{i}, ErrorFlag{i}] = family2datastruct(varargin{1}{i}, varargin{2}{i}, varargin{3}, UnitsFlagCell{:});
0077 end
0078 else
0079 if iscell(varargin{3})
0080 [DataStruct{i}, ErrorFlag{i}] = family2datastruct(varargin{1}{i}, varargin{2}, varargin{3}{i}, UnitsFlagCell{:});
0081 else
0082 [DataStruct{i}, ErrorFlag{i}] = family2datastruct(varargin{1}{i}, varargin{2}, varargin{3}, UnitsFlagCell{:});
0083 end
0084 end
0085 end
0086 end
0087 return
0088 end
0089
0090
0091
0092
0093
0094 [Family, Field, DeviceList, UnitsFlag] = inputparsingffd(varargin{:});
0095
0096
0097 if isempty(UnitsFlagCell)
0098
0099
0100 if isempty(UnitsFlag)
0101 UnitsFlag = getunits(Family);
0102 end
0103 else
0104
0105 UnitsFlag = UnitsFlagCell{1};
0106 end
0107
0108
0109
0110 if isempty(Field)
0111 Field = 'Monitor';
0112 end
0113
0114
0115
0116 if isempty(UnitsFlag)
0117 UnitsFlag = getfamilydata(Family, Field, 'Units');
0118 end
0119 if isempty(UnitsFlag)
0120 error('Cannot find the units type');
0121 end
0122
0123
0124
0125
0126
0127
0128 ErrorFlag = 0;
0129 DataStruct.Data = [];
0130 DataStruct.FamilyName = Family;
0131 DataStruct.Field = Field;
0132 if isempty(DeviceList)
0133 DataStruct.DeviceList = family2dev(Family);
0134 else
0135 DataStruct.DeviceList = DeviceList;
0136 end
0137 DataStruct.Data = ones(size( DataStruct.DeviceList,1),1) * NaN;
0138 DataStruct.Status = family2status(Family, DataStruct.DeviceList);
0139 DataStruct.Mode = getmode(Family, Field);
0140 DataStruct.t = [];
0141 DataStruct.tout = [];
0142 DataStruct.DataTime = [];
0143 DataStruct.TimeStamp = [];
0144
0145 DataStruct.Units = UnitsFlag;
0146 if strcmpi(UnitsFlag,'Hardware')
0147 DataStruct.UnitsString = getfamilydata(Family, Field, 'HWUnits');
0148 elseif strcmpi(UnitsFlag,'Physics')
0149 DataStruct.UnitsString = getfamilydata(Family, Field, 'PhysicsUnits');
0150 else
0151 error('Units unknown');
0152 end
0153 DataStruct.DataDescriptor = '';
0154 DataStruct.CreatedBy = 'family2datastruct';
0155