git.cweiske.de
/
enigma2.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
finish dvb-s2 fec stuff
[enigma2.git]
/
lib
/
dvb
/
scan.cpp
diff --git
a/lib/dvb/scan.cpp
b/lib/dvb/scan.cpp
index 17c6b5c2b170eadfc9fe67e2b0a69b71dd96f907..89c4735ad1cd914de8158aa417551767ce71cdd5 100644
(file)
--- a/
lib/dvb/scan.cpp
+++ b/
lib/dvb/scan.cpp
@@
-15,19
+15,18
@@
#include <lib/base/eerror.h>
#include <lib/base/estring.h>
#include <errno.h>
#include <lib/base/eerror.h>
#include <lib/base/estring.h>
#include <errno.h>
-#include <set>
-#define SCAN_eDebug(x...) eDebug(x)
-#define SCAN_eDebugNoNewLine(x...) eDebugNoNewLine(x)
+static bool scan_debug;
+#define SCAN_eDebug(x...) do { if (scan_debug) eDebug(x); } while(0)
+#define SCAN_eDebugNoNewLine(x...) do { if (scan_debug) eDebugNoNewLine(x); } while(0)
DEFINE_REF(eDVBScan);
DEFINE_REF(eDVBScan);
-eDVBScan::eDVBScan(iDVBChannel *channel): m_channel(channel)
+eDVBScan::eDVBScan(iDVBChannel *channel, bool debug)
+ :m_channel(channel), m_channel_state(iDVBChannel::state_idle)
+ ,m_ready(0), m_ready_all(readySDT), m_flags(0)
{
{
- m_ready = m_flags = 0;
- m_ready_all = readySDT;
- m_channel_state = iDVBChannel::state_idle;
-
+ scan_debug=debug;
if (m_channel->getDemux(m_demux))
SCAN_eDebug("scan: failed to allocate demux!");
m_channel->connectStateChange(slot(*this, &eDVBScan::stateChange), m_stateChanged_connection);
if (m_channel->getDemux(m_demux))
SCAN_eDebug("scan: failed to allocate demux!");
m_channel->connectStateChange(slot(*this, &eDVBScan::stateChange), m_stateChanged_connection);
@@
-257,13
+256,12
@@
void eDVBScan::channelDone()
{
unsigned long hash = 0;
{
unsigned long hash = 0;
- ePtr<iDVBFrontendParameters> p = m_ch_current;
-
- if (!p) // used in sdt scan
- m_channel->getCurrentFrontendParameters(p);
-
- p->getHash(hash);
+ // m_ch_current is not set, when eDVBScan is just used for a SDT update
+ if (!m_ch_current)
+ m_channel->getCurrentFrontendParameters(m_ch_current);
+ m_ch_current->getHash(hash);
+
eDVBNamespace dvbnamespace = buildNamespace(
(**m_SDT->getSections().begin()).getOriginalNetworkId(),
(**m_SDT->getSections().begin()).getTransportStreamId(),
eDVBNamespace dvbnamespace = buildNamespace(
(**m_SDT->getSections().begin()).getOriginalNetworkId(),
(**m_SDT->getSections().begin()).getTransportStreamId(),
@@
-394,16
+392,12
@@
void eDVBScan::channelDone()
here, and not before.
*/
here, and not before.
*/
- ePtr<iDVBFrontendParameters> p = m_ch_current;
- if (!p)
- m_channel->getCurrentFrontendParameters(p);
-
if (!m_chid_current)
eWarning("SCAN: the current channel's ID was not corrected - not adding channel.");
else
if (!m_chid_current)
eWarning("SCAN: the current channel's ID was not corrected - not adding channel.");
else
- addKnownGoodChannel(m_chid_current,
p
);
-
- m_ch_scanned.push_back(
p
);
+ addKnownGoodChannel(m_chid_current,
m_ch_current
);
+
+ m_ch_scanned.push_back(
m_ch_current
);
nextChannel();
}
nextChannel();
}
@@
-535,7
+529,8
@@
void eDVBScan::insertInto(iDVBChannelList *db, bool dontRemoveOldFlags)
dvb_service->m_service_name_sort = service->second->m_service_name_sort;
}
dvb_service->m_provider_name = service->second->m_provider_name;
dvb_service->m_service_name_sort = service->second->m_service_name_sort;
}
dvb_service->m_provider_name = service->second->m_provider_name;
-
+ if (service->second->m_ca.size())
+ dvb_service->m_ca = service->second->m_ca;
if (!dontRemoveOldFlags) // do not remove new found flags when not wished
dvb_service->m_flags &= ~eDVBService::dxNewFound;
}
if (!dontRemoveOldFlags) // do not remove new found flags when not wished
dvb_service->m_flags &= ~eDVBService::dxNewFound;
}
@@
-595,7
+590,7
@@
RESULT eDVBScan::processSDT(eDVBNamespace dvbnamespace, const ServiceDescription
for (CaSystemIdList::const_iterator i(caids.begin()); i != caids.end(); ++i)
{
SCAN_eDebugNoNewLine("%04x ", *i);
for (CaSystemIdList::const_iterator i(caids.begin()); i != caids.end(); ++i)
{
SCAN_eDebugNoNewLine("%04x ", *i);
- service->m_ca.
inser
t(*i);
+ service->m_ca.
push_fron
t(*i);
}
SCAN_eDebug("");
break;
}
SCAN_eDebug("");
break;