add possibility to disable the dvb transponder time sync
authorghost <andreas.monzner@multimedia-labs.de>
Wed, 4 Mar 2009 19:38:59 +0000 (20:38 +0100)
committerghost <andreas.monzner@multimedia-labs.de>
Wed, 4 Mar 2009 19:38:59 +0000 (20:38 +0100)
not via gui yet... but config.misc.useTransponderTime=True/False in /etc/enigma2/settings should work

lib/dvb/dvbtime.cpp
lib/dvb/dvbtime.h
mytest.py

index 89650f2..03847ec 100644 (file)
@@ -145,7 +145,7 @@ eDVBLocalTimeHandler *eDVBLocalTimeHandler::instance;
 DEFINE_REF(eDVBLocalTimeHandler);
 
 eDVBLocalTimeHandler::eDVBLocalTimeHandler()
 DEFINE_REF(eDVBLocalTimeHandler);
 
 eDVBLocalTimeHandler::eDVBLocalTimeHandler()
-       :m_updateNonTunedTimer(eTimer::create(eApp)), m_time_ready(false)
+       :m_use_dvb_time(false), m_updateNonTunedTimer(eTimer::create(eApp)), m_time_ready(false)
 {
        if ( !instance )
                instance=this;
 {
        if ( !instance )
                instance=this;
@@ -214,6 +214,33 @@ void eDVBLocalTimeHandler::writeTimeOffsetData( const char* filename )
        }
 }
 
        }
 }
 
+void eDVBLocalTimeHandler::setUseDVBTime(bool b)
+{
+       if (m_use_dvb_time != b) {
+               if (m_use_dvb_time) {
+                       eDebug("[eDVBLocalTimeHandler] disable sync local time with transponder time!");
+                       std::map<iDVBChannel*, channel_data>::iterator it =
+                               m_knownChannels.begin();
+                       for (; it != m_knownChannels.end(); ++it) {
+                               if (it->second.m_prevChannelState == iDVBChannel::state_ok)
+                                       it->second.tdt = 0;
+                       }
+               }
+               else {
+                       eDebug("[eDVBLocalTimeHandler] enable sync local time with transponder time!");
+                       std::map<iDVBChannel*, channel_data>::iterator it =
+                               m_knownChannels.begin();
+                       for (; it != m_knownChannels.end(); ++it) {
+                               if (it->second.m_prevChannelState == iDVBChannel::state_ok) {
+                                       it->second.tdt = new TDT(it->second.channel);
+                                       it->second.tdt->start();
+                               }
+                       }
+               }
+               m_use_dvb_time = b;
+       }
+}
+
 void eDVBLocalTimeHandler::updateNonTuned()
 {
        updateTime(-1, 0, 0);
 void eDVBLocalTimeHandler::updateNonTuned()
 {
        updateTime(-1, 0, 0);
@@ -440,8 +467,10 @@ void eDVBLocalTimeHandler::DVBChannelStateChanged(iDVBChannel *chan)
                                case iDVBChannel::state_ok:
                                        eDebug("[eDVBLocalTimerHandler] channel %p running", chan);
                                        m_updateNonTunedTimer->stop();
                                case iDVBChannel::state_ok:
                                        eDebug("[eDVBLocalTimerHandler] channel %p running", chan);
                                        m_updateNonTunedTimer->stop();
-                                       it->second.tdt = new TDT(it->second.channel);
-                                       it->second.tdt->start();
+                                       if (m_use_dvb_time) {
+                                               it->second.tdt = new TDT(it->second.channel);
+                                               it->second.tdt->start();
+                                       }
                                        break;
                                case iDVBChannel::state_release:
                                        eDebug("[eDVBLocalTimerHandler] remove channel %p", chan);
                                        break;
                                case iDVBChannel::state_release:
                                        eDebug("[eDVBLocalTimerHandler] remove channel %p", chan);
index 3f8d9b7..3afff75 100644 (file)
@@ -54,6 +54,7 @@ class eDVBLocalTimeHandler: public Object
                ePtr<eConnection> m_stateChangedConn;
                int m_prevChannelState;
        };
                ePtr<eConnection> m_stateChangedConn;
                int m_prevChannelState;
        };
+       bool m_use_dvb_time;
        ePtr<eTimer> m_updateNonTunedTimer;
        friend class TDT;
        std::map<iDVBChannel*, channel_data> m_knownChannels;
        ePtr<eTimer> m_updateNonTunedTimer;
        friend class TDT;
        std::map<iDVBChannel*, channel_data> m_knownChannels;
@@ -78,6 +79,8 @@ public:
        eDVBLocalTimeHandler();
        ~eDVBLocalTimeHandler();
 #endif
        eDVBLocalTimeHandler();
        ~eDVBLocalTimeHandler();
 #endif
+       bool getUseDVBTime() { return m_use_dvb_time; }
+       void setUseDVBTime(bool b);
        PSignal0<void> m_timeUpdated;
        bool ready() const { return m_time_ready; }
        static eDVBLocalTimeHandler *getInstance() { return instance; }
        PSignal0<void> m_timeUpdated;
        bool ready() const { return m_time_ready; }
        static eDVBLocalTimeHandler *getInstance() { return instance; }
index efbc34b..261ff2a 100755 (executable)
--- a/mytest.py
+++ b/mytest.py
@@ -50,6 +50,11 @@ eDVBDB.getInstance().reloadBouquets()
 
 config.misc.radiopic = ConfigText(default = resolveFilename(SCOPE_SKIN_IMAGE)+"radio.mvi")
 config.misc.isNextRecordTimerAfterEventActionAuto = ConfigYesNo(default=False)
 
 config.misc.radiopic = ConfigText(default = resolveFilename(SCOPE_SKIN_IMAGE)+"radio.mvi")
 config.misc.isNextRecordTimerAfterEventActionAuto = ConfigYesNo(default=False)
+config.misc.useTransponderTime = ConfigYesNo(default=True)
+
+def useTransponderTimeChanged(configElement):
+       enigma.eDVBLocalTimeHandler.getInstance().setUseDVBTime(configElement.value)
+config.misc.useTransponderTime.addNotifier(useTransponderTimeChanged)
 
 profile("Twisted")
 try:
 
 profile("Twisted")
 try: