+ }
+
+ return true;
+
+}
+
+bool CSLCommandHandler::HandleDeviceVendorId(const cec_command &command)
+{
+ SetVendorId(command);
+
+ if (!SLInitialised() && command.initiator == CECDEVICE_TV)
+ {
+ cec_command response;
+ cec_command::Format(response, m_processor->GetLogicalAddress(), command.initiator, CEC_OPCODE_FEATURE_ABORT);
+ return Transmit(response);
+ }
+ return true;
+}
+
+bool CSLCommandHandler::HandleGivePhysicalAddress(const cec_command &command)
+{
+ if (m_processor->IsRunning() && m_busDevice->MyLogicalAddressContains(command.destination))
+ {
+ CCECBusDevice *device = GetDevice(command.destination);
+ if (device)
+ return device->TransmitPhysicalAddress(); // only the physical address, don't send image view on
+ }
+
+ return false;
+}
+
+bool CSLCommandHandler::HandleVendorCommand(const cec_command &command)
+{
+ if (!m_busDevice->MyLogicalAddressContains(command.destination))
+ return true;
+
+ if (command.parameters.size == 1 &&
+ command.parameters[0] == SL_COMMAND_UNKNOWN_01)
+ {
+ HandleVendorCommand01(command);
+ return true;
+ }
+ else if (command.parameters.size == 2 &&
+ command.parameters[0] == SL_COMMAND_POWER_ON)
+ {
+ HandleVendorCommandPowerOn(command);
+ return true;
+ }
+ else if (command.parameters.size == 2 &&
+ command.parameters[0] == SL_COMMAND_CONNECT_REQUEST)
+ {
+ HandleVendorCommandSLConnect(command);