예제 #1
0
void 
CNdasAutoRegister::NdasHeartbeatReceived(const NDAS_DEVICE_HEARTBEAT_DATA* Data)
{
	const NDAS_DEVICE_ID& deviceId = Data->NdasDeviceId;
	
	ACCESS_MASK autoRegAccess = m_data.GetAutoRegAccess(deviceId);
	if (!autoRegAccess) 
	{
		return;
	}

	//
	// If already registered, do nothing
	//
	CComPtr<INdasDevice> pNdasDevice;
	HRESULT hr = pGetNdasDevice(deviceId, &pNdasDevice);
	if (SUCCEEDED(hr))
	{
		//
		// NdasDevice is already registered.
		// Ignore the registration
		//
		return;
	}

	::NdasLogEventInformation(
		EVT_NDASSVC_INFO_AUTOREG_NDAS_DEVICE_FOUND,
		NULL, 
		0, 
		sizeof(deviceId), 
		NULL, 
		&deviceId);
	
	(VOID) AddToQueue(deviceId, autoRegAccess);
}
예제 #2
0
CNdasUnitDevicePtr
pGetNdasUnitDevice(const NDAS_DEVICE_ID_EX& device, DWORD unitNo)
{
	CNdasDevicePtr pDevice = pGetNdasDevice(device);
	if (CNdasDeviceNullPtr == pDevice) 
	{
		return CNdasUnitDeviceNullPtr;
	}
	return pDevice->GetUnitDevice(unitNo);
}
예제 #3
0
CNdasUnitDevicePtr 
pGetNdasUnitDevice(DWORD SlotNo, DWORD UnitNo)
{
	CNdasDevicePtr pDevice = pGetNdasDevice(SlotNo);
	if (CNdasDeviceNullPtr == pDevice) 
	{
		return CNdasUnitDeviceNullPtr;
	}
	return pDevice->GetUnitDevice(UnitNo);
}
예제 #4
0
VOID 
CNdasAutoRegister::Update(ximeta::CSubject* pChangedSubject)
{
	const CNdasDeviceHeartbeatListener& listener = m_service.GetDeviceHeartbeatListener();
	const CNdasDeviceHeartbeatListener* pListener = &listener;

	//
	// Ignore other than subscribed heartbeat listener
	//

	if (pListener == pChangedSubject) {

		NDAS_DEVICE_HEARTBEAT_DATA hbData;

		pListener->GetHeartbeatData(&hbData);

		NDAS_DEVICE_ID deviceId = {0};
		::CopyMemory(&deviceId, hbData.remoteAddr.Node, sizeof(deviceId));

		ACCESS_MASK autoRegAccess = m_data.GetAutoRegAccess(deviceId);
		if (!autoRegAccess) 
		{
			return;
		}

		//
		// If already registered, do nothing
		//
		CNdasDevicePtr pDevice = pGetNdasDevice(deviceId);
		if (0 != pDevice.get()) 
		{
			return;
		}

		::NdasLogEventInformation(
			EVT_NDASSVC_INFO_AUTOREG_NDAS_DEVICE_FOUND,
			NULL, 
			0, 
			sizeof(deviceId), 
			NULL, 
			&deviceId);
		
		(VOID) AddToQueue(deviceId, autoRegAccess);
	}
}