From 4245316a21a53ac445642eba7f62e569c45eb260 Mon Sep 17 00:00:00 2001 From: SGudla Date: Mon, 16 Dec 2024 17:39:49 +0530 Subject: [PATCH] Address review comments Update tests Remove offset attribute property from driver Update scale as read-only attribute Rename V to mV Use argparse and update example script Rename all occurances of ad7091r to ad7091rx Signed-off-by: SGudla --- adi/__init__.py | 2 +- adi/{ad7091r.py => ad7091rx.py} | 18 +---- .../{adi.ad7091r.rst => adi.ad7091rx.rst} | 4 +- doc/source/devices/index.rst | 2 +- ...ad7091r_example.py => ad7091rx_example.py} | 73 +++++++++++++------ test/emu/devices/ad7091r.xml | 1 - test/emu/devices/ad7091rx.xml | 1 + test/emu/hardware_map.yml | 8 +- test/test_ad7091r.py | 12 --- test/test_ad7091rx.py | 26 +++++++ 10 files changed, 88 insertions(+), 59 deletions(-) rename adi/{ad7091r.py => ad7091rx.py} (91%) rename doc/source/devices/{adi.ad7091r.rst => adi.ad7091rx.rst} (65%) rename examples/{ad7091r_example.py => ad7091rx_example.py} (55%) delete mode 100644 test/emu/devices/ad7091r.xml create mode 100644 test/emu/devices/ad7091rx.xml delete mode 100644 test/test_ad7091r.py create mode 100644 test/test_ad7091rx.py diff --git a/adi/__init__.py b/adi/__init__.py index 96580a6f7..d577ef229 100644 --- a/adi/__init__.py +++ b/adi/__init__.py @@ -23,7 +23,7 @@ from adi.ad5754r import ad5754r from adi.ad5940 import ad5940 from adi.ad6676 import ad6676 -from adi.ad7091r import ad7091rx +from adi.ad7091rx import ad7091rx from adi.ad7124 import ad7124 from adi.ad7134 import ad7134 from adi.ad7291 import ad7291 diff --git a/adi/ad7091r.py b/adi/ad7091rx.py similarity index 91% rename from adi/ad7091r.py rename to adi/ad7091rx.py index c309cb0c0..474177362 100644 --- a/adi/ad7091r.py +++ b/adi/ad7091rx.py @@ -79,6 +79,7 @@ def __init__(self, uri="", device_name=""): name = ch._id self._rx_channel_names.append(name) self.channel.append(self._channel(self._ctrl, name)) + setattr(self, name, self._channel(self._ctrl, name)) rx.__init__(self) @@ -94,24 +95,11 @@ def raw(self): """AD7091r channel raw value""" return self._get_iio_attr(self.name, "raw", False) - @property - def offset(self): - """AD7091r channel offset value""" - return self._get_iio_attr_str(self.name, "offset", False) - - @offset.setter - def offset(self, value): - self._set_iio_attr(self.name, "offset", False, str(Decimal(value).real)) - @property def scale(self): """AD7091r channel scale""" return float(self._get_iio_attr_str(self.name, "scale", False)) - @scale.setter - def scale(self, value): - self._set_iio_attr(self.name, "scale", False, str(Decimal(value).real)) - @property def thresh_falling_value(self): """Get channel threshold falling value""" @@ -148,8 +136,8 @@ def thresh_either_hysteresis(self, value): self.name, "thresh_either_hysteresis", False, str(Decimal(value)) ) - def to_volts(self, index, val): - """Converts raw value to SI""" + def to_mvolts(self, index, val): + """Converts raw value to mV""" _scale = self.channel[index].scale ret = None diff --git a/doc/source/devices/adi.ad7091r.rst b/doc/source/devices/adi.ad7091rx.rst similarity index 65% rename from doc/source/devices/adi.ad7091r.rst rename to doc/source/devices/adi.ad7091rx.rst index 086b32fb6..80a8e5b5d 100644 --- a/doc/source/devices/adi.ad7091r.rst +++ b/doc/source/devices/adi.ad7091rx.rst @@ -1,7 +1,7 @@ -ad7091r +ad7091rx ================= -.. automodule:: adi.ad7091r +.. automodule:: adi.ad7091rx :members: :undoc-members: :show-inheritance: diff --git a/doc/source/devices/index.rst b/doc/source/devices/index.rst index e7eccf9af..b7b802614 100644 --- a/doc/source/devices/index.rst +++ b/doc/source/devices/index.rst @@ -23,7 +23,7 @@ Supported Devices adi.ad5754r adi.ad5940 adi.ad6676 - adi.ad7091r + adi.ad7091rx adi.ad7124 adi.ad7134 adi.ad717x diff --git a/examples/ad7091r_example.py b/examples/ad7091rx_example.py similarity index 55% rename from examples/ad7091r_example.py rename to examples/ad7091rx_example.py index c05ab28c9..97e9b1740 100644 --- a/examples/ad7091r_example.py +++ b/examples/ad7091rx_example.py @@ -31,34 +31,61 @@ # STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF # THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +import argparse + import numpy as np -from adi.ad7091r import ad7091rx +from adi.ad7091rx import ad7091rx + + +def main(): + # Set up argument parser + parser = argparse.ArgumentParser(description="AD7091R Example Script") + parser.add_argument( + "--uri", + type=str, + help="The URI for the AD7091R device", + default="serial:COM7,230400,8n1", + ) + parser.add_argument( + "--device_name", + type=str, + choices=["ad7091r-2", "ad7091r-4", "ad7091r-8"], + help="The device name (Supported devices are ad7091r-2, ad7091r-4, ad7091r-8)", + default="ad7091r-8", + ) + + # Parse arguments + args = parser.parse_args() + + # Set up AD7091R device + ad7091r_dev = ad7091rx(uri=args.uri, device_name=args.device_name) + + # Get ADC channel 0 raw value and print it + raw = ad7091r_dev.channel[0].raw + print(f"Raw value read from channel0 is {raw}") -# Set up AD7091r8 -ad7091r8_dev = ad7091rx(uri="serial:COM46,230400,8n1", device_name="ad7091r-8") + # Set threshold falling and rising values for channel 0 + ad7091r_dev.channel[0].thresh_rising_value = 0x10F + print( + f"Channel 0 threshold rising value set to {ad7091r_dev.channel[0].thresh_rising_value}" + ) -# Get ADC channel 0 raw value and print it -raw = ad7091r8_dev.channel[0].raw -print(f"Raw value read from channel0 is {raw}") + ad7091r_dev.channel[0].thresh_falling_value = 0x0F + print( + f"Channel 0 threshold falling value set to {ad7091r_dev.channel[0].thresh_falling_value}" + ) -# Set threshold falling and rising values for channel 0 -ad7091r8_dev.channel[0].thresh_rising_value = 0x10F -print( - f"Channel 0 threshold rising value set to {ad7091r8_dev.channel[0].thresh_rising_value}" -) + # Capture a buffer of 100 samples from channel 0 and display them + chn = 0 + ad7091r_dev._rx_data_type = np.int32 + ad7091r_dev.rx_output_type = "raw" + ad7091r_dev.rx_enabled_channels = [chn] + ad7091r_dev.rx_buffer_size = 100 -ad7091r8_dev.channel[0].thresh_falling_value = 0x0F -print( - f"Channel 0 threshold falling value set to {ad7091r8_dev.channel[0].thresh_falling_value}" -) + data = ad7091r_dev.rx() -# Capture a buffer of 100 samples from channel 0 and display them -chn = 0 -ad7091r8_dev._rx_data_type = np.int32 -ad7091r8_dev.rx_output_type = "raw" -ad7091r8_dev.rx_enabled_channels = [chn] -ad7091r8_dev.rx_buffer_size = 100 + print(data) -data = ad7091r8_dev.rx() -print(data) +if __name__ == "__main__": + main() diff --git a/test/emu/devices/ad7091r.xml b/test/emu/devices/ad7091r.xml deleted file mode 100644 index 3e5957e42..000000000 --- a/test/emu/devices/ad7091r.xml +++ /dev/null @@ -1 +0,0 @@ -]> \ No newline at end of file diff --git a/test/emu/devices/ad7091rx.xml b/test/emu/devices/ad7091rx.xml new file mode 100644 index 000000000..2e1b4ce17 --- /dev/null +++ b/test/emu/devices/ad7091rx.xml @@ -0,0 +1 @@ +]> \ No newline at end of file diff --git a/test/emu/hardware_map.yml b/test/emu/hardware_map.yml index 7b571d986..c0449c131 100644 --- a/test/emu/hardware_map.yml +++ b/test/emu/hardware_map.yml @@ -454,12 +454,12 @@ ad6676: - data_devices: - iio:device1 -ad7091r: - - ad7091r +ad7091r8: + - ad7091r8 - pyadi_iio_class_support: - - ad7091r + - ad7091rx - emulate: - - filename: ad7091r.xml + - filename: ad7091rx.xml - data_devices: - iio:device0 diff --git a/test/test_ad7091r.py b/test/test_ad7091r.py deleted file mode 100644 index 88ee80861..000000000 --- a/test/test_ad7091r.py +++ /dev/null @@ -1,12 +0,0 @@ -import pytest - -hardware = "ad7091r-8" -classname = "adi.ad7091rx" - - -######################################### -@pytest.mark.iio_hardware(hardware) -@pytest.mark.parametrize("classname", [(classname)]) -@pytest.mark.parametrize("channel", [0]) -def test_ad7091rx_rx_data(test_dma_rx, iio_uri, classname, channel): - test_dma_rx(iio_uri, classname, channel) diff --git a/test/test_ad7091rx.py b/test/test_ad7091rx.py new file mode 100644 index 000000000..71871bc7f --- /dev/null +++ b/test/test_ad7091rx.py @@ -0,0 +1,26 @@ +import pytest + +hardware = "ad7091r8" +classname = "adi.ad7091rx" + +######################################### +@pytest.mark.iio_hardware(hardware) +@pytest.mark.parametrize("classname", [(classname)]) +@pytest.mark.parametrize("attr", ["raw"]) +@pytest.mark.parametrize( + "channel", + [ + "voltage0", + "voltage1", + "voltage2", + "voltage3", + "voltage4", + "voltage5", + "voltage6", + "voltage7", + ], +) +def test_ad7091rx_channel_attr_raw( + test_attribute_single_value_channel_readonly, iio_uri, classname, channel, attr +): + test_attribute_single_value_channel_readonly(iio_uri, classname, channel, attr)