in CodeSnippets/Peripherals/ADC/AdvancedFunctions/advanced_functions.c [146:177]
static int GetChannelSpecification(int adcControllerFd, ADC_ChannelId channelId,
struct iio_ioctl_chan_spec_buffer *channelSpecBuffer)
{
struct iio_ioctl_chan_spec_buffer_size channelSpecBufferSize = {
.size = sizeof(channelSpecBufferSize), .index = (int)channelId, .total_size = 0};
int ret = ioctl(adcControllerFd, (int)IIO_GET_CHANNEL_SPEC_BUFFER_TOTAL_SIZE_IOCTL,
&channelSpecBufferSize);
if (ret < 0) {
Log_Debug(
"ERROR: ioctl call failed with error \"%s (%d)\" for request "
"IIO_GET_CHANNEL_SPEC_BUFFER_TOTAL_SIZE_IOCTL.\n",
strerror(errno), errno);
return -1;
}
channelSpecBuffer->size = sizeof(*channelSpecBuffer);
channelSpecBuffer->total_size = channelSpecBufferSize.total_size;
channelSpecBuffer->index = (int)channelId;
channelSpecBuffer->channel = NULL;
ret = ioctl(adcControllerFd, (int)IIO_GET_CHANNEL_SPEC_BUFFER_IOCTL, channelSpecBuffer);
if (ret < 0) {
Log_Debug(
"ERROR: ioctl call failed with error \"%s (%d)\" for request "
"IIO_GET_CHANNEL_SPEC_BUFFER_IOCTL.\n",
strerror(errno), errno);
return -1;
}
return 0;
}