[FCC] Fix to perform normal decoding for usb tuner on FCC mode.
[vuplus_dvbapp] / lib / dvb / frontend.h
index 5887f40..c7eb149 100644 (file)
@@ -47,6 +47,9 @@ class eDVBFrontend: public iDVBFrontend, public Object
 {
 public:
        enum {
+               LINKABLE_CSW,
+               LINKABLE_UCSW,
+               LINKABLE_TONEBURST,
                NEW_CSW,
                NEW_UCSW,
                NEW_TONEBURST,
@@ -64,6 +67,8 @@ public:
                CUR_VOLTAGE,          // current voltage
                CUR_TONE,             // current continuous tone
                SATCR,                // current SatCR
+               DICTION,              // current diction
+               PIN,                  // pin 
                NUM_DATA_ENTRIES
        };
        Signal1<void,iDVBFrontend*> m_stateChanged;
@@ -71,14 +76,15 @@ private:
        DECLARE_REF(eDVBFrontend);
        bool m_simulate;
        bool m_enabled;
-       int m_type;
+       bool m_fbc;
+       bool m_is_usbtuner;
        eDVBFrontend *m_simulate_fe; // only used to set frontend type in dvb.cpp
        int m_dvbid;
        int m_slotid;
        int m_fd;
        bool m_rotor_mode;
        bool m_need_rotor_workaround;
-       bool m_can_handle_dvbs2;
+       std::map<fe_delivery_system_t, bool> m_delsys, m_delsys_whitelist;
        char m_filename[128];
        char m_description[128];
 #if HAVE_DVB_API_VERSION < 3
@@ -86,11 +92,7 @@ private:
        char m_sec_filename[128];
 #endif
        FRONTENDPARAMETERS parm;
-       union {
-               eDVBFrontendParametersSatellite sat;
-               eDVBFrontendParametersCable cab;
-               eDVBFrontendParametersTerrestrial ter;
-       } oparm;
+       eDVBFrontendParameters oparm;
 
        int m_state;
        ePtr<iDVBSatelliteEquipmentControl> m_sec;
@@ -115,12 +117,12 @@ private:
        void setFrontend(bool recvEvents=true);
        bool setSecSequencePos(int steps);
        static int PriorityOrder;
+       static int PreferredFrontendIndex;
 public:
        eDVBFrontend(int adap, int fe, int &ok, bool simulate=false, eDVBFrontend *simulate_fe=NULL);
        virtual ~eDVBFrontend();
 
        int readInputpower();
-       RESULT getFrontendType(int &type);
        RESULT tune(const iDVBFrontendParameters &where);
        RESULT prepare_sat(const eDVBFrontendParametersSatellite &, unsigned int timeout);
        RESULT prepare_cable(const eDVBFrontendParametersCable &);
@@ -147,12 +149,24 @@ public:
        bool setSlotInfo(ePyObject obj); // get a tuple (slotid, slotdescr)
        static void setTypePriorityOrder(int val) { PriorityOrder = val; }
        static int getTypePriorityOrder() { return PriorityOrder; }
+       static void setPreferredFrontend(int index) { PreferredFrontendIndex = index; }
+       static int getPreferredFrontend() { return PreferredFrontendIndex; }
+
+       bool supportsDeliverySystem(const fe_delivery_system_t &sys, bool obeywhitelist);
+       void setDeliverySystemWhitelist(const std::vector<fe_delivery_system_t> &whitelist);
 
        void reopenFrontend();
        int openFrontend();
        int closeFrontend(bool force=false, bool no_delayed=false);
        const char *getDescription() const { return m_description; }
        bool is_simulate() const { return m_simulate; }
+       bool is_FBCTuner() { return m_fbc; }
+       void setFBCTuner(bool enable) { m_fbc = enable; }
+       bool getEnabled() { return m_enabled; }
+       void setEnabled(bool enable) { m_enabled = enable; }
+       bool isLoopTimerActive() { return m_tuneTimer->isActive(); }
+       bool isScheduledSendDiseqc();
+       void setUSBTuner(bool yesno) { m_is_usbtuner = yesno; }
 };
 
 #endif // SWIG