diff --git a/data/locale/english.locale b/data/locale/english.locale index 1f380ce5c..92606a58a 100644 --- a/data/locale/english.locale +++ b/data/locale/english.locale @@ -975,6 +975,8 @@ extra.tp_pol Polarization extra.tp.pol_v V extra.tp_pol_h H extra.tp_fec FEC +extra.fec_auto Auto DVB-S +extra.fec_auto_s2 Auto DVB-S2 extra.fec_1_2 1/2 extra.fec_2_3 2/3 extra.fec_3_4 3/4 @@ -1269,7 +1271,7 @@ extra.fec_s2_qpsk_3_5 3/5 s2 qpsk extra.fec_s2_qpsk_4_5 4/5 s2 qpsk extra.fec_s2_qpsk_9_10 9/10 s2 qpsk extra.fec_s2_8psk_1_2 1/2 s2 8psk -extra.fec_s2_8psk_2_3 3/2 s2 8psk +extra.fec_s2_8psk_2_3 2/3 s2 8psk extra.fec_s2_8psk_3_4 3/4 s2 8psk extra.fec_s2_8psk_5_6 5/6 s2 8psk extra.fec_s2_8psk_7_8 7/8 s2 8psk diff --git a/src/gui/motorcontrol.cpp b/src/gui/motorcontrol.cpp index ab5a45ad1..ff5002349 100644 --- a/src/gui/motorcontrol.cpp +++ b/src/gui/motorcontrol.cpp @@ -169,13 +169,13 @@ int CMotorControl::exec(CMenuTarget* parent, const std::string &) wasgrow = 1; } //if((last_snr > g_snr) && last_snr > 37000) - if(wasgrow && (last_snr > g_snr) && last_snr > 50) { + if(wasgrow && (last_snr > g_snr) /* && last_snr > 50*/) { //printf("Must stop rotor!!!\n"); g_Zapit->sendMotorCommand(0xE0, 0x31, 0x60, 0, 0, 0); moving = 0; paintStatus(); last_snr = 0; - g_Zapit->tune_TP(TP); + //g_Zapit->tune_TP(TP); } else last_snr = g_snr; } else @@ -198,7 +198,7 @@ int CMotorControl::exec(CMenuTarget* parent, const std::string &) printf("[motorcontrol] left/1 key received... drive/Step motor west, stepMode: %d\n", stepMode); motorStepWest(); paintStatus(); - g_Zapit->tune_TP(TP); + //g_Zapit->tune_TP(TP); break; case CRCInput::RC_red: @@ -207,7 +207,7 @@ int CMotorControl::exec(CMenuTarget* parent, const std::string &) g_Zapit->sendMotorCommand(0xE0, 0x31, 0x60, 0, 0, 0); moving = 0; paintStatus(); - g_Zapit->tune_TP(TP); + //g_Zapit->tune_TP(TP); break; case CRCInput::RC_3: @@ -215,7 +215,7 @@ int CMotorControl::exec(CMenuTarget* parent, const std::string &) printf("[motorcontrol] right/3 key received... drive/Step motor east, stepMode: %d\n", stepMode); motorStepEast(); paintStatus(); - g_Zapit->tune_TP(TP); + //g_Zapit->tune_TP(TP); break; case CRCInput::RC_4: @@ -223,13 +223,13 @@ int CMotorControl::exec(CMenuTarget* parent, const std::string &) if(g_settings.rotor_swap) lim_cmd = 0x66; else lim_cmd = 0x67; g_Zapit->sendMotorCommand(0xE1, 0x31, lim_cmd, 0, 0, 0); - g_Zapit->tune_TP(TP); + //g_Zapit->tune_TP(TP); break; case CRCInput::RC_5: printf("[motorcontrol] 5 key received... disable (soft) limits\n"); g_Zapit->sendMotorCommand(0xE0, 0x31, 0x63, 0, 0, 0); - g_Zapit->tune_TP(TP); + //g_Zapit->tune_TP(TP); break; case CRCInput::RC_6: @@ -237,7 +237,7 @@ int CMotorControl::exec(CMenuTarget* parent, const std::string &) if(g_settings.rotor_swap) lim_cmd = 0x67; else lim_cmd = 0x66; g_Zapit->sendMotorCommand(0xE1, 0x31, lim_cmd, 0, 0, 0); - g_Zapit->tune_TP(TP); + //g_Zapit->tune_TP(TP); break; case CRCInput::RC_7: @@ -245,19 +245,19 @@ int CMotorControl::exec(CMenuTarget* parent, const std::string &) g_Zapit->sendMotorCommand(0xE0, 0x31, 0x6B, 1, 0, 0); satellitePosition = 0; paintStatus(); - g_Zapit->tune_TP(TP); + //g_Zapit->tune_TP(TP); break; case CRCInput::RC_8: printf("[motorcontrol] 8 key received... enable (soft) limits\n"); g_Zapit->sendMotorCommand(0xE0, 0x31, 0x6A, 1, 0, 0); - g_Zapit->tune_TP(TP); + //g_Zapit->tune_TP(TP); break; case CRCInput::RC_9: printf("[motorcontrol] 9 key received... (re)-calculate positions\n"); g_Zapit->sendMotorCommand(0xE0, 0x31, 0x6F, 1, 0, 0); - g_Zapit->tune_TP(TP); + //g_Zapit->tune_TP(TP); break; case CRCInput::RC_plus: @@ -309,14 +309,14 @@ int CMotorControl::exec(CMenuTarget* parent, const std::string &) printf("[motorcontrol] left/1 key received... drive/Step motor west, stepMode: %d\n", stepMode); motorStepWest(); paintStatus(); - g_Zapit->tune_TP(TP); + //g_Zapit->tune_TP(TP); break; case CRCInput::RC_red: case CRCInput::RC_2: printf("[motorcontrol] 2 key received... halt motor\n"); g_Zapit->sendMotorCommand(0xE0, 0x31, 0x60, 0, 0, 0); - g_Zapit->tune_TP(TP); + //g_Zapit->tune_TP(TP); break; case CRCInput::RC_3: @@ -324,14 +324,14 @@ int CMotorControl::exec(CMenuTarget* parent, const std::string &) printf("[motorcontrol] right/3 key received... drive/Step motor east, stepMode: %d\n", stepMode); motorStepEast(); paintStatus(); - g_Zapit->tune_TP(TP); + //g_Zapit->tune_TP(TP); break; case CRCInput::RC_green: case CRCInput::RC_5: printf("[motorcontrol] 5 key received... store present satellite number: %d\n", motorPosition); g_Zapit->sendMotorCommand(0xE0, 0x31, 0x6A, 1, motorPosition, 0); - g_Zapit->tune_TP(TP); + //g_Zapit->tune_TP(TP); break; case CRCInput::RC_6: @@ -346,7 +346,7 @@ int CMotorControl::exec(CMenuTarget* parent, const std::string &) g_Zapit->sendMotorCommand(0xE0, 0x31, 0x6B, 1, motorPosition, 0); satellitePosition = 0; paintStatus(); - g_Zapit->tune_TP(TP); + //g_Zapit->tune_TP(TP); break; case CRCInput::RC_9: @@ -360,7 +360,7 @@ int CMotorControl::exec(CMenuTarget* parent, const std::string &) printf("[motorcontrol] up key received... increase satellite position: %d\n", ++motorPosition); satellitePosition = 0; paintStatus(); - g_Zapit->tune_TP(TP); + //g_Zapit->tune_TP(TP); break; case CRCInput::RC_minus: @@ -369,7 +369,7 @@ int CMotorControl::exec(CMenuTarget* parent, const std::string &) printf("[motorcontrol] down key received... decrease satellite position: %d\n", motorPosition); satellitePosition = 0; paintStatus(); - g_Zapit->tune_TP(TP); + //g_Zapit->tune_TP(TP); break; case CRCInput::RC_blue: diff --git a/src/neutrino_menue.cpp b/src/neutrino_menue.cpp index d95708221..0697d86af 100644 --- a/src/neutrino_menue.cpp +++ b/src/neutrino_menue.cpp @@ -812,32 +812,37 @@ const CMenuOptionChooser::keyval SATSETUP_DISEQC_OPTIONS[SATSETUP_DISEQC_OPTION_ { SMATV_REMOTE_TUNING, LOCALE_SATSETUP_SMATVREMOTE } }; -#define SATSETUP_SCANTP_FEC_COUNT 23 +#define SATSETUP_SCANTP_FEC_COUNT 21 #define CABLESETUP_SCANTP_FEC_COUNT 5 const CMenuOptionChooser::keyval SATSETUP_SCANTP_FEC[SATSETUP_SCANTP_FEC_COUNT] = { + { FEC_AUTO, LOCALE_SCANTP_FEC_AUTO }, + { FEC_S2_AUTO, LOCALE_SCANTP_FEC_AUTO_S2 }, + { FEC_1_2, LOCALE_SCANTP_FEC_1_2 }, { FEC_2_3, LOCALE_SCANTP_FEC_2_3 }, { FEC_3_4, LOCALE_SCANTP_FEC_3_4 }, { FEC_5_6, LOCALE_SCANTP_FEC_5_6 }, { FEC_7_8, LOCALE_SCANTP_FEC_7_8 }, + { FEC_S2_QPSK_1_2, LOCALE_FEC_S2_QPSK_1_2 }, { FEC_S2_QPSK_2_3, LOCALE_FEC_S2_QPSK_2_3 }, { FEC_S2_QPSK_3_4, LOCALE_FEC_S2_QPSK_3_4 }, { FEC_S2_QPSK_5_6, LOCALE_FEC_S2_QPSK_5_6 }, - { FEC_S2_QPSK_7_8, LOCALE_FEC_S2_QPSK_7_8 }, + //{ FEC_S2_QPSK_7_8, LOCALE_FEC_S2_QPSK_7_8 }, { FEC_S2_QPSK_8_9, LOCALE_FEC_S2_QPSK_8_9 }, { FEC_S2_QPSK_3_5, LOCALE_FEC_S2_QPSK_3_5 }, { FEC_S2_QPSK_4_5, LOCALE_FEC_S2_QPSK_4_5 }, { FEC_S2_QPSK_9_10, LOCALE_FEC_S2_QPSK_9_10 }, - { FEC_S2_8PSK_1_2, LOCALE_FEC_S2_8PSK_1_2 }, + + //{ FEC_S2_8PSK_1_2, LOCALE_FEC_S2_8PSK_1_2 }, { FEC_S2_8PSK_2_3, LOCALE_FEC_S2_8PSK_2_3 }, { FEC_S2_8PSK_3_4, LOCALE_FEC_S2_8PSK_3_4 }, - { FEC_S2_8PSK_5_6, LOCALE_FEC_S2_8PSK_5_6 }, - { FEC_S2_8PSK_7_8, LOCALE_FEC_S2_8PSK_7_8 }, - { FEC_S2_8PSK_8_9, LOCALE_FEC_S2_8PSK_8_9 }, { FEC_S2_8PSK_3_5, LOCALE_FEC_S2_8PSK_3_5 }, - { FEC_S2_8PSK_4_5, LOCALE_FEC_S2_8PSK_4_5 }, + { FEC_S2_8PSK_5_6, LOCALE_FEC_S2_8PSK_5_6 }, + //{ FEC_S2_8PSK_7_8, LOCALE_FEC_S2_8PSK_7_8 }, + { FEC_S2_8PSK_8_9, LOCALE_FEC_S2_8PSK_8_9 }, + //{ FEC_S2_8PSK_4_5, LOCALE_FEC_S2_8PSK_4_5 }, { FEC_S2_8PSK_9_10, LOCALE_FEC_S2_8PSK_9_10 } }; diff --git a/src/system/locals.h b/src/system/locals.h index 5b36aebaa..3d18836c7 100644 --- a/src/system/locals.h +++ b/src/system/locals.h @@ -1248,6 +1248,8 @@ typedef enum { LOCALE_EXTRA_POL_V, LOCALE_EXTRA_POL_H, LOCALE_EXTRA_FEC, + LOCALE_SCANTP_FEC_AUTO, + LOCALE_SCANTP_FEC_AUTO_S2, LOCALE_SCANTP_FEC_1_2, LOCALE_SCANTP_FEC_2_3, LOCALE_SCANTP_FEC_3_4, diff --git a/src/system/locals_intern.h b/src/system/locals_intern.h index 1cc24249c..13f2931f0 100644 --- a/src/system/locals_intern.h +++ b/src/system/locals_intern.h @@ -1248,6 +1248,8 @@ const char *locale_real_names[] = { "extra.tp.pol_v", "extra.tp_pol_h", "extra.tp_fec", + "extra.fec_auto", + "extra.fec_auto_s2", "extra.fec_1_2", "extra.fec_2_3", "extra.fec_3_4", diff --git a/src/zapit/include/zapit/frontend_c.h b/src/zapit/include/zapit/frontend_c.h index cbbf6d44c..e26491a3c 100644 --- a/src/zapit/include/zapit/frontend_c.h +++ b/src/zapit/include/zapit/frontend_c.h @@ -45,6 +45,7 @@ #define FEC_S2_8PSK_3_5 (fe_code_rate_t)(FEC_S2_8PSK_8_9+1) //25 #define FEC_S2_8PSK_4_5 (fe_code_rate_t)(FEC_S2_8PSK_3_5+1) //26 #define FEC_S2_8PSK_9_10 (fe_code_rate_t)(FEC_S2_8PSK_4_5+1) //27 +#define FEC_S2_AUTO (fe_code_rate_t)(FEC_S2_8PSK_9_10+1) //28 static inline fe_modulation_t dvbs_get_modulation(fe_code_rate_t fec) { diff --git a/src/zapit/src/descriptors.cpp b/src/zapit/src/descriptors.cpp index 4508d7e4a..a4b388214 100644 --- a/src/zapit/src/descriptors.cpp +++ b/src/zapit/src/descriptors.cpp @@ -400,10 +400,10 @@ void service_descriptor(const unsigned char * const buffer, const t_service_id s CZapitChannel *channel = NULL; bool tpchange = false; static transponder_id_t last_tpid = 0; - //scrambled - if(free_ca && scan_fta_flag){ - return; - } + //scrambled + if(free_ca && scan_fta_flag){ + return; + } service_type = fix_service_type(service_type); uint8_t real_type = service_type; diff --git a/src/zapit/src/frontend.cpp b/src/zapit/src/frontend.cpp index 3c3cadf24..086da256e 100644 --- a/src/zapit/src/frontend.cpp +++ b/src/zapit/src/frontend.cpp @@ -53,6 +53,15 @@ extern CEventServer *eventServer; #define WEST 1 #define USALS +#define FREQUENCY 1 +#define MODULATION 2 +#define INVERSION 3 +#define SYMBOL_RATE 4 +#define INNER_FEC 5 +#define DELIVERY_SYSTEM 6 +#define PILOTS 7 +#define ROLLOFF 8 + static struct dtv_property clr_cmdargs[] = { { DTV_CLEAR, {0,0,0}, { 0 },0 }, }; @@ -63,15 +72,14 @@ static struct dtv_properties clr_cmdseq = { /* stolen from dvb.c from vlc */ static struct dtv_property dvbs_cmdargs[] = { + { DTV_CLEAR, {0,0,0}, { 0 },0 }, { DTV_FREQUENCY, {0,0,0}, { 0 },0 }, - { DTV_MODULATION, {0,0,0}, { QPSK },0 }, + { DTV_MODULATION, {0,0,0}, { QPSK },0 }, { DTV_INVERSION, {0,0,0}, { INVERSION_AUTO },0 }, { DTV_SYMBOL_RATE, {0,0,0}, { 27500000 },0 }, - { DTV_VOLTAGE, {0,0,0}, { SEC_VOLTAGE_OFF },0 }, - { DTV_TONE, {0,0,0}, { SEC_TONE_OFF },0 }, { DTV_INNER_FEC, {0,0,0}, { FEC_AUTO },0 }, { DTV_DELIVERY_SYSTEM, {0,0,0}, { SYS_DVBS },0 }, - { DTV_TUNE,{0,0,0}, { 0 },0 }, + { DTV_TUNE, {0,0,0}, { 0 },0 }, }; static struct dtv_properties dvbs_cmdseq = { @@ -79,12 +87,11 @@ static struct dtv_properties dvbs_cmdseq = { }; static struct dtv_property dvbs2_cmdargs[] = { + { DTV_CLEAR, {0,0,0}, { 0 },0 }, { DTV_FREQUENCY, {}, { 0 },0 }, { DTV_MODULATION, {}, { PSK_8 } ,0}, { DTV_INVERSION, {}, { INVERSION_AUTO } ,0}, { DTV_SYMBOL_RATE, {}, { 27500000 } ,0}, - { DTV_VOLTAGE, {}, { SEC_VOLTAGE_OFF } ,0}, - { DTV_TONE, {}, { SEC_TONE_OFF } ,0}, { DTV_INNER_FEC, {}, { FEC_AUTO } ,0}, { DTV_DELIVERY_SYSTEM, {}, { SYS_DVBS2 } ,0}, { DTV_PILOT, {}, { PILOT_AUTO } ,0}, @@ -97,6 +104,7 @@ static struct dtv_properties dvbs2_cmdseq = { }; static struct dtv_property dvbc_cmdargs[] = { + { DTV_CLEAR, {0,0,0}, { 0 },0 }, { DTV_FREQUENCY, {}, { 0 } ,0}, { DTV_MODULATION, {}, { QAM_AUTO } ,0}, { DTV_INVERSION, {}, { INVERSION_AUTO } ,0}, @@ -109,16 +117,6 @@ static struct dtv_properties dvbc_cmdseq = { sizeof(dvbc_cmdargs) / sizeof(struct dtv_property), dvbc_cmdargs }; -#define FREQUENCY 0 -#define MODULATION 1 -#define INVERSION 2 -#define SYMBOL_RATE 3 -#define BANDWIDTH 3 -#define VOLTAGE 4 -#define TONE 5 -#define INNER_FEC 6 -#define PILOTS 8 -#define ROLLOFF 9 #define diff(x,y) (max(x,y) - min(x,y)) @@ -399,6 +397,7 @@ struct dvb_frontend_event CFrontend::getEvent(void) { struct dvb_frontend_event event; struct pollfd pfd; + static unsigned int timedout = 0; TIMER_INIT(); @@ -434,14 +433,16 @@ struct dvb_frontend_event CFrontend::getEvent(void) perror("CFrontend::getEvent ioctl"); continue; } - //printf("[fe0] poll events %d status %d\n", pfd.revents, event.status); + //printf("[fe0] poll events %d status %x\n", pfd.revents, event.status); if (event.status & FE_HAS_LOCK) { printf("[fe%d] ****************************** FE_HAS_LOCK: freq %lu\n", fenumber, (long unsigned int)event.parameters.frequency); tuned = true; break; } else if (event.status & FE_TIMEDOUT) { - printf("[fe%d] ############################## FE_TIMEDOUT\n", fenumber); + if(timedout < timer_msec) + timedout = timer_msec; + printf("[fe%d] ############################## FE_TIMEDOUT (max %d)\n", fenumber, timedout); /*break;*/ } else { if (event.status & FE_HAS_SIGNAL) @@ -645,6 +646,7 @@ int CFrontend::setFrontend(const struct dvb_frontend_parameters *feparams, bool default: printf("[fe0] DEMOD: unknown FEC: %d\n", fec_inner); case FEC_AUTO: + case FEC_S2_AUTO: fec = FEC_AUTO; break; } @@ -653,7 +655,7 @@ int CFrontend::setFrontend(const struct dvb_frontend_parameters *feparams, bool getDelSys(fec_inner, modulation, f, s, m); //printf("[fe0] DEMOD: FEC %s system %s modulation %s pilot %s\n", f, s, m, pilot == PILOT_ON ? "on" : "off"); - { + if(0) { //TIMER_INIT(); //TIMER_START(); if ((ioctl(fd, FE_SET_PROPERTY, &clr_cmdseq)) == -1) { @@ -674,8 +676,10 @@ int CFrontend::setFrontend(const struct dvb_frontend_parameters *feparams, bool } else { p = &dvbs_cmdseq; } +#if 0 // we set this before p->props[VOLTAGE].u.data = currentVoltage; p->props[TONE].u.data = currentToneMode; +#endif p->props[FREQUENCY].u.data = feparams->frequency; p->props[SYMBOL_RATE].u.data = feparams->u.qpsk.symbol_rate; p->props[INNER_FEC].u.data = fec; /*_inner*/ ; @@ -707,13 +711,13 @@ int CFrontend::setFrontend(const struct dvb_frontend_parameters *feparams, bool printf("[fe0] DEMOD: FEC %s system %s modulation %s pilot %s\n", f, s, m, pilot == PILOT_ON ? "on" : "off"); { - //TIMER_INIT(); - //TIMER_START(); - if ((ioctl(fd, FE_SET_PROPERTY, p)) == -1) { + TIMER_INIT(); + TIMER_START(); + if ((ioctl(fd, FE_SET_PROPERTY, p)) < 0) { perror("FE_SET_PROPERTY failed"); return false; } - //TIMER_STOP("[fe0] FE_SET_PROPERTY took"); + TIMER_STOP("[fe0] FE_SET_PROPERTY took"); } { TIMER_INIT(); @@ -859,6 +863,8 @@ void CFrontend::sendMotorCommand(uint8_t cmdtype, uint8_t address, uint8_t comma { struct dvb_diseqc_master_cmd cmd; int i; + fe_sec_tone_mode_t oldTone = currentToneMode; + fe_sec_voltage_t oldVoltage = currentVoltage; printf("[fe%d] sendMotorCommand: cmdtype = %x, address = %x, cmd = %x\n", fenumber, cmdtype, address, command); printf("[fe%d] sendMotorCommand: num_parms = %d, parm1 = %x, parm2 = %x\n", fenumber, num_parameters, parameter1, parameter2); @@ -869,12 +875,16 @@ void CFrontend::sendMotorCommand(uint8_t cmdtype, uint8_t address, uint8_t comma cmd.msg[3] = parameter1; cmd.msg[4] = parameter2; cmd.msg_len = 3 + num_parameters; - secSetVoltage(highVoltage ? SEC_VOLTAGE_18 : SEC_VOLTAGE_13, 15); - secSetTone(SEC_TONE_OFF, 25); + + //secSetVoltage(highVoltage ? SEC_VOLTAGE_18 : SEC_VOLTAGE_13, 15); + secSetVoltage(SEC_VOLTAGE_13, 15); + secSetTone(SEC_TONE_OFF, 15); for(i = 0; i <= repeat; i++) sendDiseqcCommand(&cmd, 50); + secSetVoltage(oldVoltage, 15); + secSetTone(oldTone, 15); printf("[fe%d] motor command sent.\n", fenumber); } @@ -1544,4 +1554,5 @@ void CFrontend::gotoXX(t_satellite_position pos) printf("RotorCmd = %04x\n", RotorCmd); sendMotorCommand(0xE0, 0x31, 0x6E, 2, ((RotorCmd & 0xFF00) / 0x100), RotorCmd & 0xFF, repeatUsals); + secSetVoltage(highVoltage ? SEC_VOLTAGE_18 : SEC_VOLTAGE_13, 15); //FIXME ? } diff --git a/src/zapit/src/sdt.cpp b/src/zapit/src/sdt.cpp index 7cefb24b9..350234807 100644 --- a/src/zapit/src/sdt.cpp +++ b/src/zapit/src/sdt.cpp @@ -30,6 +30,7 @@ #include #include #include +#include #include #define SDT_SIZE 1026 @@ -216,14 +217,14 @@ _repeat: return -1; } if(buffer[0] != 0x42) - printf("[SDT] ******************************************* Bogus section received: 0x%x\n", buffer[0]); + printf("[SDT] ******************************************* Bogus section received: 0x%x\n", buffer[0]); section_length = ((buffer[1] & 0x0F) << 8) | buffer[2]; if(cable_hack_done) { if( (transport_stream_id == ((buffer[3] << 8) | buffer[4])) && - (original_network_id == ((buffer[8] << 8) | buffer[9]))) - break; + (original_network_id == ((buffer[8] << 8) | buffer[9]))) + break; } else { transport_stream_id = (buffer[3] << 8) | buffer[4]; original_network_id = (buffer[8] << 8) | buffer[9]; @@ -250,104 +251,104 @@ _repeat: for (pos2 = pos + 5; pos2 < pos + descriptors_loop_length + 5; pos2 += buffer[pos2 + 1] + 2) { //printf("[sdt] descriptor %X\n", buffer[pos2]); switch (buffer[pos2]) { - case 0x0A: - ISO_639_language_descriptor(buffer + pos2); - break; + case 0x0A: + ISO_639_language_descriptor(buffer + pos2); + break; -/* case 0x40: - network_name_descriptor(buffer + pos2); - break; -*/ - case 0x42: - stuffing_descriptor(buffer + pos2); - break; + /* case 0x40: + network_name_descriptor(buffer + pos2); + break; + */ + case 0x42: + stuffing_descriptor(buffer + pos2); + break; - case 0x47: - bouquet_name_descriptor(buffer + pos2); - break; + case 0x47: + bouquet_name_descriptor(buffer + pos2); + break; - case 0x48: - service_descriptor(buffer + pos2, service_id, transport_stream_id, original_network_id, satellitePosition, freq, free_CA_mode); - break; + case 0x48: + service_descriptor(buffer + pos2, service_id, transport_stream_id, original_network_id, satellitePosition, freq, free_CA_mode); + break; - case 0x49: - country_availability_descriptor(buffer + pos2); - break; + case 0x49: + country_availability_descriptor(buffer + pos2); + break; - case 0x4A: - linkage_descriptor(buffer + pos2); - break; + case 0x4A: + linkage_descriptor(buffer + pos2); + break; - case 0x4B: - //NVOD_reference_descriptor(buffer + pos2); - break; + case 0x4B: + //NVOD_reference_descriptor(buffer + pos2); + break; - case 0x4C: - time_shifted_service_descriptor(buffer + pos2); - break; + case 0x4C: + time_shifted_service_descriptor(buffer + pos2); + break; - case 0x51: - mosaic_descriptor(buffer + pos2); - break; + case 0x51: + mosaic_descriptor(buffer + pos2); + break; - case 0x53: - CA_identifier_descriptor(buffer + pos2); - break; + case 0x53: + CA_identifier_descriptor(buffer + pos2); + break; - case 0x5D: - multilingual_service_name_descriptor(buffer + pos2); - break; + case 0x5D: + multilingual_service_name_descriptor(buffer + pos2); + break; - case 0x5F: - private_data_specifier_descriptor(buffer + pos2); - break; + case 0x5F: + private_data_specifier_descriptor(buffer + pos2); + break; - case 0x64: - data_broadcast_descriptor(buffer + pos2); - break; + case 0x64: + data_broadcast_descriptor(buffer + pos2); + break; - case 0x80: /* unknown, Eutelsat 13.0E */ - break; + case 0x80: /* unknown, Eutelsat 13.0E */ + break; - case 0x84: /* unknown, Eutelsat 13.0E */ - break; + case 0x84: /* unknown, Eutelsat 13.0E */ + break; - case 0x86: /* unknown, Eutelsat 13.0E */ - break; + case 0x86: /* unknown, Eutelsat 13.0E */ + break; - case 0x88: /* unknown, Astra 19.2E */ - break; + case 0x88: /* unknown, Astra 19.2E */ + break; - case 0xB2: /* unknown, Eutelsat 13.0E */ - break; + case 0xB2: /* unknown, Eutelsat 13.0E */ + break; - case 0xC0: /* unknown, Eutelsat 13.0E */ - break; + case 0xC0: /* unknown, Eutelsat 13.0E */ + break; - case 0xE4: /* unknown, Astra 19.2E */ - break; + case 0xE4: /* unknown, Astra 19.2E */ + break; - case 0xE5: /* unknown, Astra 19.2E */ - break; + case 0xE5: /* unknown, Astra 19.2E */ + break; - case 0xE7: /* unknown, Eutelsat 13.0E */ - break; + case 0xE7: /* unknown, Eutelsat 13.0E */ + break; - case 0xED: /* unknown, Astra 19.2E */ - break; + case 0xED: /* unknown, Astra 19.2E */ + break; - case 0xF8: /* unknown, Astra 19.2E */ - break; + case 0xF8: /* unknown, Astra 19.2E */ + break; - case 0xF9: /* unknown, Astra 19.2E */ - break; + case 0xF9: /* unknown, Astra 19.2E */ + break; - default: - /* - DBG("descriptor_tag: %02x\n", buffer[pos2]); - generic_descriptor(buffer + pos2); - */ - break; + default: + /* + DBG("descriptor_tag: %02x\n", buffer[pos2]); + generic_descriptor(buffer + pos2); + */ + break; } } } @@ -360,6 +361,9 @@ _repeat: } delete dmx; + sat_iterator_t sit = satellitePositions.find(satellitePosition); + if(sit != satellitePositions.end()) + sit->second.have_channels = true; return 0; }