- if (!m_logicalAddresses.empty() && m_busDevices[m_logicalAddresses.primary])
- return m_busDevices[m_logicalAddresses.primary]->TransmitActiveView();
- return false;
+ cec_logical_address addr = m_logicalAddresses.primary;
+
+ if (type != CEC_DEVICE_TYPE_RESERVED)
+ {
+ for (uint8_t iPtr = 0; iPtr < 16; iPtr++)
+ {
+ if (m_logicalAddresses[iPtr] && m_busDevices[iPtr]->m_type == type)
+ {
+ addr = (cec_logical_address) iPtr;
+ break;
+ }
+ }
+ }
+
+ return SetStreamPath(m_busDevices[addr]->GetPhysicalAddress());
+}
+
+bool CCECProcessor::SetActiveView(void)
+{
+ return SetActiveSource();
+}
+
+bool CCECProcessor::SetStreamPath(uint16_t iStreamPath)
+{
+ bool bReturn(false);
+
+ CCECBusDevice *device = GetDeviceByPhysicalAddress(iStreamPath);
+ if (device)
+ {
+ for (unsigned int iPtr = 0; iPtr < 16; iPtr++)
+ m_busDevices[iPtr]->m_bActiveSource = false;
+
+ device->m_bActiveSource = true;
+ device->m_powerStatus = CEC_POWER_STATUS_ON;
+
+ if (m_logicalAddresses.isset(device->m_iLogicalAddress))
+ bReturn = device->TransmitActiveSource();
+ else
+ bReturn = true;
+ }
+
+ return bReturn;