#define ToString(p) m_processor->ToString(p)
-CCECBusDevice::CCECBusDevice(CCECProcessor *processor, cec_logical_address iLogicalAddress, uint16_t iPhysicalAddress) :
+CCECBusDevice::CCECBusDevice(CCECProcessor *processor, cec_logical_address iLogicalAddress, uint16_t iPhysicalAddress /* = CEC_INVALID_PHYSICAL_ADDRESS */) :
m_type (CEC_DEVICE_TYPE_RESERVED),
m_iPhysicalAddress (iPhysicalAddress),
- m_iStreamPath (0),
+ m_iStreamPath (CEC_INVALID_PHYSICAL_ADDRESS),
m_iLogicalAddress (iLogicalAddress),
m_powerStatus (CEC_POWER_STATUS_UNKNOWN),
m_processor (processor),
return m_cecVersion;
}
+bool CCECBusDevice::RequestActiveSource(bool bWaitForResponse /* = true */)
+{
+ bool bReturn(false);
+
+ if (MyLogicalAddressContains(m_iLogicalAddress))
+ {
+ MarkBusy();
+ CLibCEC::AddLog(CEC_LOG_NOTICE, "<< requesting active source");
+
+ bReturn = m_handler->TransmitRequestActiveSource(GetMyLogicalAddress(), bWaitForResponse);
+ MarkReady();
+ }
+ return bReturn;
+}
+
bool CCECBusDevice::RequestCecVersion(bool bWaitForResponse /* = true */)
{
bool bReturn(false);
bool bRequestUpdate(false);
{
CLockObject lock(m_mutex);
- bRequestUpdate = bIsPresent && m_iPhysicalAddress == 0xFFFF;
+ bRequestUpdate = bIsPresent && m_iPhysicalAddress == CEC_INVALID_PHYSICAL_ADDRESS;
}
if (bRequestUpdate)
SetVendorId (CEC_VENDOR_UNKNOWN);
SetMenuState (CEC_MENU_STATE_ACTIVATED);
SetCecVersion (CEC_VERSION_UNKNOWN);
- SetStreamPath (0xFFFF);
+ SetStreamPath (CEC_INVALID_PHYSICAL_ADDRESS);
SetOSDName (ToString(m_iLogicalAddress));
SetInactiveSource();
m_iLastActive = 0;
SetVendorId (CEC_VENDOR_UNKNOWN);
SetMenuState (CEC_MENU_STATE_ACTIVATED);
SetCecVersion (CEC_VERSION_1_3A);
- SetStreamPath (0xFFFF);
+ SetStreamPath (CEC_INVALID_PHYSICAL_ADDRESS);
SetInactiveSource();
m_iLastActive = 0;
m_deviceStatus = newStatus;
}
}
-void CCECBusDevice::SetStreamPath(uint16_t iNewAddress, uint16_t iOldAddress /* = 0 */)
+void CCECBusDevice::SetStreamPath(uint16_t iNewAddress, uint16_t iOldAddress /* = CEC_INVALID_PHYSICAL_ADDRESS */)
{
CLockObject lock(m_mutex);
if (iNewAddress != m_iStreamPath)
CLibCEC::AddLog(CEC_LOG_DEBUG, ">> %s (%X): stream path changed from %04x to %04x", GetLogicalAddressName(), m_iLogicalAddress, iOldAddress == 0 ? m_iStreamPath : iOldAddress, iNewAddress);
m_iStreamPath = iNewAddress;
}
- else
- {
- CLibCEC::AddLog(CEC_LOG_DEBUG, "%s (%X): stream path unchanged (%04x)", GetLogicalAddressName(), m_iLogicalAddress, m_iStreamPath);
- }
CCECBusDevice *device = m_processor->GetDeviceByPhysicalAddress(iNewAddress);
if (device)
if (device)
device->SetInactiveSource();
}
-
- SetPowerStatus(CEC_POWER_STATUS_ON);
}
void CCECBusDevice::SetPowerStatus(const cec_power_status powerStatus)
cec_device_type type;
{
CLockObject lock(m_mutex);
- if (m_iPhysicalAddress == 0xffff)
+ if (m_iPhysicalAddress == CEC_INVALID_PHYSICAL_ADDRESS)
return false;
CLibCEC::AddLog(CEC_LOG_NOTICE, "<< %s (%X) -> broadcast (F): physical adddress %4x", GetLogicalAddressName(), m_iLogicalAddress, m_iPhysicalAddress);