X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/1cdf6cb021fcaa6548b90ba7b6765cf1e8b8b37b..4aa7b11f525aaa22b3ad6b0d247ea67f39b498de:/lib/dvb/scan.h diff --git a/lib/dvb/scan.h b/lib/dvb/scan.h index 96264e88..11d0efdc 100644 --- a/lib/dvb/scan.h +++ b/lib/dvb/scan.h @@ -1,26 +1,26 @@ #ifndef __lib_dvb_scan_h #define __lib_dvb_scan_h -#include -#include -#include -#include +#include +#include +#include +#include #include #include class eDVBScan: public Object, public iObject { -DECLARE_REF; +DECLARE_REF(eDVBScan); private: /* chid helper functions: */ /* heuristically determine if onid/tsid is valid */ - int isValidONIDTSID(eOriginalNetworkID onid, eTransportStreamID tsid); + int isValidONIDTSID(int orbital_position, eOriginalNetworkID onid, eTransportStreamID tsid); /* build dvb namespace */ eDVBNamespace buildNamespace(eOriginalNetworkID onid, eTransportStreamID tsid, unsigned long hash); /* scan resources */ - ePtr m_channel; + eUsePtr m_channel; ePtr m_demux; /* infrastructure */ @@ -31,42 +31,47 @@ private: RESULT nextChannel(); RESULT startFilter(); - enum { readySDT=1, readyNIT=2, readyBAT=4, readyAll=7, + enum { readySDT=1, readyNIT=2, readyBAT=4, validSDT=8, validNIT=16, validBAT=32}; /* scan state variables */ int m_channel_state; - int m_ready; + int m_ready, m_ready_all; std::map > m_new_channels; std::map > m_new_services; std::list > m_ch_toScan, m_ch_scanned, m_ch_unavailable; ePtr m_ch_current; + eDVBChannelID m_chid_current; - ePtr > m_SDT; - ePtr > m_NIT; - ePtr > m_BAT; + ePtr > m_SDT; + ePtr > m_NIT; + ePtr > m_BAT; void SDTready(int err); void NITready(int err); void BATready(int err); - void addChannel(const eDVBChannelID &chid, iDVBFrontendParameters *feparm); + void addKnownGoodChannel(const eDVBChannelID &chid, iDVBFrontendParameters *feparm); + void addChannelToScan(const eDVBChannelID &chid, iDVBFrontendParameters *feparm); int sameChannel(iDVBFrontendParameters *ch1, iDVBFrontendParameters *ch2) const; void channelDone(); Signal1 m_event; - RESULT processSDT(eDVBNamespace dvbnamespace, const ServiceDescriptionTable &sdt); + RESULT processSDT(eDVBNamespace dvbnamespace, const ServiceDescriptionSection &sdt); + + int m_flags; public: eDVBScan(iDVBChannel *channel); ~eDVBScan(); - void start(const std::list > &known_transponders); + enum { scanNetworkSearch = 1, scanSearchBAT = 2 }; + void start(const eSmartPtrList &known_transponders, int flags); enum { evtUpdate, evtFinish, evtFail }; - RESULT connectEvent(const Slot1 &event, ePtr &connection); + RESULT connectEvent(const Slot1 &event, ePtr &connection); void insertInto(iDVBChannelList *db); void getStats(int &transponders_done, int &transponders_total, int &services);