libiio and unindexed channel
Hi all,
I hope it is the right place to post for libiio related problems. Please, forgive my mistakeif it is not.
I'm facing a rather odd problem with unindexed channel (as declared in ms5611 pressure driver iio_chan_spec 's). libiio does not consider pressure and temperature channels exposed by the driver as... channels.
Trying to figure out why, I looked into libiio local backend and found that:
* on tag v0.6, libiio simply consider unindexed driver channels as device attribute (see local.c:942) ;
* on actual master, libiio will promote unindexed driver channels to channels BUT without the scan_element ability (see local.c:1130)
I don't fully understand what real difference it makes but libiio manual says:
</quote>
a channel that is a scan element is a channel that can generate samples (for an input channel) or receive samples (for an output channel) after being enabled.
<quote/>
I feel a bit lost here : I thought input channels were always able to generate samples. What is this iio_channel_is_scan_element() here for ? From userspace point of view, what channel indices should be used for ?
Many thanks in advancefor sharing your time and knowledge. Regards,
Gregor.
P.S.: by the way, setting the "indexed" field of iio_chan_spec's in ms5611_core.c makes libiio see temperature and pressure as channels.
Quoted 30 lines · Gregor Boirie
Hi all,
I hope it is the right place to post for libiio related problems. Please, forgive my mistakeif it is not.
I'm facing a rather odd problem with unindexed channel (as declared in ms5611 pressure driver
iio_chan_spec's). libiio does not consider pressure and temperature channels exposed by the driver as... channels.Trying to figure out why, I looked into libiio local backend and found that:
* on tag v0.6, libiio simply consider unindexed driver channels as device attribute (see local.c:942) ;
* on actual master, libiio will promote unindexed driver channels to channels BUT without thescan_elementability (see local.c:1130)I don't fully understand what real difference it makes but libiio manual says:
</quote>
a channel that is a scan element is a channel that can generate samples (for an input channel) or receive samples (for an output channel) after being enabled.
<quote/>I feel a bit lost here : I thought input channels were always able to generate samples. What is this
iio_channel_is_scan_element()here for ? From userspace point of view, what channel indices should be used for ?
Quoted 6 lines
Many thanks in advancefor sharing your time and knowledge. Regards,
Gregor.
P.S.: by the way, setting the "indexed" field of iio_chan_spec's inms5611_core.cmakes libiio see temperature and pressure as channels.
Hi,
One of the major issues of the current IIO userspace ABI is that it is not really machine readable friendly. libiio employs a couple of heuristics to try to recover the original information. Your usecase is currently not covered by the heuristics. But it should be fairly easy to add. If there is a entry in scan_elements/ whether it has a index or not it should cause libiio to infer a channel for it. Patches welcome.
- Lars