bool CSLCommandHandler::InitHandler(void) { if (m_bHandlerInited) return true; m_bHandlerInited = true; if (m_busDevice->GetLogicalAddress() != CECDEVICE_TV) return true; CCECBusDevice *primary = m_processor->GetPrimaryDevice(); if (primary && primary->GetLogicalAddress() != CECDEVICE_UNREGISTERED) { /* imitate LG devices */ if (m_busDevice->GetLogicalAddress() != primary->GetLogicalAddress()) { primary->SetVendorId(CEC_VENDOR_LG); primary->ReplaceHandler(false); } if (m_busDevice->GetLogicalAddress() == CECDEVICE_TV) { /* start as 'in transition standby->on' */ primary->SetPowerStatus(CEC_POWER_STATUS_IN_TRANSITION_STANDBY_TO_ON); primary->TransmitPowerState(CECDEVICE_TV, false); /* send the vendor id */ primary->TransmitVendorID(CECDEVICE_BROADCAST, false, false); } } return true; }
bool CRLCommandHandler::InitHandler(void) { if (m_bHandlerInited) return true; m_bHandlerInited = true; if (m_busDevice->GetLogicalAddress() != CECDEVICE_TV) return true; CCECBusDevice *primary = m_processor->GetPrimaryDevice(); if (primary && primary->GetLogicalAddress() != CECDEVICE_UNREGISTERED) { /* imitate Toshiba devices */ if (m_busDevice->GetLogicalAddress() != primary->GetLogicalAddress()) { primary->SetVendorId(CEC_VENDOR_TOSHIBA); primary->ReplaceHandler(false); } if (m_busDevice->GetLogicalAddress() == CECDEVICE_TV) { /* send the vendor id */ primary->TransmitVendorID(CECDEVICE_BROADCAST, false, false); } } return true; }
bool CVLCommandHandler::InitHandler(void) { CCECBusDevice *primary = m_processor->GetPrimaryDevice(); if (primary && primary->GetLogicalAddress() != CECDEVICE_UNREGISTERED) { /* use the VL commandhandler for the primary device that is handled by libCEC */ if (m_busDevice->GetLogicalAddress() == CECDEVICE_TV) { if (primary && m_busDevice->GetLogicalAddress() != primary->GetLogicalAddress()) { libcec_configuration config; m_processor->GetPrimaryClient()->GetCurrentConfiguration(config); if (config.iDoubleTapTimeoutMs == 0) { config.iDoubleTapTimeoutMs = CEC_DOUBLE_TAP_TIMEOUT_MS; m_processor->GetPrimaryClient()->SetConfiguration(config); } primary->SetVendorId(CEC_VENDOR_PANASONIC); primary->ReplaceHandler(false); } if (primary->GetType() == CEC_DEVICE_TYPE_RECORDING_DEVICE) return m_processor->GetPrimaryClient()->ChangeDeviceType(CEC_DEVICE_TYPE_RECORDING_DEVICE, CEC_DEVICE_TYPE_PLAYBACK_DEVICE); } } return CCECCommandHandler::InitHandler(); }
bool CPHCommandHandler::InitHandler(void) { CCECBusDevice *primary = m_processor->GetPrimaryDevice(); if (primary && primary->GetLogicalAddress() != CECDEVICE_UNREGISTERED) { //XXX hack to use this handler for the primary device if (m_busDevice->GetLogicalAddress() == CECDEVICE_TV && primary && m_busDevice->GetLogicalAddress() != primary->GetLogicalAddress()) { primary->SetVendorId(CEC_VENDOR_PHILIPS); primary->ReplaceHandler(false); } } return CCECCommandHandler::InitHandler(); }
void CCECClient::SetTVVendorOverride(const cec_vendor_id id) { { CLockObject lock(m_mutex); m_configuration.tvVendor = id; } if (id != CEC_VENDOR_UNKNOWN) { LIB_CEC->AddLog(CEC_LOG_DEBUG, "%s - vendor id '%s'", __FUNCTION__, ToString(id)); CCECBusDevice *tv = m_processor ? m_processor->GetTV() : NULL; if (tv) tv->SetVendorId((uint64_t)id); } // persist the new configuration PersistConfiguration(m_configuration); }
CSLCommandHandler::CSLCommandHandler(CCECBusDevice *busDevice) : CCECCommandHandler(busDevice), m_bAwaitingReceiveFailed(false), m_bSLEnabled(false), m_bPowerStateReset(false) { CCECBusDevice *primary = m_processor->GetPrimaryDevice(); /* imitate LG devices */ if (m_busDevice->GetLogicalAddress() != primary->GetLogicalAddress()) primary->SetVendorId(CEC_VENDOR_LG, false); SetLGDeckStatus(); /* LG TVs don't always reply to CEC version requests, so just set it to 1.3a */ if (m_busDevice->GetLogicalAddress() == CECDEVICE_TV) m_busDevice->SetCecVersion(CEC_VERSION_1_3A); /* LG devices always return "korean" as language */ cec_menu_language lang; lang.device = m_busDevice->GetLogicalAddress(); snprintf(lang.language, 4, "eng"); m_busDevice->SetMenuLanguage(lang); }