-
Notifications
You must be signed in to change notification settings - Fork 320
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
iio_channel_get_modifier and iio_channel_get_type seems to work incorrectly. #219
Comments
Which device are you using this with ? |
This is an IMU device. For confidentiality purpose, I cannot disclose the exact device. I think this issue should not be device specific. Maybe there is some general problem with those APIs for getting the channel type and modifier? Has anyone ever tested? |
What version of libiio are you using ? |
What backend do you use? Local? |
@pcercuei Yes. I am using local backend. Here are the sequence that I am doing: |
Maybe a filename parsing error. What are the IDs of the channels, as reported by iio_info? |
I am using iio_channel_get_id() to return the IDs and they are the following values for the 6 channels: seems correct? |
The issue is in iio_channel_init_finalize(). There is string parsing errors there for both channel type and channel modifier. For modifier, I don't know why there is an assumption that the modifier needs to be followed by an underscore. For channel type. it's suppose to break when it finds the right type rather than keep looping. |
For the modifier, you're right. The check for the underscore is bogus. For the type, it should break, but that's not the cause of the problem. The condition for the "continue" right above where chn->type is set looks really wrong; the second && should be a || instead (with proper parenthesis set around it). |
@mikexing2018 you have a test case - do you mind sending a Pull Request? |
Request for test: |
Sure |
Does it fix it? |
@mikexing2018 |
I don't have access to the testing environment this week. Will need to delay until the week of Dec 26th. |
ok :) |
Dec 26th? I don't think we can wait that long. |
Yep Just need to take a look into some build issues first. |
Ok - i did some test using a ADIS16460.
Using this simple patch to iio_info - which adds the type and modifier for each channel:
This shows clearly the issue:
The same with the patch applied, validates the fix:
-Michael |
channel: Fix #219 get_modifier and get_type seems to work incorrectly
Changelog: 20c9079 CI/travis/inside_bionic_docker.sh: re-use the make_linux logic cd1be7d build,travis: parametrize library name 2b4503d README.md : Update with links to doc cf87e0a travis-ci: install graphviz 2f3632f doxygen: check if building on a case senstive file system. a18ff6e doxygen: If dot exists, use it. cb28721 appveyor: install graphviz and fix doxygen version 550f4b8 README: Update with latest build changes 540c96b deployment : export the LDIST var which is needed in other scripts de8356b fix snprintf warnings from gcc 8 24c7f00 .travis.yml: Add new Xcode versions to the Travis CI builds. d65cabb CI/travis/before_install_darwin: Handle brew failures when installing packages. 29c582e .travis.yml: Drop the Travis CI builds for OSX Image xcode 6.4. 6799876 .travis.yml: Drop the Travis CI builds for Ubuntu 12.04 LTS (Precise Pangolin). f18ed59 .travis.yml: Add support for Ubuntu 18.04 (Bionic) builds. 983657a cmake/LinuxPackaging.cmake: Add libserialport to the list of dependencies that are being handled when creating Linux packages. 25c20d6 channel: Fix #219 get_modifier and get_type seems to work incorrectly ed6709e sorting: ensure sorting happens after global attributes are added f05434e travis-ci: don't hard code distributions anymore 9b75895 Revert "sort: Move channel attribute sorting to context creation" fix #215 cf39834 cmake: set the CPACK_DEBIAN_PACKAGE_ARCHITECTURE for old versions of Cmake 76d4ff7 buffer: Fix bug in mask bit tests (continued) b7407af IIOD: Fix bug in mask bit tests (continued) 37ecd2e Update README.md with newest centos packages 5dd1ff9 add note about triggered buffers in dox source 98d85f6 local: pass errors up the stack 879abfe usb: Increase ctrl pipe timeout da13ffc usb: add libusb version to context attributes 876db45 usb: be more verbose when unable to claim an interface 686ced9 travis : Add the LDIST for centos db47744 Ensure iio_info can find a locally installed libiio.so c5973cf fix whitespace damage from previous commits 67a994c sort: when sorting iio_channels, if the index is the same, use ID b9008a7 sort: Move channel attribute sorting to context creation 8405704 sort: change function names to be more descriptive/accurate afd6d69 Update FIR enable function in ML bindings to not force sample rate ahead of filter write. 53bfb03 local: Sort devices, channels and attributes when adding them. 256a80a appveyor.yml: Downgrade curl from 7.61.1-3 to 7.61.1-2 15ddcd6 Fix FIR load function in ML bindings to actually enable the FIR once loaded. 4c9a050 CI/travis/inside_centos_docker.sh: hack/patch CPackRPM.cmake for CentOS 7 f60f957 cmake/LinuxPackaging.cmake: use non-dev packages to .deb dep list ed6d860 CI/travis/make_linux: install deb package as final test cfe093a build,CI/travis: setup CentOS testing 4a39cb6 CI/travis: enable errexit & xtrace behavior in scripts 77a1154 CI/travis/before_deploy: move `grep` expression in `find` a05d607 .gitignore: add vim swap files 0b23cbe spelling fonction->function ee936e8 Fix bug in mask bit tests c80412c cmake: Suppress errors when looking up the git repository path 2a76c2e .travis.yml: add host-key algo ssh-dss for xenial deploy b853fdb appveyor.yml: change versioning to '{branch}.{build}' format 0950037 CI/travis/deploy: extend cleanup to all debian packages 2b1c4b8 README.md: add Xenial artifact links ea80423 .travis.yml: add Xenial distro to job run Alexandra Trifan (1): appveyor.yml: Downgrade curl from 7.61.1-3 to 7.61.1-2 . Alexandra.Trifan (6): cmake/LinuxPackaging.cmake: Add libserialport to the list of dependencies that are being handled when creating Linux packages. .travis.yml: Add support for Ubuntu 18.04 (Bionic) builds. .travis.yml: Drop the Travis CI builds for Ubuntu 12.04 LTS (Precise Pangolin). .travis.yml: Drop the Travis CI builds for OSX Image xcode 6.4. CI/travis/before_install_darwin: Handle brew failures when installing packages. .travis.yml: Add new Xcode versions to the Travis CI builds. Alexandru Ardelean (14): .travis.yml: add Xenial distro to job run README.md: add Xenial artifact links CI/travis/deploy: extend cleanup to all debian packages appveyor.yml: change versioning to '{branch}.{build}' format .travis.yml: add host-key algo ssh-dss for xenial deploy .gitignore: add vim swap files CI/travis/before_deploy: move `grep` expression in `find` CI/travis: enable errexit & xtrace behavior in scripts build,CI/travis: setup CentOS testing CI/travis/make_linux: install deb package as final test cmake/LinuxPackaging.cmake: use non-dev packages to .deb dep list CI/travis/inside_centos_docker.sh: hack/patch CPackRPM.cmake for CentOS 7 build,travis: parametrize library name CI/travis/inside_bionic_docker.sh: re-use the make_linux logic David Frey (2): Fix bug in mask bit tests spelling fonction->function Lars-Peter Clausen (2): cmake: Suppress errors when looking up the git repository path usb: Increase ctrl pipe timeout Michael Hennerich (15): Merge pull request #175 from analogdevicesinc/sort Merge pull request #203 from analogdevicesinc/sort1 Merge pull request #206 from analogdevicesinc/rgetz-patch-1 Merge pull request #201 from analogdevicesinc/fix-ml-bindings Merge pull request #207 from analogdevicesinc/rgetz-patch-2 IIOD: Fix bug in mask bit tests (continued) buffer: Fix bug in mask bit tests (continued) Merge pull request #198 from mangOH/mask_fix_bug Merge pull request #211 from analogdevicesinc/iiod-mask-fix-bug Merge pull request #212 from analogdevicesinc/rgetz-patch-2 Merge pull request #213 from analogdevicesinc/rgetz-patch-3 Merge pull request #214 from analogdevicesinc/rgetz-patch-4 Revert "sort: Move channel attribute sorting to context creation" fix #215 channel: Fix #219 get_modifier and get_type seems to work incorrectly Merge pull request #224 from analogdevicesinc/rft-issue-219 Robin Getz (23): local: Sort devices, channels and attributes when adding them. sort: change function names to be more descriptive/accurate sort: Move channel attribute sorting to context creation sort: when sorting iio_channels, if the index is the same, use ID fix whitespace damage from previous commits Ensure iio_info can find a locally installed libiio.so travis : Add the LDIST for centos usb: be more verbose when unable to claim an interface usb: add libusb version to context attributes local: pass errors up the stack add note about triggered buffers in dox source Update README.md with newest centos packages cmake: set the CPACK_DEBIAN_PACKAGE_ARCHITECTURE for old versions of Cmake travis-ci: don't hard code distributions anymore sorting: ensure sorting happens after global attributes are added fix snprintf warnings from gcc 8 deployment : export the LDIST var which is needed in other scripts README: Update with latest build changes appveyor: install graphviz and fix doxygen version doxygen: If dot exists, use it. doxygen: check if building on a case senstive file system. travis-ci: install graphviz README.md : Update with links to doc Travis Collins (2): Fix FIR load function in ML bindings to actually enable the FIR once loaded. Update FIR enable function in ML bindings to not force sample rate ahead of filter write. Signed-off-by: Michael Hennerich <[email protected]>
Untested attempt to fix issue #219: iio_channel_get_modifier and iio_channel_get_type seems to work incorrectly. Signed-off-by: Michael Hennerich <[email protected]>
Changelog: 20c9079 CI/travis/inside_bionic_docker.sh: re-use the make_linux logic cd1be7d build,travis: parametrize library name 2b4503d README.md : Update with links to doc cf87e0a travis-ci: install graphviz 2f3632f doxygen: check if building on a case senstive file system. a18ff6e doxygen: If dot exists, use it. cb28721 appveyor: install graphviz and fix doxygen version 550f4b8 README: Update with latest build changes 540c96b deployment : export the LDIST var which is needed in other scripts de8356b fix snprintf warnings from gcc 8 24c7f00 .travis.yml: Add new Xcode versions to the Travis CI builds. d65cabb CI/travis/before_install_darwin: Handle brew failures when installing packages. 29c582e .travis.yml: Drop the Travis CI builds for OSX Image xcode 6.4. 6799876 .travis.yml: Drop the Travis CI builds for Ubuntu 12.04 LTS (Precise Pangolin). f18ed59 .travis.yml: Add support for Ubuntu 18.04 (Bionic) builds. 983657a cmake/LinuxPackaging.cmake: Add libserialport to the list of dependencies that are being handled when creating Linux packages. 25c20d6 channel: Fix #219 get_modifier and get_type seems to work incorrectly ed6709e sorting: ensure sorting happens after global attributes are added f05434e travis-ci: don't hard code distributions anymore 9b75895 Revert "sort: Move channel attribute sorting to context creation" fix #215 cf39834 cmake: set the CPACK_DEBIAN_PACKAGE_ARCHITECTURE for old versions of Cmake 76d4ff7 buffer: Fix bug in mask bit tests (continued) b7407af IIOD: Fix bug in mask bit tests (continued) 37ecd2e Update README.md with newest centos packages 5dd1ff9 add note about triggered buffers in dox source 98d85f6 local: pass errors up the stack 879abfe usb: Increase ctrl pipe timeout da13ffc usb: add libusb version to context attributes 876db45 usb: be more verbose when unable to claim an interface 686ced9 travis : Add the LDIST for centos db47744 Ensure iio_info can find a locally installed libiio.so c5973cf fix whitespace damage from previous commits 67a994c sort: when sorting iio_channels, if the index is the same, use ID b9008a7 sort: Move channel attribute sorting to context creation 8405704 sort: change function names to be more descriptive/accurate afd6d69 Update FIR enable function in ML bindings to not force sample rate ahead of filter write. 53bfb03 local: Sort devices, channels and attributes when adding them. 256a80a appveyor.yml: Downgrade curl from 7.61.1-3 to 7.61.1-2 15ddcd6 Fix FIR load function in ML bindings to actually enable the FIR once loaded. 4c9a050 CI/travis/inside_centos_docker.sh: hack/patch CPackRPM.cmake for CentOS 7 f60f957 cmake/LinuxPackaging.cmake: use non-dev packages to .deb dep list ed6d860 CI/travis/make_linux: install deb package as final test cfe093a build,CI/travis: setup CentOS testing 4a39cb6 CI/travis: enable errexit & xtrace behavior in scripts 77a1154 CI/travis/before_deploy: move `grep` expression in `find` a05d607 .gitignore: add vim swap files 0b23cbe spelling fonction->function ee936e8 Fix bug in mask bit tests c80412c cmake: Suppress errors when looking up the git repository path 2a76c2e .travis.yml: add host-key algo ssh-dss for xenial deploy b853fdb appveyor.yml: change versioning to '{branch}.{build}' format 0950037 CI/travis/deploy: extend cleanup to all debian packages 2b1c4b8 README.md: add Xenial artifact links ea80423 .travis.yml: add Xenial distro to job run Alexandra Trifan (1): appveyor.yml: Downgrade curl from 7.61.1-3 to 7.61.1-2 . Alexandra.Trifan (6): cmake/LinuxPackaging.cmake: Add libserialport to the list of dependencies that are being handled when creating Linux packages. .travis.yml: Add support for Ubuntu 18.04 (Bionic) builds. .travis.yml: Drop the Travis CI builds for Ubuntu 12.04 LTS (Precise Pangolin). .travis.yml: Drop the Travis CI builds for OSX Image xcode 6.4. CI/travis/before_install_darwin: Handle brew failures when installing packages. .travis.yml: Add new Xcode versions to the Travis CI builds. Alexandru Ardelean (14): .travis.yml: add Xenial distro to job run README.md: add Xenial artifact links CI/travis/deploy: extend cleanup to all debian packages appveyor.yml: change versioning to '{branch}.{build}' format .travis.yml: add host-key algo ssh-dss for xenial deploy .gitignore: add vim swap files CI/travis/before_deploy: move `grep` expression in `find` CI/travis: enable errexit & xtrace behavior in scripts build,CI/travis: setup CentOS testing CI/travis/make_linux: install deb package as final test cmake/LinuxPackaging.cmake: use non-dev packages to .deb dep list CI/travis/inside_centos_docker.sh: hack/patch CPackRPM.cmake for CentOS 7 build,travis: parametrize library name CI/travis/inside_bionic_docker.sh: re-use the make_linux logic David Frey (2): Fix bug in mask bit tests spelling fonction->function Lars-Peter Clausen (2): cmake: Suppress errors when looking up the git repository path usb: Increase ctrl pipe timeout Michael Hennerich (15): Merge pull request #175 from analogdevicesinc/sort Merge pull request #203 from analogdevicesinc/sort1 Merge pull request #206 from analogdevicesinc/rgetz-patch-1 Merge pull request #201 from analogdevicesinc/fix-ml-bindings Merge pull request #207 from analogdevicesinc/rgetz-patch-2 IIOD: Fix bug in mask bit tests (continued) buffer: Fix bug in mask bit tests (continued) Merge pull request #198 from mangOH/mask_fix_bug Merge pull request #211 from analogdevicesinc/iiod-mask-fix-bug Merge pull request #212 from analogdevicesinc/rgetz-patch-2 Merge pull request #213 from analogdevicesinc/rgetz-patch-3 Merge pull request #214 from analogdevicesinc/rgetz-patch-4 Revert "sort: Move channel attribute sorting to context creation" fix #215 channel: Fix #219 get_modifier and get_type seems to work incorrectly Merge pull request #224 from analogdevicesinc/rft-issue-219 Robin Getz (23): local: Sort devices, channels and attributes when adding them. sort: change function names to be more descriptive/accurate sort: Move channel attribute sorting to context creation sort: when sorting iio_channels, if the index is the same, use ID fix whitespace damage from previous commits Ensure iio_info can find a locally installed libiio.so travis : Add the LDIST for centos usb: be more verbose when unable to claim an interface usb: add libusb version to context attributes local: pass errors up the stack add note about triggered buffers in dox source Update README.md with newest centos packages cmake: set the CPACK_DEBIAN_PACKAGE_ARCHITECTURE for old versions of Cmake travis-ci: don't hard code distributions anymore sorting: ensure sorting happens after global attributes are added fix snprintf warnings from gcc 8 deployment : export the LDIST var which is needed in other scripts README: Update with latest build changes appveyor: install graphviz and fix doxygen version doxygen: If dot exists, use it. doxygen: check if building on a case senstive file system. travis-ci: install graphviz README.md : Update with links to doc Travis Collins (2): Fix FIR load function in ML bindings to actually enable the FIR once loaded. Update FIR enable function in ML bindings to not force sample rate ahead of filter write. Signed-off-by: Michael Hennerich <[email protected]>
In my driver, I have 6 channels.
3 of the 6 channels have IIO_ANGL_VEL as type and IIO_MOD_X, IIO_MOD_Y, IIO_MOD_Z as channel_2 (modifier) respectively.
The other 3 channels are IIO_ACCEL and have IIO_MOD_X, IIO_MOD_Y, IIO_MOD_Z as channel_2 (modifier) respectively.
Using libiio's iio_channel_get_modifier and iio_channel_get_type, I am not getting the correct results:
For the IIO_ACCEL channels, I am getting 3 as type (which is correct), and 0 for all the modifiers (incorrect).
For the IIO_ANGL_VEL channels, I am getting a 12 for channel type (incorrect), and 0 for all the modifiers (incorrect)
Here are my channels inside the .........../scan_elements folder on linux:
in_accel_x_en in_accel_z_index in_anglvel_y_type
in_accel_x_index in_accel_z_type in_anglvel_z_en
in_accel_x_type in_anglvel_x_en in_anglvel_z_index
in_accel_y_en in_anglvel_x_index in_anglvel_z_type
in_accel_y_index in_anglvel_x_type in_timestamp_en
in_accel_y_type in_anglvel_y_en in_timestamp_index
in_accel_z_en in_anglvel_y_index in_timestamp_type
The text was updated successfully, but these errors were encountered: