⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sdkfunc.cpp

📁 刚刚调通基于MFC的蓝牙应用程序
💻 CPP
字号:
/************************************************************************************
// Sample code for calling IVT BlueSoleil APIs

  Copyright (c) 2004 -2005 , IVT Corporation. All rights reserved.
  
*******************************************************************************************/
#include <afx.h>
#include "main.h"
#include "SdkFunc.h"
#include "HelpFunc.h"
#include <stdio.h>
#include "menu.h"
#include "StdAfx.h"

extern CString box_text;
extern CPtrArray m_list_ptr;
extern int m_list_num;

GENERAL_CONNECT_INFO g_connList[MAX_CONNECT_COUNT] = {0};
GENERAL_SERVICE_INFO g_svcList[MAX_SERVICE_COUNT]={0};
SPPEX_INFO g_sppexSvr[MAX_SPPEX]={0};
DWORD g_dwLastError;

BOOL SDK_Init()
{
	
    DWORD dwBtVersion;
	
	if(!BT_InitializeLibrary()){
		printf("BT_InitializeLibrary() failed!\n");
		return FALSE;
	}
	dwBtVersion = BT_GetVersion();
	printf("BlueSoleil API version: %d.%d\n",LOBYTE(LOWORD(dwBtVersion)),HIBYTE(LOWORD(dwBtVersion)));
	
	BT_GetBtSpecVersion(&dwBtVersion);
	printf("Compliant BT Spec version: %d.%d\n",LOBYTE(LOWORD(dwBtVersion)),HIBYTE(LOWORD(dwBtVersion)));
	
	ChangeMenu2(MENU_STANDBY);
	ShowMenu();
	return TRUE;
	
}



void SDK_Done()
{
	BT_UninitializeLibrary();	
	ChangeMenu2(MENU_IDLE);
}
void SDK_BtInquiry()
{
	UCHAR	ucInqMode = INQUIRY_GENERAL_MODE,
		ucInqLen = 15;
	BLUETOOTH_DEVICE_INFO	lpDevsList[MAX_SERVICE_COUNT] = {0};
	DWORD	DevsListLen = sizeof(BLUETOOTH_DEVICE_INFO) * MAX_SERVICE_COUNT;
	
	char temp[MAX_PATH]={0};
    BOOL bAsynchronous = 0;//GetPrivateProfileInt("BT_INQUIRY_DEVICE", "bAsynchronous",1, g_szIniPath);
	
	DWORD dwResult;
	
	dwResult = BT_InquireDevices(ucInqMode, ucInqLen,  &DevsListLen, lpDevsList);
//	PrintError("BT_InquireDevices",dwResult);
	
	if(!bAsynchronous && dwResult == BTSTATUS_SUCCESS){
		DWORD i, offset;
		offset = sizeof(BLUETOOTH_DEVICE_INFO);
		BLUETOOTH_DEVICE_INFO *pDevice;
		for(i=0; i<((DevsListLen)/sizeof(BLUETOOTH_DEVICE_INFO)); i++){
			pDevice=(BLUETOOTH_DEVICE_INFO*)((UCHAR*)lpDevsList+i*offset);
			struct list_struct *plist=new list_struct;
			memset(plist,0,sizeof(list_struct));
			memcpy(plist->address,pDevice->address,6);
			
			DWORD dwMask = 0;
			BLUETOOTH_DEVICE_INFO_EX devInfo = {0};
			memcpy(&devInfo.address, pDevice->address, DEVICE_ADDRESS_LENGTH);
			devInfo.dwSize = sizeof(BLUETOOTH_DEVICE_INFO_EX);
			devInfo.szName[0]='\0';
			dwMask = MASK_DEVICE_NAME;
			
			DWORD dwResult;
//			dwResult = BT_SetRemoteDeviceInfo(dwMask, &devInfo);
//			PrintError("BT_SetRemoteDeviceInfo",dwResult);
			dwResult = BT_GetRemoteDeviceInfo(dwMask, &devInfo);
//			PrintError("BT_GetRemoteDeviceInfo",dwResult);
			memcpy(plist->name,devInfo.szName,20);
			BOOL found=0;
			struct list_struct *plist1;
			for(int n=0;n<m_list_ptr.GetSize();n++)
			{
				plist1=(struct list_struct *)m_list_ptr.GetAt(n);
				if(!memcmp(plist->address,plist1->address,6))
					found=1;
			}
			if(!found)
			m_list_ptr.Add(plist);
		}
	}
}



BOOL SDK_BtDisConnectService()
{
	BOOL rn=0;
	SDK_EnumConnections();
//	printf("Please input the number of the connection. (-1 to return)\nBSOL_CLIENT>");
	
	int nInput=0;
	
	DWORD dwResult = BT_DisconnectService(g_connList[nInput].dwHandle);
//	PrintError("BT_DisconnectService",dwResult);
	
	if(dwResult == BTSTATUS_SUCCESS)
	{
		memset(&g_connList[nInput], 0 , sizeof(GENERAL_CONNECT_INFO));
		rn=1;
	}
	return rn;
}
void SDK_BtGetRemoteInfo()
{
	DWORD dwMask = 1;
	
	BLUETOOTH_DEVICE_INFO_EX devInfo={0};
	devInfo.dwSize = sizeof(BLUETOOTH_DEVICE_INFO_EX);
	memcpy(devInfo.address, g_targetBdAddr, 6);
	
	DWORD dwResult = BT_GetRemoteDeviceInfo(dwMask, &devInfo);
	if(dwResult != BTSTATUS_SUCCESS){
		return;
	}
	struct list_struct *plist;
	if(m_list_num<m_list_ptr.GetSize())
	{
		plist=(struct list_struct *)m_list_ptr.GetAt(m_list_num);
		memcpy(plist->name,devInfo.szName,20);
	}
}

void SDK_EnumConnections()
{
	
	DWORD dwSize = MAX_CONNECT_COUNT*sizeof(GENERAL_CONNECT_INFO);
	memset(g_connList, 0, dwSize);
	
	DWORD dwResult = BT_EnumConnections(&dwSize,g_connList);
	PrintError("BT_EnumConnections",dwResult);
	
	for(DWORD i = 0; i < (dwSize/sizeof(GENERAL_CONNECT_INFO)); i++){
		printf("#%d handle=%d bIsOut=%d Service ID=0x%x bd=%02X:%02X:%02X:%02X:%02X:%02X\n",
			i,g_connList[i].dwHandle,g_connList[i].bIsOutgoing,g_connList[i].wServiceClass,
			g_connList[i].remoteBdAddr[5],
			g_connList[i].remoteBdAddr[4],
			g_connList[i].remoteBdAddr[3],
			g_connList[i].remoteBdAddr[2],
			g_connList[i].remoteBdAddr[1],
			g_connList[i].remoteBdAddr[0]);
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -