X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=src%2Flib%2Fadapter%2FPulse-Eight%2FUSBCECAdapterCommands.cpp;h=ab0fa392e12633c54a0c237861bbae481b1fbfcb;hb=217b236882e3f4e5303a135aae39f6207bfbd279;hp=af4d6a0bdb9bcc182f75de8cbb33a0231414a64c;hpb=c8b0c13af4cace0686177af6aa808cf24a6fa789;p=deb_libcec.git diff --git a/src/lib/adapter/Pulse-Eight/USBCECAdapterCommands.cpp b/src/lib/adapter/Pulse-Eight/USBCECAdapterCommands.cpp index af4d6a0..ab0fa39 100644 --- a/src/lib/adapter/Pulse-Eight/USBCECAdapterCommands.cpp +++ b/src/lib/adapter/Pulse-Eight/USBCECAdapterCommands.cpp @@ -53,7 +53,9 @@ CUSBCECAdapterCommands::CUSBCECAdapterCommands(CUSBCECAdapterCommunication *comm m_settingCecVersion(CEC_VERSION_UNKNOWN), m_iSettingLAMask(0), m_bNeedsWrite(false), - m_iBuildDate(CEC_FW_BUILD_UNKNOWN) + m_iBuildDate(CEC_FW_BUILD_UNKNOWN), + m_bControlledMode(false), + m_adapterType(P8_ADAPTERTYPE_UNKNOWN) { m_persistedConfiguration.Clear(); } @@ -131,6 +133,19 @@ bool CUSBCECAdapterCommands::RequestSettingCECVersion(void) return false; } +p8_cec_adapter_type CUSBCECAdapterCommands::RequestAdapterType(void) +{ + if (m_adapterType == P8_ADAPTERTYPE_UNKNOWN) + { + LIB_CEC->AddLog(CEC_LOG_DEBUG, "requesting adapter type"); + + cec_datapacket response = RequestSetting(MSGCODE_GET_ADAPTER_TYPE); + if (response.size == 1) + m_adapterType = (p8_cec_adapter_type)response[0]; + } + return m_adapterType; +} + uint32_t CUSBCECAdapterCommands::RequestBuildDate(void) { if (m_iBuildDate == CEC_FW_BUILD_UNKNOWN) @@ -575,6 +590,12 @@ bool CUSBCECAdapterCommands::SetLineTimeout(uint8_t iTimeout) bool CUSBCECAdapterCommands::SetControlledMode(bool controlled) { + { + CLockObject lock(m_mutex); + if (m_bControlledMode == controlled) + return true; + } + LIB_CEC->AddLog(CEC_LOG_DEBUG, "turning controlled mode %s", controlled ? "on" : "off"); CCECAdapterMessage params; @@ -582,5 +603,12 @@ bool CUSBCECAdapterCommands::SetControlledMode(bool controlled) CCECAdapterMessage *message = m_comm->SendCommand(MSGCODE_SET_CONTROLLED, params); bool bReturn = message->state == ADAPTER_MESSAGE_STATE_SENT_ACKED; delete message; + + if (bReturn) + { + CLockObject lock(m_mutex); + m_bControlledMode = controlled; + } + return bReturn; }