repositories
/
deb_libcec.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
cec: fixed stream path changes when changed to the TV source (PA 0)
[deb_libcec.git]
/
src
/
lib
/
implementations
/
CECCommandHandler.cpp
diff --git
a/src/lib/implementations/CECCommandHandler.cpp
b/src/lib/implementations/CECCommandHandler.cpp
index 7e4b5478aa7123e05a5021e2713e6da23ca67be2..1e477824c81c563915553e6dc143aaf241b52048 100644
(file)
--- a/
src/lib/implementations/CECCommandHandler.cpp
+++ b/
src/lib/implementations/CECCommandHandler.cpp
@@
-334,12
+334,7
@@
bool CCECCommandHandler::HandleGivePhysicalAddress(const cec_command &command)
{
CCECBusDevice *device = GetDevice(command.destination);
if (device)
{
CCECBusDevice *device = GetDevice(command.destination);
if (device)
- {
- device->SetActiveSource();
- return device->TransmitPhysicalAddress() &&
- device->TransmitImageViewOn() &&
- device->TransmitActiveSource();
- }
+ return device->TransmitPhysicalAddress();
}
return false;
}
return false;
@@
-465,6
+460,8
@@
bool CCECCommandHandler::HandleRoutingChange(const cec_command &command)
CCECBusDevice *device = GetDevice(command.initiator);
if (device)
device->SetStreamPath(iNewAddress, iOldAddress);
CCECBusDevice *device = GetDevice(command.initiator);
if (device)
device->SetStreamPath(iNewAddress, iOldAddress);
+ else
+ CLibCEC::AddLog(CEC_LOG_DEBUG, "initiator device not found");
}
return true;
}
}
return true;
}
@@
-767,7
+764,7
@@
bool CCECCommandHandler::TransmitImageViewOn(const cec_logical_address iInitiato
cec_command command;
cec_command::Format(command, iInitiator, iDestination, CEC_OPCODE_IMAGE_VIEW_ON);
cec_command command;
cec_command::Format(command, iInitiator, iDestination, CEC_OPCODE_IMAGE_VIEW_ON);
- return Transmit(command
, false
);
+ return Transmit(command);
}
bool CCECCommandHandler::TransmitStandby(const cec_logical_address iInitiator, const cec_logical_address iDestination)
}
bool CCECCommandHandler::TransmitStandby(const cec_logical_address iInitiator, const cec_logical_address iDestination)
@@
-775,7
+772,7
@@
bool CCECCommandHandler::TransmitStandby(const cec_logical_address iInitiator, c
cec_command command;
cec_command::Format(command, iInitiator, iDestination, CEC_OPCODE_STANDBY);
cec_command command;
cec_command::Format(command, iInitiator, iDestination, CEC_OPCODE_STANDBY);
- return Transmit(command
, false
);
+ return Transmit(command);
}
bool CCECCommandHandler::TransmitRequestCecVersion(const cec_logical_address iInitiator, const cec_logical_address iDestination, bool bWaitForResponse /* = true */)
}
bool CCECCommandHandler::TransmitRequestCecVersion(const cec_logical_address iInitiator, const cec_logical_address iDestination, bool bWaitForResponse /* = true */)
@@
-783,7
+780,7
@@
bool CCECCommandHandler::TransmitRequestCecVersion(const cec_logical_address iIn
cec_command command;
cec_command::Format(command, iInitiator, iDestination, CEC_OPCODE_GET_CEC_VERSION);
cec_command command;
cec_command::Format(command, iInitiator, iDestination, CEC_OPCODE_GET_CEC_VERSION);
- return Transmit(command,
bWaitForResponse, CEC_OPCODE_CEC_VERSION
);
+ return Transmit(command,
!bWaitForResponse
);
}
bool CCECCommandHandler::TransmitRequestMenuLanguage(const cec_logical_address iInitiator, const cec_logical_address iDestination, bool bWaitForResponse /* = true */)
}
bool CCECCommandHandler::TransmitRequestMenuLanguage(const cec_logical_address iInitiator, const cec_logical_address iDestination, bool bWaitForResponse /* = true */)
@@
-791,7
+788,7
@@
bool CCECCommandHandler::TransmitRequestMenuLanguage(const cec_logical_address i
cec_command command;
cec_command::Format(command, iInitiator, iDestination, CEC_OPCODE_GET_MENU_LANGUAGE);
cec_command command;
cec_command::Format(command, iInitiator, iDestination, CEC_OPCODE_GET_MENU_LANGUAGE);
- return Transmit(command,
bWaitForResponse, CEC_OPCODE_SET_MENU_LANGUAGE
);
+ return Transmit(command,
!bWaitForResponse
);
}
bool CCECCommandHandler::TransmitRequestOSDName(const cec_logical_address iInitiator, const cec_logical_address iDestination, bool bWaitForResponse /* = true */)
}
bool CCECCommandHandler::TransmitRequestOSDName(const cec_logical_address iInitiator, const cec_logical_address iDestination, bool bWaitForResponse /* = true */)
@@
-799,7
+796,7
@@
bool CCECCommandHandler::TransmitRequestOSDName(const cec_logical_address iIniti
cec_command command;
cec_command::Format(command, iInitiator, iDestination, CEC_OPCODE_GIVE_OSD_NAME);
cec_command command;
cec_command::Format(command, iInitiator, iDestination, CEC_OPCODE_GIVE_OSD_NAME);
- return Transmit(command,
bWaitForResponse, CEC_OPCODE_SET_OSD_NAME
);
+ return Transmit(command,
!bWaitForResponse
);
}
bool CCECCommandHandler::TransmitRequestPhysicalAddress(const cec_logical_address iInitiator, const cec_logical_address iDestination, bool bWaitForResponse /* = true */)
}
bool CCECCommandHandler::TransmitRequestPhysicalAddress(const cec_logical_address iInitiator, const cec_logical_address iDestination, bool bWaitForResponse /* = true */)
@@
-807,7
+804,7
@@
bool CCECCommandHandler::TransmitRequestPhysicalAddress(const cec_logical_addres
cec_command command;
cec_command::Format(command, iInitiator, iDestination, CEC_OPCODE_GIVE_PHYSICAL_ADDRESS);
cec_command command;
cec_command::Format(command, iInitiator, iDestination, CEC_OPCODE_GIVE_PHYSICAL_ADDRESS);
- return Transmit(command,
bWaitForResponse, CEC_OPCODE_REPORT_PHYSICAL_ADDRESS
);
+ return Transmit(command,
!bWaitForResponse
);
}
bool CCECCommandHandler::TransmitRequestPowerStatus(const cec_logical_address iInitiator, const cec_logical_address iDestination, bool bWaitForResponse /* = true */)
}
bool CCECCommandHandler::TransmitRequestPowerStatus(const cec_logical_address iInitiator, const cec_logical_address iDestination, bool bWaitForResponse /* = true */)
@@
-815,7
+812,7
@@
bool CCECCommandHandler::TransmitRequestPowerStatus(const cec_logical_address iI
cec_command command;
cec_command::Format(command, iInitiator, iDestination, CEC_OPCODE_GIVE_DEVICE_POWER_STATUS);
cec_command command;
cec_command::Format(command, iInitiator, iDestination, CEC_OPCODE_GIVE_DEVICE_POWER_STATUS);
- return Transmit(command,
bWaitForResponse, CEC_OPCODE_REPORT_POWER_STATUS
);
+ return Transmit(command,
!bWaitForResponse
);
}
bool CCECCommandHandler::TransmitRequestVendorId(const cec_logical_address iInitiator, const cec_logical_address iDestination, bool bWaitForResponse /* = true */)
}
bool CCECCommandHandler::TransmitRequestVendorId(const cec_logical_address iInitiator, const cec_logical_address iDestination, bool bWaitForResponse /* = true */)
@@
-823,7
+820,7
@@
bool CCECCommandHandler::TransmitRequestVendorId(const cec_logical_address iInit
cec_command command;
cec_command::Format(command, iInitiator, iDestination, CEC_OPCODE_GIVE_DEVICE_VENDOR_ID);
cec_command command;
cec_command::Format(command, iInitiator, iDestination, CEC_OPCODE_GIVE_DEVICE_VENDOR_ID);
- return Transmit(command,
bWaitForResponse, CEC_OPCODE_DEVICE_VENDOR_ID
);
+ return Transmit(command,
!bWaitForResponse
);
}
bool CCECCommandHandler::TransmitActiveSource(const cec_logical_address iInitiator, uint16_t iPhysicalAddress)
}
bool CCECCommandHandler::TransmitActiveSource(const cec_logical_address iInitiator, uint16_t iPhysicalAddress)
@@
-833,7
+830,7
@@
bool CCECCommandHandler::TransmitActiveSource(const cec_logical_address iInitiat
command.parameters.PushBack((uint8_t) ((iPhysicalAddress >> 8) & 0xFF));
command.parameters.PushBack((uint8_t) (iPhysicalAddress & 0xFF));
command.parameters.PushBack((uint8_t) ((iPhysicalAddress >> 8) & 0xFF));
command.parameters.PushBack((uint8_t) (iPhysicalAddress & 0xFF));
- return Transmit(command
, false
);
+ return Transmit(command);
}
bool CCECCommandHandler::TransmitCECVersion(const cec_logical_address iInitiator, const cec_logical_address iDestination, cec_version cecVersion)
}
bool CCECCommandHandler::TransmitCECVersion(const cec_logical_address iInitiator, const cec_logical_address iDestination, cec_version cecVersion)
@@
-842,7
+839,7
@@
bool CCECCommandHandler::TransmitCECVersion(const cec_logical_address iInitiator
cec_command::Format(command, iInitiator, iDestination, CEC_OPCODE_CEC_VERSION);
command.parameters.PushBack((uint8_t)cecVersion);
cec_command::Format(command, iInitiator, iDestination, CEC_OPCODE_CEC_VERSION);
command.parameters.PushBack((uint8_t)cecVersion);
- return Transmit(command
, false
);
+ return Transmit(command);
}
bool CCECCommandHandler::TransmitInactiveSource(const cec_logical_address iInitiator, uint16_t iPhysicalAddress)
}
bool CCECCommandHandler::TransmitInactiveSource(const cec_logical_address iInitiator, uint16_t iPhysicalAddress)
@@
-852,7
+849,7
@@
bool CCECCommandHandler::TransmitInactiveSource(const cec_logical_address iIniti
command.parameters.PushBack((iPhysicalAddress >> 8) & 0xFF);
command.parameters.PushBack(iPhysicalAddress & 0xFF);
command.parameters.PushBack((iPhysicalAddress >> 8) & 0xFF);
command.parameters.PushBack(iPhysicalAddress & 0xFF);
- return Transmit(command
, false
);
+ return Transmit(command);
}
bool CCECCommandHandler::TransmitMenuState(const cec_logical_address iInitiator, const cec_logical_address iDestination, cec_menu_state menuState)
}
bool CCECCommandHandler::TransmitMenuState(const cec_logical_address iInitiator, const cec_logical_address iDestination, cec_menu_state menuState)
@@
-861,7
+858,7
@@
bool CCECCommandHandler::TransmitMenuState(const cec_logical_address iInitiator,
cec_command::Format(command, iInitiator, iDestination, CEC_OPCODE_MENU_STATUS);
command.parameters.PushBack((uint8_t)menuState);
cec_command::Format(command, iInitiator, iDestination, CEC_OPCODE_MENU_STATUS);
command.parameters.PushBack((uint8_t)menuState);
- return Transmit(command
, false
);
+ return Transmit(command);
}
bool CCECCommandHandler::TransmitOSDName(const cec_logical_address iInitiator, const cec_logical_address iDestination, CStdString strDeviceName)
}
bool CCECCommandHandler::TransmitOSDName(const cec_logical_address iInitiator, const cec_logical_address iDestination, CStdString strDeviceName)
@@
-871,7
+868,7
@@
bool CCECCommandHandler::TransmitOSDName(const cec_logical_address iInitiator, c
for (size_t iPtr = 0; iPtr < strDeviceName.length(); iPtr++)
command.parameters.PushBack(strDeviceName.at(iPtr));
for (size_t iPtr = 0; iPtr < strDeviceName.length(); iPtr++)
command.parameters.PushBack(strDeviceName.at(iPtr));
- return Transmit(command
, false
);
+ return Transmit(command);
}
bool CCECCommandHandler::TransmitOSDString(const cec_logical_address iInitiator, const cec_logical_address iDestination, cec_display_control duration, const char *strMessage)
}
bool CCECCommandHandler::TransmitOSDString(const cec_logical_address iInitiator, const cec_logical_address iDestination, cec_display_control duration, const char *strMessage)
@@
-886,7
+883,7
@@
bool CCECCommandHandler::TransmitOSDString(const cec_logical_address iInitiator,
for (size_t iPtr = 0; iPtr < iLen; iPtr++)
command.parameters.PushBack(strMessage[iPtr]);
for (size_t iPtr = 0; iPtr < iLen; iPtr++)
command.parameters.PushBack(strMessage[iPtr]);
- return Transmit(command
, false
);
+ return Transmit(command);
}
bool CCECCommandHandler::TransmitPhysicalAddress(const cec_logical_address iInitiator, uint16_t iPhysicalAddress, cec_device_type type)
}
bool CCECCommandHandler::TransmitPhysicalAddress(const cec_logical_address iInitiator, uint16_t iPhysicalAddress, cec_device_type type)
@@
-897,7
+894,7
@@
bool CCECCommandHandler::TransmitPhysicalAddress(const cec_logical_address iInit
command.parameters.PushBack((uint8_t) (iPhysicalAddress & 0xFF));
command.parameters.PushBack((uint8_t) (type));
command.parameters.PushBack((uint8_t) (iPhysicalAddress & 0xFF));
command.parameters.PushBack((uint8_t) (type));
- return Transmit(command
, false
);
+ return Transmit(command);
}
bool CCECCommandHandler::TransmitSetMenuLanguage(const cec_logical_address iInitiator, const char lang[3])
}
bool CCECCommandHandler::TransmitSetMenuLanguage(const cec_logical_address iInitiator, const char lang[3])
@@
-908,7
+905,7
@@
bool CCECCommandHandler::TransmitSetMenuLanguage(const cec_logical_address iInit
command.parameters.PushBack((uint8_t) lang[1]);
command.parameters.PushBack((uint8_t) lang[2]);
command.parameters.PushBack((uint8_t) lang[1]);
command.parameters.PushBack((uint8_t) lang[2]);
- return Transmit(command
, false
);
+ return Transmit(command);
}
bool CCECCommandHandler::TransmitPoll(const cec_logical_address iInitiator, const cec_logical_address iDestination)
}
bool CCECCommandHandler::TransmitPoll(const cec_logical_address iInitiator, const cec_logical_address iDestination)
@@
-916,7
+913,7
@@
bool CCECCommandHandler::TransmitPoll(const cec_logical_address iInitiator, cons
cec_command command;
cec_command::Format(command, iInitiator, iDestination, CEC_OPCODE_NONE);
cec_command command;
cec_command::Format(command, iInitiator, iDestination, CEC_OPCODE_NONE);
- return Transmit(command
, false
);
+ return Transmit(command);
}
bool CCECCommandHandler::TransmitPowerState(const cec_logical_address iInitiator, const cec_logical_address iDestination, cec_power_status state)
}
bool CCECCommandHandler::TransmitPowerState(const cec_logical_address iInitiator, const cec_logical_address iDestination, cec_power_status state)
@@
-925,7
+922,7
@@
bool CCECCommandHandler::TransmitPowerState(const cec_logical_address iInitiator
cec_command::Format(command, iInitiator, iDestination, CEC_OPCODE_REPORT_POWER_STATUS);
command.parameters.PushBack((uint8_t) state);
cec_command::Format(command, iInitiator, iDestination, CEC_OPCODE_REPORT_POWER_STATUS);
command.parameters.PushBack((uint8_t) state);
- return Transmit(command
, false
);
+ return Transmit(command);
}
bool CCECCommandHandler::TransmitVendorID(const cec_logical_address iInitiator, uint64_t iVendorId)
}
bool CCECCommandHandler::TransmitVendorID(const cec_logical_address iInitiator, uint64_t iVendorId)
@@
-937,7
+934,7
@@
bool CCECCommandHandler::TransmitVendorID(const cec_logical_address iInitiator,
command.parameters.PushBack((uint8_t) (((uint64_t)iVendorId >> 8) & 0xFF));
command.parameters.PushBack((uint8_t) ((uint64_t)iVendorId & 0xFF));
command.parameters.PushBack((uint8_t) (((uint64_t)iVendorId >> 8) & 0xFF));
command.parameters.PushBack((uint8_t) ((uint64_t)iVendorId & 0xFF));
- return Transmit(command
, false
);
+ return Transmit(command);
}
bool CCECCommandHandler::TransmitAudioStatus(const cec_logical_address iInitiator, const cec_logical_address iDestination, uint8_t state)
}
bool CCECCommandHandler::TransmitAudioStatus(const cec_logical_address iInitiator, const cec_logical_address iDestination, uint8_t state)
@@
-946,7
+943,7
@@
bool CCECCommandHandler::TransmitAudioStatus(const cec_logical_address iInitiato
cec_command::Format(command, iInitiator, iDestination, CEC_OPCODE_REPORT_AUDIO_STATUS);
command.parameters.PushBack(state);
cec_command::Format(command, iInitiator, iDestination, CEC_OPCODE_REPORT_AUDIO_STATUS);
command.parameters.PushBack(state);
- return Transmit(command
, false
);
+ return Transmit(command);
}
bool CCECCommandHandler::TransmitSetSystemAudioMode(const cec_logical_address iInitiator, const cec_logical_address iDestination, cec_system_audio_status state)
}
bool CCECCommandHandler::TransmitSetSystemAudioMode(const cec_logical_address iInitiator, const cec_logical_address iDestination, cec_system_audio_status state)
@@
-955,7
+952,7
@@
bool CCECCommandHandler::TransmitSetSystemAudioMode(const cec_logical_address iI
cec_command::Format(command, iInitiator, iDestination, CEC_OPCODE_SET_SYSTEM_AUDIO_MODE);
command.parameters.PushBack((uint8_t)state);
cec_command::Format(command, iInitiator, iDestination, CEC_OPCODE_SET_SYSTEM_AUDIO_MODE);
command.parameters.PushBack((uint8_t)state);
- return Transmit(command
, false
);
+ return Transmit(command);
}
bool CCECCommandHandler::TransmitSetStreamPath(uint16_t iStreamPath)
}
bool CCECCommandHandler::TransmitSetStreamPath(uint16_t iStreamPath)
@@
-965,7
+962,7
@@
bool CCECCommandHandler::TransmitSetStreamPath(uint16_t iStreamPath)
command.parameters.PushBack((uint8_t) ((iStreamPath >> 8) & 0xFF));
command.parameters.PushBack((uint8_t) (iStreamPath & 0xFF));
command.parameters.PushBack((uint8_t) ((iStreamPath >> 8) & 0xFF));
command.parameters.PushBack((uint8_t) (iStreamPath & 0xFF));
- return Transmit(command
, false
);
+ return Transmit(command);
}
bool CCECCommandHandler::TransmitSystemAudioModeStatus(const cec_logical_address iInitiator, const cec_logical_address iDestination, cec_system_audio_status state)
}
bool CCECCommandHandler::TransmitSystemAudioModeStatus(const cec_logical_address iInitiator, const cec_logical_address iDestination, cec_system_audio_status state)
@@
-974,7
+971,7
@@
bool CCECCommandHandler::TransmitSystemAudioModeStatus(const cec_logical_address
cec_command::Format(command, iInitiator, iDestination, CEC_OPCODE_SYSTEM_AUDIO_MODE_STATUS);
command.parameters.PushBack((uint8_t)state);
cec_command::Format(command, iInitiator, iDestination, CEC_OPCODE_SYSTEM_AUDIO_MODE_STATUS);
command.parameters.PushBack((uint8_t)state);
- return Transmit(command
, false
);
+ return Transmit(command);
}
bool CCECCommandHandler::TransmitDeckStatus(const cec_logical_address iInitiator, const cec_logical_address iDestination, cec_deck_info state)
}
bool CCECCommandHandler::TransmitDeckStatus(const cec_logical_address iInitiator, const cec_logical_address iDestination, cec_deck_info state)
@@
-983,7
+980,7
@@
bool CCECCommandHandler::TransmitDeckStatus(const cec_logical_address iInitiator
cec_command::Format(command, iInitiator, iDestination, CEC_OPCODE_DECK_STATUS);
command.PushBack((uint8_t)state);
cec_command::Format(command, iInitiator, iDestination, CEC_OPCODE_DECK_STATUS);
command.PushBack((uint8_t)state);
- return Transmit(command
, false
);
+ return Transmit(command);
}
bool CCECCommandHandler::TransmitKeypress(const cec_logical_address iInitiator, const cec_logical_address iDestination, cec_user_control_code key, bool bWait /* = true */)
}
bool CCECCommandHandler::TransmitKeypress(const cec_logical_address iInitiator, const cec_logical_address iDestination, cec_user_control_code key, bool bWait /* = true */)
@@
-992,7
+989,7
@@
bool CCECCommandHandler::TransmitKeypress(const cec_logical_address iInitiator,
cec_command::Format(command, iInitiator, iDestination, CEC_OPCODE_USER_CONTROL_PRESSED);
command.parameters.PushBack((uint8_t)key);
cec_command::Format(command, iInitiator, iDestination, CEC_OPCODE_USER_CONTROL_PRESSED);
command.parameters.PushBack((uint8_t)key);
- return Transmit(command, bWait);
+ return Transmit(command,
!
bWait);
}
bool CCECCommandHandler::TransmitKeyRelease(const cec_logical_address iInitiator, const cec_logical_address iDestination, bool bWait /* = true */)
}
bool CCECCommandHandler::TransmitKeyRelease(const cec_logical_address iInitiator, const cec_logical_address iDestination, bool bWait /* = true */)
@@
-1000,12
+997,14
@@
bool CCECCommandHandler::TransmitKeyRelease(const cec_logical_address iInitiator
cec_command command;
cec_command::Format(command, iInitiator, iDestination, CEC_OPCODE_USER_CONTROL_RELEASE);
cec_command command;
cec_command::Format(command, iInitiator, iDestination, CEC_OPCODE_USER_CONTROL_RELEASE);
- return Transmit(command, bWait);
+ return Transmit(command,
!
bWait);
}
}
-bool CCECCommandHandler::Transmit(cec_command &command, bool b
ExpectResponse /* = true */, cec_opcode expectedResponse /* = CEC_OPCODE_NONE
*/)
+bool CCECCommandHandler::Transmit(cec_command &command, bool b
SuppressWait /* = false
*/)
{
bool bReturn(false);
{
bool bReturn(false);
+ cec_opcode expectedResponse(cec_command::GetResponseOpcode(command.opcode));
+ bool bExpectResponse(expectedResponse != CEC_OPCODE_NONE && !bSuppressWait);
command.transmit_timeout = m_iTransmitTimeout;
if (command.initiator == CECDEVICE_UNKNOWN)
command.transmit_timeout = m_iTransmitTimeout;
if (command.initiator == CECDEVICE_UNKNOWN)
@@
-1015,8
+1014,8
@@
bool CCECCommandHandler::Transmit(cec_command &command, bool bExpectResponse /*
}
{
}
{
- uint8_t iTries(0), iMaxTries(
command.opcode == CEC_OPCODE_NONE
? 1 : m_iTransmitRetries + 1);
- while (!bReturn && ++iTries <= iMaxTries)
+ uint8_t iTries(0), iMaxTries(
!command.opcode_set
? 1 : m_iTransmitRetries + 1);
+ while (!bReturn && ++iTries <= iMaxTries
&& !m_busDevice->IsUnsupportedFeature(command.opcode)
)
{
if ((bReturn = m_processor->Transmit(command)) == true)
{
{
if ((bReturn = m_processor->Transmit(command)) == true)
{
@@
-1052,3
+1051,8
@@
bool CCECCommandHandler::ActivateSource(void)
}
return true;
}
}
return true;
}
+
+void CCECCommandHandler::SignalOpcode(cec_opcode opcode)
+{
+ m_waitForResponse->Received(opcode);
+}