📄 btifclasses.h
字号:
/////////////////////////////////////////////////////////////////////////////
//
// Name BtIfClasses.h
// $Header:
//
// Function this file contains SDK class definitions
//
// Date Modification
// ----------------------------------
// 12/17/2000 JF Create
//
// Copyright (c) 2000-2006, Broadcom Corporation, All Rights Reserved.
//
//////////////////////////////////////////////////////////////////////////////
#ifndef _BTIFCLASSES_H
#define _BTIFCLASSES_H
#ifndef _BTWLIB
#ifdef WIDCOMMSDK_EXPORTS
#define WIDCOMMSDK __declspec(dllexport)
#else
#define WIDCOMMSDK __declspec(dllimport)
#endif
#else
#define WIDCOMMSDK
#endif
#include "com_error.h"
#include "BtIfDefinitions.h"
// Resolve forward references
//
class CSdpDiscoveryRec;
// Ensure alignment across all builds
//
#pragma pack (1)
#define BT_CHAR char
#define BT_CB_LPSTR WCHAR * // char used in call back function
class CWBtAPI;
//
// Define status values that are returned in the "OnDeviceStatus" callback
//
#define BT_DEVST_DOWN 0 // Device is present, but down
#define BT_DEVST_UP 1 // Device is present and UP
#define BT_DEVST_ERROR 2 // Device is in error (maybe being removed)
#define BT_DEVST_UNLOADED 3 // Stack is being unloaded
// Define master/slave role code for SwitchRole function
//
typedef enum
{
NEW_MASTER,
NEW_SLAVE
} MASTER_SLAVE_ROLE;
// Define return code for Audio functions
//
typedef enum
{
AUDIO_SUCCESS,
AUDIO_UNKNOWN_ADDR, // if the ACL connection is not up
AUDIO_BUSY, // if another SCO being set up to the same BD address
AUDIO_NO_RESOURCES, // if the max SCO limit has been reached
AUDIO_ALREADY_STARTED, // connection is already up.
AUDIO_UNKNOWN_ERROR, // unknown error, or code not supported in this version
AUDIO_INVALID_PARAM, // one of the API parameters was invalid - added BTW 4.0.1.1400, SDK 4.0
AUDIO_MISMATCH_ADDR, // connection attempt for specific bda does not match
// remote addr on connected ACL link - added BTW 4.0.1.1400, SDK 4.0
AUDIO_MODE_UNSUPPORTED, // The controller version is not BT1.2 or later
// or does not support eSCO - added BTW 5.0.1.200, SDK 5.0
AUDIO_WRONG_MODE, // There is no connection with a peer device
// or stack reports bad audio handle - added BTW 5.0.1.200, SDK 5.0
AUDIO_INVALID_HANDLE = 0xffff // The audio handle is invalid
} AUDIO_RETURN_CODE;
// Define common return code for new SDK functions that would normally return BOOL
typedef enum
{
SDK_SUCCESS, // The call was successful
SDK_FAIL, // Unspecified failure
SDK_NOT_SUPPORTED, // The API is not supported on the platform BTW stack version
SDK_BUSY, // The API cannot complete at this time, but may be retried
SDK_INVALID_PARAM, // One of the API parameters was invalid
SDK_ERR_RESOURCES, // A necessary resource could not be obtained
SDK_TIMEOUT, // The operation timed out before completion
} SDK_RETURN_CODE; // Added BTW and SDK 5.0.1.1100
WIDCOMMSDK void WIDCOMMSDK_ShutDown(void); // BTW SDK 4.0 - stubs for compatibility -
WIDCOMMSDK void WIDCOMMSDK_Init(void); // deprecated and no longer necessary
WIDCOMMSDK BOOL IsBroadcomStack(); // Added 6.1.0.500 SDK, supported on all stacks
////////////////////////////////////////////////////////////////////////////
//
// Define a class for interfacing to the stack
//
class WIDCOMMSDK CBtIf
{
public:
CBtIf();
virtual ~CBtIf();
// Application can use this function to start an inquiry.
BOOL StartInquiry();
// Application can use this function to stop an inquiry.
void StopInquiry();
// Application can use this function to start service discovery
BOOL StartDiscovery (BD_ADDR p_bda, GUID *p_service_guid);
// Define return code for Bond function
//
typedef enum
{
SUCCESS,
BAD_PARAMETER,
NO_BT_SERVER,
ALREADY_BONDED, // maintained for compatibility, BTW stack allows rebonding
FAIL,
REPEATED_ATTEMPTS // pairing has failed repeatedly, and further attempts will
// continue to return this code until after the device security
// timeout - added BTW 5.0.1.700, SDK 5.0
} BOND_RETURN_CODE;
typedef enum
{
REM_DEV_INFO_SUCCESS, // success response
REM_DEV_INFO_EOF, // no more devices found
REM_DEV_INFO_ERROR, // can not find exsiting entry for bda provided as input
REM_DEV_INFO_MEM_ERROR // out of memory
} REM_DEV_INFO_RETURN_CODE;
typedef struct
{
BD_ADDR bda;
DEV_CLASS dev_class;
BD_NAME bd_name;
BOOL b_paired;
BOOL b_connected;
} REM_DEV_INFO;
typedef struct
{
BD_ADDR bd_addr;
UINT8 hci_version;
UINT16 hci_revision;
UINT8 lmp_version;
UINT16 manufacturer;
UINT16 lmp_sub_version;
} DEV_VER_INFO;
typedef enum
{
LINK_MODE_NORMAL,
LINK_MODE_HOLD,
LINK_MODE_SNIFF,
LINK_MODE_PARK
} LINK_MODE;
BOND_RETURN_CODE Bond(BD_ADDR bda, BT_CHAR* pin_code);
// query if a device is bonded
BOOL BondQuery(BD_ADDR bda);
// Remove Bonding
BOOL UnBond(BD_ADDR bda);
// Create AudioConnection
AUDIO_RETURN_CODE CreateAudioConnection(BD_ADDR bda, BOOL bIsClient, UINT16 *audioHandle);
// Disconnect AudioConnection
static AUDIO_RETURN_CODE RemoveAudioConnection(UINT16 audioHandle);
// audio callback functions
virtual void OnAudioConnected(UINT16 audioHandle){};
virtual void OnAudioDisconnect(UINT16 audioHandle){};
// Application can use this function to get list of services on the remote device
int ReadDiscoveryRecords (BD_ADDR p_bda, int max_size, CSdpDiscoveryRec *p_list, GUID *p_guid_filter = NULL);
typedef enum {
DISCOVERY_RESULT_SUCCESS,
DISCOVERY_RESULT_CONNECT_ERR, // Could not connect to remote device
DISCOVERY_RESULT_CONNECT_REJ, // Remote device rejected the connection
DISCOVERY_RESULT_SECURITY, // Security failed
DISCOVERY_RESULT_BAD_RECORD, // Remote Service Record Error
DISCOVERY_RESULT_OTHER_ERROR // Other error
} DISCOVERY_RESULT;
// application can use this function from within the OnDiscoveryComplete callback
// to find out the discovery results
CBtIf::DISCOVERY_RESULT GetLastDiscoveryResult(BD_ADDR p_bda, UINT16 *p_num_recs);
// server should call this method to switch role to master if
// they want to accept multiple connections
static BOOL SwitchRole(BD_ADDR bd_addr, MASTER_SLAVE_ROLE new_role);
virtual void OnInquiryComplete (BOOL success, short num_responses) {}// {}
virtual void OnDeviceResponded (BD_ADDR bda, DEV_CLASS devClass, BD_NAME bdName, BOOL bConnected) {} // = 0;
virtual void OnDiscoveryComplete () {}// = 0;
virtual void OnDiscoveryComplete (UINT16 nRecs, long lResultCode) {}// = 0;
void SetExtendedError(WBtRc code) { m_LastWBtRc = code; }
WBtRc GetExtendedError() const { return m_LastWBtRc; }
// allow to send vendor specific HCI_cmd
typedef enum {
SENDVENDOR_HCICMD_SUCCESS,
SENDVENDOR_HCICMD_FAILURE,
SENDVENDOR_HCICMD_UNKOWN_PLATFORM, // Platform is unkown, (ie. Not Win2k, Win9x)
SENDVENDOR_HCICMD_NO_SUPPORTED, // The HCI command being sent is not
// supported.
SENDVENDOR_HCICMD_BTRKNL_NOT_OPENED,
SENDVENDOR_HCICMD_BTKRNL_FAILURE, // Unable to open or talk to btkrnl.sys
SENDVENDOR_HCICMD_DEVICE_FAILURE, // Unable to open or talk to the device.
SENDVENDOR_HCICMD_NO_RESOURCE, // memalloc failed
SENDVENDOR_HCICMD_BUFFER_TOO_BIG, // input buffer is lager than max_command for HCI command - added SDK 5.0, BTW 5.0.1.702
SENDVENDOR_HCICMD_BUFFER_TOO_SMALL, // out buffer is too small to hold return data - added SDK 5.0, BTW 5.0.1.702
SENDVENDOR_HCICMD_INVALID_PARAM // one of the parameters is invalid - added SDK 5.0, BTW 5.0.1.702
} SENDVENDOR_HCICMD_RETURN_CODE;
SENDVENDOR_HCICMD_RETURN_CODE SendVendorSpecific_HCICMD(UINT16 OpCode, UINT8 *InParam, UINT8 InParamLen,
UINT8 * pOutBuff, UINT8 outBuffLen);
// sets the public variable m_BdAddr
BOOL GetLocalDeviceInfo();
BOOL GetLocalDeviceName(BD_NAME *BdName);
BOOL SetLocalDeviceName(BD_NAME BdName); // deactivated SDK 6.1
typedef void (tAudio_CB) (UINT16);
static AUDIO_RETURN_CODE CreateAudioConnection(BD_ADDR bda, BOOL bIsClient, UINT16 *audioHandle,
tAudio_CB *p_conn_cb, tAudio_CB *p_disc_cb);
// eSCO functions
static AUDIO_RETURN_CODE RegForEScoEvts (UINT16 audioHandle, tBTM_ESCO_CBACK *p_esco_cback); // added SDK 5.0, BTW 5.0.1.200
static AUDIO_RETURN_CODE SetEScoMode (tBTM_SCO_TYPE sco_mode, tBTM_ESCO_PARAMS *p_parms); // added SDK 5.0, BTW 5.0.1.200
static AUDIO_RETURN_CODE ReadEScoLinkData (UINT16 audioHandle, tBTM_ESCO_DATA *p_data); // added SDK 5.0, BTW 5.0.1.200
static AUDIO_RETURN_CODE ChangeEScoLinkParms (UINT16 audioHandle, tBTM_CHG_ESCO_PARAMS *p_parms); // added SDK 5.0, BTW 5.0.1.200
static void EScoConnRsp (UINT16 audioHandle, UINT8 hci_status, tBTM_ESCO_PARAMS *p_parms = NULL); // added SDK 5.0, BTW 5.0.1.200
static BOOL GetBTWVersionInfo(BT_CHAR *p_version_info, int nSize);
static BOOL GetDKVersionInfo(BT_CHAR *p_version_info, int nSize);
static BOOL SetLinkSupervisionTimeOut(BD_ADDR BdAddr, UINT16 timeout);
static BOOL SetSniffMode (BD_ADDR bd_Addr); // added SDK 4.0, BTW 4.0.1.1000
static BOOL CancelSniffMode (BD_ADDR bd_Addr); // added SDK 4.0, BTW 4.0.1.1000
static BOOL ReadLinkMode(BD_ADDR bd_Addr, UINT8 *pMode); // added SDK 5.0, BTW 5.0.1.900
BOOL GetLocalServiceName(BT_CHAR *p_ServiceName, int bBuffLen);
BOOL GetNextLocalServiceName(BT_CHAR *p_ServiceName, int bBuffLen);
REM_DEV_INFO_RETURN_CODE GetRemoteDeviceInfo(DEV_CLASS dev_class_filter, REM_DEV_INFO *p_rem_dev_info);
REM_DEV_INFO_RETURN_CODE GetNextRemoteDeviceInfo(REM_DEV_INFO *p_rem_dev_info);
BOOL CreateCOMPortAssociation(BD_ADDR bda, GUID *p_guid, LPCSTR szServiceName, USHORT mtu, BYTE SecurityID,
BYTE SecurityLevel, USHORT uuid, USHORT *p_com_port);
BOOL RemoveCOMPortAssociation(USHORT com_port);
BOOL ReadCOMPortAssociation(tBT_REM_ASSOC_REC *pBuffList, DWORD dwBuffSize, DWORD *pdwRequiredSize);
BOOL Add_Printer(LPCSTR PortName, BD_ADDR bd_Addr);
BOOL Remove_Printer(BD_ADDR bd_Addr);
BOOL IsDeviceReady(); // added BTW 3.0.0.300, SDK 3.0.1.901
BOOL GetLocalDeviceVersionInfo(DEV_VER_INFO *p_Dev_Ver_Info); // added BTW 3.0.0.1300, SDK 3.0.1.901
BOOL GetRemoteDeviceVersionInfo(BD_ADDR bd_addr_remote,
DEV_VER_INFO *p_Dev_Ver_Info); // added BTW 3.0.0.1400, SDK 3.0.1.901
BOOL IsStackServerUp(); // added BTW 3.0.0.1300, SDK 3.0.1.901
BOOL GetConnectionStats (BD_ADDR bd_Addr, tBT_CONN_STATS *p_conn_stats); // added BTW 3.0.0.1500, SDK 3.0.1.901
BOOL IsClientEnabled(UINT32 uClientID); // unsupported method, for internal use only
typedef void (tLINK_STATUS_CB)(BD_ADDR remote_bda, BOOL bLinkUp);
BOOL IsRemoteDeviceConnected(BD_ADDR bd_addr_remote); // added BTW 5.0.1.300, SDK 5.0
BOOL RegisterForLinkStatusChanges(tLINK_STATUS_CB *p_link_status_cb, BD_ADDR bda); // added BTW 5.0.1.300, SDK 5.0
SDK_RETURN_CODE IsRemoteDevicePresent(BD_ADDR bd_addr_remote); // added BTW and SDK 5.0.1.1000
private:
CWBtAPI *m_pBtApi;
public:
typedef enum {
DEVST_DOWN, // Device is present, but down
DEVST_UP, // Device is present and UP
DEVST_ERROR, // Device is in error (maybe being removed)
DEVST_UNLOADED, // Stack is being unloaded
DEVST_RELOADED // Stack reloaded after being unloaded
} STACK_STATUS;
virtual void OnStackStatusChange(CBtIf::STACK_STATUS new_status) {}
// standard GUID values for common Bluetooth service classes
static const GUID guid_SERVCLASS_SERVICE_DISCOVERY_SERVER;
static const GUID guid_SERVCLASS_BROWSE_GROUP_DESCRIPTOR;
static const GUID guid_SERVCLASS_PUBLIC_BROWSE_GROUP;
static const GUID guid_SERVCLASS_SERIAL_PORT;
static const GUID guid_SERVCLASS_LAN_ACCESS_USING_PPP;
static const GUID guid_SERVCLASS_PANU;
static const GUID guid_SERVCLASS_NAP;
static const GUID guid_SERVCLASS_GN;
static const GUID guid_SERVCLASS_DIALUP_NETWORKING;
static const GUID guid_SERVCLASS_IRMC_SYNC;
static const GUID guid_SERVCLASS_OBEX_OBJECT_PUSH;
static const GUID guid_SERVCLASS_OBEX_FILE_TRANSFER;
static const GUID guid_SERVCLASS_IRMC_SYNC_COMMAND;
static const GUID guid_SERVCLASS_HEADSET;
static const GUID guid_SERVCLASS_CORDLESS_TELEPHONY;
static const GUID guid_SERVCLASS_INTERCOM;
static const GUID guid_SERVCLASS_FAX;
static const GUID guid_SERVCLASS_HEADSET_AUDIO_GATEWAY;
static const GUID guid_SERVCLASS_PNP_INFORMATION;
static const GUID guid_SERVCLASS_GENERIC_NETWORKING;
static const GUID guid_SERVCLASS_GENERIC_FILETRANSFER;
static const GUID guid_SERVCLASS_GENERIC_AUDIO;
static const GUID guid_SERVCLASS_GENERIC_TELEPHONY;
static const GUID guid_SERVCLASS_BPP_PRINTING;
static const GUID guid_SERVCLASS_HCRP_PRINTING;
static const GUID guid_SERVCLASS_SPP_PRINTING;
static const GUID guid_SERVCLASS_HUMAN_INTERFACE;
static const GUID guid_SERVCLASS_AUDIO_SINK;
BD_ADDR m_BdAddr; // Bluetooth address of local device
BD_NAME m_BdName;
long m_DeviceState;
protected:
void SetOnDeviceStatusCallback();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -