X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=src%2Flib%2Fdevices%2FCECDeviceMap.cpp;h=b7f3ab2026b4143b88b1096358b04d513b5caa3c;hb=0c271bd0fc05728d0dd90065a064737a979f50d3;hp=3c70603a541092ce56eadde795b899fbf3d84e75;hpb=205057410e723e23ab0f4ac910c497b3ecd319bd;p=deb_libcec.git diff --git a/src/lib/devices/CECDeviceMap.cpp b/src/lib/devices/CECDeviceMap.cpp index 3c70603..b7f3ab2 100644 --- a/src/lib/devices/CECDeviceMap.cpp +++ b/src/lib/devices/CECDeviceMap.cpp @@ -30,13 +30,16 @@ * http://www.pulse-eight.net/ */ +#include "env.h" #include "CECDeviceMap.h" + #include "CECAudioSystem.h" #include "CECPlaybackDevice.h" #include "CECRecordingDevice.h" #include "CECTuner.h" #include "CECTV.h" -#include "../CECProcessor.h" +#include "lib/CECProcessor.h" +#include "lib/CECTypeUtils.h" using namespace std; using namespace CEC; @@ -264,3 +267,25 @@ cec_logical_addresses CCECDeviceMap::ToLogicalAddresses(const CECDEVICEVEC &devi addresses.Set((*it)->GetLogicalAddress()); return addresses; } + +void CCECDeviceMap::GetChildrenOf(CECDEVICEVEC& devices, CCECBusDevice* device) const +{ + devices.clear(); + if (!device) + return; + + uint16_t iPA = device->GetCurrentPhysicalAddress(); + + for (CECDEVICEMAP::const_iterator it = m_busDevices.begin(); it != m_busDevices.end(); it++) + { + uint16_t iCurrentPA = it->second->GetCurrentPhysicalAddress(); + if (CCECTypeUtils::PhysicalAddressIsIncluded(iPA, iCurrentPA)) + devices.push_back(it->second); + } +} + +void CCECDeviceMap::SignalAll(cec_opcode opcode) +{ + for (CECDEVICEMAP::iterator it = m_busDevices.begin(); it != m_busDevices.end(); it++) + it->second->SignalOpcode(opcode); +}