X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=src%2Flib%2Fadapter%2FRPi%2FRPiCECAdapterCommunication.cpp;h=243223d3f67d0a149d5e37a85bc8daa4e065a0aa;hb=485660f88df81ef5e535a074b1385c49bc687489;hp=a68c0ec64227ec6aa6f318bc20ecb33e6baf50e0;hpb=16f47961800432dbdd5b3ead717908f383d26d6b;p=deb_libcec.git diff --git a/src/lib/adapter/RPi/RPiCECAdapterCommunication.cpp b/src/lib/adapter/RPi/RPiCECAdapterCommunication.cpp index a68c0ec..243223d 100644 --- a/src/lib/adapter/RPi/RPiCECAdapterCommunication.cpp +++ b/src/lib/adapter/RPi/RPiCECAdapterCommunication.cpp @@ -118,17 +118,13 @@ void CRPiCECAdapterCommunication::OnTVServiceCallback(uint32_t reason, uint32_t { switch(reason) { - case VC_HDMI_UNPLUGGED: - { - m_callback->HandlePhysicalAddressChanged(0x1000); - break; - } case VC_HDMI_ATTACHED: { uint16_t iNewAddress = GetPhysicalAddress(); m_callback->HandlePhysicalAddressChanged(iNewAddress); break; } + case VC_HDMI_UNPLUGGED: case VC_HDMI_DVI: case VC_HDMI_HDMI: case VC_HDMI_HDCP_UNAUTH: @@ -357,7 +353,8 @@ void CRPiCECAdapterCommunication::Close(void) else return; } - vc_tv_unregister_callback(rpi_tv_callback); + if (m_bInitialised) + vc_tv_unregister_callback(rpi_tv_callback); UnregisterLogicalAddress(); @@ -386,13 +383,18 @@ cec_adapter_message_state CRPiCECAdapterCommunication::Write(const cec_command & return (data.initiator == data.destination) ? ADAPTER_MESSAGE_STATE_SENT_NOT_ACKED : ADAPTER_MESSAGE_STATE_ERROR; } - if (!data.opcode_set && data.initiator == data.destination) + if (!m_queue->Write(data, bIsReply)) { - // registration of the logical address would have failed - return ADAPTER_MESSAGE_STATE_SENT_NOT_ACKED; + if (!data.opcode_set) + { + return ADAPTER_MESSAGE_STATE_SENT_NOT_ACKED; + } + + return ADAPTER_MESSAGE_STATE_SENT; } - return m_queue->Write(data, bIsReply) ? ADAPTER_MESSAGE_STATE_SENT_ACKED : ADAPTER_MESSAGE_STATE_SENT_NOT_ACKED; + return ADAPTER_MESSAGE_STATE_SENT_ACKED; + } uint16_t CRPiCECAdapterCommunication::GetFirmwareVersion(void)