X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=src%2Flib%2Fimplementations%2FCECCommandHandler.cpp;h=ac00ebf86ab18e9957ce66fcd1a5d9d09d6cb77a;hb=a4675846959db9180b8a4898919afeb9038529d7;hp=0607acd4573f89a4874bd3ceaa92967aac6c1355;hpb=b5b53c7d324f4444875befe6bf75b5c4dcac743c;p=deb_libcec.git diff --git a/src/lib/implementations/CECCommandHandler.cpp b/src/lib/implementations/CECCommandHandler.cpp index 0607acd..ac00ebf 100644 --- a/src/lib/implementations/CECCommandHandler.cpp +++ b/src/lib/implementations/CECCommandHandler.cpp @@ -49,11 +49,15 @@ bool CCECCommandHandler::HandleCommand(const cec_command &command) { switch(command.opcode) { + case CEC_OPCODE_REPORT_POWER_STATUS: + HandleReportPowerStatus(command); + break; case CEC_OPCODE_CEC_VERSION: HandleDeviceCecVersion(command); break; case CEC_OPCODE_SET_MENU_LANGUAGE: HandleSetMenuLanguage(command); + m_busDevice->GetProcessor()->AddCommand(command); break; case CEC_OPCODE_GIVE_PHYSICAL_ADDRESS: HandleGivePhysicalAddress(command); @@ -90,11 +94,10 @@ bool CCECCommandHandler::HandleCommand(const cec_command &command) break; default: UnhandledCommand(command); + m_busDevice->GetProcessor()->AddCommand(command); bHandled = false; break; } - - m_busDevice->GetProcessor()->AddCommand(command); } else if (command.destination == CECDEVICE_BROADCAST) { @@ -103,15 +106,18 @@ bool CCECCommandHandler::HandleCommand(const cec_command &command) { case CEC_OPCODE_SET_MENU_LANGUAGE: HandleSetMenuLanguage(command); + m_busDevice->GetProcessor()->AddCommand(command); break; case CEC_OPCODE_REQUEST_ACTIVE_SOURCE: HandleRequestActiveSource(command); break; case CEC_OPCODE_SET_STREAM_PATH: HandleSetStreamPath(command); + m_busDevice->GetProcessor()->AddCommand(command); break; case CEC_OPCODE_ROUTING_CHANGE: HandleRoutingChange(command); + m_busDevice->GetProcessor()->AddCommand(command); break; case CEC_OPCODE_DEVICE_VENDOR_ID: HandleDeviceVendorId(command); @@ -121,11 +127,10 @@ bool CCECCommandHandler::HandleCommand(const cec_command &command) break; default: UnhandledCommand(command); + m_busDevice->GetProcessor()->AddCommand(command); bHandled = false; break; } - - m_busDevice->GetProcessor()->AddCommand(command); } else { @@ -233,6 +238,17 @@ bool CCECCommandHandler::HandleMenuRequest(const cec_command &command) return false; } +bool CCECCommandHandler::HandleReportPowerStatus(const cec_command &command) +{ + if (command.parameters.size == 1) + { + CCECBusDevice *device = GetDevice(command.initiator); + if (device) + device->SetPowerStatus((cec_power_status) command.parameters[0]); + } + return true; +} + bool CCECCommandHandler::HandleRequestActiveSource(const cec_command &command) { CStdString strLog; @@ -267,7 +283,7 @@ bool CCECCommandHandler::HandleSetMenuLanguage(const cec_command &command) { cec_menu_language language; language.device = command.initiator; - for (unsigned int iPtr = 0; iPtr < 4; iPtr++) + for (uint8_t iPtr = 0; iPtr < 4; iPtr++) language.language[iPtr] = command.parameters[iPtr]; language.language[3] = 0; device->SetMenuLanguage(language); @@ -276,7 +292,6 @@ bool CCECCommandHandler::HandleSetMenuLanguage(const cec_command &command) return true; } - bool CCECCommandHandler::HandleSetStreamPath(const cec_command &command) { if (command.parameters.size >= 2)