📄 sdkfunc.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 + -