the scan should now work for scanning dish network .. they use the SDT OTHER
[enigma2.git] / lib / dvb / scan.h
index fe5e0686fadbbd11ccf620e6a83e2ccea65eba07..0f32d67862a11c1f40e2c5505e5c4e69c0340dea 100644 (file)
@@ -1,9 +1,10 @@
 #ifndef __lib_dvb_scan_h
 #define __lib_dvb_scan_h
 
-#include <dvbsi++/network_information_section.h>
 #include <dvbsi++/service_description_section.h>
+#include <dvbsi++/network_information_section.h>
 #include <dvbsi++/bouquet_association_section.h>
+#include <dvbsi++/program_association_section.h>
 #include <lib/dvb/idemux.h>
 #include <lib/dvb/esection.h>
 #include <lib/dvb/db.h>
@@ -31,8 +32,8 @@ private:
        RESULT nextChannel();
        
        RESULT startFilter();   
-       enum { readySDT=1, readyNIT=2, readyBAT=4,
-              validSDT=8, validNIT=16, validBAT=32};
+       enum { readyPAT=1, readySDT=2, readyNIT=4, readyBAT=8,
+              validPAT=16, validSDT=32, validNIT=64, validBAT=128};
 
                /* scan state variables */
        int m_channel_state;
@@ -49,11 +50,13 @@ private:
        ePtr<eTable<ServiceDescriptionSection> > m_SDT;
        ePtr<eTable<NetworkInformationSection> > m_NIT;
        ePtr<eTable<BouquetAssociationSection> > m_BAT;
-       
+       ePtr<eTable<ProgramAssociationSection> > m_PAT;
+               
        void SDTready(int err);
        void NITready(int err);
        void BATready(int err);
-       
+       void PATready(int err);
+               
        void addKnownGoodChannel(const eDVBChannelID &chid, iDVBFrontendParameters *feparm);
        void addChannelToScan(const eDVBChannelID &chid, iDVBFrontendParameters *feparm);
        int  sameChannel(iDVBFrontendParameters *ch1, iDVBFrontendParameters *ch2) const;
@@ -64,8 +67,9 @@ private:
        RESULT processSDT(eDVBNamespace dvbnamespace, const ServiceDescriptionSection &sdt);
        
        int m_flags;
+       bool m_usePAT;
 public:
-       eDVBScan(iDVBChannel *channel, bool debug=false);
+       eDVBScan(iDVBChannel *channel, bool usePAT=true, bool debug=true );
        ~eDVBScan();
 
        enum { scanNetworkSearch = 1, scanSearchBAT = 2, scanRemoveServices = 4, scanDontRemoveFeeds=8 };