Skip to content

Commit 0fe542d

Browse files
Updated device functions
Signed-off-by: Pagadarai <[email protected]>
1 parent f0b5c3b commit 0fe542d

File tree

3 files changed

+80
-53
lines changed

3 files changed

+80
-53
lines changed

+adi/+libiio/attribute.m

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
classdef (Abstract) attribute < handle
2-
% matlabshared.libiio.channel_V1p0 channel class for base matlabshared.libiio.support
2+
% matlabshared.libiio.attribute attribute class for base adi.libiio.support
33
%
44
% This abstract system object defines the APIs necessary to use libIIO
55
% V1.0 for MATLAB/Simulink simulation as well as codegen on a Linux
@@ -9,8 +9,8 @@
99
%#codegen
1010

1111
%% Abstract Properties
12-
properties(Hidden, Access = protected)
13-
libName = 'libiio1'
12+
properties(Abstract, Hidden, Access = protected)
13+
libName
1414
end
1515

1616
methods
@@ -24,43 +24,43 @@
2424

2525
%% Internal Helper Functions
2626
methods (Hidden, Access = {?handle}, Static)
27-
function [status, value] = iio_attr_read_bool(obj,attrPtr)
27+
function [status, value] = iio_attr_read_bool(obj, attrPtr)
2828
valPtr = libpointer('bool', 0);
2929
status = calllib(obj.libName, 'iio_attr_read_bool', attrPtr, valPtr);
3030
if ~status
3131
value = valPtr.value;
3232
end
3333
end
3434

35-
function [status, value] = iio_attr_read_longlong(obj,attrPtr)
35+
function [status, value] = iio_attr_read_longlong(obj, attrPtr)
3636
valPtr = libpointer('int64Ptr', 0);
3737
status = calllib(obj.libName, 'iio_attr_read_longlong', attrPtr, valPtr);
3838
if ~status
3939
value = valPtr.value;
4040
end
4141
end
4242

43-
function [status, value] = iio_attr_read_double(obj,attrPtr)
43+
function [status, value] = iio_attr_read_double(obj, attrPtr)
4444
valPtr = libpointer('double', 0);
4545
status = calllib(obj.libName, 'iio_attr_read_double', attrPtr, valPtr);
4646
if ~status
4747
value = valPtr.value;
4848
end
4949
end
5050

51-
function status = iio_attr_write_string(attrPtr, value)
52-
status = calllib(obj.libName, 'iio_attr_write_bool', attrPtr, value);
51+
function status = iio_attr_write_string(obj, attrPtr, value)
52+
status = calllib(obj.libName, 'iio_attr_write_string', attrPtr, value);
5353
end
5454

55-
function status = iio_attr_write_bool(attrPtr, value)
55+
function status = iio_attr_write_bool(obj, attrPtr, value)
5656
status = calllib(obj.libName, 'iio_attr_write_bool', attrPtr, value);
5757
end
5858

59-
function status = iio_attr_write_longlong(attrPtr, value)
59+
function status = iio_attr_write_longlong(obj, attrPtr, value)
6060
status = calllib(obj.libName, 'iio_attr_write_longlong', attrPtr, value);
6161
end
6262

63-
function status = iio_attr_write_double(attrPtr, value)
63+
function status = iio_attr_write_double(obj, attrPtr, value)
6464
status = calllib(obj.libName, 'iio_attr_write_double', attrPtr, value);
6565
end
6666
end

+adi/+libiio/channel.m

Lines changed: 11 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
classdef (Abstract) channel < handle
1+
classdef (Abstract) channel < adi.libiio.attribute
22
% matlabshared.libiio.channel_V1p0 channel class for base matlabshared.libiio.support
33
%
44
% This abstract system object defines the APIs necessary to use libIIO
@@ -30,56 +30,33 @@
3030
end
3131

