Commit 30a54d61 authored by Jean-Paul Saman's avatar Jean-Paul Saman

Tuning to DVB-C works. Added code to listen to FE_REINIT from the frontend.

parent 0f722429
...@@ -83,6 +83,7 @@ int E_(Open) ( vlc_object_t *p_this ) ...@@ -83,6 +83,7 @@ int E_(Open) ( vlc_object_t *p_this )
int i_len = 0; int i_len = 0;
vlc_value_t val; vlc_value_t val;
int i_test; int i_test;
int i_ret;
/* parse the options passed in command line : */ /* parse the options passed in command line : */
psz_parser = strdup( p_input->psz_name ); psz_parser = strdup( p_input->psz_name );
...@@ -469,14 +470,16 @@ int E_(Open) ( vlc_object_t *p_this ) ...@@ -469,14 +470,16 @@ int E_(Open) ( vlc_object_t *p_this )
fep.u.qpsk.symbol_rate = p_dvb->u_srate; fep.u.qpsk.symbol_rate = p_dvb->u_srate;
fep.u.qpsk.fec_inner = dvb_DecodeFEC( p_input, p_dvb->i_fec ); fep.u.qpsk.fec_inner = dvb_DecodeFEC( p_input, p_dvb->i_fec );
msg_Dbg( p_input, "DVB-S: satellite (QPSK) frontend %s found", frontend_info.name ); msg_Dbg( p_input, "DVB-S: satellite (QPSK) frontend %s found", frontend_info.name );
while( (i_ret = ioctl_SetQPSKFrontend( p_input, fep )) < 0 )
if( ioctl_SetQPSKFrontend( p_input, fep ) < 0 ) {
if( (i_ret != -3) && (i_ret < 0))
{ {
msg_Err( p_input, "DVB-S: tuning failed" ); msg_Err( p_input, "DVB-S: tuning failed" );
close( p_dvb->i_frontend ); close( p_dvb->i_frontend );
free( p_dvb ); free( p_dvb );
return -1; return -1;
} }
}
break; break;
/* DVB-C */ /* DVB-C */
...@@ -487,13 +490,16 @@ int E_(Open) ( vlc_object_t *p_this ) ...@@ -487,13 +490,16 @@ int E_(Open) ( vlc_object_t *p_this )
fep.u.qam.fec_inner = dvb_DecodeFEC( p_input, p_dvb->i_fec ); fep.u.qam.fec_inner = dvb_DecodeFEC( p_input, p_dvb->i_fec );
fep.u.qam.modulation = dvb_DecodeModulation( p_input, p_dvb->i_modulation ); fep.u.qam.modulation = dvb_DecodeModulation( p_input, p_dvb->i_modulation );
msg_Dbg( p_input, "DVB-C: cable (QAM) frontend %s found", frontend_info.name ); msg_Dbg( p_input, "DVB-C: cable (QAM) frontend %s found", frontend_info.name );
if( ioctl_SetQAMFrontend( p_input, fep ) < 0 ) while( ( i_ret = ioctl_SetQAMFrontend( p_input, fep ) ) < 0 )
{
if( (i_ret != -3) && (i_ret < 0))
{ {
msg_Err( p_input, "DVB-C: tuning failed" ); msg_Err( p_input, "DVB-C: tuning failed" );
close( p_dvb->i_frontend ); close( p_dvb->i_frontend );
free( p_dvb ); free( p_dvb );
return -1; return -1;
} }
}
break; break;
/* DVB-T */ /* DVB-T */
...@@ -508,13 +514,16 @@ int E_(Open) ( vlc_object_t *p_this ) ...@@ -508,13 +514,16 @@ int E_(Open) ( vlc_object_t *p_this )
fep.u.ofdm.guard_interval = dvb_DecodeGuardInterval( p_input, p_dvb->i_guard ); fep.u.ofdm.guard_interval = dvb_DecodeGuardInterval( p_input, p_dvb->i_guard );
fep.u.ofdm.hierarchy_information = dvb_DecodeHierarchy( p_input, p_dvb->i_hierarchy ); fep.u.ofdm.hierarchy_information = dvb_DecodeHierarchy( p_input, p_dvb->i_hierarchy );
msg_Dbg( p_input, "DVB-T: terrestrial (OFDM) frontend %s found", frontend_info.name ); msg_Dbg( p_input, "DVB-T: terrestrial (OFDM) frontend %s found", frontend_info.name );
if( ioctl_SetOFDMFrontend( p_input, fep ) < 0 ) while( (i_ret=ioctl_SetOFDMFrontend( p_input, fep )) < 0 )
{
if( (i_ret != -3) && (i_ret < 0))
{ {
msg_Err( p_input, "DVB-T: tuning failed" ); msg_Err( p_input, "DVB-T: tuning failed" );
close( p_dvb->i_frontend ); close( p_dvb->i_frontend );
free( p_dvb ); free( p_dvb );
return -1; return -1;
} }
}
break; break;
default: default:
msg_Err( p_input, "Could not determine frontend type on %s", frontend_info.name ); msg_Err( p_input, "Could not determine frontend type on %s", frontend_info.name );
......
...@@ -374,7 +374,6 @@ int ioctl_SetQAMFrontend( input_thread_t * p_input, struct dvb_frontend_paramete ...@@ -374,7 +374,6 @@ int ioctl_SetQAMFrontend( input_thread_t * p_input, struct dvb_frontend_paramete
/* Check Status of frontend */ /* Check Status of frontend */
i_ret = ioctl_CheckFrontend( p_input, FE_QAM ); i_ret = ioctl_CheckFrontend( p_input, FE_QAM );
return i_ret; return i_ret;
} }
...@@ -387,7 +386,7 @@ static int ioctl_CheckFrontend( input_thread_t * p_input, fe_type_t type ) ...@@ -387,7 +386,7 @@ static int ioctl_CheckFrontend( input_thread_t * p_input, fe_type_t type )
int fd_front = p_dvb->i_frontend; int fd_front = p_dvb->i_frontend;
int i_ret; int i_ret;
while( !p_input->b_die ) while( !p_input->b_die || !p_input->b_error )
{ {
int32_t value; int32_t value;
fe_status_t status; fe_status_t status;
...@@ -449,7 +448,7 @@ static int ioctl_CheckFrontend( input_thread_t * p_input, fe_type_t type ) ...@@ -449,7 +448,7 @@ static int ioctl_CheckFrontend( input_thread_t * p_input, fe_type_t type )
} }
msg_Err( p_input, "check frontend ... resend frontend parameters" ); msg_Err( p_input, "check frontend ... resend frontend parameters" );
msg_Err( p_input, "check frontend ... tuning failed" ); msg_Err( p_input, "check frontend ... tuning failed" );
return -1; return -3;
} }
/* Read some statistics */ /* Read some statistics */
......
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