-
Notifications
You must be signed in to change notification settings - Fork 106
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add support for adis16550 and adis16550w
Signed-off-by: rbudai <[email protected]>
- Loading branch information
Showing
8 changed files
with
276 additions
and
31 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
adis16550 | ||
==================== | ||
|
||
.. autoclass:: adi.adis16550 | ||
:members: | ||
:undoc-members: | ||
:show-inheritance: | ||
:inherited-members: |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -143,6 +143,8 @@ | |
- ADIS16507 | ||
- ADIS16545 | ||
- ADIS16547 | ||
- ADIS16550 | ||
- ADIS16550W | ||
- ADL5240 | ||
- ADL5960 | ||
- ADMV8818 | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,149 @@ | ||
<?xml version="1.0" encoding="UTF-8"?> | ||
<!DOCTYPE context [ | ||
<!ELEMENT context (device|context-attribute)*> | ||
<!ELEMENT context-attribute EMPTY> | ||
<!ELEMENT device (channel|attribute|debug-attribute|buffer-attribute)*> | ||
<!ELEMENT channel (scan-element?,attribute*)> | ||
<!ELEMENT attribute EMPTY> | ||
<!ELEMENT scan-element EMPTY> | ||
<!ELEMENT debug-attribute EMPTY> | ||
<!ELEMENT buffer-attribute EMPTY> | ||
<!ATTLIST context name CDATA #REQUIRED> | ||
<!ATTLIST context description CDATA #IMPLIED> | ||
<!ATTLIST context-attribute name CDATA #REQUIRED> | ||
<!ATTLIST context-attribute value CDATA #REQUIRED> | ||
<!ATTLIST device id CDATA #REQUIRED> | ||
<!ATTLIST device name CDATA #IMPLIED> | ||
<!ATTLIST channel id CDATA #REQUIRED> | ||
<!ATTLIST channel type (input|output) #REQUIRED> | ||
<!ATTLIST channel name CDATA #IMPLIED> | ||
<!ATTLIST scan-element index CDATA #REQUIRED> | ||
<!ATTLIST scan-element format CDATA #REQUIRED> | ||
<!ATTLIST scan-element scale CDATA #IMPLIED> | ||
<!ATTLIST attribute name CDATA #REQUIRED> | ||
<!ATTLIST attribute filename CDATA #IMPLIED> | ||
<!ATTLIST attribute value CDATA #IMPLIED> | ||
<!ATTLIST debug-attribute name CDATA #REQUIRED> | ||
<!ATTLIST debug-attribute value CDATA #IMPLIED> | ||
<!ATTLIST buffer-attribute name CDATA #REQUIRED> | ||
<!ATTLIST buffer-attribute value CDATA #IMPLIED> | ||
]> | ||
<context name="network" description="10.42.0.83 Linux analog 6.1.54-v7l+ #8 SMP Mon Sep 30 11:56:09 BST 2024 armv7l"> | ||
<context-attribute name="hw_carrier" value="Raspberry Pi 4 Model B Rev 1.2" /> | ||
<context-attribute name="dtoverlay" value="vc4-kms-v3d,adis16550" /> | ||
<context-attribute name="local,kernel" value="6.1.54-v7l+" /> | ||
<context-attribute name="uri" value="ip:10.42.0.83" /> | ||
<context-attribute name="ip,ip-addr" value="10.42.0.83" /> | ||
<device id="hwmon0" name="cpu_thermal"> | ||
<channel id="temp1" type="input"> | ||
<attribute name="crit" filename="temp1_crit" value="110000" /> | ||
<attribute name="input" filename="temp1_input" value="65731" /> | ||
</channel> | ||
</device> | ||
<device id="hwmon1" name="rpi_volt"> | ||
<channel id="in0" type="input"> | ||
<attribute name="lcrit_alarm" filename="in0_lcrit_alarm" value="0" /> | ||
</channel> | ||
</device> | ||
<device id="iio:device0" name="adis16550w"> | ||
<channel id="anglvel_x" type="input"> | ||
<scan-element index="0" format="be:S32/32>>0" scale="0.000000" /> | ||
<attribute name="calibbias" filename="in_anglvel_x_calibbias" value="100" /> | ||
<attribute name="calibscale" filename="in_anglvel_x_calibscale" value="0" /> | ||
<attribute name="filter_low_pass_3db_frequency" filename="in_anglvel_filter_low_pass_3db_frequency" value="0" /> | ||
<attribute name="raw" filename="in_anglvel_x_raw" value="294318" /> | ||
<attribute name="scale" filename="in_anglvel_scale" value="0.000000003" /> | ||
</channel> | ||
<channel id="anglvel_y" type="input"> | ||
<scan-element index="1" format="be:S32/32>>0" scale="0.000000" /> | ||
<attribute name="calibbias" filename="in_anglvel_y_calibbias" value="0" /> | ||
<attribute name="calibscale" filename="in_anglvel_y_calibscale" value="30" /> | ||
<attribute name="filter_low_pass_3db_frequency" filename="in_anglvel_filter_low_pass_3db_frequency" value="0" /> | ||
<attribute name="raw" filename="in_anglvel_y_raw" value="-656865" /> | ||
<attribute name="scale" filename="in_anglvel_scale" value="0.000000003" /> | ||
</channel> | ||
<channel id="anglvel_z" type="input"> | ||
<scan-element index="2" format="be:S32/32>>0" scale="0.000000" /> | ||
<attribute name="calibbias" filename="in_anglvel_z_calibbias" value="0" /> | ||
<attribute name="calibscale" filename="in_anglvel_z_calibscale" value="0" /> | ||
<attribute name="filter_low_pass_3db_frequency" filename="in_anglvel_filter_low_pass_3db_frequency" value="0" /> | ||
<attribute name="raw" filename="in_anglvel_z_raw" value="431669" /> | ||
<attribute name="scale" filename="in_anglvel_scale" value="0.000000003" /> | ||
</channel> | ||
<channel id="accel_x" type="input"> | ||
<scan-element index="3" format="be:S32/32>>0" scale="0.000000" /> | ||
<attribute name="calibbias" filename="in_accel_x_calibbias" value="0" /> | ||
<attribute name="calibscale" filename="in_accel_x_calibscale" value="0" /> | ||
<attribute name="filter_low_pass_3db_frequency" filename="in_accel_filter_low_pass_3db_frequency" value="0" /> | ||
<attribute name="raw" filename="in_accel_x_raw" value="-210881" /> | ||
<attribute name="scale" filename="in_accel_scale" value="0.000000095" /> | ||
</channel> | ||
<channel id="accel_y" type="input"> | ||
<scan-element index="4" format="be:S32/32>>0" scale="0.000000" /> | ||
<attribute name="calibbias" filename="in_accel_y_calibbias" value="0" /> | ||
<attribute name="calibscale" filename="in_accel_y_calibscale" value="0" /> | ||
<attribute name="filter_low_pass_3db_frequency" filename="in_accel_filter_low_pass_3db_frequency" value="0" /> | ||
<attribute name="raw" filename="in_accel_y_raw" value="1598455" /> | ||
<attribute name="scale" filename="in_accel_scale" value="0.000000095" /> | ||
</channel> | ||
<channel id="accel_z" type="input"> | ||
<scan-element index="5" format="be:S32/32>>0" scale="0.000000" /> | ||
<attribute name="calibbias" filename="in_accel_z_calibbias" value="0" /> | ||
<attribute name="calibscale" filename="in_accel_z_calibscale" value="0" /> | ||
<attribute name="filter_low_pass_3db_frequency" filename="in_accel_filter_low_pass_3db_frequency" value="0" /> | ||
<attribute name="raw" filename="in_accel_z_raw" value="103145573" /> | ||
<attribute name="scale" filename="in_accel_scale" value="0.000000095" /> | ||
</channel> | ||
<channel id="temp0" type="input"> | ||
<scan-element index="6" format="be:s16/32>>0" scale="4.000000" /> | ||
<attribute name="offset" filename="in_temp0_offset" value="6250" /> | ||
<attribute name="raw" filename="in_temp0_raw" value="4369" /> | ||
<attribute name="scale" filename="in_temp0_scale" value="4" /> | ||
</channel> | ||
<channel id="deltaangl_x" type="input"> | ||
<scan-element index="7" format="be:S32/32>>0" scale="0.000000" /> | ||
<attribute name="raw" filename="in_deltaangl_x_raw" value="-86" /> | ||
<attribute name="scale" filename="in_deltaangl_scale" value="0.000000006" /> | ||
</channel> | ||
<channel id="deltaangl_y" type="input"> | ||
<scan-element index="8" format="be:S32/32>>0" scale="0.000000" /> | ||
<attribute name="raw" filename="in_deltaangl_y_raw" value="-162" /> | ||
<attribute name="scale" filename="in_deltaangl_scale" value="0.000000006" /> | ||
</channel> | ||
<channel id="deltaangl_z" type="input"> | ||
<scan-element index="9" format="be:S32/32>>0" scale="0.000000" /> | ||
<attribute name="raw" filename="in_deltaangl_z_raw" value="169" /> | ||
<attribute name="scale" filename="in_deltaangl_scale" value="0.000000006" /> | ||
</channel> | ||
<channel id="deltavelocity_x" type="input"> | ||
<scan-element index="10" format="be:S32/32>>0" scale="0.000000" /> | ||
<attribute name="raw" filename="in_deltavelocity_x_raw" value="246" /> | ||
<attribute name="scale" filename="in_deltavelocity_scale" value="0.000000058" /> | ||
</channel> | ||
<channel id="deltavelocity_y" type="input"> | ||
<scan-element index="11" format="be:S32/32>>0" scale="0.000000" /> | ||
<attribute name="raw" filename="in_deltavelocity_y_raw" value="-75" /> | ||
<attribute name="scale" filename="in_deltavelocity_scale" value="0.000000058" /> | ||
</channel> | ||
<channel id="deltavelocity_z" type="input"> | ||
<scan-element index="12" format="be:S32/32>>0" scale="0.000000" /> | ||
<attribute name="raw" filename="in_deltavelocity_z_raw" value="84684" /> | ||
<attribute name="scale" filename="in_deltavelocity_scale" value="0.000000058" /> | ||
</channel> | ||
<channel id="timestamp" type="input"> | ||
<scan-element index="13" format="le:S64/64>>0" /> | ||
</channel> | ||
<attribute name="current_timestamp_clock" value="realtime " /> | ||
<attribute name="sampling_frequency" value="2000.000000" /> | ||
<attribute name="waiting_for_supplier" value="0" /> | ||
<buffer-attribute name="data_available" value="64" /> | ||
<buffer-attribute name="direction" value="in" /> | ||
<debug-attribute name="flash_count" value="13" /> | ||
<debug-attribute name="firmware_date" value="28-04-2021" /> | ||
<debug-attribute name="firmware_revision" value="1.5" /> | ||
<debug-attribute name="product_id" value="16550" /> | ||
<debug-attribute name="serial_number" value="0x000000b6" /> | ||
<debug-attribute name="direct_reg_access" value="0x0" /> | ||
</device> | ||
<device id="trigger0" name="adis16550w-dev0" /> | ||
</context> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,93 @@ | ||
import adi | ||
import pytest | ||
|
||
hardware = "adis16550" | ||
classname = "adi.adis16550" | ||
device_name = "adis16550" | ||
|
||
######################################## | ||
@pytest.mark.iio_hardware(hardware, True) | ||
@pytest.mark.parametrize("classname", [(classname)]) | ||
@pytest.mark.parametrize("channel", [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]) | ||
def test_adis16550_rx_data(test_dma_rx, iio_uri, classname, channel): | ||
test_dma_rx(iio_uri, classname, channel, buffer_size=16) | ||
|
||
|
||
######################################### | ||
@pytest.mark.iio_hardware(hardware, True) | ||
def test_adis16550_conv_data(iio_uri): | ||
adis16550 = adi.adis16550(uri=iio_uri) | ||
|
||
assert adis16550.accel_x_conv != 0.0 | ||
assert adis16550.accel_y_conv != 0.0 | ||
assert adis16550.accel_z_conv != 0.0 | ||
assert adis16550.anglvel_x_conv != 0.0 | ||
assert adis16550.anglvel_y_conv != 0.0 | ||
assert adis16550.anglvel_z_conv != 0.0 | ||
assert adis16550.temp_conv != 0.0 | ||
|
||
|
||
######################################### | ||
@pytest.mark.iio_hardware(hardware, True) | ||
@pytest.mark.parametrize("classname", [(classname)]) | ||
@pytest.mark.parametrize( | ||
"attr, start, stop, step, tol", | ||
[ | ||
("anglvel_x_calibbias", -2147483648, 2147483647, 1, 0), | ||
("anglvel_y_calibbias", -2147483648, 2147483647, 1, 0), | ||
("anglvel_z_calibbias", -2147483648, 2147483647, 1, 0), | ||
("accel_x_calibbias", -2147483648, 2147483647, 1, 0), | ||
("accel_y_calibbias", -2147483648, 2147483647, 1, 0), | ||
("accel_z_calibbias", -2147483648, 2147483647, 1, 0), | ||
("anglvel_x_calibscale", -32134, 32134, 1, 0), | ||
("anglvel_y_calibscale", -32134, 32134, 1, 0), | ||
("anglvel_z_calibscale", -32134, 32134, 1, 0), | ||
("accel_x_calibscale", -32134, 32134, 1, 0), | ||
("accel_y_calibscale", -32134, 32134, 1, 0), | ||
("accel_z_calibscale", -32134, 32134, 1, 0), | ||
], | ||
) | ||
def test_adis16550_attr( | ||
test_attribute_single_value, iio_uri, classname, attr, start, stop, step, tol | ||
): | ||
test_attribute_single_value(iio_uri, classname, attr, start, stop, step, tol) | ||
|
||
|
||
######################################### | ||
@pytest.mark.iio_hardware(hardware, True) | ||
@pytest.mark.parametrize("classname", [(classname)]) | ||
@pytest.mark.parametrize( | ||
"attr, values, tol, repeats", | ||
[ | ||
("sample_rate", [5, 10, 246, 1230, 2460], 0.5, 2), | ||
("anglvel_x_filter_low_pass_3db_frequency", [0, 55, 275, 310], 0.5, 2), | ||
("anglvel_y_filter_low_pass_3db_frequency", [0, 55, 275, 310], 0.5, 2), | ||
("anglvel_z_filter_low_pass_3db_frequency", [0, 55, 275, 310], 0.5, 2), | ||
("accel_x_filter_low_pass_3db_frequency", [0, 55, 275, 310], 0.5, 2), | ||
("accel_y_filter_low_pass_3db_frequency", [0, 55, 275, 310], 0.5, 2), | ||
("accel_z_filter_low_pass_3db_frequency", [0, 55, 275, 310], 0.5, 2), | ||
], | ||
) | ||
def test_adis16550_attr_multiple_val( | ||
test_attribute_multiple_values, iio_uri, classname, attr, values, tol, repeats, | ||
): | ||
test_attribute_multiple_values(iio_uri, classname, attr, values, tol, repeats) | ||
|
||
@pytest.mark.iio_hardware(hardware) | ||
@pytest.mark.parametrize( | ||
"classname", | ||
[ | ||
"adi.adis16550", | ||
"adi.adis16550w", | ||
], | ||
) | ||
def test_adis16XXX_create(iio_uri, classname): | ||
# This test is a little hack to just enumerate all the classes even though | ||
# we don't have the exact hardware | ||
emulation_hw = "adis16550" | ||
imu = eval(classname) | ||
imu.compatible_parts = [emulation_hw] | ||
imu.disable_trigger = True | ||
|
||
# Try to create the object | ||
imu = imu(uri=iio_uri) |