bool CCECBusDevice::PowerOn(void)
{
bool bReturn(false);
- GetVendorId(); // ensure that we got the vendor id
+ GetVendorId(); // ensure that we got the vendor id, because the implementations vary per vendor
MarkBusy();
CLibCEC::AddLog(CEC_LOG_NOTICE, "<< powering on '%s' (%X)", GetLogicalAddressName(), m_iLogicalAddress);
if (m_handler->PowerOn(GetMyLogicalAddress(), m_iLogicalAddress))
{
- {
-// CLockObject lock(m_mutex);
-// m_powerStatus = CEC_POWER_STATUS_UNKNOWN;
- SetPowerStatus(CEC_POWER_STATUS_IN_TRANSITION_STANDBY_TO_ON);
- }
-// cec_power_status status = GetPowerStatus();
-// if (status == CEC_POWER_STATUS_STANDBY || status == CEC_POWER_STATUS_UNKNOWN)
-// {
-// /* sending the normal power on command appears to have failed */
-// CStdString strLog;
-// strLog.Format("<< sending power on keypress to '%s' (%X)", GetLogicalAddressName(), m_iLogicalAddress);
-// CLibCEC::AddLog(CEC_LOG_DEBUG, strLog.c_str());
-//
-// TransmitKeypress(CEC_USER_CONTROL_CODE_POWER);
-// return TransmitKeyRelease();
-// }
+ SetPowerStatus(CEC_POWER_STATUS_IN_TRANSITION_STANDBY_TO_ON);
bReturn = true;
}
}
}
+bool CCECCommandHandler::PowerOn(const cec_logical_address iInitiator, const cec_logical_address iDestination)
+{
+ if (iDestination == CECDEVICE_TV)
+ return TransmitImageViewOn(iInitiator, iDestination);
+
+ return TransmitKeypress(iInitiator, iDestination, CEC_USER_CONTROL_CODE_POWER) &&
+ TransmitKeyRelease(iInitiator, iDestination);
+}
+
bool CCECCommandHandler::TransmitImageViewOn(const cec_logical_address iInitiator, const cec_logical_address iDestination)
{
cec_command command;
virtual bool ActivateSource(void);
virtual uint8_t GetTransmitRetries(void) const { return m_iTransmitRetries; }
- virtual bool PowerOn(const cec_logical_address iInitiator, const cec_logical_address iDestination) { return TransmitImageViewOn(iInitiator, iDestination); }
+ virtual bool PowerOn(const cec_logical_address iInitiator, const cec_logical_address iDestination);
virtual bool TransmitImageViewOn(const cec_logical_address iInitiator, const cec_logical_address iDestination);
virtual bool TransmitStandby(const cec_logical_address iInitiator, const cec_logical_address iDestination);
virtual bool TransmitRequestCecVersion(const cec_logical_address iInitiator, const cec_logical_address iDestination);