Skip to contentSkip to conversation

libiio and unindexed channel

DISCUSSION Gregor Boirie 2 participants 2 messages Feb 15, 2016 IIO

lore
Share & tools
lore
#0 lore raw

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.

#1 lore raw
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 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 ?

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 in ms5611_core.c makes 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