diff --git a/usbtunerhelper.c b/usbtunerhelper.c index 7906f9b..5bdd359 100644 --- a/usbtunerhelper.c +++ b/usbtunerhelper.c @@ -90,6 +90,7 @@ struct vtuner_adapter int firstdata; pthread_t eventthread, pumpthread; __u16 pidlist[30]; + fe_type_t fe_type; }; struct vtuner_adapter adapters[MAX_ADAPTERS]; @@ -294,6 +295,11 @@ void *event_proc(void *ptr) { case MSG_SET_FRONTEND: adapter->firstdata = 1; + if ((adapter->fe_type == FE_OFDM) && (message.body.dvb_frontend_parameters.u.ofdm.code_rate_HP != FEC_AUTO)) + { + message.body.dvb_frontend_parameters.u.ofdm.code_rate_HP = FEC_AUTO; + printf("[FE_SET_FRONTEND] OFDM CODE RATE HP SETTED AUTO\n", adapter->vtunerindex); + } ioctl(adapter->frontend, FE_SET_FRONTEND, &message.body.dvb_frontend_parameters); break; case MSG_GET_FRONTEND: @@ -585,6 +591,8 @@ int init_adapter(int id) goto error; } + adapter->fe_type = fe_info.type; + ioctl(adapter->vtuner, VTUNER_SET_NAME, adapter->name); ioctl(adapter->vtuner, VTUNER_SET_TYPE, type); ioctl(adapter->vtuner, VTUNER_SET_FE_INFO, &fe_info);