X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/3e3832c8784e966dca29354c158ffb636f33c8cb..e7e5b70162a6e74d7ee293495635c79660e0f7a8:/lib/dvb/scan.h diff --git a/lib/dvb/scan.h b/lib/dvb/scan.h index 6dcbe707..9f0dd6ef 100644 --- a/lib/dvb/scan.h +++ b/lib/dvb/scan.h @@ -5,14 +5,26 @@ #include #include #include +#include + #include #include #include +struct service +{ + service(unsigned short pmtPid) + :pmtPid(pmtPid), serviceType(0xFF), scrambled(false) + { + } + unsigned short pmtPid; + unsigned char serviceType; + bool scrambled; +}; + class eDVBScan: public Object, public iObject { -DECLARE_REF(eDVBScan); -private: + DECLARE_REF(eDVBScan); /* chid helper functions: */ /* heuristically determine if onid/tsid is valid */ @@ -38,25 +50,35 @@ private: /* scan state variables */ int m_channel_state; int m_ready, m_ready_all; - + + std::map m_corrected_frequencys; // yet just used for DVB-T + std::map > m_new_channels; std::map > m_new_services; std::map >::iterator m_last_service; - + + std::map m_pmts_to_read; + std::map::iterator m_pmt_in_progress; + bool m_pmt_running; + bool m_abort_current_pmt; + std::list > m_ch_toScan, m_ch_scanned, m_ch_unavailable; ePtr m_ch_current; eDVBChannelID m_chid_current; - + eTransportStreamID m_pat_tsid; + ePtr > m_SDT; ePtr > m_NIT; ePtr > m_BAT; ePtr > m_PAT; - + ePtr > m_PMT; + void SDTready(int err); void NITready(int err); void BATready(int err); void PATready(int err); - + void PMTready(int err); + void addKnownGoodChannel(const eDVBChannelID &chid, iDVBFrontendParameters *feparm); void addChannelToScan(const eDVBChannelID &chid, iDVBFrontendParameters *feparm); @@ -69,6 +91,7 @@ private: int m_flags; bool m_usePAT; + bool m_scan_debug; public: eDVBScan(iDVBChannel *channel, bool usePAT=true, bool debug=true ); ~eDVBScan(); @@ -76,7 +99,8 @@ public: enum { scanNetworkSearch = 1, scanSearchBAT = 2, scanRemoveServices = 4, scanDontRemoveFeeds = 8, - clearToScanOnFirstNIT = 16 }; + scanDontRemoveUnscanned = 16, + clearToScanOnFirstNIT = 32, scanOnlyFree = 64 }; void start(const eSmartPtrList &known_transponders, int flags); @@ -88,6 +112,7 @@ public: void getLastServiceName(std::string &name); RESULT getFrontend(ePtr &); RESULT getCurrentTransponder(ePtr &); + eDVBChannelID getCurrentChannelID() { return m_chid_current; } }; #endif