/****************************************************************************** NAME vc_gencmd SYNOPSIS int vc_gencmd(char *response, int maxlen, const char *format, ...) FUNCTION Send a gencmd and receive the response as per vc_gencmd read_response. RETURNS int ******************************************************************************/ int vc_gencmd(char *response, int maxlen, const char *format, ...) { va_list args; int ret; va_start(args, format); ret = vc_gencmd_send_list(format, args); va_end (args); if (ret < 0) return ret; return vc_gencmd_read_response(response, maxlen); }
/****************************************************************************** NAME vc_gencmd SYNOPSIS int vc_gencmd(char *response, int maxlen, const char *format, ...) FUNCTION Send a gencmd and receive the response as per vc_gencmd read_response. RETURNS int ******************************************************************************/ int vc_gencmd(char *response, int maxlen, const char *format, ...) { va_list args; int ret = -1; use_gencmd_service(); va_start(args, format); ret = vc_gencmd_send_list(format, args); va_end (args); if (ret >= 0) { ret = vc_gencmd_read_response(response, maxlen); } release_gencmd_service(); return ret; }
int main( int argc, char **argv ) { int instNum = 0; VCHI_INSTANCE_T vchi_instance; VCHI_CONNECTION_T *vchi_connection = NULL; if ( argc > 1 ) { if (( strcmp( argv[1], "0" ) == 0 ) || ( strcmp( argv[1], "1" ) == 0 )) { instNum = atoi( argv[1] ); argv++; argc--; } } vcos_init(); if ( vchi_initialise( &vchi_instance ) != 0) { printf( "VCHI initialization failed\n" ); return -1; } //create a vchi connection if ( vchi_connect( NULL, 0, vchi_instance ) != 0) { printf( "VCHI connection failed\n" ); return -1; } vc_vchi_gencmd_init(vchi_instance, &vchi_connection, 1 ); if (argc > 1) { int i = 1; char buffer[ 1024 ]; size_t buffer_offset = 0; clock_t before=0, after=0; double time_diff; uint32_t show_time = 0; int ret; //reset the string buffer[0] = '\0'; //first, strip out a potential leading -t if( strcmp( argv[1], "-t" ) == 0 ) { show_time = 1; i++; } for (; i <= argc-1; i++) { buffer_offset = vcos_safe_strcpy( buffer, argv[i], sizeof(buffer), buffer_offset ); buffer_offset = vcos_safe_strcpy( buffer, " ", sizeof(buffer), buffer_offset ); } if( show_time ) before = clock(); //send the gencmd for the argument if (( ret = vc_gencmd_send( "%s", buffer )) != 0 ) { printf( "vc_gencmd_send returned %d\n", ret ); } //get + print out the response! if (( ret = vc_gencmd_read_response( buffer, sizeof( buffer ) )) != 0 ) { printf( "vc_gencmd_read_response returned %d\n", ret ); } if( show_time ) after = clock(); if( show_time ) { time_diff = ((double) (after - before)) / CLOCKS_PER_SEC; printf( "Time took %f seconds (%f msecs) (%f usecs)\n", time_diff, time_diff * 1000, time_diff * 1000000 ); } if ( buffer[0] != '\0' ) { if ( buffer[ strlen( buffer) - 1] == '\n' ) { fputs( buffer, stdout ); } else { printf("%s\n", buffer ); } } } vc_gencmd_stop(); //close the vchi connection if ( vchi_disconnect( vchi_instance ) != 0) { printf( "VCHI disconnect failed\n" ); return -1; } return 0; }