[dvblast-devel] [PATCH 2/4] Add HAVE_{DVB, ASI}_SUPPORT config vars.
Georgi Chorbadzhiyski
gf at unixsol.org
Fri Aug 24 00:38:51 CEST 2012
With this patch DVB/ASI support is enabled only on Linux systems.
---
asi.c | 4 ++++
comm.c | 2 ++
comm.h | 4 ++++
config.h | 5 +++++
dvb.c | 5 +++++
dvblast.c | 29 ++++++++++++++++++++++++++---
dvblastctl.c | 6 ++++++
en50221.c | 15 +++++++++++++++
8 files changed, 67 insertions(+), 3 deletions(-)
diff --git a/asi.c b/asi.c
index bc0a43e..90405eb 100644
--- a/asi.c
+++ b/asi.c
@@ -19,6 +19,9 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
*****************************************************************************/
+#include "config.h"
+
+#ifdef HAVE_ASI_SUPPORT
#include <stdlib.h>
#include <stdio.h>
@@ -322,3 +325,4 @@ void asi_Reset( void )
msg_Warn( NULL, "asi_Reset() do nothing" );
}
+#endif
diff --git a/comm.c b/comm.c
index bd881e4..f2bd0f4 100644
--- a/comm.c
+++ b/comm.c
@@ -129,6 +129,7 @@ void comm_Read( void )
i_answer_size = 0;
break;
+#ifdef HAVE_DVB_SUPPORT
case CMD_FRONTEND_STATUS:
i_answer = dvb_FrontendStatus( p_answer + COMM_HEADER_SIZE,
&i_answer_size );
@@ -163,6 +164,7 @@ void comm_Read( void )
case CMD_MMI_SEND_CHOICE:
i_answer = en50221_SendMMIObject( p_input, i_size - COMM_HEADER_SIZE );
break;
+#endif
case CMD_SHUTDOWN:
b_exit_now = 1;
diff --git a/comm.h b/comm.h
index 43f5c44..be2902e 100644
--- a/comm.h
+++ b/comm.h
@@ -12,11 +12,13 @@
* http://sam.zoy.org/wtfpl/COPYING for more details.
*****************************************************************************/
+#ifdef HAVE_DVB_SUPPORT
/* DVB Card Drivers */
#include <linux/dvb/version.h>
#include <linux/dvb/dmx.h>
#include <linux/dvb/frontend.h>
#include <linux/dvb/ca.h>
+#endif
#include <bitstream/mpeg/psi.h>
@@ -66,6 +68,7 @@ typedef enum {
RET_HUH = 255,
} ctl_cmd_answer_t;
+#ifdef HAVE_DVB_SUPPORT
struct ret_frontend_status
{
struct dvb_frontend_info info;
@@ -93,6 +96,7 @@ struct cmd_mmi_send
uint8_t i_slot;
en50221_mmi_object_t object;
};
+#endif
struct cmd_pid_info
{
diff --git a/config.h b/config.h
index 1b8a9d2..6ed1e32 100644
--- a/config.h
+++ b/config.h
@@ -24,7 +24,12 @@
#ifndef _DVBLAST_CONFIG_H_
#define _DVBLAST_CONFIG_H_
+#if defined(__linux__)
+#define HAVE_DVB_SUPPORT
+#define HAVE_ASI_SUPPORT
#define HAVE_CLOCK_NANOSLEEP
+#endif
+
#define HAVE_ICONV
#define DEFAULT_PORT 3001
diff --git a/dvb.c b/dvb.c
index 96722f9..9991cf9 100644
--- a/dvb.c
+++ b/dvb.c
@@ -19,6 +19,9 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
*****************************************************************************/
+#include "config.h"
+
+#ifdef HAVE_DVB_SUPPORT
#include <stdlib.h>
#include <stdint.h>
@@ -1133,3 +1136,5 @@ uint8_t dvb_FrontendStatus( uint8_t *p_answer, ssize_t *pi_size )
*pi_size = sizeof(struct ret_frontend_status);
return RET_FRONTEND_STATUS;
}
+
+#endif
diff --git a/dvblast.c b/dvblast.c
index 6f99e5c..0866cd6 100644
--- a/dvblast.c
+++ b/dvblast.c
@@ -438,21 +438,33 @@ void usage()
{
DisplayVersion();
msg_Raw( NULL, "Usage: dvblast [-q] [-c <config file>] [-r <remote socket>] [-t <ttl>] [-o <SSRC IP>] "
- "[-i <RT priority>] [-a <adapter>] [-n <frontend number>] [-S <diseqc>] [-k <uncommitted port>]"
- "[-f <frequency>|-D [<src host>[:<src port>]@]<src mcast>[:<port>][/<opts>]*|-A <ASI adapter>] "
+ "[-i <RT priority>] "
+#ifdef HAVE_ASI_SUPPORT
+ "[-A <ASI adapter>]"
+#endif
+#ifdef HAVE_DVB_SUPPORT
+ "[-a <adapter>] [-n <frontend number>] [-S <diseqc>] [-k <uncommitted port>]"
+ "[-f <frequency>]"
"[-s <symbol rate>] [-v <0|13|18>] [-p] [-b <bandwidth>] [-I <inversion>] "
"[-F <fec inner>] [-m <modulation] [-R <rolloff>] [-P <pilot>] [-K <fec lp>] "
"[-G <guard interval>] [-H <hierarchy>] [-X <transmission>] [-O <lock timeout>] "
+#endif
+ "[-D [<src host>[:<src port>]@]<src mcast>[:<port>][/<opts>]*] "
"[-u] [-w] [-U] [-L <latency>] [-E <retention>] [-d <dest IP>[<:port>][/<opts>]*] "
"[-z] [-C [-e] [-M <network name] [-N <network ID>]] [-T] [-j <system charset>] "
"[-W] [-Y] [-l] [-g <logger ident>] [-Z <mrtg file>] [-V] [-h] [-B <provider_name>]"
"[-J <DVB charset>] [-Q <quit timeout>] [-x <text|xml>]" );
msg_Raw( NULL, "Input:" );
- msg_Raw( NULL, " -a --adapter read packets from a Linux-DVB adapter (typically 0-n)" );
+#ifdef HAVE_ASI_SUPPORT
msg_Raw( NULL, " -A --asi-adapter read packets from an ASI adapter (0-n)" );
+#endif
+#ifdef HAVE_DVB_SUPPORT
+ msg_Raw( NULL, " -a --adapter read packets from a Linux-DVB adapter (typically 0-n)" );
msg_Raw( NULL, " -b --bandwidth frontend bandwith" );
+#endif
msg_Raw( NULL, " -D --rtp-input read packets from a multicast address instead of a DVB card" );
+#ifdef HAVE_DVB_SUPPORT
msg_Raw( NULL, " -f --frequency frontend frequency" );
msg_Raw( NULL, " -F --fec-inner Forward Error Correction (FEC Inner)");
msg_Raw( NULL, " DVB-S2 0|12|23|34|35|56|78|89|910|999 (default auto: 999)");
@@ -478,6 +490,7 @@ void usage()
msg_Raw( NULL, " -v --voltage voltage to apply to the LNB (QPSK)" );
msg_Raw( NULL, " -w --select-pmts set a PID filter on all PMTs" );
msg_Raw( NULL, " -O --lock-timeout timeout for the lock operation (in ms)" );
+#endif
msg_Raw( NULL, "Output:" );
msg_Raw( NULL, " -c --config-file <config file>" );
@@ -655,11 +668,16 @@ int main( int i_argc, char **pp_argv )
i_frequency = strtol( optarg, NULL, 0 );
if ( pf_Open != NULL )
usage();
+#ifdef HAVE_DVB_SUPPORT
pf_Open = dvb_Open;
pf_Read = dvb_Read;
pf_Reset = dvb_Reset;
pf_SetFilter = dvb_SetFilter;
pf_UnsetFilter = dvb_UnsetFilter;
+#else
+ msg_Err( NULL, "DVBlast is compiled without DVB support.");
+ exit(1);
+#endif
break;
case 'F':
@@ -765,11 +783,16 @@ int main( int i_argc, char **pp_argv )
i_asi_adapter = strtol( optarg, NULL, 0 );
if ( pf_Open != NULL )
usage();
+#ifdef HAVE_ASI_SUPPORT
pf_Open = asi_Open;
pf_Read = asi_Read;
pf_Reset = asi_Reset;
pf_SetFilter = asi_SetFilter;
pf_UnsetFilter = asi_UnsetFilter;
+#else
+ msg_Err( NULL, "DVBlast is compiled without ASI support.");
+ exit(1);
+#endif
break;
case 'z':
diff --git a/dvblastctl.c b/dvblastctl.c
index 7862b90..9b5dbf6 100644
--- a/dvblastctl.c
+++ b/dvblastctl.c
@@ -207,6 +207,7 @@ void usage()
printf("Control commands:\n");
printf(" reload Reload configuration.\n");
printf(" shutdown Shutdown DVBlast.\n");
+#ifdef HAVE_DVB_SUPPORT
printf("Status commands:\n");
printf(" fe_status Read frontend status information.\n");
printf(" mmi_status Read CAM status.\n");
@@ -217,6 +218,7 @@ void usage()
printf(" mmi_get <slot> Read MMI slot.\n");
printf(" mmi_send_text <slot> <text> Send text to MMI slot.\n");
printf(" mmi_send_choice <slot> <choice> Send choice to MMI slot.\n");
+#endif
printf("Demux info commands:\n");
printf(" get_pat Return last PAT table.\n");
printf(" get_cat Return last CAT table.\n");
@@ -386,6 +388,7 @@ int main( int i_argc, char **ppsz_argv )
p_data[1] = (uint8_t)(i_pid & 0xff);
break;
}
+#ifdef HAVE_DVB_SUPPORT
case CMD_MMI_SEND_TEXT:
{
struct cmd_mmi_send *p_cmd = (struct cmd_mmi_send *)p_data;
@@ -432,6 +435,7 @@ int main( int i_argc, char **ppsz_argv )
i_size = COMM_HEADER_SIZE + 1;
break;
}
+#endif
default:
/* This should not happen */
return_error( "Unhandled option (%d)", opt.cmd );
@@ -533,6 +537,7 @@ int main( int i_argc, char **ppsz_argv )
break;
}
+#ifdef HAVE_DVB_SUPPORT
case RET_FRONTEND_STATUS:
{
int ret = 1;
@@ -788,6 +793,7 @@ int main( int i_argc, char **ppsz_argv )
exit(255);
break;
}
+#endif
default:
return_error( "Unknown command answer: %u", c_answer );
diff --git a/en50221.c b/en50221.c
index 8af0626..26351ed 100644
--- a/en50221.c
+++ b/en50221.c
@@ -21,6 +21,9 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
*****************************************************************************/
+#include "config.h"
+
+#ifdef HAVE_DVB_SUPPORT
#include <stdlib.h>
#include <stdint.h>
@@ -2421,3 +2424,15 @@ uint8_t en50221_SendMMIObject( uint8_t *p_buffer, ssize_t i_size )
msg_Err( NULL, "SendMMIObject when no MMI session is opened !" );
return RET_ERR;
}
+
+#else
+#include <inttypes.h>
+
+int i_ca_handle = 0;
+int i_ca_type = -1;
+
+void en50221_AddPMT( uint8_t *p_pmt ) { };
+void en50221_UpdatePMT( uint8_t *p_pmt ) { };
+void en50221_DeletePMT( uint8_t *p_pmt ) { };
+void en50221_Reset( void ) { };
+#endif
--
1.7.11.1
More information about the dvblast-devel
mailing list