FreeCalypso > hg > leo2moko-debug
diff g23m/condat/ms/src/mfw/mfw_bt_dm.h @ 0:509db1a7b7b8
initial import: leo2moko-r1
author | Space Falcon <falcon@ivan.Harhan.ORG> |
---|---|
date | Mon, 01 Jun 2015 03:24:05 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/g23m/condat/ms/src/mfw/mfw_bt_dm.h Mon Jun 01 03:24:05 2015 +0000 @@ -0,0 +1,369 @@ +/* ++-------------------------------------------------------------------+ +| PROJECT: MMI-Framework (8445) $Workfile:: mfw_bt_dm.h $| +| $Author:: NDH $Revision:: 1 $| +| CREATED: 17.04.04 $Modtime:: 17.04.04 10:48 $| +| STATE : code | ++-------------------------------------------------------------------+ + + + MODULE : MFW_BT + + PURPOSE : This module contains the definitions for MFW Bluetooth Device Manager Profile + +*/ + +#ifndef DEF_MFW_BT_DM_HEADER +#define DEF_MFW_BT_DM_HEADER + +#include "bta_api.h" +#include "bd.h" +#include "mfw_bte.h" + +#define MFW_BT_NAME_LENGTH 34 +#define MFW_BT_DEFAULT_INQ_DURATION 4 +#define MFW_BT_MAX_PIN_CODE_LEN 16 +#define MFW_BT_MAX_CONSEC_CONNECTIONS MAX_L2CAP_LINKS + +/* redefine the BD_ADDR type in a "MFW-like" way */ +typedef BD_ADDR T_MFW_BT_DM_DEV_ADDR; +#define MFW_BT_DM_DEV_ADDR_LEN BD_ADDR_LEN + +/* +** Event Parameter Structure Definitions +*/ +typedef tBTA_DM_ENABLE T_MFW_BT_DM_ENABLE; +typedef tBTA_DM_LINK_UP T_MFW_BT_DM_LINK_UP; +typedef tBTA_DM_LINK_DOWN T_MFW_BT_DM_LINK_DOWN; +typedef tBTA_DM_PIN_REQ T_MFW_BT_DM_PIN_REQ; + +typedef tBTA_DM_AUTHORIZE T_MFW_BT_DM_AUTHORIZE_REQ; +typedef tBTA_DM_SIG_STRENGTH T_MFW_BT_DM_SIG_STRENGTH_IND; + +/* Search structures */ +typedef tBTA_DM_INQ_RES T_MFW_BT_DM_INQ_RES; +typedef tBTA_DM_INQ_CMPL T_MFW_BT_DM_INQ_CMPL; + +/* other BT structures*/ +typedef tBTA_SERVICE_MASK T_MFW_BT_SERVICE_MASK; +typedef tBTA_SIG_STRENGTH_MASK T_MFW_BT_DM_SIG_STRENGTH; + +typedef tBTA_DM_DISC T_MFW_BT_VIS_MASK; + + +enum +{ + MFW_BT_AUTH_FAIL = 0, + MFW_BT_AUTH_ALWAYS, + MFW_BT_AUTH_ONCE +}; + +typedef UINT8 T_MFW_BT_AUTHORIZE; + +typedef struct +{ + BD_ADDR bd_addr; + UINT8 bd_name[MFW_BT_NAME_LENGTH]; + BOOL is_success; +} +T_MFW_BT_DM_AUTH_CMPL; + +/* remote device */ +typedef struct +{ + /* important!The first parameters should be the same as T_MFW_BT_REM_DEVICE_INFO */ + BD_ADDR bd_addr; + char friendly_name[MFW_BT_NAME_LENGTH]; + DEV_CLASS dev_class; + BOOL link_key_present; + BOOL is_trusted; + T_MFW_BT_SERVICE_MASK trusted_services; + T_MFW_BT_SERVICE_MASK services; + BOOL is_new; + /* then these are "internal" parameters */ + BOOL in_use; + char name[MFW_BT_NAME_LENGTH]; + LINK_KEY link_key; +} +T_MFW_BT_REM_DEVICE; + + +/* remote device. !!! Please keep this structure synchronized with the + previous one: T_MFW_BT_REM_DEVICE !!! */ +typedef struct +{ + BD_ADDR bd_addr; + char name[MFW_BT_NAME_LENGTH]; + DEV_CLASS dev_class; + BOOLEAN link_key_present; + BOOLEAN is_trusted; + T_MFW_BT_SERVICE_MASK trusted_services; + T_MFW_BT_SERVICE_MASK services; + BOOL is_new; /* specify whether this device is already or not into our device DB */ +} +T_MFW_BT_REM_DEVICE_INFO; + +typedef T_MFW_BT_REM_DEVICE_INFO T_MFW_BT_DM_DISC_RES; + + +/* MFW_BT main control block */ +typedef struct +{ + T_MFW_BT_SERVICE_MASK ui_current_active_connection; /* active connection mask */ + T_MFW_BT_REM_DEVICE *p_selected_rem_device; /* pointer to selected device */ + BD_ADDR peer_bdaddr; /* peer bdaddr stored for pin_reply etc*/ + UINT8 peer_name[MFW_BT_NAME_LENGTH]; /* bluetooth name of peer device for pin reply etc */ + T_MFW_BT_SERVICE_MASK peer_service; /* peer services stored for auth etc*/ + T_MFW_BT_SERVICE_MASK search_services; /* services to search for */ + BOOL is_discovery; /* remember if it's an inquiry or a discovery */ + T_MFW_BT_SERVICE_MASK established_linked; /* which services have an established link */ + BOOL is_name_requested; /* remember if we asked for the local name */ + BOOL is_started; /* if BT is not started, we will not call BTA APIs */ +} +T_MFW_BT_CB; + +extern T_MFW_BT_CB mfw_bt_cb; + + + +#define MFW_BT_NUM_REM_DEVICE 10 + +/* Inquiry results database */ +typedef struct +{ + T_MFW_BT_REM_DEVICE remote_device[MFW_BT_NUM_REM_DEVICE]; + UINT8 rem_index; +} +tMFW_BT_INQ_DB; + + + +/* +** The following Macros define the Device Manager Signals (BT -> Mfw) +*/ +#define T_MFW_BT_DM_SEC_EVT tBTA_DM_SEC_EVT +#define T_MFW_BT_DM_SEC_SIG_DATA tBTA_DM_SEC + +#define T_MFW_BT_DM_SRCH_EVT tBTA_DM_SEARCH_EVT +#define T_MFW_BT_DM_SRCH_SIG_DATA tBTA_DM_SEARCH + +/* +** Event Identifiers (Mfw -> BMI) +*/ +#define E_BT_DM_LINK_UP (T_MFW_EVENT)0x00000010 +#define E_BT_DM_LINK_DOWN (T_MFW_EVENT)0x00000020 +#define E_BT_DM_INQ_RES (T_MFW_EVENT)0x00000030 +#define E_BT_DM_INQ_CMPL (T_MFW_EVENT)0x00000040 +#define E_BT_DM_DISC_RES (T_MFW_EVENT)0x00000050 +#define E_BT_DM_DISC_CMPL (T_MFW_EVENT)0x00000060 +#define E_BT_DM_PIN_REQ (T_MFW_EVENT)0x00000070 +#define E_BT_DM_AUTH_CMPL (T_MFW_EVENT)0x00000080 +#define E_BT_DM_AUTHORIZE_REQ (T_MFW_EVENT)0x00000090 +#define E_BT_DM_DEV_NAME_REQ (T_MFW_EVENT)0x000000A0 +#define E_BT_DM_ENABLE (T_MFW_EVENT)0x00000100 + + +#define E_BT_DM_SIG_STRENGTH_IND (T_MFW_EVENT)0x000000E0 +#define E_BT_ALL_DM_SERVICES (T_MFW_EVENT)0x000000F0 + + + + + +/******************************************************************************* + $Function: mfw_bt_dm_set_visibility + $Description: set visibility of local BT device + $Returns: T_MFW_BT_STATUS. Success or fail. + $Arguments: is_visible: new visibility setting. is_temp: define whether it is a temporary + modification ( TRUE ) or a permanent one ( FALSE ). +*******************************************************************************/ +T_MFW_BT_STATUS mfw_bt_dm_set_visibility( BOOL is_visible, BOOL is_temp); + +/******************************************************************************* + $Function: mfw_bt_dm_get_visibility + $Description: get visibility of local BT device + $Returns: TRUE if visible, FALSE if not. + $Arguments: none +*******************************************************************************/ +BOOL mfw_bt_dm_get_visibility( void ); + +/******************************************************************************* + $Function: mfw_bt_dm_get_local_name + $Description: read local BT device name + $Returns: a pointer to a string. NULL if no name available. One should make a copy of + string if he wants to use it/modify it. + $Arguments: none +*******************************************************************************/ +UINT8 * mfw_bt_dm_get_local_name( void ); + +/******************************************************************************* + $Function: mfw_bt_dm_set_local_name + $Description: set local BT device name + $Returns: T_MFW_BT_STATUS + $Arguments: new name. Pointer to a string. This string is copied locally. Buffer is not freed. +*******************************************************************************/ +T_MFW_BT_STATUS mfw_bt_dm_set_local_name( INT8 *name ); + +/******************************************************************************* + $Function: mfw_bt_dm_get_bt_status + $Description: get the status of the local Bluetooth system. Used at start-up to decide whether + or not we want BT to be started by default. + $Returns: MFW_BT_SUCCESS is BT is started. 0 if OFF + $Arguments: +*******************************************************************************/ +BOOL mfw_bt_dm_get_bt_status( void ); + +/******************************************************************************* + $Function: mfw_bt_dm_pin_code + $Description: used by BMI to send back a pin code + $Returns: T_MFW_BT_STATUS. MFW_BT_NOT_INITIALISED is BT is not started. + $Arguments: pin code and pin code length. This data is copied. +*******************************************************************************/ +T_MFW_BT_STATUS mfw_bt_dm_pin_code(UINT8* pin_code, UINT8 pin_len); + +/******************************************************************************* + $Function: mfw_bt_dm_bond + $Description: used by BMI to send a pin code in order to establish a bonding with a + remote device. + $Returns: T_MFW_BT_STATUS. MFW_BT_NOT_INITIALISED is BT is not started. + + $Arguments: BD_ADDR of the remote device, pin code and pin code length. Data is copied. +*******************************************************************************/ +T_MFW_BT_STATUS mfw_bt_dm_bond(BD_ADDR bd_addr, UINT8* pin_code, UINT8 pin_len ); + +/******************************************************************************* + $Function: mfw_bt_dm_authorize_resp + $Description: used to answer to an authorization request + $Returns: T_MFW_BT_STATUS. SUCCESS/FAIL, but also: + MFW_BT_NOT_INITIALISED is BT is not started. + MFW_BT_INVALID_DATA if auth value is not correct. + MFW_BT_UNKNOWN_DEVICE if BD_addr is not recognized. + MFW_BT_DATA_BASE_FULL if there are already too many devices in the DB. + $Arguments: MFW_BT_AUTH_FAIL to refuse, + MFW_BT_AUTH_ONCE to grant access temporarily, + MFW_BT_AUTH_ALWAYS to grant permanent access +*******************************************************************************/ +T_MFW_BT_STATUS mfw_bt_dm_authorize_resp( T_MFW_BT_AUTHORIZE auth); + +/******************************************************************************* + $Function: mfw_bt_dm_sig_strength + $Description: ask for the link quality + $Returns: T_MFW_BT_STATUS. MFW_BT_NOT_INITIALISED if BT is not started. + $Arguments: T_MFW_BT_DM_SIG_STRENGTH sig_strength, UINT16 period, BOOLEAN is_on + See BTA documentation for more details. + +*******************************************************************************/ +T_MFW_BT_STATUS mfw_bt_dm_sig_strength ( T_MFW_BT_DM_SIG_STRENGTH sig_strength, + UINT16 period, + BOOLEAN is_on ); + +/******************************************************************************* + $Function: mfw_bt_dm_get_known_devices + $Description: used by BMI to get the list of known devices for a specified condition: either a + service mask, either a bd address ( union ). + MFW will fill in the variables: pp_device => table of known devices + number_of_devices => number of devices. + MFW will allocate memory for each device found. It's up to BMI to free it! + $Returns: T_MFW_BT_STATUS. + If BD_ADDR is specified, might return MFW_BT_UNKNOWN_DEVICE. + The answers will be returned using BMI signals: + - E_BT_DM_INQ_CMPL with the number of devices + - E_BT_DM_DISC_RES for each device + - then E_BT_DM_DISC_CMPL when it's done. + $Arguments: BD_ADDR if looking for a particular device. services if looking for a + category of device. If bd_addr is specified, ignore services. If services set + to 0, will return all the known devices. +*******************************************************************************/ +void mfw_bt_dm_get_known_devices ( BD_ADDR bd_addr, + T_MFW_BT_SERVICE_MASK services); + +/******************************************************************************* + $Function: mfw_bt_dm_delete_device + $Description: remove a device from the local DB + $Returns: T_MFW_BT_STATUS ( MFW_BT_SUCCESS, MFW_BT_FAIL, MFW_BT_UNKNOWN_DEVICE ) + $Arguments: BD address +*******************************************************************************/ +T_MFW_BT_STATUS mfw_bt_dm_delete_device(BD_ADDR bd_addr); + +/******************************************************************************* + $Function: mfw_bt_dm_add_device + $Description: This will store permanently a device in Flash. + $Returns: T_MFW_BT_STATUS + errors: MFW_BT_UNKNOWN_DEVICE, MFW_BT_DATA_BASE_FULL, + $Arguments: new BD address +*******************************************************************************/ + T_MFW_BT_STATUS mfw_bt_dm_add_device(BD_ADDR bd_addr); + +/******************************************************************************* + $Function: mfw_bt_dm_rename_device + $Description: modify the friendly name of a known ( already stored ) remote device + $Returns: T_MFW_BT_STATUS. + MFW_BT_UNKNOWN_DEVICE, DATA_BASE_FULL, MFW_BT_INVALID_DATA... + $Arguments: bd address of the remote device and the new name associated +*******************************************************************************/ +T_MFW_BT_STATUS mfw_bt_dm_rename_device(BD_ADDR bd_addr, UINT8* new_name); + + + + +/* +** Functions used to interact with the BT "search engine" +*/ + +/******************************************************************************* + $Function: mfw_bt_dm_discover_device + $Description: Discovers services on a new device + $Returns: T_MFW_BT_STATUS. MFW_BT_NOT_INITIALISED if BT not started. + $Arguments: bd address of the remote device to discover +*******************************************************************************/ +T_MFW_BT_STATUS mfw_bt_dm_discover_device(BD_ADDR bd_addr); + + +/******************************************************************************* + $Function: mfw_bt_dm_is_discover + $Description: Checks if we are in discovering services process + $Returns: + $Arguments: None +*******************************************************************************/ +UINT8 mfw_bt_dm_is_discover(void); + +/******************************************************************************* + $Function: mfw_bt_dm_cancel_search + $Description: cancel an ongoing search + $Returns: MFW_BT_NOT_INITIALISED if BT not started. + $Arguments: +*******************************************************************************/ +T_MFW_BT_STATUS mfw_bt_dm_cancel_search( void ); + +/******************************************************************************* + $Function: mfw_bt_dm_search + $Description: Searches for devices supporting the services specified. If services = 0, will + return all the found devices regardless of their functionalities. + $Returns: MFW_BT_NOT_INITIALISED if BT not started. + $Arguments: services. If +*******************************************************************************/ +T_MFW_BT_STATUS mfw_bt_dm_search(T_MFW_BT_SERVICE_MASK services); + + + + + + +/* +** Bluetooth Device Manager Profile Prototypes +*/ +void mfw_bt_dm_security_cb(T_MFW_BT_DM_SEC_EVT event, T_MFW_BT_DM_SEC_SIG_DATA *data); +void mfw_bt_dm_search_cb(T_MFW_BT_DM_SRCH_EVT event, T_MFW_BT_DM_SRCH_SIG_DATA *data); + +T_MFW_BT_STATUS mfw_bt_dm_security_hndlr (T_MFW_BT_DM_SEC_EVT event, T_MFW_BT_DM_SEC_SIG_DATA *data); +T_MFW_BT_STATUS mfw_bt_dm_search_hndlr (T_MFW_BT_DM_SRCH_EVT event, T_MFW_BT_DM_SRCH_SIG_DATA *data); + + + + + + + + +#endif +