X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=src%2Flib%2Fimplementations%2FCECCommandHandler.cpp;h=932068254acd71e8b6864646c58a7c05a3ca8c85;hb=8acf4aac0ff1e3ac094290dbb9537c4aefb86e3d;hp=f321a70889e71052999cd2db93cdf9e1c08a5ec7;hpb=a3269a0a9e8973e29cfe073dd8e558aad173f984;p=deb_libcec.git diff --git a/src/lib/implementations/CECCommandHandler.cpp b/src/lib/implementations/CECCommandHandler.cpp index f321a70..9320682 100644 --- a/src/lib/implementations/CECCommandHandler.cpp +++ b/src/lib/implementations/CECCommandHandler.cpp @@ -49,6 +49,9 @@ 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; @@ -93,6 +96,8 @@ bool CCECCommandHandler::HandleCommand(const cec_command &command) bHandled = false; break; } + + m_busDevice->GetProcessor()->AddCommand(command); } else if (command.destination == CECDEVICE_BROADCAST) { @@ -122,6 +127,8 @@ bool CCECCommandHandler::HandleCommand(const cec_command &command) bHandled = false; break; } + + m_busDevice->GetProcessor()->AddCommand(command); } else { @@ -229,6 +236,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; @@ -263,7 +281,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); @@ -272,7 +290,6 @@ bool CCECCommandHandler::HandleSetMenuLanguage(const cec_command &command) return true; } - bool CCECCommandHandler::HandleSetStreamPath(const cec_command &command) { if (command.parameters.size >= 2) @@ -318,7 +335,9 @@ bool CCECCommandHandler::HandleUserControlRelease(const cec_command &command) void CCECCommandHandler::UnhandledCommand(const cec_command &command) { - m_busDevice->GetProcessor()->AddCommand(command); + CStdString strLog; + strLog.Format("unhandled command with opcode %02x from address %d", command.opcode, command.initiator); + m_busDevice->AddLog(CEC_LOG_DEBUG, strLog); } CCECBusDevice *CCECCommandHandler::GetDevice(cec_logical_address iLogicalAddress) const