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