+
+bool CCECBusDevice::TransmitPowerState(cec_logical_address dest)
+{
+ cec_power_status state;
+ {
+ CLockObject lock(&m_mutex);
+ CStdString strLog;
+ strLog.Format("<< %s (%X) -> %s (%X): %s", GetLogicalAddressName(), m_iLogicalAddress, ToString(dest), dest, ToString(m_powerStatus));
+ AddLog(CEC_LOG_NOTICE, strLog.c_str());
+ state = m_powerStatus;
+ }
+
+ return m_handler->TransmitPowerState(m_iLogicalAddress, dest, state);
+}
+
+bool CCECBusDevice::TransmitVendorID(cec_logical_address dest, bool bSendAbort /* = true */)
+{
+ uint64_t iVendorId;
+ {
+ CLockObject lock(&m_mutex);
+ iVendorId = (uint64_t)m_vendor;
+ }
+
+ if (iVendorId == CEC_VENDOR_UNKNOWN)
+ {
+ if (bSendAbort)
+ {
+ CStdString strLog;
+ strLog.Format("<< %s (%X) -> %s (%X): vendor id feature abort", GetLogicalAddressName(), m_iLogicalAddress, ToString(dest), dest);
+ AddLog(CEC_LOG_NOTICE, strLog);
+
+ m_processor->TransmitAbort(dest, CEC_OPCODE_GIVE_DEVICE_VENDOR_ID);
+ }
+ return false;
+ }
+ else
+ {
+ CStdString strLog;
+ strLog.Format("<< %s (%X) -> %s (%X): vendor id %s (%x)", GetLogicalAddressName(), m_iLogicalAddress, ToString(dest), dest, ToString((cec_vendor_id)iVendorId), iVendorId);
+ AddLog(CEC_LOG_NOTICE, strLog);
+
+ return m_handler->TransmitVendorID(m_iLogicalAddress, iVendorId);
+ }
+}
+
+bool CCECBusDevice::TransmitKeypress(cec_user_control_code key, bool bWait /* = true */)
+{
+ return m_handler->TransmitKeypress(m_processor->GetLogicalAddress(), m_iLogicalAddress, key, bWait);
+}
+
+bool CCECBusDevice::TransmitKeyRelease(bool bWait /* = true */)
+{
+ return m_handler->TransmitKeyRelease(m_processor->GetLogicalAddress(), m_iLogicalAddress, bWait);
+}
+
+bool CCECBusDevice::IsUnsupportedFeature(cec_opcode opcode) const
+{
+ return m_unsupportedFeatures.find(opcode) != m_unsupportedFeatures.end();
+}
+
+void CCECBusDevice::SetUnsupportedFeature(cec_opcode opcode)
+{
+ m_unsupportedFeatures.insert(opcode);
+}
+
+bool CCECBusDevice::ActivateSource(void)
+{
+ CLockObject lock(&m_mutex);
+ return m_handler->ActivateSource();
+}
+
+//@}