void QBtDeviceDiscovererPrivate::RegisterFoundDevice(BTDEVHDL dev_hdl)
{
	BTUINT8 szDevName[BTSDK_DEVNAME_LEN] = { 0 };
	BTUINT16 usLen = 0;
	BTUINT32 ulDevClass = 0;
	BTUINT8 szBdAddr[6] = {0};
	QBtDevice devInfo;

	usLen = BTSDK_DEVNAME_LEN;

	BTINT32 result = BTSDK_FALSE;
	if ((result = Btsdk_GetRemoteDeviceName(dev_hdl, szDevName, &usLen)) != BTSDK_OK)
	{
		usLen = BTSDK_DEVNAME_LEN;
		ZeroMemory(szDevName, BTSDK_DEVNAME_LEN);
		if ((result = Btsdk_UpdateRemoteDeviceName(dev_hdl, szDevName, &usLen)) != BTSDK_OK)
		{
			strcpy((char*)szDevName, "Unknown");
		}
	}

	devInfo.setName(QString::fromUtf8((char*)szDevName));

	Btsdk_GetRemoteDeviceAddress(dev_hdl, szBdAddr);

	QByteArray btAddrr((char*)szBdAddr, 6);
	devInfo.setAddress(QBtAddress::getAddressFromReversedArray(btAddrr));

	Btsdk_GetRemoteDeviceClass(dev_hdl, &ulDevClass);
	
	if(ulDevClass & BTSDK_DEVCLS_COMPUTER)
		devInfo.setType(QBtDevice::Computer);
	else if(ulDevClass & BTSDK_DEVCLS_PHONE)
		devInfo.setType(QBtDevice::Phone);
	else if(ulDevClass & BTSDK_DEVCLS_LAP)
		devInfo.setType(QBtDevice::LANAccess);
	else if(ulDevClass & BTSDK_DEVCLS_AUDIO)
		devInfo.setType(QBtDevice::AudioVideo);
	else if(ulDevClass & BTSDK_DEVCLS_PERIPHERAL)
		devInfo.setType(QBtDevice::Peripheral);
	else if(ulDevClass & BTSDK_DEVCLS_IMAGE)
		devInfo.setType(QBtDevice::Imaging);
	else if(ulDevClass & BTSDK_DEVCLS_IMAGE)
		devInfo.setType(QBtDevice::Imaging);
	else if(ulDevClass & BTSDK_DEVCLS_WEARABLE)
		devInfo.setType(QBtDevice::Wearable);
	else
		devInfo.setType(QBtDevice::Uncategorized);

	deviceList.append(devInfo);

	if(sp_ptr)
		emit sp_ptr->newDeviceFound(devInfo);
}
Пример #2
0
static void InquiryResult(BTDEVHDL dev_hdl) {
	BtDevice dev;

	BTUINT32 dev_class;
	BST(Btsdk_GetRemoteDeviceClass(dev_hdl, &dev_class));

	BtSdkRemoteDevicePropertyStru props;
	BST(Btsdk_GetRemoteDeviceProperty(dev_hdl, &props));

	byte nameBuf[256];
	WORD len = sizeof(nameBuf);
	BST(Btsdk_GetRemoteDeviceName(dev_hdl, nameBuf, &len));
	dev.name = (char*)nameBuf;

	BST(Btsdk_GetRemoteDeviceAddress(dev_hdl, dev.address.a));

	{
		CriticalSectionHandler csh(&gBt.critSec);
		LOGBT("d%i: \"%s\" (%s)\n", gBt.devices.size(),
			dev.name.c_str(), btaddr2string(dev.addr));
		gBt.devices.push_back(dev);
	}
	gBt.deviceCallback();
}