Home | History | Annotate | Download | only in include
      1 /******************************************************************************
      2  *
      3  *  Copyright (C) 2006-2012 Broadcom Corporation
      4  *
      5  *  Licensed under the Apache License, Version 2.0 (the "License");
      6  *  you may not use this file except in compliance with the License.
      7  *  You may obtain a copy of the License at:
      8  *
      9  *  http://www.apache.org/licenses/LICENSE-2.0
     10  *
     11  *  Unless required by applicable law or agreed to in writing, software
     12  *  distributed under the License is distributed on an "AS IS" BASIS,
     13  *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     14  *  See the License for the specific language governing permissions and
     15  *  limitations under the License.
     16  *
     17  ******************************************************************************/
     18 
     19 /******************************************************************************
     20  *
     21  *  This is the public interface file the BTA Java I/F
     22  *
     23  ******************************************************************************/
     24 #ifndef BTA_JV_API_H
     25 #define BTA_JV_API_H
     26 
     27 #include "bt_target.h"
     28 #include "bt_types.h"
     29 #include "bta_api.h"
     30 #include "btm_api.h"
     31 #include "l2c_api.h"
     32 
     33 /*****************************************************************************
     34  *  Constants and data types
     35  ****************************************************************************/
     36 /* status values */
     37 #define BTA_JV_SUCCESS 0     /* Successful operation. */
     38 #define BTA_JV_FAILURE 1     /* Generic failure. */
     39 #define BTA_JV_BUSY 2        /* Temporarily can not handle this request. */
     40 #define BTA_JV_NO_DATA 3     /* no data. */
     41 #define BTA_JV_NO_RESOURCE 4 /* No more set pm control block */
     42 
     43 typedef uint8_t tBTA_JV_STATUS;
     44 #define BTA_JV_INTERNAL_ERR (-1) /* internal error. */
     45 
     46 #define BTA_JV_MAX_UUIDS SDP_MAX_UUID_FILTERS
     47 #define BTA_JV_MAX_ATTRS SDP_MAX_ATTR_FILTERS
     48 #define BTA_JV_MAX_SDP_REC SDP_MAX_RECORDS
     49 #define BTA_JV_MAX_L2C_CONN                                                    \
     50   GAP_MAX_CONNECTIONS /* GAP handle is used as index, hence do not change this \
     51                          value */
     52 #define BTA_JV_MAX_SCN \
     53   PORT_MAX_RFC_PORTS /* same as BTM_MAX_SCN (in btm_int.h) */
     54 #define BTA_JV_MAX_RFC_CONN MAX_RFC_PORTS
     55 
     56 #ifndef BTA_JV_DEF_RFC_MTU
     57 #define BTA_JV_DEF_RFC_MTU (3 * 330)
     58 #endif
     59 
     60 #ifndef BTA_JV_MAX_RFC_SR_SESSION
     61 #define BTA_JV_MAX_RFC_SR_SESSION MAX_BD_CONNECTIONS
     62 #endif
     63 
     64 /* BTA_JV_MAX_RFC_SR_SESSION can not be bigger than MAX_BD_CONNECTIONS */
     65 #if (BTA_JV_MAX_RFC_SR_SESSION > MAX_BD_CONNECTIONS)
     66 #undef BTA_JV_MAX_RFC_SR_SESSION
     67 #define BTA_JV_MAX_RFC_SR_SESSION MAX_BD_CONNECTIONS
     68 #endif
     69 
     70 #define BTA_JV_FIRST_SERVICE_ID BTA_FIRST_JV_SERVICE_ID
     71 #define BTA_JV_LAST_SERVICE_ID BTA_LAST_JV_SERVICE_ID
     72 #define BTA_JV_NUM_SERVICE_ID \
     73   (BTA_LAST_JV_SERVICE_ID - BTA_FIRST_JV_SERVICE_ID + 1)
     74 
     75 /* Discoverable modes */
     76 enum { BTA_JV_DISC_NONE, BTA_JV_DISC_LIMITED, BTA_JV_DISC_GENERAL };
     77 typedef uint16_t tBTA_JV_DISC;
     78 
     79 #define BTA_JV_ROLE_SLAVE BTM_ROLE_SLAVE
     80 #define BTA_JV_ROLE_MASTER BTM_ROLE_MASTER
     81 typedef uint32_t tBTA_JV_ROLE;
     82 
     83 #define BTA_JV_SERVICE_LMTD_DISCOVER                                       \
     84   BTM_COD_SERVICE_LMTD_DISCOVER                                  /* 0x0020 \
     85                                                                     */
     86 #define BTA_JV_SERVICE_POSITIONING BTM_COD_SERVICE_POSITIONING   /* 0x0100 */
     87 #define BTA_JV_SERVICE_NETWORKING BTM_COD_SERVICE_NETWORKING     /* 0x0200 */
     88 #define BTA_JV_SERVICE_RENDERING BTM_COD_SERVICE_RENDERING       /* 0x0400 */
     89 #define BTA_JV_SERVICE_CAPTURING BTM_COD_SERVICE_CAPTURING       /* 0x0800 */
     90 #define BTA_JV_SERVICE_OBJ_TRANSFER BTM_COD_SERVICE_OBJ_TRANSFER /* 0x1000 */
     91 #define BTA_JV_SERVICE_AUDIO BTM_COD_SERVICE_AUDIO               /* 0x2000 */
     92 #define BTA_JV_SERVICE_TELEPHONY BTM_COD_SERVICE_TELEPHONY       /* 0x4000 */
     93 #define BTA_JV_SERVICE_INFORMATION BTM_COD_SERVICE_INFORMATION   /* 0x8000 */
     94 
     95 /* JV ID type */
     96 #define BTA_JV_PM_ID_1 1     /* PM example profile 1 */
     97 #define BTA_JV_PM_ID_2 2     /* PM example profile 2 */
     98 #define BTA_JV_PM_ID_CLEAR 0 /* Special JV ID used to clear PM profile */
     99 #define BTA_JV_PM_ALL 0xFF   /* Generic match all id, see bta_dm_cfg.c */
    100 typedef uint8_t tBTA_JV_PM_ID;
    101 
    102 #define BTA_JV_PM_HANDLE_CLEAR \
    103   0xFF /* Special JV ID used to clear PM profile  */
    104 
    105 /* define maximum number of registered PM entities. should be in sync with bta
    106  * pm! */
    107 #ifndef BTA_JV_PM_MAX_NUM
    108 #define BTA_JV_PM_MAX_NUM 5
    109 #endif
    110 
    111 /* JV pm connection states */
    112 enum {
    113   BTA_JV_CONN_OPEN = 0, /* Connection opened state */
    114   BTA_JV_CONN_CLOSE,    /* Connection closed state */
    115   BTA_JV_APP_OPEN,      /* JV Application opened state */
    116   BTA_JV_APP_CLOSE,     /* JV Application closed state */
    117   BTA_JV_SCO_OPEN,      /* SCO connection opened state */
    118   BTA_JV_SCO_CLOSE,     /* SCO connection opened state */
    119   BTA_JV_CONN_IDLE,     /* Connection idle state */
    120   BTA_JV_CONN_BUSY,     /* Connection busy state */
    121   BTA_JV_MAX_CONN_STATE /* Max number of connection state */
    122 };
    123 typedef uint8_t tBTA_JV_CONN_STATE;
    124 
    125 /* JV Connection types */
    126 #define BTA_JV_CONN_TYPE_RFCOMM 0
    127 #define BTA_JV_CONN_TYPE_L2CAP 1
    128 #define BTA_JV_CONN_TYPE_L2CAP_LE 2
    129 
    130 /* Java I/F callback events */
    131 /* events received by tBTA_JV_DM_CBACK */
    132 #define BTA_JV_ENABLE_EVT 0         /* JV enabled */
    133 #define BTA_JV_GET_SCN_EVT 6        /* Reserved an SCN */
    134 #define BTA_JV_GET_PSM_EVT 7        /* Reserved a PSM */
    135 #define BTA_JV_DISCOVERY_COMP_EVT 8 /* SDP discovery complete */
    136 #define BTA_JV_CREATE_RECORD_EVT 11 /* the result for BTA_JvCreateRecord */
    137 /* events received by tBTA_JV_L2CAP_CBACK */
    138 #define BTA_JV_L2CAP_OPEN_EVT 16     /* open status of L2CAP connection */
    139 #define BTA_JV_L2CAP_CLOSE_EVT 17    /* L2CAP connection closed */
    140 #define BTA_JV_L2CAP_START_EVT 18    /* L2CAP server started */
    141 #define BTA_JV_L2CAP_CL_INIT_EVT 19  /* L2CAP client initiated a connection */
    142 #define BTA_JV_L2CAP_DATA_IND_EVT 20 /* L2CAP connection received data */
    143 #define BTA_JV_L2CAP_CONG_EVT \
    144   21 /* L2CAP connection congestion status changed */
    145 #define BTA_JV_L2CAP_READ_EVT 22  /* the result for BTA_JvL2capRead */
    146 #define BTA_JV_L2CAP_WRITE_EVT 24 /* the result for BTA_JvL2capWrite*/
    147 #define BTA_JV_L2CAP_WRITE_FIXED_EVT \
    148   25 /* the result for BTA_JvL2capWriteFixed */
    149 
    150 /* events received by tBTA_JV_RFCOMM_CBACK */
    151 #define BTA_JV_RFCOMM_OPEN_EVT                                                \
    152   26                               /* open status of RFCOMM Client connection \
    153                                       */
    154 #define BTA_JV_RFCOMM_CLOSE_EVT 27 /* RFCOMM connection closed */
    155 #define BTA_JV_RFCOMM_START_EVT 28 /* RFCOMM server started */
    156 #define BTA_JV_RFCOMM_CL_INIT_EVT                                             \
    157   29                                  /* RFCOMM client initiated a connection \
    158                                          */
    159 #define BTA_JV_RFCOMM_DATA_IND_EVT 30 /* RFCOMM connection received data */
    160 #define BTA_JV_RFCOMM_CONG_EVT \
    161   31 /* RFCOMM connection congestion status changed */
    162 #define BTA_JV_RFCOMM_WRITE_EVT 33 /* the result for BTA_JvRfcommWrite*/
    163 #define BTA_JV_RFCOMM_SRV_OPEN_EVT \
    164   34                      /* open status of Server RFCOMM connection */
    165 #define BTA_JV_MAX_EVT 35 /* max number of JV events */
    166 
    167 typedef uint16_t tBTA_JV_EVT;
    168 
    169 /* data associated with BTA_JV_SET_DISCOVER_EVT */
    170 typedef struct {
    171   tBTA_JV_STATUS status;  /* Whether the operation succeeded or failed. */
    172   tBTA_JV_DISC disc_mode; /* The current discoverable mode */
    173 } tBTA_JV_SET_DISCOVER;
    174 
    175 /* data associated with BTA_JV_DISCOVERY_COMP_EVT_ */
    176 typedef struct {
    177   tBTA_JV_STATUS status; /* Whether the operation succeeded or failed. */
    178   int scn;               /* channel # */
    179 } tBTA_JV_DISCOVERY_COMP;
    180 
    181 /* data associated with BTA_JV_CREATE_RECORD_EVT */
    182 typedef struct {
    183   tBTA_JV_STATUS status; /* Whether the operation succeeded or failed. */
    184 } tBTA_JV_CREATE_RECORD;
    185 
    186 /* data associated with BTA_JV_L2CAP_OPEN_EVT */
    187 typedef struct {
    188   tBTA_JV_STATUS status; /* Whether the operation succeeded or failed. */
    189   uint32_t handle;       /* The connection handle */
    190   BD_ADDR rem_bda;       /* The peer address */
    191   int32_t tx_mtu;        /* The transmit MTU */
    192 } tBTA_JV_L2CAP_OPEN;
    193 
    194 /* data associated with BTA_JV_L2CAP_OPEN_EVT for LE sockets */
    195 typedef struct {
    196   tBTA_JV_STATUS status; /* Whether the operation succeeded or failed. */
    197   uint32_t handle;       /* The connection handle */
    198   BD_ADDR rem_bda;       /* The peer address */
    199   int32_t tx_mtu;        /* The transmit MTU */
    200   void** p_p_cback;      /* set them for new socket */
    201   void** p_user_data;    /* set them for new socket */
    202 
    203 } tBTA_JV_L2CAP_LE_OPEN;
    204 
    205 /* data associated with BTA_JV_L2CAP_CLOSE_EVT */
    206 typedef struct {
    207   tBTA_JV_STATUS status; /* Whether the operation succeeded or failed. */
    208   uint32_t handle;       /* The connection handle */
    209   bool async;            /* false, if local initiates disconnect */
    210 } tBTA_JV_L2CAP_CLOSE;
    211 
    212 /* data associated with BTA_JV_L2CAP_START_EVT */
    213 typedef struct {
    214   tBTA_JV_STATUS status; /* Whether the operation succeeded or failed. */
    215   uint32_t handle;       /* The connection handle */
    216   uint8_t sec_id;        /* security ID used by this server */
    217 } tBTA_JV_L2CAP_START;
    218 
    219 /* data associated with BTA_JV_L2CAP_CL_INIT_EVT */
    220 typedef struct {
    221   tBTA_JV_STATUS status; /* Whether the operation succeeded or failed. */
    222   uint32_t handle;       /* The connection handle */
    223   uint8_t sec_id;        /* security ID used by this client */
    224 } tBTA_JV_L2CAP_CL_INIT;
    225 
    226 /* data associated with BTA_JV_L2CAP_CONG_EVT */
    227 typedef struct {
    228   tBTA_JV_STATUS status; /* Whether the operation succeeded or failed. */
    229   uint32_t handle;       /* The connection handle */
    230   bool cong;             /* true, congested. false, uncongested */
    231 } tBTA_JV_L2CAP_CONG;
    232 
    233 /* data associated with BTA_JV_L2CAP_READ_EVT */
    234 typedef struct {
    235   tBTA_JV_STATUS status; /* Whether the operation succeeded or failed. */
    236   uint32_t handle;       /* The connection handle */
    237   uint32_t req_id;       /* The req_id in the associated BTA_JvL2capRead() */
    238   uint8_t* p_data;       /* This points the same location as the p_data
    239                         * parameter in BTA_JvL2capRead () */
    240   uint16_t len;          /* The length of the data read. */
    241 } tBTA_JV_L2CAP_READ;
    242 
    243 /* data associated with BTA_JV_L2CAP_WRITE_EVT */
    244 typedef struct {
    245   tBTA_JV_STATUS status; /* Whether the operation succeeded or failed. */
    246   uint32_t handle;       /* The connection handle */
    247   uint32_t req_id;       /* The req_id in the associated BTA_JvL2capWrite() */
    248   uint16_t len;          /* The length of the data written. */
    249   uint8_t* p_data;       /* The buffer where data is held */
    250   bool cong;             /* congestion status */
    251 } tBTA_JV_L2CAP_WRITE;
    252 
    253 /* data associated with BTA_JV_L2CAP_WRITE_FIXED_EVT */
    254 typedef struct {
    255   tBTA_JV_STATUS status; /* Whether the operation succeeded or failed. */
    256   uint16_t channel;      /* The connection channel */
    257   BD_ADDR addr;          /* The peer address */
    258   uint32_t req_id;       /* The req_id in the associated BTA_JvL2capWrite() */
    259   uint8_t* p_data;       /* The buffer where data is held */
    260   uint16_t len;          /* The length of the data written. */
    261   bool cong;             /* congestion status */
    262 } tBTA_JV_L2CAP_WRITE_FIXED;
    263 
    264 /* data associated with BTA_JV_RFCOMM_OPEN_EVT */
    265 typedef struct {
    266   tBTA_JV_STATUS status; /* Whether the operation succeeded or failed. */
    267   uint32_t handle;       /* The connection handle */
    268   BD_ADDR rem_bda;       /* The peer address */
    269 } tBTA_JV_RFCOMM_OPEN;
    270 /* data associated with BTA_JV_RFCOMM_SRV_OPEN_EVT */
    271 typedef struct {
    272   tBTA_JV_STATUS status;      /* Whether the operation succeeded or failed. */
    273   uint32_t handle;            /* The connection handle */
    274   uint32_t new_listen_handle; /* The new listen handle */
    275   BD_ADDR rem_bda;            /* The peer address */
    276 } tBTA_JV_RFCOMM_SRV_OPEN;
    277 
    278 /* data associated with BTA_JV_RFCOMM_CLOSE_EVT */
    279 typedef struct {
    280   tBTA_JV_STATUS status; /* Whether the operation succeeded or failed. */
    281   uint32_t port_status;  /* PORT status */
    282   uint32_t handle;       /* The connection handle */
    283   bool async;            /* false, if local initiates disconnect */
    284 } tBTA_JV_RFCOMM_CLOSE;
    285 
    286 /* data associated with BTA_JV_RFCOMM_START_EVT */
    287 typedef struct {
    288   tBTA_JV_STATUS status; /* Whether the operation succeeded or failed. */
    289   uint32_t handle;       /* The connection handle */
    290   uint8_t sec_id;        /* security ID used by this server */
    291   bool use_co;           /* true to use co_rfc_data */
    292 } tBTA_JV_RFCOMM_START;
    293 
    294 /* data associated with BTA_JV_RFCOMM_CL_INIT_EVT */
    295 typedef struct {
    296   tBTA_JV_STATUS status; /* Whether the operation succeeded or failed. */
    297   uint32_t handle;       /* The connection handle */
    298   uint8_t sec_id;        /* security ID used by this client */
    299   bool use_co;           /* true to use co_rfc_data */
    300 } tBTA_JV_RFCOMM_CL_INIT;
    301 /*data associated with BTA_JV_L2CAP_DATA_IND_EVT & BTA_JV_RFCOMM_DATA_IND_EVT */
    302 typedef struct {
    303   uint32_t handle; /* The connection handle */
    304 } tBTA_JV_DATA_IND;
    305 
    306 /*data associated with BTA_JV_L2CAP_DATA_IND_EVT if used for LE */
    307 typedef struct {
    308   uint32_t handle; /* The connection handle */
    309   BT_HDR* p_buf;   /* The incoming data */
    310 } tBTA_JV_LE_DATA_IND;
    311 
    312 /* data associated with BTA_JV_RFCOMM_CONG_EVT */
    313 typedef struct {
    314   tBTA_JV_STATUS status; /* Whether the operation succeeded or failed. */
    315   uint32_t handle;       /* The connection handle */
    316   bool cong;             /* true, congested. false, uncongested */
    317 } tBTA_JV_RFCOMM_CONG;
    318 
    319 /* data associated with BTA_JV_RFCOMM_WRITE_EVT */
    320 typedef struct {
    321   tBTA_JV_STATUS status; /* Whether the operation succeeded or failed. */
    322   uint32_t handle;       /* The connection handle */
    323   uint32_t req_id;       /* The req_id in the associated BTA_JvRfcommWrite() */
    324   int len;               /* The length of the data written. */
    325   bool cong;             /* congestion status */
    326 } tBTA_JV_RFCOMM_WRITE;
    327 
    328 /* data associated with BTA_JV_API_SET_PM_PROFILE_EVT */
    329 typedef struct {
    330   tBTA_JV_STATUS status; /* Status of the operation */
    331   uint32_t handle;       /* Connection handle */
    332   tBTA_JV_PM_ID app_id;  /* JV app ID */
    333 } tBTA_JV_SET_PM_PROFILE;
    334 
    335 /* data associated with BTA_JV_API_NOTIFY_PM_STATE_CHANGE_EVT */
    336 typedef struct {
    337   uint32_t handle;          /* Connection handle */
    338   tBTA_JV_CONN_STATE state; /* JV connection stata */
    339 } tBTA_JV_NOTIFY_PM_STATE_CHANGE;
    340 
    341 /* union of data associated with JV callback */
    342 typedef union {
    343   tBTA_JV_STATUS status;                     /* BTA_JV_ENABLE_EVT */
    344   tBTA_JV_DISCOVERY_COMP disc_comp;          /* BTA_JV_DISCOVERY_COMP_EVT */
    345   tBTA_JV_SET_DISCOVER set_discover;         /* BTA_JV_SET_DISCOVER_EVT */
    346   uint8_t scn;                               /* BTA_JV_GET_SCN_EVT */
    347   uint16_t psm;                              /* BTA_JV_GET_PSM_EVT */
    348   tBTA_JV_CREATE_RECORD create_rec;          /* BTA_JV_CREATE_RECORD_EVT */
    349   tBTA_JV_L2CAP_OPEN l2c_open;               /* BTA_JV_L2CAP_OPEN_EVT */
    350   tBTA_JV_L2CAP_CLOSE l2c_close;             /* BTA_JV_L2CAP_CLOSE_EVT */
    351   tBTA_JV_L2CAP_START l2c_start;             /* BTA_JV_L2CAP_START_EVT */
    352   tBTA_JV_L2CAP_CL_INIT l2c_cl_init;         /* BTA_JV_L2CAP_CL_INIT_EVT */
    353   tBTA_JV_L2CAP_CONG l2c_cong;               /* BTA_JV_L2CAP_CONG_EVT */
    354   tBTA_JV_L2CAP_READ l2c_read;               /* BTA_JV_L2CAP_READ_EVT */
    355   tBTA_JV_L2CAP_WRITE l2c_write;             /* BTA_JV_L2CAP_WRITE_EVT */
    356   tBTA_JV_RFCOMM_OPEN rfc_open;              /* BTA_JV_RFCOMM_OPEN_EVT */
    357   tBTA_JV_RFCOMM_SRV_OPEN rfc_srv_open;      /* BTA_JV_RFCOMM_SRV_OPEN_EVT */
    358   tBTA_JV_RFCOMM_CLOSE rfc_close;            /* BTA_JV_RFCOMM_CLOSE_EVT */
    359   tBTA_JV_RFCOMM_START rfc_start;            /* BTA_JV_RFCOMM_START_EVT */
    360   tBTA_JV_RFCOMM_CL_INIT rfc_cl_init;        /* BTA_JV_RFCOMM_CL_INIT_EVT */
    361   tBTA_JV_RFCOMM_CONG rfc_cong;              /* BTA_JV_RFCOMM_CONG_EVT */
    362   tBTA_JV_RFCOMM_WRITE rfc_write;            /* BTA_JV_RFCOMM_WRITE_EVT */
    363   tBTA_JV_DATA_IND data_ind;                 /* BTA_JV_L2CAP_DATA_IND_EVT
    364                                                 BTA_JV_RFCOMM_DATA_IND_EVT */
    365   tBTA_JV_LE_DATA_IND le_data_ind;           /* BTA_JV_L2CAP_LE_DATA_IND_EVT */
    366   tBTA_JV_L2CAP_LE_OPEN l2c_le_open;         /* BTA_JV_L2CAP_OPEN_EVT */
    367   tBTA_JV_L2CAP_WRITE_FIXED l2c_write_fixed; /* BTA_JV_L2CAP_WRITE_FIXED_EVT */
    368 } tBTA_JV;
    369 
    370 /* JAVA DM Interface callback */
    371 typedef void(tBTA_JV_DM_CBACK)(tBTA_JV_EVT event, tBTA_JV* p_data, uint32_t id);
    372 
    373 /* JAVA RFCOMM interface callback */
    374 typedef uint32_t(tBTA_JV_RFCOMM_CBACK)(tBTA_JV_EVT event, tBTA_JV* p_data,
    375                                        uint32_t rfcomm_slot_id);
    376 
    377 /* JAVA L2CAP interface callback */
    378 typedef void(tBTA_JV_L2CAP_CBACK)(tBTA_JV_EVT event, tBTA_JV* p_data,
    379                                   uint32_t l2cap_socket_id);
    380 
    381 /* JV configuration structure */
    382 typedef struct {
    383   uint16_t sdp_raw_size;       /* The size of p_sdp_raw_data */
    384   uint16_t sdp_db_size;        /* The size of p_sdp_db */
    385   uint8_t* p_sdp_raw_data;     /* The data buffer to keep raw data */
    386   tSDP_DISCOVERY_DB* p_sdp_db; /* The data buffer to keep SDP database */
    387 } tBTA_JV_CFG;
    388 
    389 /*******************************************************************************
    390  *
    391  * Function         BTA_JvEnable
    392  *
    393  * Description      Enable the Java I/F service. When the enable
    394  *                  operation is complete the callback function will be
    395  *                  called with a BTA_JV_ENABLE_EVT. This function must
    396  *                  be called before other functions in the JV API are
    397  *                  called.
    398  *
    399  * Returns          BTA_JV_SUCCESS if successful.
    400  *                  BTA_JV_FAIL if internal failure.
    401  *
    402  ******************************************************************************/
    403 tBTA_JV_STATUS BTA_JvEnable(tBTA_JV_DM_CBACK* p_cback);
    404 
    405 /*******************************************************************************
    406  *
    407  * Function         BTA_JvDisable
    408  *
    409  * Description      Disable the Java I/F
    410  *
    411  * Returns          void
    412  *
    413  ******************************************************************************/
    414 void BTA_JvDisable(void);
    415 
    416 /*******************************************************************************
    417  *
    418  * Function         BTA_JvIsEncrypted
    419  *
    420  * Description      This function checks if the link to peer device is encrypted
    421  *
    422  * Returns          true if encrypted.
    423  *                  false if not.
    424  *
    425  ******************************************************************************/
    426 bool BTA_JvIsEncrypted(BD_ADDR bd_addr);
    427 
    428 /*******************************************************************************
    429  *
    430  * Function         BTA_JvGetChannelId
    431  *
    432  * Description      This function reserves a SCN/PSM for applications running
    433  *                  over RFCOMM or L2CAP. It is primarily called by
    434  *                  server profiles/applications to register their SCN/PSM into
    435  *                  the SDP database. The SCN is reported by the
    436  *                  tBTA_JV_DM_CBACK callback with a BTA_JV_GET_SCN_EVT.
    437  *                  If the SCN/PSM reported is 0, that means all SCN resources
    438  *                  are exhausted.
    439  *                  The channel parameter can be used to request a specific
    440  *                  channel. If the request on the specific channel fails, the
    441  *                  SCN/PSM returned in the EVT will be 0 - no attempt to
    442  *                  request a new channel will be made. set channel to <= 0 to
    443  *                  automatically assign an channel ID.
    444  *
    445  * Returns          BTA_JV_SUCCESS, if the request is being processed.
    446  *                  BTA_JV_FAILURE, otherwise.
    447  *
    448  ******************************************************************************/
    449 tBTA_JV_STATUS BTA_JvGetChannelId(int conn_type, uint32_t id, int32_t channel);
    450 
    451 /*******************************************************************************
    452  *
    453  * Function         BTA_JvFreeChannel
    454  *
    455  * Description      This function frees a SCN/PSM that was used
    456  *                  by an application running over RFCOMM or L2CAP.
    457  *
    458  * Returns          BTA_JV_SUCCESS, if the request is being processed.
    459  *                  BTA_JV_FAILURE, otherwise.
    460  *
    461  ******************************************************************************/
    462 tBTA_JV_STATUS BTA_JvFreeChannel(uint16_t channel, int conn_type);
    463 
    464 /*******************************************************************************
    465  *
    466  * Function         BTA_JvStartDiscovery
    467  *
    468  * Description      This function performs service discovery for the services
    469  *                  provided by the given peer device. When the operation is
    470  *                  complete the tBTA_JV_DM_CBACK callback function will be
    471  *                  called with a BTA_JV_DISCOVERY_COMP_EVT.
    472  *
    473  * Returns          BTA_JV_SUCCESS, if the request is being processed.
    474  *                  BTA_JV_FAILURE, otherwise.
    475  *
    476  ******************************************************************************/
    477 tBTA_JV_STATUS BTA_JvStartDiscovery(BD_ADDR bd_addr, uint16_t num_uuid,
    478                                     tSDP_UUID* p_uuid_list,
    479                                     uint32_t rfcomm_slot_id);
    480 
    481 /*******************************************************************************
    482  *
    483  * Function         BTA_JvCreateRecordByUser
    484  *
    485  * Description      Create a service record in the local SDP database by user in
    486  *                  tBTA_JV_DM_CBACK callback with a BTA_JV_CREATE_RECORD_EVT.
    487  *
    488  * Returns          BTA_JV_SUCCESS, if the request is being processed.
    489  *                  BTA_JV_FAILURE, otherwise.
    490  *
    491  ******************************************************************************/
    492 tBTA_JV_STATUS BTA_JvCreateRecordByUser(uint32_t rfcomm_slot_id);
    493 
    494 /*******************************************************************************
    495  *
    496  * Function         BTA_JvDeleteRecord
    497  *
    498  * Description      Delete a service record in the local SDP database.
    499  *
    500  * Returns          BTA_JV_SUCCESS, if the request is being processed.
    501  *                  BTA_JV_FAILURE, otherwise.
    502  *
    503  ******************************************************************************/
    504 tBTA_JV_STATUS BTA_JvDeleteRecord(uint32_t handle);
    505 
    506 /*******************************************************************************
    507  *
    508  * Function         BTA_JvL2capConnectLE
    509  *
    510  * Description      Initiate a connection as an LE L2CAP client to the given BD
    511  *                  Address.
    512  *                  When the connection is initiated or failed to initiate,
    513  *                  tBTA_JV_L2CAP_CBACK is called with BTA_JV_L2CAP_CL_INIT_EVT
    514  *                  When the connection is established or failed,
    515  *                  tBTA_JV_L2CAP_CBACK is called with BTA_JV_L2CAP_OPEN_EVT
    516  *
    517  * Returns          BTA_JV_SUCCESS, if the request is being processed.
    518  *                  BTA_JV_FAILURE, otherwise.
    519  *
    520  ******************************************************************************/
    521 tBTA_JV_STATUS BTA_JvL2capConnectLE(tBTA_SEC sec_mask, tBTA_JV_ROLE role,
    522                                     const tL2CAP_ERTM_INFO* ertm_info,
    523                                     uint16_t remote_chan, uint16_t rx_mtu,
    524                                     tL2CAP_CFG_INFO* cfg, BD_ADDR peer_bd_addr,
    525                                     tBTA_JV_L2CAP_CBACK* p_cback,
    526                                     uint32_t l2cap_socket_id);
    527 
    528 /*******************************************************************************
    529  *
    530  * Function         BTA_JvL2capConnect
    531  *
    532  * Description      Initiate a connection as a L2CAP client to the given BD
    533  *                  Address.
    534  *                  When the connection is initiated or failed to initiate,
    535  *                  tBTA_JV_L2CAP_CBACK is called with BTA_JV_L2CAP_CL_INIT_EVT
    536  *                  When the connection is established or failed,
    537  *                  tBTA_JV_L2CAP_CBACK is called with BTA_JV_L2CAP_OPEN_EVT
    538  *
    539  * Returns          BTA_JV_SUCCESS, if the request is being processed.
    540  *                  BTA_JV_FAILURE, otherwise.
    541  *
    542  ******************************************************************************/
    543 tBTA_JV_STATUS BTA_JvL2capConnect(int conn_type, tBTA_SEC sec_mask,
    544                                   tBTA_JV_ROLE role,
    545                                   const tL2CAP_ERTM_INFO* ertm_info,
    546                                   uint16_t remote_psm, uint16_t rx_mtu,
    547                                   tL2CAP_CFG_INFO* cfg, BD_ADDR peer_bd_addr,
    548                                   tBTA_JV_L2CAP_CBACK* p_cback,
    549                                   uint32_t l2cap_socket_id);
    550 
    551 /*******************************************************************************
    552  *
    553  * Function         BTA_JvL2capClose
    554  *
    555  * Description      This function closes an L2CAP client connection
    556  *
    557  * Returns          BTA_JV_SUCCESS, if the request is being processed.
    558  *                  BTA_JV_FAILURE, otherwise.
    559  *
    560  ******************************************************************************/
    561 tBTA_JV_STATUS BTA_JvL2capClose(uint32_t handle);
    562 
    563 /*******************************************************************************
    564  *
    565  * Function         BTA_JvL2capCloseLE
    566  *
    567  * Description      This function closes an L2CAP client connection for Fixed
    568  *                  Channels Function is idempotent and no callbacks are called!
    569  *
    570  * Returns          BTA_JV_SUCCESS, if the request is being processed.
    571  *                  BTA_JV_FAILURE, otherwise.
    572  *
    573  ******************************************************************************/
    574 tBTA_JV_STATUS BTA_JvL2capCloseLE(uint32_t handle);
    575 
    576 /*******************************************************************************
    577  *
    578  * Function         BTA_JvL2capStartServer
    579  *
    580  * Description      This function starts an L2CAP server and listens for an
    581  *                  L2CAP connection from a remote Bluetooth device.  When the
    582  *                  server is started successfully, tBTA_JV_L2CAP_CBACK is
    583  *                  called with BTA_JV_L2CAP_START_EVT.  When the connection is
    584  *                  established, tBTA_JV_L2CAP_CBACK is called with
    585  *                  BTA_JV_L2CAP_OPEN_EVT.
    586  *
    587  * Returns          BTA_JV_SUCCESS, if the request is being processed.
    588  *                  BTA_JV_FAILURE, otherwise.
    589  *
    590  ******************************************************************************/
    591 tBTA_JV_STATUS BTA_JvL2capStartServer(int conn_type, tBTA_SEC sec_mask,
    592                                       tBTA_JV_ROLE role,
    593                                       const tL2CAP_ERTM_INFO* ertm_info,
    594                                       uint16_t local_psm, uint16_t rx_mtu,
    595                                       tL2CAP_CFG_INFO* cfg,
    596                                       tBTA_JV_L2CAP_CBACK* p_cback,
    597                                       uint32_t l2cap_socket_id);
    598 
    599 /*******************************************************************************
    600  *
    601  * Function         BTA_JvL2capStartServerLE
    602  *
    603  * Description      This function starts an LE L2CAP server and listens for an
    604  *                  L2CAP connection from a remote Bluetooth device on a fixed
    605  *                  channel over an LE link.  When the server
    606  *                  is started successfully, tBTA_JV_L2CAP_CBACK is called with
    607  *                  BTA_JV_L2CAP_START_EVT.  When the connection is established,
    608  *                  tBTA_JV_L2CAP_CBACK is called with BTA_JV_L2CAP_OPEN_EVT.
    609  *
    610  * Returns          BTA_JV_SUCCESS, if the request is being processed.
    611  *                  BTA_JV_FAILURE, otherwise.
    612  *
    613  ******************************************************************************/
    614 tBTA_JV_STATUS BTA_JvL2capStartServerLE(tBTA_SEC sec_mask, tBTA_JV_ROLE role,
    615                                         const tL2CAP_ERTM_INFO* ertm_info,
    616                                         uint16_t local_chan, uint16_t rx_mtu,
    617                                         tL2CAP_CFG_INFO* cfg,
    618                                         tBTA_JV_L2CAP_CBACK* p_cback,
    619                                         uint32_t l2cap_socket_id);
    620 
    621 /*******************************************************************************
    622  *
    623  * Function         BTA_JvL2capStopServerLE
    624  *
    625  * Description      This function stops the LE L2CAP server. If the server has
    626  *                  an active connection, it would be closed.
    627  *
    628  * Returns          BTA_JV_SUCCESS, if the request is being processed.
    629  *                  BTA_JV_FAILURE, otherwise.
    630  *
    631  ******************************************************************************/
    632 tBTA_JV_STATUS BTA_JvL2capStopServerLE(uint16_t local_chan,
    633                                        uint32_t l2cap_socket_id);
    634 
    635 /*******************************************************************************
    636  *
    637  * Function         BTA_JvL2capStopServer
    638  *
    639  * Description      This function stops the L2CAP server. If the server has
    640  *                  an active connection, it would be closed.
    641  *
    642  * Returns          BTA_JV_SUCCESS, if the request is being processed.
    643  *                  BTA_JV_FAILURE, otherwise.
    644  *
    645  ******************************************************************************/
    646 tBTA_JV_STATUS BTA_JvL2capStopServer(uint16_t local_psm,
    647                                      uint32_t l2cap_socket_id);
    648 
    649 /*******************************************************************************
    650  *
    651  * Function         BTA_JvL2capRead
    652  *
    653  * Description      This function reads data from an L2CAP connection
    654  *                  When the operation is complete, tBTA_JV_L2CAP_CBACK is
    655  *                  called with BTA_JV_L2CAP_READ_EVT.
    656  *
    657  * Returns          BTA_JV_SUCCESS, if the request is being processed.
    658  *                  BTA_JV_FAILURE, otherwise.
    659  *
    660  ******************************************************************************/
    661 tBTA_JV_STATUS BTA_JvL2capRead(uint32_t handle, uint32_t req_id,
    662                                uint8_t* p_data, uint16_t len);
    663 
    664 /*******************************************************************************
    665  *
    666  * Function         BTA_JvL2capReady
    667  *
    668  * Description      This function determined if there is data to read from
    669  *                  an L2CAP connection
    670  *
    671  * Returns          BTA_JV_SUCCESS, if data queue size is in *p_data_size.
    672  *                  BTA_JV_FAILURE, if error.
    673  *
    674  ******************************************************************************/
    675 tBTA_JV_STATUS BTA_JvL2capReady(uint32_t handle, uint32_t* p_data_size);
    676 
    677 /*******************************************************************************
    678  *
    679  * Function         BTA_JvL2capWrite
    680  *
    681  * Description      This function writes data to an L2CAP connection
    682  *                  When the operation is complete, tBTA_JV_L2CAP_CBACK is
    683  *                  called with BTA_JV_L2CAP_WRITE_EVT. Works for
    684  *                  PSM-based connections
    685  *
    686  * Returns          BTA_JV_SUCCESS, if the request is being processed.
    687  *                  BTA_JV_FAILURE, otherwise.
    688  *
    689  ******************************************************************************/
    690 tBTA_JV_STATUS BTA_JvL2capWrite(uint32_t handle, uint32_t req_id,
    691                                 uint8_t* p_data, uint16_t len,
    692                                 uint32_t user_id);
    693 
    694 /*******************************************************************************
    695  *
    696  * Function         BTA_JvL2capWriteFixed
    697  *
    698  * Description      This function writes data to an L2CAP connection
    699  *                  When the operation is complete, tBTA_JV_L2CAP_CBACK is
    700  *                  called with BTA_JV_L2CAP_WRITE_FIXED_EVT. Works for
    701  *                  fixed-channel connections
    702  *
    703  * Returns          BTA_JV_SUCCESS, if the request is being processed.
    704  *                  BTA_JV_FAILURE, otherwise.
    705  *
    706  ******************************************************************************/
    707 tBTA_JV_STATUS BTA_JvL2capWriteFixed(uint16_t channel, BD_ADDR* addr,
    708                                      uint32_t req_id,
    709                                      tBTA_JV_L2CAP_CBACK* p_cback,
    710                                      uint8_t* p_data, uint16_t len,
    711                                      uint32_t user_id);
    712 
    713 /*******************************************************************************
    714  *
    715  * Function         BTA_JvRfcommConnect
    716  *
    717  * Description      This function makes an RFCOMM conection to a remote BD
    718  *                  Address.
    719  *                  When the connection is initiated or failed to initiate,
    720  *                  tBTA_JV_RFCOMM_CBACK is called with
    721  *                  BTA_JV_RFCOMM_CL_INIT_EVT
    722  *                  When the connection is established or failed,
    723  *                  tBTA_JV_RFCOMM_CBACK is called with BTA_JV_RFCOMM_OPEN_EVT
    724  *
    725  * Returns          BTA_JV_SUCCESS, if the request is being processed.
    726  *                  BTA_JV_FAILURE, otherwise.
    727  *
    728  ******************************************************************************/
    729 tBTA_JV_STATUS BTA_JvRfcommConnect(tBTA_SEC sec_mask, tBTA_JV_ROLE role,
    730                                    uint8_t remote_scn, BD_ADDR peer_bd_addr,
    731                                    tBTA_JV_RFCOMM_CBACK* p_cback,
    732                                    uint32_t rfcomm_slot_id);
    733 
    734 /*******************************************************************************
    735  *
    736  * Function         BTA_JvRfcommClose
    737  *
    738  * Description      This function closes an RFCOMM connection
    739  *
    740  * Returns          BTA_JV_SUCCESS, if the request is being processed.
    741  *                  BTA_JV_FAILURE, otherwise.
    742  *
    743  ******************************************************************************/
    744 tBTA_JV_STATUS BTA_JvRfcommClose(uint32_t handle, uint32_t rfcomm_slot_id);
    745 
    746 /*******************************************************************************
    747  *
    748  * Function         BTA_JvRfcommStartServer
    749  *
    750  * Description      This function starts listening for an RFCOMM connection
    751  *                  request from a remote Bluetooth device.  When the server is
    752  *                  started successfully, tBTA_JV_RFCOMM_CBACK is called
    753  *                  with BTA_JV_RFCOMM_START_EVT.
    754  *                  When the connection is established, tBTA_JV_RFCOMM_CBACK
    755  *                  is called with BTA_JV_RFCOMM_OPEN_EVT.
    756  *
    757  * Returns          BTA_JV_SUCCESS, if the request is being processed.
    758  *                  BTA_JV_FAILURE, otherwise.
    759  *
    760  ******************************************************************************/
    761 tBTA_JV_STATUS BTA_JvRfcommStartServer(tBTA_SEC sec_mask, tBTA_JV_ROLE role,
    762                                        uint8_t local_scn, uint8_t max_session,
    763                                        tBTA_JV_RFCOMM_CBACK* p_cback,
    764                                        uint32_t rfcomm_slot_id);
    765 
    766 /*******************************************************************************
    767  *
    768  * Function         BTA_JvRfcommStopServer
    769  *
    770  * Description      This function stops the RFCOMM server. If the server has an
    771  *                  active connection, it would be closed.
    772  *
    773  * Returns          BTA_JV_SUCCESS, if the request is being processed.
    774  *                  BTA_JV_FAILURE, otherwise.
    775  *
    776  ******************************************************************************/
    777 tBTA_JV_STATUS BTA_JvRfcommStopServer(uint32_t handle, uint32_t rfcomm_slot_id);
    778 
    779 /*******************************************************************************
    780  *
    781  * Function         BTA_JvRfcommWrite
    782  *
    783  * Description      This function writes data to an RFCOMM connection
    784  *                  When the operation is complete, tBTA_JV_RFCOMM_CBACK is
    785  *                  called with BTA_JV_RFCOMM_WRITE_EVT.
    786  *
    787  * Returns          BTA_JV_SUCCESS, if the request is being processed.
    788  *                  BTA_JV_FAILURE, otherwise.
    789  *
    790  ******************************************************************************/
    791 tBTA_JV_STATUS BTA_JvRfcommWrite(uint32_t handle, uint32_t req_id);
    792 
    793 /*******************************************************************************
    794  *
    795  * Function    BTA_JVSetPmProfile
    796  *
    797  * Description This function set or free power mode profile for different JV
    798  *             application
    799  *
    800  * Parameters:  handle,  JV handle from RFCOMM or L2CAP
    801  *              app_id:  app specific pm ID, can be BTA_JV_PM_ALL, see
    802  *                       bta_dm_cfg.c for details
    803  *              BTA_JV_PM_ID_CLEAR: removes pm management on the handle. init_st
    804  *                                  is ignored and BTA_JV_CONN_CLOSE is called
    805  *                                  implicitly
    806  *              init_st: state after calling this API. typically it should be
    807  *                       BTA_JV_CONN_OPEN
    808  *
    809  * Returns      BTA_JV_SUCCESS, if the request is being processed.
    810  *              BTA_JV_FAILURE, otherwise.
    811  *
    812  * NOTE:        BTA_JV_PM_ID_CLEAR: In general no need to be called as jv pm
    813  *                                  calls automatically
    814  *              BTA_JV_CONN_CLOSE to remove in case of connection close!
    815  *
    816  ******************************************************************************/
    817 tBTA_JV_STATUS BTA_JvSetPmProfile(uint32_t handle, tBTA_JV_PM_ID app_id,
    818                                   tBTA_JV_CONN_STATE init_st);
    819 
    820 /*******************************************************************************
    821  *
    822  * Function         BTA_JvRfcommGetPortHdl
    823  *
    824  * Description    This function fetches the rfcomm port handle
    825  *
    826  * Returns          BTA_JV_SUCCESS, if the request is being processed.
    827  *                  BTA_JV_FAILURE, otherwise.
    828  *
    829  ******************************************************************************/
    830 uint16_t BTA_JvRfcommGetPortHdl(uint32_t handle);
    831 
    832 #endif /* BTA_JV_API_H */
    833