mirror of
https://github.com/tuxbox-fork-migrations/recycled-ni-neutrino.git
synced 2025-09-01 09:51:13 +02:00
nit.cpp/.h: revert to old code
Origin commit data
------------------
Branch: ni/coolstream
Commit: 4aa1ca94d3
Author: [CST] Focus <focus.cst@gmail.com>
Date: 2012-01-23 (Mon, 23 Jan 2012)
------------------
No further description and justification available within origin commit message!
------------------
This commit was generated by Migit
This commit is contained in:
@@ -22,18 +22,6 @@
|
|||||||
#ifndef __zapit_nit_h__
|
#ifndef __zapit_nit_h__
|
||||||
#define __zapit_nit_h__
|
#define __zapit_nit_h__
|
||||||
|
|
||||||
typedef struct nit_thread_args {
|
int parse_nit(t_satellite_position satellitePosition, freq_id_t freq);
|
||||||
t_satellite_position satellitePosition;
|
|
||||||
freq_id_t freq;
|
|
||||||
unsigned short nid;
|
|
||||||
|
|
||||||
nit_thread_args(t_satellite_position SatellitePosition, freq_id_t Freq, unsigned short Nid = 0) {
|
|
||||||
satellitePosition = SatellitePosition;
|
|
||||||
freq = Freq;
|
|
||||||
nid = Nid;
|
|
||||||
}
|
|
||||||
} nit_thread_args_t;
|
|
||||||
|
|
||||||
int parse_nit(t_satellite_position satellitePosition, freq_id_t freq, unsigned short nid = 0);
|
|
||||||
|
|
||||||
#endif /* __zapit_nit_h__ */
|
#endif /* __zapit_nit_h__ */
|
||||||
|
@@ -35,9 +35,10 @@ extern short abort_scan;
|
|||||||
|
|
||||||
void *nit_thread(void * data)
|
void *nit_thread(void * data)
|
||||||
{
|
{
|
||||||
nit_thread_args_t *threadArgs = (nit_thread_args_t *)data;
|
int satellitePosition = (int) data;
|
||||||
|
|
||||||
printf("[scan] trying to parse NIT\n");
|
printf("[scan] trying to parse NIT\n");
|
||||||
int status = parse_nit(threadArgs->satellitePosition, threadArgs->freq, threadArgs->nid);
|
int status = parse_nit(satellitePosition, 0);
|
||||||
if(status < 0)
|
if(status < 0)
|
||||||
printf("[scan] NIT failed !\n");
|
printf("[scan] NIT failed !\n");
|
||||||
else
|
else
|
||||||
@@ -46,19 +47,16 @@ void *nit_thread(void * data)
|
|||||||
pthread_exit(NULL);
|
pthread_exit(NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
int parse_nit(t_satellite_position satellitePosition, freq_id_t freq, unsigned short nid)
|
int parse_nit(t_satellite_position satellitePosition, freq_id_t freq)
|
||||||
{
|
{
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
int secdone[2][255];
|
int secdone[255];
|
||||||
int sectotal[2] = { -1, -1 };
|
int sectotal = -1;
|
||||||
int nit_index = 0;
|
|
||||||
|
|
||||||
for(int i = 0; i < 2; i++) {
|
for(int i = 0; i < 255; i++)
|
||||||
for (int j = 0; j < 255; j++)
|
secdone[i] = 0;
|
||||||
secdone[i][j] = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
cDemux * dmx = new cDemux();
|
cDemux * dmx = new cDemux();;
|
||||||
dmx->Open(DMX_PSI_CHANNEL);
|
dmx->Open(DMX_PSI_CHANNEL);
|
||||||
|
|
||||||
unsigned char buffer[NIT_SIZE];
|
unsigned char buffer[NIT_SIZE];
|
||||||
@@ -84,15 +82,7 @@ int parse_nit(t_satellite_position satellitePosition, freq_id_t freq, unsigned s
|
|||||||
|
|
||||||
filter[0] = 0x40;
|
filter[0] = 0x40;
|
||||||
//filter[4] = 0x00;
|
//filter[4] = 0x00;
|
||||||
mask[0] = (nid != 0) ? 0xFE : 0xFF; // in case we have network ID we also want the 'other' tables
|
mask[0] = 0xFF;
|
||||||
|
|
||||||
if (nid) { // filter for the network ID
|
|
||||||
filter[1] = (nid >> 8) & 0xff;
|
|
||||||
filter[2] = (nid >> 0) & 0xff;
|
|
||||||
mask[1] = 0xff;
|
|
||||||
mask[2] = 0xff;
|
|
||||||
}
|
|
||||||
|
|
||||||
//mask[4] = 0xFF;
|
//mask[4] = 0xFF;
|
||||||
//unsigned char sec = 0x00;
|
//unsigned char sec = 0x00;
|
||||||
|
|
||||||
@@ -100,44 +90,34 @@ int parse_nit(t_satellite_position satellitePosition, freq_id_t freq, unsigned s
|
|||||||
delete dmx;
|
delete dmx;
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
do {
|
do {
|
||||||
if (dmx->Read(buffer, NIT_SIZE) < 0) {
|
if (dmx->Read(buffer, NIT_SIZE) < 0) {
|
||||||
delete dmx;
|
delete dmx;
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (CServiceScan::getInstance()->Aborted()) {
|
if (CServiceScan::getInstance()->Aborted()) {
|
||||||
ret = -1;
|
ret = -1;
|
||||||
goto _return;
|
goto _return;
|
||||||
}
|
}
|
||||||
|
if(buffer[0] != 0x40)
|
||||||
if ((buffer[0] != 0x40) && ((nid > 0) && (buffer[0] != 0x41))) {
|
printf("[NIT] ******************************************* Bogus section received: 0x%x\n", buffer[0]);
|
||||||
// NIT actual or NIT other
|
|
||||||
printf("[NIT] ******************************************* Bogus section received: 0x%x\n", buffer[0]);
|
|
||||||
ret = -1;
|
|
||||||
goto _return;
|
|
||||||
}
|
|
||||||
|
|
||||||
nit_index = buffer[0] & 1;
|
|
||||||
section_length = ((buffer[1] & 0x0F) << 8) + buffer[2];
|
section_length = ((buffer[1] & 0x0F) << 8) + buffer[2];
|
||||||
network_id = ((buffer[3] << 8)| buffer [4]);
|
network_id = ((buffer[3] << 8)| buffer [4]);
|
||||||
network_descriptors_length = ((buffer[8] & 0x0F) << 8) | buffer[9];
|
network_descriptors_length = ((buffer[8] & 0x0F) << 8) | buffer[9];
|
||||||
unsigned char secnum = buffer[6];
|
unsigned char secnum = buffer[6];
|
||||||
printf("[NIT] section %X last %X network_id 0x%x -> %s\n", secnum, buffer[7], network_id, secdone[nit_index][secnum] ? "skip" : "use");
|
printf("[NIT] section %X last %X network_id 0x%x -> %s\n", secnum, buffer[7], network_id, secdone[secnum] ? "skip" : "use");
|
||||||
if(secdone[nit_index][secnum]) // mark sec XX done
|
if(secdone[secnum]) // mark sec XX done
|
||||||
continue;
|
continue;
|
||||||
secdone[nit_index][secnum] = 1;
|
secdone[secnum] = 1;
|
||||||
sectotal[nit_index]++;
|
sectotal++;
|
||||||
for (pos = 10; pos < network_descriptors_length + 10; pos += buffer[pos + 1] + 2)
|
for (pos = 10; pos < network_descriptors_length + 10; pos += buffer[pos + 1] + 2)
|
||||||
{
|
{
|
||||||
switch (buffer[pos])
|
switch (buffer[pos])
|
||||||
{
|
{
|
||||||
/*
|
/* case 0x0F:
|
||||||
case 0x0F:
|
Private_data_indicator_descriptor(buffer + pos);
|
||||||
Private_data_indicator_descriptor(buffer + pos);
|
break;
|
||||||
break;
|
*/
|
||||||
*/
|
|
||||||
case 0x40:
|
case 0x40:
|
||||||
network_name_descriptor(buffer + pos);
|
network_name_descriptor(buffer + pos);
|
||||||
break;
|
break;
|
||||||
@@ -149,11 +129,11 @@ int parse_nit(t_satellite_position satellitePosition, freq_id_t freq, unsigned s
|
|||||||
case 0x5B:
|
case 0x5B:
|
||||||
multilingual_network_name_descriptor(buffer + pos);
|
multilingual_network_name_descriptor(buffer + pos);
|
||||||
break;
|
break;
|
||||||
/*
|
|
||||||
case 0x5F:
|
/* case 0x5F:
|
||||||
private_data_specifier_descriptor(buffer + pos);
|
private_data_specifier_descriptor(buffer + pos);
|
||||||
break;
|
break;
|
||||||
*/
|
*/
|
||||||
case 0x80: /* unknown, Eutelsat 13.0E */
|
case 0x80: /* unknown, Eutelsat 13.0E */
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@@ -234,7 +214,7 @@ int parse_nit(t_satellite_position satellitePosition, freq_id_t freq, unsigned s
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} while(sectotal[nit_index] < buffer[7]);
|
} while(sectotal < buffer[7]);
|
||||||
//} while (filter[4]++ != buffer[7]);
|
//} while (filter[4]++ != buffer[7]);
|
||||||
_return:
|
_return:
|
||||||
dmx->Stop();
|
dmx->Stop();
|
||||||
|
Reference in New Issue
Block a user