[dvblast-devel] [PATCH 20/20] dvblastctl: Add XML output support for fe_status command.
Georgi Chorbadzhiyski
gf at unixsol.org
Mon Sep 5 09:52:55 CEST 2011
---
dvblastctl.c | 70 ++++++++++++++++++++++++++++++++++++++++++++-------------
1 files changed, 54 insertions(+), 16 deletions(-)
diff --git a/dvblastctl.c b/dvblastctl.c
index 960a600..dd8705f 100644
--- a/dvblastctl.c
+++ b/dvblastctl.c
@@ -477,6 +477,7 @@ int main( int i_argc, char **ppsz_argv )
case RET_FRONTEND_STATUS:
{
+ int ret = 1;
struct ret_frontend_status *p_ret =
(struct ret_frontend_status *)&p_buffer[COMM_HEADER_SIZE];
if ( i_size != COMM_HEADER_SIZE + sizeof(struct ret_frontend_status) )
@@ -485,9 +486,15 @@ int main( int i_argc, char **ppsz_argv )
exit(255);
}
+ if ( i_print_type == PRINT_XML )
+ printf("<FRONTEND>\n");
+
#define PRINT_TYPE( x ) \
do { \
- printf("type: %s\n", STRINGIFY(x) ); \
+ if ( i_print_type == PRINT_XML ) \
+ printf( " <TYPE type=\"%s\"/>\n", STRINGIFY(x) ); \
+ else \
+ printf( "type: %s\n", STRINGIFY(x) ); \
} while(0)
switch ( p_ret->info.type )
{
@@ -499,8 +506,13 @@ int main( int i_argc, char **ppsz_argv )
}
#undef PRINT_TYPE
-#define PRINT_INFO( x ) \
- printf( STRINGIFY(x) ": %u\n", p_ret->info.x );
+#define PRINT_INFO( x ) \
+ do { \
+ if ( i_print_type == PRINT_XML ) \
+ printf( " <SETTING %s=\"%u\"/>\n", STRINGIFY(x), p_ret->info.x ); \
+ else \
+ printf( "%s: %u\n", STRINGIFY(x), p_ret->info.x ); \
+ } while(0)
PRINT_INFO( frequency_min );
PRINT_INFO( frequency_max );
PRINT_INFO( frequency_stepsize );
@@ -511,11 +523,19 @@ int main( int i_argc, char **ppsz_argv )
PRINT_INFO( notifier_delay );
#undef PRINT_INFO
- printf("\ncapability list:\n");
+ if ( i_print_type == PRINT_TEXT )
+ printf("\ncapability list:\n");
-#define PRINT_CAPS( x ) \
- if ( p_ret->info.caps & (FE_##x) ) \
- printf( STRINGIFY(x) "\n" );
+#define PRINT_CAPS( x ) \
+ do { \
+ if ( p_ret->info.caps & (FE_##x) ) { \
+ if ( i_print_type == PRINT_XML ) { \
+ printf( " <CAPABILITY %s=\"1\"/>\n", STRINGIFY(x) ); \
+ } else { \
+ printf( "%s\n", STRINGIFY(x) ); \
+ } \
+ } \
+ } while(0)
PRINT_CAPS( IS_STUPID );
PRINT_CAPS( CAN_INVERSION_AUTO );
PRINT_CAPS( CAN_FEC_1_2 );
@@ -556,11 +576,19 @@ int main( int i_argc, char **ppsz_argv )
#endif
#undef PRINT_CAPS
- printf("\nstatus:\n");
+ if ( i_print_type == PRINT_TEXT )
+ printf("\nstatus:\n");
-#define PRINT_STATUS( x ) \
- if ( p_ret->i_status & (FE_##x) ) \
- printf( STRINGIFY(x) "\n" );
+#define PRINT_STATUS( x ) \
+ do { \
+ if ( p_ret->i_status & (FE_##x) ) { \
+ if ( i_print_type == PRINT_XML ) { \
+ printf( " <STATUS status=\"%s\"/>\n", STRINGIFY(x) ); \
+ } else { \
+ printf( "%s\n", STRINGIFY(x) ); \
+ } \
+ } \
+ } while(0)
PRINT_STATUS( HAS_SIGNAL );
PRINT_STATUS( HAS_CARRIER );
PRINT_STATUS( HAS_VITERBI );
@@ -571,13 +599,23 @@ int main( int i_argc, char **ppsz_argv )
if ( p_ret->i_status & FE_HAS_LOCK )
{
- printf("\nBit error rate: %d\n", p_ret->i_ber);
- printf("Signal strength: %d\n", p_ret->i_strength);
- printf("SNR: %d\n", p_ret->i_snr);
- exit(0);
+ if ( i_print_type == PRINT_XML )
+ {
+ printf(" <VALUE bit_error_rate=\"%d\"/>\n", p_ret->i_ber);
+ printf(" <VALUE signal_strength=\"%d\"/>\n", p_ret->i_strength);
+ printf(" <VALUE SNR=\"%d\"/>\n", p_ret->i_snr);
+ } else {
+ printf("\nBit error rate: %d\n", p_ret->i_ber);
+ printf("Signal strength: %d\n", p_ret->i_strength);
+ printf("SNR: %d\n", p_ret->i_snr);
+ }
+ ret = 0;
}
- exit(1);
+ if ( i_print_type == PRINT_XML )
+ printf("</FRONTEND>\n" );
+
+ exit(ret);
break;
}
--
1.7.5.1
More information about the dvblast-devel
mailing list