Explicit fec for upcoming drivers; Little fixes

git-svn-id: file:///home/bas/coolstream_public_svn/THIRDPARTY/applications/neutrino-experimental@537 e54a6e83-5905-42d5-8d5c-058d10e6a962
This commit is contained in:
focus
2010-04-04 17:23:59 +00:00
parent 461432a941
commit 03b56ffd1c
9 changed files with 158 additions and 131 deletions

View File

@@ -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

View File

@@ -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:

View File

@@ -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 }
};

View File

@@ -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,

View File

@@ -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",

View File

@@ -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)
{

View File

@@ -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;

View File

@@ -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 ?
}

View File

@@ -30,6 +30,7 @@
#include <zapit/types.h>
#include <zapit/bouquets.h>
#include <zapit/frontend_c.h>
#include <zapit/satconfig.h>
#include <dmx_cs.h>
#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;
}