| /***************************************************************** |
| * |
| * adcapp.c |
| * application to acess ADC adriver |
| * |
| * Author: Rama Rao Bisa <ramab@ami.com> |
| * |
| * Copyright (C) <2019> <American Megatrends International LLC> |
| * |
| *****************************************************************/ |
| |
| #include <stdio.h> |
| #include <stdlib.h> |
| #include <errno.h> |
| #include <string.h> |
| #include <fcntl.h> |
| #include <ctype.h> |
| #include <unistd.h> |
| #include <sys/select.h> |
| #include <sys/ioctl.h> |
| #include <sys/poll.h> |
| #include <sys/time.h> |
| #include <stdint.h> |
| #include "EINTR_wrappers.h" |
| #include "adc.h" |
| #include "adcifc.h" |
| |
| typedef enum { |
| GET_ADC_VALUE, |
| END_OF_FUNCLIST |
| |
| }e_adc_actions; |
| |
| e_adc_actions action = END_OF_FUNCLIST; |
| |
| static void ShowUsuage ( void ) |
| { |
| printf ("ADC Test Tool - Copyright (c) 2009-2015 American Megatrends Inc.\n"); |
| printf( "Usage : addapp NumOfMaxChannels <option> \n" ); |
| printf( "option: \n" ); |
| printf( "\t--read-adc-channel \tGet ADC value for all the ADC channels\n" ); |
| printf( "\n" ); |
| } |
| |
| static int process_arguments( int argc, char **argv ) |
| { |
| int i=2; |
| if( strcmp( argv[ i ], "--read-adc-channel" ) == 0 ) |
| { |
| action = GET_ADC_VALUE; |
| } |
| else |
| { |
| action = END_OF_FUNCLIST; |
| } |
| return 0; |
| } |
| |
| int |
| main ( int argc , char* argv [] ) |
| { |
| |
| get_adc_value_t get_adc_value; |
| int max_adc_channels; |
| int i,ret_val; |
| unsigned short reading=0; |
| if ( !(argc >= 3 ) ) |
| { |
| ShowUsuage () ; |
| return 0; |
| } |
| max_adc_channels = (unsigned char)strtol( argv[1], NULL, 10); |
| process_arguments( argc , argv); |
| if ( (END_OF_FUNCLIST == action)) |
| { |
| ShowUsuage (); |
| return 0; |
| } |
| |
| switch ( action ) |
| { |
| case GET_ADC_VALUE: |
| for (i = 0; i < max_adc_channels; i++) |
| { |
| get_adc_value.channel_num = i; |
| get_adc_value.channel_value = 0; |
| |
| ret_val = get_adc_val(get_adc_value.channel_num, &reading); |
| |
| if (ret_val == -1) |
| { |
| printf ("Read ADC channel failed\n"); |
| return -1; |
| } |
| printf ("ADC Channel Value =%5d for channel %d\n", reading, get_adc_value.channel_num); |
| } |
| break; |
| |
| default: |
| printf("Invalid ADC Function Call "); |
| break; |
| } |
| |
| return 0; |
| } |