X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=src%2Flib%2Fimplementations%2FCECCommandHandler.cpp;h=a23ba660ff79c6d0fd397bec5da2ce90a435650f;hb=907bd60fcc86277c286ec43f694a19798754d413;hp=78d7d40e0f964f252363d74423f209a396048630;hpb=6b72afcda7afcd6d6150a36f476c08f0f336fa48;p=deb_libcec.git diff --git a/src/lib/implementations/CECCommandHandler.cpp b/src/lib/implementations/CECCommandHandler.cpp index 78d7d40..a23ba66 100644 --- a/src/lib/implementations/CECCommandHandler.cpp +++ b/src/lib/implementations/CECCommandHandler.cpp @@ -117,12 +117,18 @@ bool CCECCommandHandler::HandleCommand(const cec_command &command) case CEC_OPCODE_ROUTING_CHANGE: HandleRoutingChange(command); break; + case CEC_OPCODE_ROUTING_INFORMATION: + HandleRoutingInformation(command); + break; case CEC_OPCODE_STANDBY: HandleStandby(command); break; case CEC_OPCODE_ACTIVE_SOURCE: HandleActiveSource(command); break; + case CEC_OPCODE_REPORT_PHYSICAL_ADDRESS: + HandleReportPhysicalAddress(command); + break; default: UnhandledCommand(command); if (command.destination == CECDEVICE_BROADCAST || m_busDevice->MyLogicalAddressContains(command.destination)) @@ -292,6 +298,19 @@ bool CCECCommandHandler::HandleMenuRequest(const cec_command &command) return false; } +bool CCECCommandHandler::HandleReportPhysicalAddress(const cec_command &command) +{ + if (command.parameters.size == 2) + { + uint16_t iNewAddress = ((uint16_t)command.parameters[0] << 8) | ((uint16_t)command.parameters[1]); + + CCECBusDevice *device = GetDevice(command.initiator); + if (device) + device->SetPhysicalAddress(iNewAddress); + } + return true; +} + bool CCECCommandHandler::HandleReportPowerStatus(const cec_command &command) { if (command.parameters.size == 1) @@ -330,6 +349,18 @@ bool CCECCommandHandler::HandleRoutingChange(const cec_command &command) return true; } +bool CCECCommandHandler::HandleRoutingInformation(const cec_command &command) +{ + if (command.parameters.size == 2) + { + uint16_t iNewAddress = ((uint16_t)command.parameters[0] << 8) | ((uint16_t)command.parameters[1]); + + CCECBusDevice *device = GetDevice(command.initiator); + if (device) + device->SetPhysicalAddress(iNewAddress); + } +} + bool CCECCommandHandler::HandleSetMenuLanguage(const cec_command &command) { if (command.parameters.size == 3)