X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=src%2Flib%2FLibCEC.cpp;h=449231d5fcc47028e2c284e75c0be0cbef24260a;hb=0b71487197ed7281dda06f53ecaf846f1fd7e942;hp=20c670d3a6c028f020f80d055804076f8f4c1d3e;hpb=e4a7396c0e39d6ea8f7b007774407cfd57766a21;p=deb_libcec.git diff --git a/src/lib/LibCEC.cpp b/src/lib/LibCEC.cpp index 20c670d..449231d 100644 --- a/src/lib/LibCEC.cpp +++ b/src/lib/LibCEC.cpp @@ -447,6 +447,26 @@ void CLibCEC::AddCommand(const cec_command &command) AddLog(CEC_LOG_WARNING, "command buffer is full"); } +void CLibCEC::Alert(const libcec_alert type, const libcec_parameter ¶m) +{ + CLibCEC *instance = CLibCEC::GetInstance(); + if (!instance) + return; + CLockObject lock(instance->m_mutex); + + libcec_configuration config; + instance->GetCurrentConfiguration(&config); + + if (instance->m_callbacks && + config.clientVersion >= CEC_CLIENT_VERSION_1_6_0 && + instance->m_cec->IsInitialised() && + instance->m_callbacks->CBCecAlert != NULL) + instance->m_callbacks->CBCecAlert(instance->m_cbParam, type, param); + + if (type == CEC_ALERT_CONNECTION_LOST) + instance->Close(); +} + void CLibCEC::CheckKeypressTimeout(void) { if (m_iCurrentButton != CEC_USER_CONTROL_CODE_UNKNOWN && GetTimeMs() - m_buttontime > CEC_BUTTON_TIMEOUT) @@ -456,6 +476,28 @@ void CLibCEC::CheckKeypressTimeout(void) } } +int CLibCEC::MenuStateChanged(const cec_menu_state newState) +{ + int iReturn(0); + + CLibCEC *instance = CLibCEC::GetInstance(); + if (!instance) + return iReturn; + CLockObject lock(instance->m_mutex); + + AddLog(CEC_LOG_NOTICE, ">> %s: %s", instance->m_cec->ToString(CEC_OPCODE_MENU_REQUEST), instance->m_cec->ToString(newState)); + + libcec_configuration config; + instance->GetCurrentConfiguration(&config); + + if (instance->m_callbacks && + config.clientVersion >= CEC_CLIENT_VERSION_1_6_2 && + instance->m_callbacks->CBCecMenuStateChanged) + iReturn = instance->m_callbacks->CBCecMenuStateChanged(instance->m_cbParam, newState); + + return iReturn; +} + bool CLibCEC::SetStreamPath(cec_logical_address iAddress) { uint16_t iPhysicalAddress = GetDevicePhysicalAddress(iAddress); @@ -594,7 +636,7 @@ const char *CLibCEC::ToString(const cec_device_type type) bool CLibCEC::GetCurrentConfiguration(libcec_configuration *configuration) { - return m_cec->IsInitialised() && m_cec->GetCurrentConfiguration(configuration); + return m_cec->GetCurrentConfiguration(configuration); } bool CLibCEC::SetConfiguration(const libcec_configuration *configuration)