static int GetChannelSpecification()

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;
}