Commit e1c2fe08 authored by Christophe Massiot's avatar Christophe Massiot

* en50221.c: New -W switch to support sloW CAMs.

parent e0911d7c
...@@ -56,6 +56,7 @@ int b_tone = 0; ...@@ -56,6 +56,7 @@ int b_tone = 0;
int i_bandwidth = 8; int i_bandwidth = 8;
char *psz_modulation = NULL; char *psz_modulation = NULL;
int b_budget_mode = 0; int b_budget_mode = 0;
int b_slow_cam = 0;
int b_output_udp = 0; int b_output_udp = 0;
int b_enable_epg = 0; int b_enable_epg = 0;
int b_unique_tsid = 0; int b_unique_tsid = 0;
...@@ -193,7 +194,7 @@ static void SigHandler( int i_signal ) ...@@ -193,7 +194,7 @@ static void SigHandler( int i_signal )
*****************************************************************************/ *****************************************************************************/
void usage() void usage()
{ {
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>] -f <frequency> [-s <symbol rate>] [-v <0|13|18>] [-p] [-b <bandwidth>] [-m <modulation] [-u] [-U] [-d <dest IP:port>] [-e] [-T]" ); 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>] -f <frequency> [-s <symbol rate>] [-v <0|13|18>] [-p] [-b <bandwidth>] [-m <modulation] [-u] [-W] [-U] [-d <dest IP:port>] [-e] [-T]" );
msg_Raw( NULL, " -q: be quiet (less verbosity, repeat or use number for even quieter)" ); msg_Raw( NULL, " -q: be quiet (less verbosity, repeat or use number for even quieter)" );
msg_Raw( NULL, " -v: voltage to apply to the LNB (QPSK)" ); msg_Raw( NULL, " -v: voltage to apply to the LNB (QPSK)" );
msg_Raw( NULL, " -p: force 22kHz pulses for high-band selection (DVB-S)" ); msg_Raw( NULL, " -p: force 22kHz pulses for high-band selection (DVB-S)" );
...@@ -202,6 +203,7 @@ void usage() ...@@ -202,6 +203,7 @@ void usage()
msg_Raw( NULL, " DVB-T qam_16|qam_32|qam_64|qam_128|qam_256 (default qam_auto)" ); msg_Raw( NULL, " DVB-T qam_16|qam_32|qam_64|qam_128|qam_256 (default qam_auto)" );
msg_Raw( NULL, " DVB-S2 qpsk|psk_8 (default legacy DVB-S)" ); msg_Raw( NULL, " DVB-S2 qpsk|psk_8 (default legacy DVB-S)" );
msg_Raw( NULL, " -u: turn on budget mode (no hardware PID filtering)" ); msg_Raw( NULL, " -u: turn on budget mode (no hardware PID filtering)" );
msg_Raw( NULL, " -W: add extra delays for slow CAMs" );
msg_Raw( NULL, " -U: use raw UDP rather than RTP (required by some IPTV set top boxes)" ); msg_Raw( NULL, " -U: use raw UDP rather than RTP (required by some IPTV set top boxes)" );
msg_Raw( NULL, " -d: duplicate all received packets to a given destination" ); msg_Raw( NULL, " -d: duplicate all received packets to a given destination" );
msg_Raw( NULL, " -e: enable EPG pass through (EIT data)" ); msg_Raw( NULL, " -e: enable EPG pass through (EIT data)" );
...@@ -220,7 +222,7 @@ int main( int i_argc, char **pp_argv ) ...@@ -220,7 +222,7 @@ int main( int i_argc, char **pp_argv )
msg_Warn( NULL, "restarting" ); msg_Warn( NULL, "restarting" );
while ( ( c = getopt(i_argc, pp_argv, "q::c:r:t:o:i:a:n:f:s:S:v:pb:m:uUTd:eh")) != -1 ) while ( ( c = getopt(i_argc, pp_argv, "q::c:r:t:o:i:a:n:f:s:S:v:pb:m:uWUTd:eh")) != -1 )
{ {
switch ( c ) switch ( c )
{ {
...@@ -312,6 +314,10 @@ int main( int i_argc, char **pp_argv ) ...@@ -312,6 +314,10 @@ int main( int i_argc, char **pp_argv )
b_budget_mode = 1; b_budget_mode = 1;
break; break;
case 'W':
b_slow_cam = 1;
break;
case 'U': case 'U':
b_output_udp = 1; b_output_udp = 1;
break; break;
......
...@@ -95,6 +95,7 @@ extern int b_tone; ...@@ -95,6 +95,7 @@ extern int b_tone;
extern int i_bandwidth; extern int i_bandwidth;
extern char *psz_modulation; extern char *psz_modulation;
extern int b_budget_mode; extern int b_budget_mode;
extern int b_slow_cam;
extern int b_output_udp; extern int b_output_udp;
extern int b_enable_epg; extern int b_enable_epg;
extern int b_unique_tsid; extern int b_unique_tsid;
......
...@@ -66,6 +66,7 @@ ...@@ -66,6 +66,7 @@
#undef DEBUG_TPDU #undef DEBUG_TPDU
#define HLCI_WAIT_CAM_READY 0 #define HLCI_WAIT_CAM_READY 0
#define CAM_PROG_MAX MAX_PROGRAMS #define CAM_PROG_MAX MAX_PROGRAMS
#define CAPMT_WAIT 100 /* ms */
typedef struct en50221_session_t typedef struct en50221_session_t
{ {
...@@ -1201,6 +1202,8 @@ static void CAPMTAdd( access_t * p_access, int i_session_id, ...@@ -1201,6 +1202,8 @@ static void CAPMTAdd( access_t * p_access, int i_session_id,
return; return;
} }
if( b_slow_cam )
msleep( CAPMT_WAIT * 1000 );
msg_Dbg( p_access, "adding CAPMT for SID %d on session %d", msg_Dbg( p_access, "adding CAPMT for SID %d on session %d",
p_pmt->i_program_number, i_session_id ); p_pmt->i_program_number, i_session_id );
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment