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

📄 bluesoleilclient.cpp

📁 蓝牙驱动代码,实现了蓝牙查找,蓝牙传输的一个程序段,用VC++打开可运行
💻 CPP
📖 第 1 页 / 共 4 页
字号:
/************************************************************************************
// Sample code for calling IVT BlueSoleil APIs

  Copyright 2004, IVT Corporation

*******************************************************************************************/

#include <windows.h>
#include <stdio.h>
#include "HelpFunc.h"
#include "ConnectCheck.h"


/*******************************Global Variables**********************************/
UCHAR g_targetBdAddr[6]={0x6B,0xCC,0xEC,0xD9,0x0A,0x00};
BT_CONNECTION g_connList[MAX_CONNECT_COUNT] = {0};
char g_szIniPath[MAX_PATH] = {0};

DWORD g_dwLastError=0;



void SDK_BtConnectService()
{
	BLUETOOTH_DEVICE_INFO devInfo={0};
	devInfo.dwSize = sizeof(BLUETOOTH_DEVICE_INFO);
	memcpy(devInfo.address, g_targetBdAddr, 6);

	GENERAL_SERVICE_INFO svcInfo = {0};
	svcInfo.dwSize = sizeof(GENERAL_SERVICE_INFO);

	int i, in = 0;
	for(i = 0; i < MAX_CONNECT_COUNT; i++)	{
		if(connection_list[i].dwConnectionHandle == 0)
			break;
		else{
			if(i == MAX_CONNECT_COUNT){
				printf("Can not connect to any device any more!\n");
				return;
			}
		}
	}

	do{
		printf("Please Select the Service you want to connect!(-1: Return)\n");
		printf("(1) Dial-Up Network\n");
		printf("(2) Personal Area Network\n");
		printf("(3) Object Push Profile\n");
		printf("(4) File Transfer Profile\n");
		printf("(5) Synchronization\n");
		printf("(6) Basic Image Profile\n");
		printf("(7) Lan Access Profile\n");
		printf("(8) Audio Video Profile\n");
		printf("(9) Headset Profile\n");
		printf("(10) Human Interface Device Profile\n");
		printf("(11) Serial Port Profile\n");
		printf("(12) Hard Cable Replacement Profile\n");

		scanf("%d", &in);
		if(in<-1 || in>20){
			printf("Invalid Number! Please Select again!\n");
			continue;
		}
		switch(in)
		{
		case CLNT_CONNECT_DUN:
			Help_ConnectDUN(&devInfo, &svcInfo, i);
			break;
		case CLNT_CONNECT_PAN:
			Help_ConnectPAN(&devInfo, &svcInfo, i);
			break;
		case CLNT_CONNECT_OPP:
			Help_ConnectOPP(&devInfo, &svcInfo, i);
			break;
		case CLNT_CONNECT_FTP:
			Help_ConnectFTP(&devInfo, &svcInfo, i);
			break;
		case CLNT_CONNECT_SYNC:
			Help_ConnectSYNC(&devInfo, &svcInfo, i);
			break;
		case CLNT_CONNECT_BIP:
			Help_ConnectBIP(&devInfo, &svcInfo, i);
			break;
		case CLNT_CONNECT_LAP:
			Help_ConnectLAP(&devInfo, &svcInfo, i);
			break;
		case CLNT_CONNECT_HS:
			Help_ConnectHS(&devInfo, &svcInfo, i);
			break;
		case CLNT_CONNECT_HID:
			Help_ConnectHID(&devInfo, &svcInfo, i);
			break;
		case CLNT_CONNECT_SPP:
			Help_ConnectSPP(&devInfo, &svcInfo, i);
			break;
		case CLNT_CONNECT_HCRP:
			Help_ConnectHCRP(&devInfo, &svcInfo, i);
			break;
		case -1:
			StartUI();
			break;
		}
	}while(in == 0);

}

void SDK_BtDisConnectService()
{
	int in = -1;

	printf("All the connections on local device:\n");
	for(int i = 0; i < MAX_CONNECT_COUNT; i++){
		if(connection_list[i].dwConnectionHandle != 0){
			printf("List NO: %d\n", i);
			printf("Connection Handle:%d\n", connection_list[i].dwConnectionHandle);
			printf("Remote Device Address: %02X:%02X:%02X:%02X:%02X:%02X\n",
											connection_list[i].ucRemoteAddr[5],
											connection_list[i].ucRemoteAddr[4],
											connection_list[i].ucRemoteAddr[3],
											connection_list[i].ucRemoteAddr[2],
											connection_list[i].ucRemoteAddr[1],
											connection_list[i].ucRemoteAddr[0]);
			printf("***********************************************\n");
			in = i;
		}
	}
	if(in == -1){
		printf("There is no connection on this local device!\n");
		return;
	}
	do{
		printf("Please Input the List NO that you want to disconnect:(-1 to Cancel)");
		scanf("%d", &in);
		if(in < 0 || in > 7)
			continue;
		else{
			DWORD dwResult = BT_DisconnectService(connection_list[in].dwConnectionHandle);
	        PrintError("BT_DisconnectService",dwResult);

			if(dwResult == BTSTATUS_SUCCESS){
				connection_list[in].dwConnectionHandle = 0;
				connection_list[in].dwServiceClass = 0;
				memset(connection_list[in].ucRemoteAddr, 0 , 6);
			}
		}
	}while(in != -1);
}


void SDK_BtGetRemoteInfo()
{
	DWORD dwMask = 0;

	BLUETOOTH_DEVICE_INFO_EX devInfo={0};
	devInfo.dwSize = sizeof(BLUETOOTH_DEVICE_INFO_EX);
	memcpy(devInfo.address, g_targetBdAddr, 6);

	char temp[MAX_PATH];
	if(GetPrivateProfileString("GET_REMOTE_DEVICE_INFO", "Mask", NULL, temp, MAX_PATH, g_ini_path)==0){
		printf("Get Mask Failed!\n");
		return;
	}
	if((dwMask = atoi(temp)) == 0){
		printf("Invalid Parameters: 'Mask'\n");
		return;
	}
	//dwMask = 0x0000ffff;
	DWORD dwResult = BT_GetRemoteDeviceInfo(dwMask, &devInfo);
	PrintError("BT_GetRemoteDeviceInfo",dwResult);
	if(dwResult != BTSTATUS_SUCCESS){
		WriteLog("BT_GetRemoteDeviceInfo failed=%d",dwResult);
		return;
	}
	WriteLog("BT_GetRemoteDeviceInfo succeed. singnal=%d\n",devInfo.cSignalStrength);
	printf("Device Name:			%s\nDevice class:			%02X %02X %02X\n", 
		devInfo.szName, 
		devInfo.classOfDevice[0],
		devInfo.classOfDevice[1],
		devInfo.classOfDevice[2]);
	if(devInfo.bConnected)
		printf("Device Connection Status:	YES\n");
	else
		printf("Device Connection Status:	NO\n");
	
	if(devInfo.bPaired)
		printf("Device Paired Status:		YES\n");
	else
		printf("Device Paired Status:		NO\n");
	printf("Device Link Key:		");
	for(int i = 0; i < MAX_LINK_KEY_LENGTH; i++)
		printf("%02X",devInfo.linkKey[i]);
	printf("\n");
	printf("Device Clock Offset:		%d\n", devInfo.wClockOffset);
	printf("Device LPM version:		%d\n", devInfo.ucLmpVersion);
	printf("Device Manufacture:		%d\n", devInfo.wManuName);
	printf("Device Sub LMP version:		%d\n", devInfo.wLmpSubversion);
	printf("Device dwDataRecvBytes:		%d\n", devInfo.dwDataRecvBytes);
	printf("Device dwDataSentBytes:		%d\n", devInfo.dwDataSentBytes);
	printf("Device Signal Strength:		%d\n", devInfo.cSignalStrength);

}

void SDK_BtSetRemoteInfo()
{
	DWORD dwMask = 0;
	BLUETOOTH_DEVICE_INFO_EX devInfo = {0};
	devInfo.dwSize = sizeof(BLUETOOTH_DEVICE_INFO_EX);
	memcpy(devInfo.address, g_targetBdAddr, 6);

	char temp[MAX_PATH];
	//Get Mask
	if(GetPrivateProfileString("SET_REMOTE_DEVICE_INFO", "Mask", NULL, temp, MAX_PATH, g_ini_path)==0)	{
		printf("Get Mask Failed!\n");
		return;
	}
	if((dwMask = atoi(temp)) == 0){
		printf("Invalid Parameters: 'Mask'\n");
		return;
	}
	//Get Name
	if(GetPrivateProfileString("SET_REMOTE_DEVICE_INFO", "Name", "", devInfo.szName, MAX_DEVICE_NAME_LENGTH, g_ini_path)==0){
	}
	//Get Device Class
	if(GetPrivateProfileString("SET_REMOTE_DEVICE_INFO", "Device Class", NULL, temp, MAX_PATH, g_ini_path)==0){
		printf("Get Device Class Failed!\n");
		return;
	}
	if(Help_InputDeviceClass(temp, devInfo.classOfDevice) == BTSTATUS_FAIL){
		printf("Invalid Device Class!\n");
		return;
	}
	//Get Link Key
	if(GetPrivateProfileString("SET_REMOTE_DEVICE_INFO", "Link Key", NULL, temp, MAX_PATH, g_ini_path)==0){
		printf("Get Link Key Failed!\n");
		return;
	}
	if(Help_InputLinkKey(temp, devInfo.linkKey) == BTSTATUS_FAIL)
		return;
	
	//Get Clock Offset
	if(GetPrivateProfileString("SET_REMOTE_DEVICE_INFO", "Clock Offset", NULL, temp, MAX_PATH, g_ini_path)==0)	{
		printf("Get Link Key Failed!\n");
		return;
	}
	devInfo.wClockOffset = atoi(temp);
	
	DWORD dwResult;
	dwResult = BT_SetRemoteDeviceInfo(dwMask, &devInfo);
	PrintError("BT_SetRemoteDeviceInfo",dwResult);

}

void SDK_BtGetLocalInfo()
{
	DWORD dwMask = 0;
	BLUETOOTH_DEVICE_INFO_EX devInfo = {0};
	devInfo.dwSize = sizeof(BLUETOOTH_DEVICE_INFO_EX);
	memcpy(devInfo.address, g_targetBdAddr, 6);
	
	char temp[MAX_PATH];
	//Get Mask
	if(GetPrivateProfileString("GET_LOCAL_DEVICE_INFO", "Mask", NULL, temp, MAX_PATH, g_ini_path)==0){
		printf("Get Mask Failed!\n");
		return;
	}
	if((dwMask = atoi(temp)) == 0){
		printf("Invalid Parameters: 'Mask'\n");
		return;
	}
	memcpy(devInfo.address, g_targetBdAddr, 6);

	DWORD dwResult;
	dwResult = BT_GetLocalDeviceInfo(dwMask, &devInfo);
	PrintError("BT_GetLocalDeviceInfo",dwResult);
	
	printf("Device Address:	%02X:%02X:%02X:%02X:%02X:%02X \n",
		devInfo.address[5],
		devInfo.address[4],
		devInfo.address[3],
		devInfo.address[2], 
		devInfo.address[1], 
		devInfo.address[0]);
	printf("Device Name:			%s\nDevice class:			%02X %02X %02X\n", 
		devInfo.szName, 
		devInfo.classOfDevice[0],
		devInfo.classOfDevice[1],
		devInfo.classOfDevice[2]);
	printf("Device Manufacturer Name:	%d\n", devInfo.wManuName);
	printf("Device LMP Version:		%d\n", devInfo.ucLmpVersion);
	printf("Device LMP SubVersion:		%d\n", devInfo.wLmpSubversion);
	
	if(devInfo.bConnected)
		printf("Device Connection Status:	YES\n");
	else
		printf("Device Connection Status:	NO\n");


}

void SDK_BtSetLocalInfo()
{
	DWORD dwMask = 0;
	BLUETOOTH_DEVICE_INFO devInfo = {0};
	devInfo.dwSize = sizeof(BLUETOOTH_DEVICE_INFO);
	memcpy(devInfo.address, g_targetBdAddr, 6);

	char temp[MAX_PATH];
	//Get Mask
	if(GetPrivateProfileString("SET_LOCAL_DEVICE_INFO", "Mask", NULL, temp, MAX_PATH, g_ini_path)==0){
		printf("Get Mask Failed!\n");
		return;
	}
	if((dwMask = atoi(temp)) == 0){
		printf("Invalid Parameters: 'Mask'\n");
		return;
	}
	//Get Name
	if(GetPrivateProfileString("SET_LOCAL_DEVICE_INFO", "Name", NULL, devInfo.szName, MAX_DEVICE_NAME_LENGTH, g_ini_path)==0){
		printf("Get Name Failed!\n");
		return;
	}
	//Get Device Class
	if(GetPrivateProfileString("SET_LOCAL_DEVICE_INFO", "Device Class", NULL, temp, MAX_PATH, g_ini_path)==0){
		printf("Get Device Class Failed!\n");
		return;
	}
	if(Help_InputDeviceClass(temp, devInfo.classOfDevice) == BTSTATUS_FAIL){
		printf("Invalid Device Class!\n");
		return;
	}
	
    DWORD dwResult;
	dwResult=BT_SetLocalDeviceInfo(dwMask, &devInfo);
	PrintError("BT_SetLocalDeviceInfo",dwResult);
}

void SDK_BtRegisterCallBack()
{
	UCHAR in;
	BOOL bInvalid_Input = TRUE;
	DWORD dwResult;

	do {
		printf("Please Select the Event (-1:Return 0:All the Events):\n");
		printf("(1) EVENT_AUTHENTICATION\n");
		printf("(2) EVENT_PIN_CODE_REQUEST\n");
		printf("(3) EVENT_CONNECTION_STATUS\n");
		printf("(4) EVENT_DUN_RAS_CALLBACK\n");
		printf("(5) EVENT_ERROR\n");
		printf("(6) EVENT_INQUIRY_DEVICE_REPORT\n");
		printf("(7) EVENT_SPPEX_STATUS\n");
		printf("(8) EVENT_BLUETOOTH_STATUS\n");
		printf("(13) EVENT_PAN_NOTIFICATION\n");
		printf("(14) EVENT_AUTHORIZE_REQUEST\n");

		scanf("%d", &in);
		if(in == -1 || in==0)
			break;
		if(!ISVALIDEVENT(in))
		{
			printf("\nInvalid Event!\n");
		}
		else
			bInvalid_Input = FALSE;
	} while(bInvalid_Input);
	switch(in)
	{
	case 0:
		dwResult=BT_RegisterCallback(EVENT_AUTHENTICATION, SDK_Authentication);
		PrintError("BT_RegisterCallback EVENT_AUTHENTICATION",dwResult);
		dwResult=BT_RegisterCallback(EVENT_PIN_CODE_REQUEST, SDK_PinRequestInd);
		PrintError("BT_RegisterCallback EVENT_PIN_CODE_REQUEST",dwResult);
		dwResult=BT_RegisterCallback(EVENT_CONNECTION_STATUS, SDK_ConnectionInd);
		PrintError("BT_RegisterCallback EVENT_CONNECTION_STATUS",dwResult);
		dwResult=BT_RegisterCallback(EVENT_DUN_RAS_CALLBACK, SDK_RasCallback);
		PrintError("BT_RegisterCallback EVENT_DUN_RAS_CALLBACK",dwResult);
		dwResult=BT_RegisterCallback(EVENT_ERROR, SDK_GeneralError);
		PrintError("BT_RegisterCallback EVENT_ERROR",dwResult);
		dwResult=BT_RegisterCallback(EVENT_INQUIRY_DEVICE_REPORT, SDK_InquiryDeviceInd);
		PrintError("BT_RegisterCallback EVENT_INQUIRY_DEVICE_REPORT",dwResult);
		dwResult=BT_RegisterCallback(EVENT_SPPEX_CONNECTION_STATUS, SDK_SPPEXConnectionInd);
		PrintError("BT_RegisterCallback EVENT_SPPEX_CONNECTION_STATUS",dwResult);
		dwResult=BT_RegisterCallback(EVENT_BLUETOOTH_STATUS, SDK_BluetoothInd);
		PrintError("BT_RegisterCallback EVENT_BLUETOOTH_STATUS",dwResult);
		dwResult=BT_RegisterCallback(EVENT_PAN_NOTIFICATION, SDK_PanInd);
		PrintError("BT_RegisterCallback EVENT_PAN_NOTIFICATION",dwResult);
		dwResult=BT_RegisterCallback(EVENT_AUTHORIZE_REQUEST, SDK_AuthorizeInd);
		PrintError("BT_RegisterCallback EVENT_AUTHORIZE_REQUEST",dwResult);
	
		break;
	case EVENT_AUTHENTICATION:
		dwResult=BT_RegisterCallback(in, SDK_Authentication);
		PrintError("BT_RegisterCallback EVENT_AUTHENTICATION",dwResult);
		break;
	case EVENT_PIN_CODE_REQUEST:
		dwResult=BT_RegisterCallback(in, SDK_PinRequestInd);
		PrintError("BT_RegisterCallback EVENT_PIN_CODE_REQUEST",dwResult);
		break;
	case EVENT_CONNECTION_STATUS:
		dwResult=BT_RegisterCallback(in, SDK_ConnectionInd);
		PrintError("BT_RegisterCallback EVENT_CONNECTION_STATUS",dwResult);
		break;
	case EVENT_DUN_RAS_CALLBACK:

⌨️ 快捷键说明

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