3232
function [status, value] = iio_channel_attr_read_bool(obj,chanPtr,attr)
33-
% [status, attrPtr] = iio_channel_find_attr(obj,chanPtr,attr);
34-
attrPtr = calllib(obj.libName, 'iio_channel_find_attr', chanPtr, attr);
35-
status = cPtrCheck(obj,attrPtr);
33+
[status, attrPtr] = adi.libiio.channel.iio_channel_find_attr(obj,chanPtr,attr);
3634
cstatus(obj,status,['Attribute: ' attr ' not found']);
37-
% [status, value] = iio_attr_read_bool(obj,attrPtr);
38-
valPtr = libpointer('bool', 0);
39-
status = calllib(obj.libName, 'iio_attr_read_bool', attrPtr, valPtr);
40-
if ~status
41-
value = valPtr.value;
42-
end
35+
[status, value] = adi.libiio.attribute.iio_attr_read_bool(obj,attrPtr);
4336
end
4437

4538
function [status, value] = iio_channel_attr_read_longlong(obj,chanPtr,attr)
46-
% [status, attrPtr] = iio_channel_find_attr(obj,chanPtr,attr);
47-
attrPtr = calllib(obj.libName, 'iio_channel_find_attr', chanPtr, attr);
48-
status = cPtrCheck(obj,attrPtr);
39+
[status, attrPtr] = adi.libiio.channel.iio_channel_find_attr(obj,chanPtr,attr);
4940
cstatus(obj,status,['Attribute: ' attr ' not found']);
50-
% [status, value] = iio_attr_read_longlong(obj,attrPtr);
51-
valPtr = libpointer('int64Ptr', 0);
52-
status = calllib(obj.libName, 'iio_attr_read_longlong', attrPtr, valPtr);
53-
if ~status
54-
value = valPtr.value;
55-
end
41+
[status, value] = adi.libiio.attribute.iio_attr_read_longlong(obj,attrPtr);
5642
end
5743

5844
function status = iio_channel_attr_write_bool(obj,chanPtr,attr,value)
59-
% [status, attrPtr] = iio_channel_find_attr(obj,chanPtr,attr);
60-
attrPtr = calllib(obj.libName, 'iio_channel_find_attr', chanPtr, attr);
61-
status = cPtrCheck(obj,attrPtr);
45+
[status, attrPtr] = adi.libiio.channel.iio_channel_find_attr(obj,chanPtr,attr);
6246
cstatus(obj,status,['Attribute: ' attr ' not found']);
63-
% status = iio_attr_write_bool(attrPtr, value);
64-
status = calllib(obj.libName, 'iio_attr_write_bool', attrPtr, value);
47+
status = adi.libiio.attribute.iio_attr_write_bool(attrPtr, value);
6548
end
6649

6750
function status = iio_channel_attr_write_longlong(obj,chanPtr,attr,value)
68-
% [status, attrPtr] = iio_channel_find_attr(obj,chanPtr,attr);
69-
attrPtr = calllib(obj.libName, 'iio_channel_find_attr', chanPtr, attr);
70-
status = cPtrCheck(obj,attrPtr);
51+
[status, attrPtr] = adi.libiio.channel.iio_channel_find_attr(obj,chanPtr,attr);
7152
cstatus(obj,status,['Attribute: ' attr ' not found']);
72-
% status = iio_attr_write_longlong(attrPtr, value);
73-
status = calllib(obj.libName, 'iio_attr_write_longlong', attrPtr, value);
53+
status = adi.libiio.attribute.iio_attr_write_longlong(attrPtr, value);
7454
end
7555

7656
function nBytes = iio_channel_attr_write(obj, chanPtr, attr, src)
77-
% [status, attrPtr] = iio_channel_find_attr(obj,chanPtr,attr);
78-
attrPtr = calllib(obj.libName, 'iio_channel_find_attr', chanPtr, attr);
79-
status = cPtrCheck(obj,attrPtr);
57+
[status, attrPtr] = adi.libiio.channel.iio_channel_find_attr(obj,chanPtr,attr);
8058
cstatus(obj,status,['Attribute: ' attr ' not found']);
81-
% nBytes = iio_attr_write_string(attrPtr, src);
82-
nBytes = calllib(obj.libName, 'iio_attr_write_string', attrPtr, src);
59+
nBytes = adi.libiio.attribute.iio_attr_write_string(attrPtr, src);
8360
end
8461
end
8562
end

+adi/+libiio/device.m

