+ "DeviceDVBInput::dvb_open bad table index=%d\n", table);
+ ret = 2;
+ break;
+ }
+ }
+
+ if( !ret && ioctl(frontend_fd, FE_SET_FRONTEND, &frontend_param) < 0 ) {
+ fprintf(stderr,
+ "DeviceDVBInput::dvb_open FE_SET_FRONTEND frequency=%d: %s\n",
+ frontend_param.frequency, strerror(errno));
+ ret = 2;
+ }
+#endif
+
+ if( !ret && wait_signal(333,3) ) {
+ fprintf(stderr,
+ "DeviceDVBInput::dvb_open: no signal, index=%d, channel %s, frequency=%d\n",
+ index, chanlists[table].list[index].name, frontend_param.frequency);
+ ret = 2;
+ }
+
+ if( !ret && ioctl(frontend_fd, FE_GET_FRONTEND, &frontend_param) ) {
+ fprintf(stderr,
+ "DeviceDVBInput::dvb_open FE_GET_FRONTEND: %s\n",
+ strerror(errno));
+ ret = 2;
+ }
+ if( !ret ) { // goofy quirks
+ if( !strcmp("Samsung S5H1409 QAM/8VSB Frontend", fe_info.name) ) {
+ switch(frontend_param.u.vsb.modulation) {
+ case QAM_64: snr_min = 200; snr_max = 300; break;
+ case QAM_256: snr_min = 260; snr_max = 400; break;
+ case VSB_8: snr_min = 111; snr_max = 300; break;
+ default: break;
+ }
+ pwr_min = snr_min; pwr_max = snr_max;
+ }
+ else if( !strcmp("Auvitek AU8522 QAM/8VSB Frontend", fe_info.name) ) {
+ switch(frontend_param.u.vsb.modulation) {
+ case QAM_64: snr_min = 190; snr_max = 290; break;
+ case QAM_256: snr_min = 280; snr_max = 400; break;
+ case VSB_8: snr_min = 115; snr_max = 270; break;
+ default: break;
+ }
+ pwr_min = snr_min; pwr_max = snr_max;