X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=src%2Flib%2Fdevices%2FCECBusDevice.cpp;h=20fe43b33179b2bf9fd23d3a669ff9a1c50df339;hb=f8ae32954754d261552c2c11a6a9055f02d61bba;hp=1227f8d749c6515f193bcd64fd3bb3fce8042ffd;hpb=15d1a84cf1eeaa80ab27ec3f48390073ca2ded75;p=deb_libcec.git diff --git a/src/lib/devices/CECBusDevice.cpp b/src/lib/devices/CECBusDevice.cpp index 1227f8d..20fe43b 100644 --- a/src/lib/devices/CECBusDevice.cpp +++ b/src/lib/devices/CECBusDevice.cpp @@ -54,7 +54,8 @@ CCECBusDevice::CCECBusDevice(CCECProcessor *processor, cec_logical_address iLogi m_bActiveSource(false), m_iLastCommandSent(0), m_iLastActive(0), - m_cecVersion(CEC_VERSION_UNKNOWN) + m_cecVersion(CEC_VERSION_UNKNOWN), + m_deviceStatus(CEC_DEVICE_STATUS_UNKNOWN) { m_handler = new CCECCommandHandler(this); @@ -240,6 +241,20 @@ bool CCECBusDevice::MyLogicalAddressContains(cec_logical_address address) const return m_processor->HasLogicalAddress(address); } +cec_bus_device_status CCECBusDevice::GetStatus(void) +{ + CLockObject lock(&m_mutex); + if (m_deviceStatus == CEC_DEVICE_STATUS_UNKNOWN) + { + if (m_processor->PollDevice(m_iLogicalAddress)) + m_deviceStatus = CEC_DEVICE_STATUS_PRESENT; + else + m_deviceStatus = CEC_DEVICE_STATUS_NOT_PRESENT; + } + + return m_deviceStatus; +} + //@} /** @name Setters */