Lines changed: 58 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
classdef (Abstract) device < handle% & matlabshared.libiio.device
1+
classdef (Abstract) device < adi.libiio.attribute% & matlabshared.libiio.device
22
% matlabshared.libiio.contextV1p0 context class for base matlabshared.libiio.support
33
%
44
% This abstract system object defines the APIs necessary to use libIIO
@@ -25,9 +25,37 @@
2525
%% Internal Helper Functions
2626
methods (Hidden, Access = {?handle}, Static)
2727
%% Device Methods
28-
function ctxPtr = iio_device_get_context(obj, devPtr)
28+
function ctxPtr = iio_device_get_context(obj, devPtr)
2929
ctxPtr = calllib(obj.libName, 'iio_device_get_context', devPtr);
30-
end
30+
end
31+
32+
function id = iio_device_get_id(obj, devPtr)
33+
id = calllib(obj.libName, 'iio_device_get_id', devPtr);
34+
end
35+
36+
function name = iio_device_get_name(obj, devPtr)
37+
name = calllib(obj.libName, 'iio_device_get_name', devPtr);
38+
end
39+
40+
function label = iio_device_get_label(obj, devPtr)
41+
label = calllib(obj.libName, 'iio_device_get_label', devPtr);
42+
end
43+
44+
function count = iio_device_get_channels_count(obj, devPtr)
45+
count = calllib(obj.libName, 'iio_device_get_channels_count', devPtr);
46+
end
47+
48+
function count = iio_device_get_attrs_count(obj, devPtr)
49+
count = calllib(obj.libName, 'iio_device_get_attrs_count', devPtr);
50+
end
51+
52+
function chanPtr = iio_device_get_channel(obj, devPtr, index)
53+
chanPtr = calllib(obj.libName, 'iio_device_get_channel', devPtr, index);
54+
end
55+
56+
function attrPtr = iio_device_get_attr(obj, devPtr, index)
57+
attrPtr = calllib(obj.libName, 'iio_device_get_attr', devPtr, index);
58+
end
3159

3260
function chanPtr = iio_device_find_channel(obj, dev, id, output)
3361
% iio_device_find_channel(const struct iio_device *dev, const char *name, bool output)
@@ -53,13 +81,35 @@
5381
status = cPtrCheck(obj,attrPtr);
5482
end
5583

84+
function iio_device_set_data(obj, devPtr, voidPtrToData)
85+
calllib(obj.libName, 'iio_device_set_data', devPtr, voidPtrToData);
86+
end
87+
88+
function voidPtr = iio_device_get_data(obj, devPtr)
89+
voidPtr = calllib(obj.libName, 'iio_device_get_data', devPtr);
90+
end
91+
92+
function status = iio_device_set_trigger(obj, devPtr, triggerPtr)
93+
triggerPtr = calllib(obj.libName, 'iio_device_set_trigger', devPtr, triggerPtr);
94+
status = cPtrCheck(obj,triggerPtr);
95+
end
96+
97+
function triggerPtr = iio_device_get_trigger(obj, devPtr)
98+
triggerPtr = calllib(obj.libName, 'iio_device_get_trigger', devPtr);
99+
end
100+
101+
function isTrigger = iio_device_is_trigger(obj, devPtr)
102+
isTrigger = calllib(obj.libName, 'iio_device_is_trigger', devPtr);
103+
end
104+
end
105+
106+
% Wrappers not present in iio.h of v1.0
107+
% Implemented for backwards compatibility
108+
methods (Hidden, Access = {?handle}, Static)
56109
function nBytes = iio_device_attr_write(obj,devPtr,attr,src)
57-
% [status, attrPtr] = iio_device_find_attr(obj, devPtr, attr);
58-
attrPtr = calllib(obj.libName, 'iio_device_find_attr', devPtr, attr);
59-
status = cPtrCheck(obj,attrPtr);
110+
[status, attrPtr] = adi.libiio.device.iio_device_find_attr(obj, devPtr, attr);
60111
cstatus(obj,status,['Attribute: ' attr ' not found']);
61-
% nBytes = iio_attr_write_string(attrPtr, src);
62-
nBytes = calllib(obj.libName, 'iio_attr_write_string', attrPtr, src);
112+
nBytes = adi.libiio.attribute.iio_attr_write_string(obj, attrPtr, src);
63113
end
64114
end
65115
end

0 commit comments

Comments
 (0)