case CEC_OPCODE_GIVE_DECK_STATUS:
HandleGiveDeckStatus(command);
break;
+ case CEC_OPCODE_DECK_CONTROL:
+ HandleDeckControl(command);
+ break;
case CEC_OPCODE_MENU_REQUEST:
HandleMenuRequest(command);
break;
return true;
}
+bool CCECCommandHandler::HandleDeckControl(const cec_command &command)
+{
+ CCECBusDevice *device = GetDevice(command.destination);
+ if (device && device->GetType() == CEC_DEVICE_TYPE_PLAYBACK_DEVICE && command.parameters.size > 0)
+ {
+ ((CCECPlaybackDevice *) device)->SetDeckControlMode((cec_deck_control_mode) command.parameters[0]);
+ return true;
+ }
+
+ return false;
+}
+
bool CCECCommandHandler::HandleDeviceCecVersion(const cec_command &command)
{
if (command.parameters.size == 1)
}
}
+const char *CCECCommandHandler::ToString(const cec_deck_control_mode mode)
+{
+ switch (mode)
+ {
+ case CEC_DECK_CONTROL_MODE_SKIP_FORWARD_WIND:
+ return "skip forward wind";
+ case CEC_DECK_CONTROL_MODE_EJECT:
+ return "eject";
+ case CEC_DECK_CONTROL_MODE_SKIP_REVERSE_REWIND:
+ return "reverse rewind";
+ case CEC_DECK_CONTROL_MODE_STOP:
+ return "stop";
+ default:
+ return "unknown";
+ }
+}
+
const char *CCECCommandHandler::ToString(const cec_deck_info status)
{
switch (status)