static int ReadAdcChannel()

in CodeSnippets/Peripherals/ADC/LinuxSysfsNodes/linux_sysfs_nodes.c [31:62]


static int ReadAdcChannel(void)
{
    int adcFd = -1;
    int sampleValue = 0;
    int retVal = -1;

    adcFd = OpenAdc(channelNumber);
    if (adcFd == -1) {
        goto cleanup;
    }

    if (ReadAdc(adcFd, &sampleValue) == -1) {
        goto cleanup;
    }

    // Calculate voltage.
    float maxSample = (float)((1 << sampleBitCount) - 1);
    float voltage = ((float)sampleValue * referenceVoltage) / maxSample;
    printf("The out sample value is %.3f V.\n", voltage);
    retVal = 0;

cleanup:
    // Close the file descriptor.
    if (adcFd >= 0) {
        int result = close(adcFd);
        if (result != 0) {
            fprintf(stderr, "ERROR: Could not close ADC fd: %s (%d).\n", strerror(errno), errno);
        }
    }

    return retVal;
}