fixes for /dev/misc/pvr opening problems in some conditions
[enigma2.git] / lib / dvb / frontend.h
index bbfd174d53d340f8f5289fcdb2edc3dd4fb81b49..b6e3b6a4299d734e7271604e206438cea0acd8fc 100644 (file)
@@ -13,25 +13,29 @@ class eDVBFrontendParameters: public iDVBFrontendParameters
                eDVBFrontendParametersTerrestrial terrestrial;
        };
        int m_type;
+       int m_flags;
 public:
        eDVBFrontendParameters();
        ~eDVBFrontendParameters()
        {
        }
 
-       RESULT getSystem(int &type) const;
-       RESULT getDVBS(eDVBFrontendParametersSatellite &) const;
-       RESULT getDVBC(eDVBFrontendParametersCable &) const;
-       RESULT getDVBT(eDVBFrontendParametersTerrestrial &) const;
+       SWIG_VOID(RESULT) getSystem(int &SWIG_OUTPUT) const;
+       SWIG_VOID(RESULT) getDVBS(eDVBFrontendParametersSatellite &SWIG_OUTPUT) const;
+       SWIG_VOID(RESULT) getDVBC(eDVBFrontendParametersCable &SWIG_OUTPUT) const;
+       SWIG_VOID(RESULT) getDVBT(eDVBFrontendParametersTerrestrial &SWIG_OUTPUT) const;
 
        RESULT setDVBS(const eDVBFrontendParametersSatellite &p, bool no_rotor_command_on_tune=false);
        RESULT setDVBC(const eDVBFrontendParametersCable &p);
        RESULT setDVBT(const eDVBFrontendParametersTerrestrial &p);
-
+       SWIG_VOID(RESULT) getFlags(unsigned int &SWIG_NAMED_OUTPUT(flags)) const { flags = m_flags; return 0; }
+       RESULT setFlags(unsigned int flags) { m_flags = flags; return 0; }
+#ifndef SWIG
        RESULT calculateDifference(const iDVBFrontendParameters *parm, int &, bool exact) const;
 
        RESULT getHash(unsigned long &) const;
        RESULT calcLockTimeout(unsigned int &) const;
+#endif
 };
 
 #ifndef SWIG
@@ -43,6 +47,9 @@ class eDVBFrontend: public iDVBFrontend, public Object
 {
 public:
        enum {
+               NEW_CSW,
+               NEW_UCSW,
+               NEW_TONEBURST,
                CSW,                  // state of the committed switch
                UCSW,                 // state of the uncommitted switch
                TONEBURST,            // current state of toneburst switch
@@ -56,17 +63,20 @@ public:
                FREQ_OFFSET,          // current frequency offset
                CUR_VOLTAGE,          // current voltage
                CUR_TONE,             // current continuous tone
+               SATCR,                // current SatCR
                NUM_DATA_ENTRIES
        };
        Signal1<void,iDVBFrontend*> m_stateChanged;
 private:
        DECLARE_REF(eDVBFrontend);
+       bool m_simulate;
        bool m_enabled;
        int m_type;
        int m_dvbid;
        int m_slotid;
        int m_fd;
        bool m_need_rotor_workaround;
+       bool m_can_handle_dvbs2;
        char m_filename[128];
        char m_description[128];
 #if HAVE_DVB_API_VERSION < 3
@@ -74,12 +84,13 @@ private:
        char m_sec_filename[128];
 #endif
        FRONTENDPARAMETERS parm;
+       int m_cur_orbpos; // only valid when this is a DVB-S tuner
+       int m_cur_pol; // only valid when this is a DVB-S tuner
        int m_state;
        ePtr<iDVBSatelliteEquipmentControl> m_sec;
-       eSocketNotifier *m_sn;
+       ePtr<eSocketNotifier> m_sn;
        int m_tuning;
-       eTimer *m_timeout;
-       eTimer *m_tuneTimer;
+       ePtr<eTimer> m_timeout, m_tuneTimer;
 
        eSecCommandList m_sec_sequence;
 
@@ -96,10 +107,9 @@ private:
        void tuneLoop();  // called by m_tuneTimer
        void setFrontend();
        bool setSecSequencePos(int steps);
-       void setRotorData(int pos, int cmd);
        static int PriorityOrder;
 public:
-       eDVBFrontend(int adap, int fe, int &ok);        
+       eDVBFrontend(int adap, int fe, int &ok, bool simulate=false);
        virtual ~eDVBFrontend();
 
        int readInputpower();
@@ -132,8 +142,12 @@ public:
        static int getTypePriorityOrder() { return PriorityOrder; }
 
        int openFrontend();
-       int closeFrontend();
+       int closeFrontend(bool force=false);
        const char *getDescription() const { return m_description; }
+       bool is_simulate() const { return m_simulate; }
+
+       RESULT turnOffSatCR(int satcr);
+       RESULT ScanSatCR();
 };
 
 #endif // SWIG