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