1 /*****************************************************************
2 *
3 * adcapp.c
4 * application to acess ADC adriver
5 *
6 * Author: Rama Rao Bisa <ramab@ami.com>
7 *
8 * Copyright (C) <2019> <American Megatrends International LLC>
9 *
10 *****************************************************************/
11
12 #include <stdio.h>
13 #include <stdlib.h>
14 #include <errno.h>
15 #include <string.h>
16 #include <fcntl.h>
17 #include <ctype.h>
18 #include <unistd.h>
19 #include <sys/select.h>
20 #include <sys/ioctl.h>
21 #include <sys/poll.h>
22 #include <sys/time.h>
23 #include <stdint.h>
24 #include "EINTR_wrappers.h"
25 #include "adc.h"
26 #include "adcifc.h"
27
28 typedef enum {
29 GET_ADC_VALUE,
30 END_OF_FUNCLIST
31
32 }e_adc_actions;
33
34 e_adc_actions action = END_OF_FUNCLIST;
35
ShowUsuage(void)36 static void ShowUsuage ( void )
37 {
38 printf ("ADC Test Tool - Copyright (c) 2009-2015 American Megatrends Inc.\n");
39 printf( "Usage : addapp NumOfMaxChannels <option> \n" );
40 printf( "option: \n" );
41 printf( "\t--read-adc-channel \tGet ADC value for all the ADC channels\n" );
42 printf( "\n" );
43 }
44
process_arguments(int argc,char ** argv)45 static int process_arguments( int argc, char **argv )
46 {
47 int i=2;
48 if( strcmp( argv[ i ], "--read-adc-channel" ) == 0 )
49 {
50 action = GET_ADC_VALUE;
51 }
52 else
53 {
54 action = END_OF_FUNCLIST;
55 }
56 return 0;
57 }
58
59 int
main(int argc,char * argv[])60 main ( int argc , char* argv [] )
61 {
62
63 get_adc_value_t get_adc_value;
64 int max_adc_channels;
65 int i,ret_val;
66 unsigned short reading=0;
67 if ( !(argc >= 3 ) )
68 {
69 ShowUsuage () ;
70 return 0;
71 }
72 max_adc_channels = (unsigned char)strtol( argv[1], NULL, 10);
73 process_arguments( argc , argv);
74 if ( (END_OF_FUNCLIST == action))
75 {
76 ShowUsuage ();
77 return 0;
78 }
79
80 switch ( action )
81 {
82 case GET_ADC_VALUE:
83 for (i = 0; i < max_adc_channels; i++)
84 {
85 get_adc_value.channel_num = i;
86 get_adc_value.channel_value = 0;
87
88 ret_val = get_adc_val(get_adc_value.channel_num, &reading);
89
90 if (ret_val == -1)
91 {
92 printf ("Read ADC channel failed\n");
93 return -1;
94 }
95 printf(
96 "ADC Channel Value =%5dmv for channel %d\n",
97 reading, get_adc_value.channel_num);
98 }
99 break;
100
101 default:
102 printf("Invalid ADC Function Call ");
103 break;
104 }
105
106 return 0;
107 }
108