dvb: some minor corrections to nit scanning.

This commit is contained in:
Adam Sutton 2013-02-11 17:11:42 +00:00
parent 8f49909e9e
commit 920a0a802c
2 changed files with 16 additions and 9 deletions

View file

@ -206,7 +206,7 @@ dvb_mux_create(th_dvb_adapter_t *tda, const struct dvb_mux_conf *dmc,
tdmi->tdmi_network_id = onid;
save = 1;
}
if(network && strcmp(tdmi->tdmi_network ?: "", network)) {
if(network && *network && strcmp(tdmi->tdmi_network ?: "", network)) {
free(tdmi->tdmi_network);
tdmi->tdmi_network = strdup(network);
save = 1;
@ -848,6 +848,9 @@ dvb_mux_set_networkname(th_dvb_mux_instance_t *tdmi, const char *networkname)
{
htsmsg_t *m;
if (!networkname || !*networkname)
return;
free(tdmi->tdmi_network);
tdmi->tdmi_network = strdup(networkname);
dvb_mux_save(tdmi);

View file

@ -878,6 +878,11 @@ dvb_nit_callback(th_dvb_mux_instance_t *tdmi, uint8_t *ptr, int len,
uint16_t network_id = (ptr[0] << 8) | ptr[1];
netname[0] = '\0';
TRACE("nit", "tableid 0x%02x", tableid);
#if TDT_TRACE
hexdump("nit", ptr, len);
#endif
/* Check NID */
if(tdmi->tdmi_adapter->tda_nitoid &&
tdmi->tdmi_adapter->tda_nitoid != network_id)
@ -898,10 +903,14 @@ dvb_nit_callback(th_dvb_mux_instance_t *tdmi, uint8_t *ptr, int len,
dtag = ptr[0];
dlen = ptr[1];
TRACE("nit", "dtag %02X dlen %d", dtag, dlen);
switch(dtag) {
case DVB_DESC_NETWORK_NAME:
if(dvb_get_string(netname, sizeof(netname), ptr+2, dlen, NULL, NULL))
return -1;
if(tableid == 0x40 && (!tdmi->tdmi_network || *tdmi->tdmi_network == '\0'))
dvb_mux_set_networkname(tdmi, netname);
break;
}
@ -934,6 +943,8 @@ dvb_nit_callback(th_dvb_mux_instance_t *tdmi, uint8_t *ptr, int len,
dtag = ptr[0];
dlen = ptr[1];
TRACE("nit", " dtag %02X dlen %d", dtag, dlen);
switch(dtag) {
case DVB_DESC_SAT:
if(tdmi->tdmi_adapter->tda_type == FE_QPSK)
@ -1133,14 +1144,7 @@ dvb_table_add_default_dvb(th_dvb_mux_instance_t *tdmi)
{
/* Network Information Table */
int table;
if(tdmi->tdmi_adapter->tda_nitoid) {
table = 0x41;
} else {
table = 0x40;
}
tdt_add(tdmi, table, 0xff, dvb_nit_callback, NULL, "nit",
tdt_add(tdmi, 0, 0, dvb_nit_callback, NULL, "nit",
TDT_QUICKREQ | TDT_CRC, 0x10);
/* Service Descriptor Table and Bouqeut Allocation Table */