Zephyr API Documentation 4.2.99
A Scalable Open Source RTOS
Loading...
Searching...
No Matches
adc_decoder_api Struct Reference

Decodes a single raw data buffer. More...

#include <zephyr/drivers/adc.h>

Data Fields

int(* get_frame_count )(const uint8_t *buffer, uint32_t channel, uint16_t *frame_count)
 Get the number of frames in the current buffer.
int(* get_size_info )(struct adc_dt_spec adc_spec, uint32_t channel, size_t *base_size, size_t *frame_size)
 Get the size required to decode a given channel.
int(* decode )(const uint8_t *buffer, uint32_t channel, uint32_t *fit, uint16_t max_count, void *data_out)
 Decode up to max_count samples from the buffer.
bool(* has_trigger )(const uint8_t *buffer, enum adc_trigger_type trigger)
 Check if the given trigger type is present.

Detailed Description

Decodes a single raw data buffer.

Field Documentation

◆ decode

int(* adc_decoder_api::decode) (const uint8_t *buffer, uint32_t channel, uint32_t *fit, uint16_t max_count, void *data_out)

Decode up to max_count samples from the buffer.

Decode samples of channel across multiple frames. If there exist multiple instances of the same channel, channel_index is used to differentiate them.

Parameters
[in]bufferThe buffer provided on the RTIO context
[in]channelThe channel to decode
[in,out]fitThe current frame iterator
[in]max_countThe maximum number of channels to decode.
[out]data_outThe decoded data
Returns
0 no more samples to decode
>0 the number of decoded frames
<0 on error

◆ get_frame_count

int(* adc_decoder_api::get_frame_count) (const uint8_t *buffer, uint32_t channel, uint16_t *frame_count)

Get the number of frames in the current buffer.

Parameters
[in]bufferThe buffer provided on the RTIO context.
[in]channelThe channel to get the count for
[out]frame_countThe number of frames on the buffer (at least 1)
Returns
0 on success
-ENOTSUP if the channel/channel_idx aren't found

◆ get_size_info

int(* adc_decoder_api::get_size_info) (struct adc_dt_spec adc_spec, uint32_t channel, size_t *base_size, size_t *frame_size)

Get the size required to decode a given channel.

When decoding a single frame, use base_size. For every additional frame, add another frame_size. As an example, to decode 3 frames use: 'base_size + 2 * frame_size'.

Parameters
[in]adc_specADC Specs
[in]channelThe channel to query
[out]base_sizeThe size of decoding the first frame
[out]frame_sizeThe additional size of every additional frame
Returns
0 on success
-ENOTSUP if the channel is not supported

◆ has_trigger

bool(* adc_decoder_api::has_trigger) (const uint8_t *buffer, enum adc_trigger_type trigger)

Check if the given trigger type is present.

Parameters
[in]bufferThe buffer provided on the RTIO context
[in]triggerThe trigger type in question
Returns
Whether the trigger is present in the buffer

The documentation for this struct was generated from the following file: