X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=src%2Flib%2Fadapter%2FRPi%2FRPiCECAdapterCommunication.cpp;h=79d73ba323562c9aae47f53deab0b287bb2c9f11;hb=6f99b2bb55d7c7659b39bda7fe54c6c3e33611ec;hp=9e7f604c4aa337b279613a88db321b2f9dfade06;hpb=7d27bafc81161bf5d86e4d5bf2e833ca72d1d130;p=deb_libcec.git diff --git a/src/lib/adapter/RPi/RPiCECAdapterCommunication.cpp b/src/lib/adapter/RPi/RPiCECAdapterCommunication.cpp index 9e7f604..79d73ba 100644 --- a/src/lib/adapter/RPi/RPiCECAdapterCommunication.cpp +++ b/src/lib/adapter/RPi/RPiCECAdapterCommunication.cpp @@ -142,10 +142,14 @@ void CRPiCECAdapterCommunication::OnDataReceived(uint32_t header, uint32_t p0, u } break; case VC_CEC_BUTTON_PRESSED: + case VC_CEC_REMOTE_PRESSED: { // translate into a cec_command cec_command command; - cec_command::Format(command, (cec_logical_address)CEC_CB_INITIATOR(p0), (cec_logical_address)CEC_CB_FOLLOWER(p0), CEC_OPCODE_USER_CONTROL_PRESSED); + cec_command::Format(command, + (cec_logical_address)CEC_CB_INITIATOR(p0), + (cec_logical_address)CEC_CB_FOLLOWER(p0), + reason == VC_CEC_BUTTON_PRESSED ? CEC_OPCODE_USER_CONTROL_PRESSED : CEC_OPCODE_VENDOR_REMOTE_BUTTON_DOWN); command.parameters.PushBack((uint8_t)CEC_CB_OPERAND1(p0)); // send to libCEC @@ -153,10 +157,14 @@ void CRPiCECAdapterCommunication::OnDataReceived(uint32_t header, uint32_t p0, u } break; case VC_CEC_BUTTON_RELEASE: + case VC_CEC_REMOTE_RELEASE: { // translate into a cec_command cec_command command; - cec_command::Format(command, (cec_logical_address)CEC_CB_INITIATOR(p0), (cec_logical_address)CEC_CB_FOLLOWER(p0), CEC_OPCODE_USER_CONTROL_RELEASE); + cec_command::Format(command, + (cec_logical_address)CEC_CB_INITIATOR(p0), + (cec_logical_address)CEC_CB_FOLLOWER(p0), + reason == VC_CEC_BUTTON_PRESSED ? CEC_OPCODE_USER_CONTROL_RELEASE : CEC_OPCODE_VENDOR_REMOTE_BUTTON_UP); command.parameters.PushBack((uint8_t)CEC_CB_OPERAND1(p0)); // send to libCEC @@ -185,12 +193,11 @@ void CRPiCECAdapterCommunication::OnDataReceived(uint32_t header, uint32_t p0, u // the logical address was taken by another device cec_logical_address previousAddress = m_logicalAddress; m_logicalAddress = CECDEVICE_UNKNOWN; + m_callback->HandleLogicalAddressLost(previousAddress); } break; case VC_CEC_TOPOLOGY: - case VC_CEC_REMOTE_PRESSED: - case VC_CEC_REMOTE_RELEASE: break; default: LIB_CEC->AddLog(CEC_LOG_DEBUG, "ignoring unknown reason %x", reason);