cec: separate 'last command sent' and 'last active' in CCECBusDevice
authorLars Op den Kamp <lars@opdenkamp.eu>
Thu, 10 Nov 2011 17:30:00 +0000 (18:30 +0100)
committerLars Op den Kamp <lars@opdenkamp.eu>
Thu, 10 Nov 2011 18:00:28 +0000 (19:00 +0100)
src/lib/devices/CECBusDevice.cpp
src/lib/devices/CECBusDevice.h

index 340ef56abbe213da8347b3da9227da8f701a28e4..3c371f4be990b9c415aa2ae4f7b94f8621bdb260 100644 (file)
@@ -49,6 +49,7 @@ CCECBusDevice::CCECBusDevice(CCECProcessor *processor, cec_logical_address iLogi
   m_bMenuActive(true),
   m_bActiveSource(false),
   m_iVendorClass(CEC_VENDOR_UNKNOWN),
+  m_iLastCommandSent(0),
   m_iLastActive(0),
   m_cecVersion(CEC_VERSION_UNKNOWN)
 {
@@ -89,13 +90,13 @@ void CCECBusDevice::PollVendorId(void)
   CLockObject lock(&m_mutex);
   if (m_iLastActive > 0 && m_iLogicalAddress != CECDEVICE_BROADCAST &&
       m_vendor.vendor == CEC_VENDOR_UNKNOWN &&
-      GetTimeMs() - m_iLastActive > 5000 &&
+      GetTimeMs() - m_iLastCommandSent > 5000 &&
       !m_processor->IsMonitoring())
   {
     CStdString strLog;
     strLog.Format("<< requesting vendor ID of '%s' (%X)", GetLogicalAddressName(), m_iLogicalAddress);
     AddLog(CEC_LOG_NOTICE, strLog);
-    m_iLastActive = GetTimeMs();
+    m_iLastCommandSent = GetTimeMs();
 
     cec_command command;
     cec_command::format(command, GetMyLogicalAddress(), m_iLogicalAddress, CEC_OPCODE_GIVE_DEVICE_VENDOR_ID);
index 64d26d0ea6ee0d5b07084142149fbdf66bdf37d8..04026489023c0c1a1cf299a80f01a325d09ff36d 100644 (file)
@@ -56,6 +56,7 @@ namespace CEC
 
     virtual cec_version         GetCecVersion(void);
     virtual CCECCommandHandler *GetHandler(void) const { return m_handler; };
+    virtual uint64_t            GetCommandSent(void) const { return m_iLastCommandSent; }
     virtual uint64_t            GetLastActive(void) const { return m_iLastActive; }
     virtual cec_logical_address GetLogicalAddress(void) const { return m_iLogicalAddress; }
     virtual const char*         GetLogicalAddressName(void) const;
@@ -106,6 +107,7 @@ namespace CEC
     bool                m_bMenuActive;
     bool                m_bActiveSource;
     uint8_t             m_iVendorClass;
+    uint64_t            m_iLastCommandSent;
     uint64_t            m_iLastActive;
     cec_version         m_cecVersion;
     CMutex              m_mutex;