Procházet zdrojové kódy

Seperate BTA_JV_L2CAP for less bin size

weitianhua před 5 roky
rodič
revize
8fb47ab0c2

+ 36 - 29
components/bt/bluedroid/bta/include/bta/bta_jv_api.h

@@ -134,6 +134,7 @@ typedef UINT8 tBTA_JV_CONN_STATE;
 #define BTA_JV_DISCOVERY_COMP_EVT   8  /* SDP discovery complete */
 #define BTA_JV_CREATE_RECORD_EVT    11 /* the result for BTA_JvCreateRecord */
 /* events received by tBTA_JV_L2CAP_CBACK */
+#if BTA_JV_L2CAP_INCLUDED
 #define BTA_JV_L2CAP_OPEN_EVT       16 /* open status of L2CAP connection */
 #define BTA_JV_L2CAP_CLOSE_EVT      17 /* L2CAP connection closed */
 #define BTA_JV_L2CAP_START_EVT      18 /* L2CAP server started */
@@ -144,6 +145,7 @@ typedef UINT8 tBTA_JV_CONN_STATE;
 #define BTA_JV_L2CAP_RECEIVE_EVT    23 /* the result for BTA_JvL2capReceive*/
 #define BTA_JV_L2CAP_WRITE_EVT      24 /* the result for BTA_JvL2capWrite*/
 #define BTA_JV_L2CAP_WRITE_FIXED_EVT 25 /* the result for BTA_JvL2capWriteFixed */
+#endif /* BTA_JV_L2CAP_INCLUDED */
 
 /* events received by tBTA_JV_RFCOMM_CBACK */
 #define BTA_JV_RFCOMM_OPEN_EVT      26 /* open status of RFCOMM Client connection */
@@ -178,6 +180,7 @@ typedef struct {
     UINT32          handle;     /* The SDP handle */
 } tBTA_JV_CREATE_RECORD;
 
+#if BTA_JV_L2CAP_INCLUDED
 /* data associated with BTA_JV_L2CAP_OPEN_EVT */
 typedef struct {
     tBTA_JV_STATUS  status;     /* Whether the operation succeeded or failed. */
@@ -186,18 +189,6 @@ typedef struct {
     INT32           tx_mtu;     /* The transmit MTU */
 } tBTA_JV_L2CAP_OPEN;
 
-/* data associated with BTA_JV_L2CAP_OPEN_EVT for LE sockets */
-typedef struct {
-    tBTA_JV_STATUS  status;     /* Whether the operation succeeded or failed. */
-    UINT32          handle;     /* The connection handle */
-    BD_ADDR         rem_bda;    /* The peer address */
-    INT32           tx_mtu;     /* The transmit MTU */
-    void          **p_p_cback;  /* set them for new socket */
-    void          **p_user_data;/* set them for new socket */
-
-} tBTA_JV_L2CAP_LE_OPEN;
-
-
 /* data associated with BTA_JV_L2CAP_CLOSE_EVT */
 typedef struct {
     tBTA_JV_STATUS  status;     /* Whether the operation succeeded or failed. */
@@ -255,6 +246,22 @@ typedef struct {
     BOOLEAN         cong;       /* congestion status */
 } tBTA_JV_L2CAP_WRITE;
 
+/* data associated with BTA_JV_L2CAP_OPEN_EVT for LE sockets */
+typedef struct {
+    tBTA_JV_STATUS  status;     /* Whether the operation succeeded or failed. */
+    UINT32          handle;     /* The connection handle */
+    BD_ADDR         rem_bda;    /* The peer address */
+    INT32           tx_mtu;     /* The transmit MTU */
+    void          **p_p_cback;  /* set them for new socket */
+    void          **p_user_data;/* set them for new socket */
+
+} tBTA_JV_L2CAP_LE_OPEN;
+
+/*data associated with BTA_JV_L2CAP_DATA_IND_EVT if used for LE */
+typedef struct {
+    UINT32          handle;     /* The connection handle */
+    BT_HDR         *p_buf;      /* The incoming data */
+} tBTA_JV_LE_DATA_IND;
 
 /* data associated with BTA_JV_L2CAP_WRITE_FIXED_EVT */
 typedef struct {
@@ -265,6 +272,7 @@ typedef struct {
     UINT16          len;        /* The length of the data written. */
     BOOLEAN         cong;       /* congestion status */
 } tBTA_JV_L2CAP_WRITE_FIXED;
+#endif /* BTA_JV_L2CAP_INCLUDED */
 
 /* data associated with BTA_JV_RFCOMM_OPEN_EVT */
 typedef struct {
@@ -272,6 +280,7 @@ typedef struct {
     UINT32          handle;     /* The connection handle */
     BD_ADDR         rem_bda;    /* The peer address */
 } tBTA_JV_RFCOMM_OPEN;
+
 /* data associated with BTA_JV_RFCOMM_SRV_OPEN_EVT */
 typedef struct {
     tBTA_JV_STATUS  status;             /* Whether the operation succeeded or failed. */
@@ -280,7 +289,6 @@ typedef struct {
     BD_ADDR         rem_bda;            /* The peer address */
 } tBTA_JV_RFCOMM_SRV_OPEN;
 
-
 /* data associated with BTA_JV_RFCOMM_CLOSE_EVT */
 typedef struct {
     tBTA_JV_STATUS  status;      /* Whether the operation succeeded or failed. */
@@ -304,19 +312,13 @@ typedef struct {
     UINT8           sec_id;     /* security ID used by this client */
     BOOLEAN         use_co;     /* TRUE to use co_rfc_data */
 } tBTA_JV_RFCOMM_CL_INIT;
+
 /*data associated with BTA_JV_L2CAP_DATA_IND_EVT & BTA_JV_RFCOMM_DATA_IND_EVT */
 typedef struct {
     UINT32          handle;     /* The connection handle */
     BT_HDR         *p_buf;      /* The incoming data */
 } tBTA_JV_DATA_IND;
 
-/*data associated with BTA_JV_L2CAP_DATA_IND_EVT if used for LE */
-typedef struct {
-    UINT32          handle;     /* The connection handle */
-    BT_HDR         *p_buf;      /* The incoming data */
-} tBTA_JV_LE_DATA_IND;
-
-
 /* data associated with BTA_JV_RFCOMM_CONG_EVT */
 typedef struct {
     tBTA_JV_STATUS  status;     /* Whether the operation succeeded or failed. */
@@ -365,6 +367,7 @@ typedef union {
     UINT8                   scn;            /* BTA_JV_GET_SCN_EVT */
     UINT16                  psm;            /* BTA_JV_GET_PSM_EVT */
     tBTA_JV_CREATE_RECORD   create_rec;     /* BTA_JV_CREATE_RECORD_EVT */
+#if BTA_JV_L2CAP_INCLUDED
     tBTA_JV_L2CAP_OPEN      l2c_open;       /* BTA_JV_L2CAP_OPEN_EVT */
     tBTA_JV_L2CAP_CLOSE     l2c_close;      /* BTA_JV_L2CAP_CLOSE_EVT */
     tBTA_JV_L2CAP_START     l2c_start;      /* BTA_JV_L2CAP_START_EVT */
@@ -372,6 +375,7 @@ typedef union {
     tBTA_JV_L2CAP_CONG      l2c_cong;       /* BTA_JV_L2CAP_CONG_EVT */
     tBTA_JV_L2CAP_READ      l2c_read;       /* BTA_JV_L2CAP_READ_EVT */
     tBTA_JV_L2CAP_WRITE     l2c_write;      /* BTA_JV_L2CAP_WRITE_EVT */
+#endif /* BTA_JV_L2CAP_INCLUDED */
     tBTA_JV_RFCOMM_OPEN     rfc_open;       /* BTA_JV_RFCOMM_OPEN_EVT */
     tBTA_JV_RFCOMM_SRV_OPEN rfc_srv_open;   /* BTA_JV_RFCOMM_SRV_OPEN_EVT */
     tBTA_JV_RFCOMM_CLOSE    rfc_close;      /* BTA_JV_RFCOMM_CLOSE_EVT */
@@ -382,9 +386,11 @@ typedef union {
     tBTA_JV_RFCOMM_WRITE    rfc_write;      /* BTA_JV_RFCOMM_WRITE_EVT */
     tBTA_JV_DATA_IND        data_ind;       /* BTA_JV_L2CAP_DATA_IND_EVT
                                                BTA_JV_RFCOMM_DATA_IND_EVT */
-    tBTA_JV_LE_DATA_IND      le_data_ind;   /* BTA_JV_L2CAP_LE_DATA_IND_EVT */
+#if BTA_JV_L2CAP_INCLUDED
     tBTA_JV_L2CAP_LE_OPEN      l2c_le_open;       /* BTA_JV_L2CAP_OPEN_EVT */
+    tBTA_JV_LE_DATA_IND        le_data_ind;   /* BTA_JV_L2CAP_LE_DATA_IND_EVT */
     tBTA_JV_L2CAP_WRITE_FIXED  l2c_write_fixed;      /* BTA_JV_L2CAP_WRITE_FIXED_EVT */
+#endif
 } tBTA_JV;
 
 /* JAVA DM Interface callback */
@@ -393,8 +399,10 @@ typedef void (tBTA_JV_DM_CBACK)(tBTA_JV_EVT event, tBTA_JV *p_data, void *user_d
 /* JAVA RFCOMM interface callback */
 typedef void *(tBTA_JV_RFCOMM_CBACK)(tBTA_JV_EVT event, tBTA_JV *p_data, void *user_data);
 
+#if BTA_JV_L2CAP_INCLUDED
 /* JAVA L2CAP interface callback */
 typedef void (tBTA_JV_L2CAP_CBACK)(tBTA_JV_EVT event, tBTA_JV *p_data, void *user_Data);
+#endif /* BTA_JV_L2CAP_INCLUDED */
 
 /* JV configuration structure */
 typedef struct {
@@ -532,6 +540,7 @@ extern tBTA_JV_STATUS BTA_JvCreateRecordByUser(const char *name, UINT32 channel,
 *******************************************************************************/
 extern tBTA_JV_STATUS BTA_JvDeleteRecord(UINT32 handle);
 
+#if BTA_JV_L2CAP_INCLUDED
 /*******************************************************************************
 **
 ** Function         BTA_JvL2capConnectLE
@@ -739,6 +748,7 @@ extern tBTA_JV_STATUS BTA_JvL2capWrite(UINT32 handle, UINT32 req_id,
 extern tBTA_JV_STATUS BTA_JvL2capWriteFixed(UINT16 channel, BD_ADDR *addr, UINT32 req_id,
         tBTA_JV_L2CAP_CBACK *p_cback,
         UINT8 *p_data, UINT16 len, void *user_data);
+#endif /* BTA_JV_L2CAP_INCLUDED */
 
 /*******************************************************************************
 **
@@ -786,9 +796,9 @@ extern tBTA_JV_STATUS BTA_JvRfcommClose(UINT32 handle, void *user_data);
 **                  BTA_JV_FAILURE, otherwise.
 **
 *******************************************************************************/
-extern tBTA_JV_STATUS BTA_JvRfcommStartServer(tBTA_SEC sec_mask,
-        tBTA_JV_ROLE role, UINT8 local_scn, UINT8 max_session,
-        tBTA_JV_RFCOMM_CBACK *p_cback, void *user_data);
+extern tBTA_JV_STATUS BTA_JvRfcommStartServer(tBTA_SEC sec_mask, tBTA_JV_ROLE role,
+                                              UINT8 local_scn, UINT8 max_session,
+                                              tBTA_JV_RFCOMM_CBACK *p_cback, void *user_data);
 
 /*******************************************************************************
 **
@@ -815,8 +825,7 @@ extern tBTA_JV_STATUS BTA_JvRfcommStopServer(UINT32 handle, void *user_data);
 **                  BTA_JV_FAILURE, otherwise.
 **
 *******************************************************************************/
-extern tBTA_JV_STATUS BTA_JvRfcommRead(UINT32 handle, UINT32 req_id,
-                                       UINT8 *p_data, UINT16 len);
+extern tBTA_JV_STATUS BTA_JvRfcommRead(UINT32 handle, UINT32 req_id, UINT8 *p_data, UINT16 len);
 
 /*******************************************************************************
 **
@@ -843,7 +852,6 @@ extern tBTA_JV_STATUS BTA_JvRfcommReady(UINT32 handle, UINT32 *p_data_size);
 **                  BTA_JV_FAILURE, otherwise.
 **
 *******************************************************************************/
-// extern tBTA_JV_STATUS BTA_JvRfcommWrite(UINT32 handle, UINT32 req_id);
 extern tBTA_JV_STATUS BTA_JvRfcommWrite(UINT32 handle, UINT32 req_id, int len, UINT8 *p_data);
 
 /*******************************************************************************
@@ -865,8 +873,7 @@ extern tBTA_JV_STATUS BTA_JvRfcommWrite(UINT32 handle, UINT32 req_id, int len, U
  **              BTA_JV_CONN_CLOSE to remove in case of connection close!
  **
  *******************************************************************************/
-extern tBTA_JV_STATUS BTA_JvSetPmProfile(UINT32 handle, tBTA_JV_PM_ID app_id,
-        tBTA_JV_CONN_STATE init_st);
+extern tBTA_JV_STATUS BTA_JvSetPmProfile(UINT32 handle, tBTA_JV_PM_ID app_id, tBTA_JV_CONN_STATE init_st);
 
 /*******************************************************************************
 **

+ 23 - 16
components/bt/bluedroid/bta/jv/bta_jv_act.c

@@ -48,6 +48,7 @@
 
 
 #if (defined BTA_JV_INCLUDED && BTA_JV_INCLUDED == TRUE)
+#if BTA_JV_L2CAP_INCLUDED
 /* one of these exists for each client */
 struct fc_client {
     struct fc_client    *next_all_list;
@@ -92,11 +93,10 @@ static void __attribute__((unused)) fc_init(void)
     pthread_once(&fc_init_once,  fc_init_work);
 }
 
-
 static void fcchan_conn_chng_cbk(UINT16 chan, BD_ADDR bd_addr, BOOLEAN connected,
                                  UINT16 reason, tBT_TRANSPORT );
 static void fcchan_data_cbk(UINT16 chan, BD_ADDR bd_addr, BT_HDR *p_buf);
-
+#endif /* BTA_JV_L2CAP_INCLUDED */  
 
 extern void uuid_to_string_legacy(bt_uuid_t *p_uuid, char *str);
 static inline void logu(const char *title, const uint8_t *p_uuid)
@@ -112,8 +112,7 @@ static tBTA_JV_STATUS bta_jv_free_set_pm_profile_cb(UINT32 jv_handle);
 static void bta_jv_pm_conn_busy(tBTA_JV_PM_CB *p_cb);
 static void bta_jv_pm_conn_idle(tBTA_JV_PM_CB *p_cb);
 static void bta_jv_pm_state_change(tBTA_JV_PM_CB *p_cb, const tBTA_JV_CONN_STATE state);
-tBTA_JV_STATUS bta_jv_set_pm_conn_state(tBTA_JV_PM_CB *p_cb, const tBTA_JV_CONN_STATE
-                                        new_st);
+tBTA_JV_STATUS bta_jv_set_pm_conn_state(tBTA_JV_PM_CB *p_cb, const tBTA_JV_CONN_STATE new_st);
 
 /*******************************************************************************
 **
@@ -377,6 +376,7 @@ static tBTA_JV_STATUS bta_jv_free_rfc_cb(tBTA_JV_RFC_CB *p_cb, tBTA_JV_PCB *p_pc
     return status;
 }
 
+#if BTA_JV_L2CAP_INCLUDED
 /*******************************************************************************
 **
 ** Function     bta_jv_free_l2c_cb
@@ -402,6 +402,7 @@ tBTA_JV_STATUS bta_jv_free_l2c_cb(tBTA_JV_L2C_CB *p_cb)
     p_cb->p_cback = NULL;
     return status;
 }
+#endif /* BTA_JV_L2CAP_INCLUDED */
 
 /*******************************************************************************
 **
@@ -456,10 +457,9 @@ static tBTA_JV_STATUS bta_jv_free_set_pm_profile_cb(UINT32 jv_handle)
                 }
             }
 
-            APPL_TRACE_API("%s(jv_handle: 0x%2x), idx: %d, "
-                           "app_id: 0x%x", __func__, jv_handle, i, bta_jv_cb.pm_cb[i].app_id);
-            APPL_TRACE_API("%s, bd_counter = %d, "
-                           "appid_counter = %d", __func__, bd_counter, appid_counter);
+            APPL_TRACE_API("%s(jv_handle: 0x%2x), idx: %d, app_id: 0x%x", __func__, jv_handle, i, bta_jv_cb.pm_cb[i].app_id);
+            APPL_TRACE_API("%s, bd_counter = %d, appid_counter = %d", __func__, bd_counter, appid_counter);
+
             if (bd_counter > 1) {
                 bta_jv_pm_conn_idle(&bta_jv_cb.pm_cb[i]);
             }
@@ -478,14 +478,15 @@ static tBTA_JV_STATUS bta_jv_free_set_pm_profile_cb(UINT32 jv_handle)
                     tBTA_JV_PCB *p_pcb = bta_jv_rfc_port_to_pcb(bta_jv_cb.rfc_cb[hi].rfc_hdl[si]);
                     if (p_pcb) {
                         if (NULL == p_pcb->p_pm_cb) {
-                            APPL_TRACE_WARNING("%s(jv_handle:"
-                                               " 0x%x):port_handle: 0x%x, p_pm_cb: %d: no link to "
-                                               "pm_cb?", __func__, jv_handle, p_pcb->port_handle, i);
+                            APPL_TRACE_WARNING("%s(jv_handle: 0x%x):port_handle: 0x%x, p_pm_cb: %d: no link to pm_cb?",
+                                                 __func__, jv_handle, p_pcb->port_handle, i);
                         }
                         p_cb = &p_pcb->p_pm_cb;
                     }
                 }
-            } else {
+            } 
+#if BTA_JV_L2CAP_INCLUDED
+            else {
                 if (jv_handle < BTA_JV_MAX_L2C_CONN) {
                     tBTA_JV_L2C_CB *p_l2c_cb = &bta_jv_cb.l2c_cb[jv_handle];
                     if (NULL == p_l2c_cb->p_pm_cb) {
@@ -495,6 +496,8 @@ static tBTA_JV_STATUS bta_jv_free_set_pm_profile_cb(UINT32 jv_handle)
                     p_cb = &p_l2c_cb->p_pm_cb;
                 }
             }
+#endif /* BTA_JV_L2CAP_INCLUDED */
+
             if (p_cb) {
                 *p_cb = NULL;
                 status = BTA_JV_SUCCESS;
@@ -537,7 +540,9 @@ static tBTA_JV_PM_CB *bta_jv_alloc_set_pm_profile_cb(UINT32 jv_handle, tBTA_JV_P
                         break;
                     }
                 }
-            } else {
+            }
+#if BTA_JV_L2CAP_INCLUDED
+            else {
                 /* use jv handle for l2cap bd address retrieval */
                 for (j = 0; j < BTA_JV_MAX_L2C_CONN; j++) {
                     if (jv_handle == bta_jv_cb.l2c_cb[j].handle) {
@@ -552,6 +557,7 @@ static tBTA_JV_PM_CB *bta_jv_alloc_set_pm_profile_cb(UINT32 jv_handle, tBTA_JV_P
                     }
                 }
             }
+#endif /* BTA_JV_L2CAP_INCLUDED */
             APPL_TRACE_API("bta_jv_alloc_set_pm_profile_cb(handle 0x%2x, app_id %d): "
                            "idx: %d, (BTA_JV_PM_MAX_NUM: %d), pp_cb: %p", jv_handle, app_id,
                            i, BTA_JV_PM_MAX_NUM, (void *)pp_cb);
@@ -634,7 +640,6 @@ BOOLEAN bta_jv_check_psm(UINT16 psm)
         }
     }
     return ret;
-
 }
 
 /*******************************************************************************
@@ -1092,6 +1097,7 @@ void bta_jv_delete_record(tBTA_JV_MSG *p_data)
     }
 }
 
+#if BTA_JV_L2CAP_INCLUDED
 /*******************************************************************************
 **
 ** Function     bta_jv_l2cap_client_cback
@@ -1517,6 +1523,7 @@ void bta_jv_l2cap_write_fixed(tBTA_JV_MSG *p_data)
 
     ls->p_cback(BTA_JV_L2CAP_WRITE_FIXED_EVT, (tBTA_JV *)&evt_data, ls->user_data);
 }
+#endif /* BTA_JV_L2CAP_INCLUDED */
 
 /*******************************************************************************
 **
@@ -2351,7 +2358,7 @@ static void bta_jv_pm_state_change(tBTA_JV_PM_CB *p_cb, const tBTA_JV_CONN_STATE
 }
 /**********************************************************************************************/
 
-
+#if BTA_JV_L2CAP_INCLUDED
 static struct fc_channel *fcchan_get(uint16_t chan, char create)
 {
     struct fc_channel *t = fc_channels;
@@ -2791,6 +2798,6 @@ extern void bta_jv_l2cap_close_fixed (tBTA_JV_MSG *p_data)
         fcclient_free(t);
     }
 }
-
+#endif /* BTA_JV_L2CAP_INCLUDED */
 
 #endif  ///defined BTA_JV_INCLUDED && BTA_JV_INCLUDED == TRUE

+ 2 - 0
components/bt/bluedroid/bta/jv/bta_jv_api.c

@@ -310,6 +310,7 @@ tBTA_JV_STATUS BTA_JvDeleteRecord(UINT32 handle)
     return (status);
 }
 
+#if BTA_JV_L2CAP_INCLUDED
 /*******************************************************************************
 **
 ** Function         BTA_JvL2capConnectLE
@@ -823,6 +824,7 @@ tBTA_JV_STATUS BTA_JvL2capWriteFixed(UINT16 channel, BD_ADDR *addr, UINT32 req_i
 
     return (status);
 }
+#endif /* BTA_JV_L2CAP_INCLUDED */
 
 /*******************************************************************************
 **

+ 4 - 0
components/bt/bluedroid/bta/jv/bta_jv_main.c

@@ -52,12 +52,14 @@ const tBTA_JV_ACTION bta_jv_action[] = {
     bta_jv_start_discovery,         /* BTA_JV_API_START_DISCOVERY_EVT */
     bta_jv_create_record,           /* BTA_JV_API_CREATE_RECORD_EVT */
     bta_jv_delete_record,           /* BTA_JV_API_DELETE_RECORD_EVT */
+#if BTA_JV_L2CAP_INCLUDED
     bta_jv_l2cap_connect,           /* BTA_JV_API_L2CAP_CONNECT_EVT */
     bta_jv_l2cap_close,             /* BTA_JV_API_L2CAP_CLOSE_EVT */
     bta_jv_l2cap_start_server,      /* BTA_JV_API_L2CAP_START_SERVER_EVT */
     bta_jv_l2cap_stop_server,       /* BTA_JV_API_L2CAP_STOP_SERVER_EVT */
     bta_jv_l2cap_read,              /* BTA_JV_API_L2CAP_READ_EVT */
     bta_jv_l2cap_write,             /* BTA_JV_API_L2CAP_WRITE_EVT */
+#endif /* BTA_JV_L2CAP_INCLUDED */
     bta_jv_rfcomm_connect,          /* BTA_JV_API_RFCOMM_CONNECT_EVT */
     bta_jv_rfcomm_close,            /* BTA_JV_API_RFCOMM_CLOSE_EVT */
     bta_jv_rfcomm_start_server,     /* BTA_JV_API_RFCOMM_START_SERVER_EVT */
@@ -66,11 +68,13 @@ const tBTA_JV_ACTION bta_jv_action[] = {
     bta_jv_rfcomm_write,            /* BTA_JV_API_RFCOMM_WRITE_EVT */
     bta_jv_set_pm_profile,          /* BTA_JV_API_SET_PM_PROFILE_EVT */
     bta_jv_change_pm_state,         /* BTA_JV_API_PM_STATE_CHANGE_EVT */
+#if BTA_JV_L2CAP_INCLUDED
     bta_jv_l2cap_connect_le,        /* BTA_JV_API_L2CAP_CONNECT_LE_EVT */
     bta_jv_l2cap_start_server_le,   /* BTA_JV_API_L2CAP_START_SERVER_LE_EVT */
     bta_jv_l2cap_stop_server_le,    /* BTA_JV_API_L2CAP_STOP_SERVER_LE_EVT */
     bta_jv_l2cap_write_fixed,       /* BTA_JV_API_L2CAP_WRITE_FIXED_EVT */
     bta_jv_l2cap_close_fixed,       /*  BTA_JV_API_L2CAP_CLOSE_FIXED_EVT */
+#endif /* BTA_JV_L2CAP_INCLUDED */
 };
 
 /*******************************************************************************

+ 18 - 2
components/bt/bluedroid/bta/jv/include/bta_jv_int.h

@@ -48,12 +48,14 @@ enum {
     BTA_JV_API_START_DISCOVERY_EVT,
     BTA_JV_API_CREATE_RECORD_EVT,
     BTA_JV_API_DELETE_RECORD_EVT,
+#if BTA_JV_L2CAP_INCLUDED
     BTA_JV_API_L2CAP_CONNECT_EVT,
     BTA_JV_API_L2CAP_CLOSE_EVT,
     BTA_JV_API_L2CAP_START_SERVER_EVT,
     BTA_JV_API_L2CAP_STOP_SERVER_EVT,
     BTA_JV_API_L2CAP_READ_EVT,
     BTA_JV_API_L2CAP_WRITE_EVT,
+#endif /* BTA_JV_L2CAP_INCLUDED */
     BTA_JV_API_RFCOMM_CONNECT_EVT,
     BTA_JV_API_RFCOMM_CLOSE_EVT,
     BTA_JV_API_RFCOMM_START_SERVER_EVT,
@@ -62,11 +64,13 @@ enum {
     BTA_JV_API_RFCOMM_WRITE_EVT,
     BTA_JV_API_SET_PM_PROFILE_EVT,
     BTA_JV_API_PM_STATE_CHANGE_EVT,
+#if BTA_JV_L2CAP_INCLUDED
     BTA_JV_API_L2CAP_CONNECT_LE_EVT,
     BTA_JV_API_L2CAP_START_SERVER_LE_EVT,
     BTA_JV_API_L2CAP_STOP_SERVER_LE_EVT,
     BTA_JV_API_L2CAP_WRITE_FIXED_EVT,
     BTA_JV_API_L2CAP_CLOSE_FIXED_EVT,
+#endif /* BTA_JV_L2CAP_INCLUDED */
     BTA_JV_MAX_INT_EVT
 };
 
@@ -115,6 +119,8 @@ enum {
     BTA_JV_ST_SR_CLOSING
 } ;
 typedef UINT8  tBTA_JV_STATE;
+
+#if BTA_JV_L2CAP_INCLUDED
 #define BTA_JV_ST_CL_MAX    BTA_JV_ST_CL_CLOSING
 /* JV L2CAP control block */
 typedef struct {
@@ -127,6 +133,7 @@ typedef struct {
     tBTA_JV_PM_CB      *p_pm_cb;    /* ptr to pm control block, NULL: unused */
     void                *user_data; /* user data for callback from higher layers */
 } tBTA_JV_L2C_CB;
+#endif /* BTA_JV_L2CAP_INCLUDED */
 
 #define BTA_JV_RFC_HDL_MASK         0xFF
 #define BTA_JV_RFCOMM_MASK          0x80
@@ -156,6 +163,7 @@ typedef struct {
     int                 curr_sess;   /* current sessions count*/
 } tBTA_JV_RFC_CB;
 
+#if BTA_JV_L2CAP_INCLUDED
 /* data type for BTA_JV_API_L2CAP_CONNECT_EVT & BTA_JV_API_L2CAP_CONNECT_LE_EVT */
 typedef struct {
     BT_HDR              hdr;
@@ -233,6 +241,7 @@ typedef struct {
     UINT16              len;
     void                *user_data;
 } tBTA_JV_API_L2CAP_WRITE_FIXED;
+#endif /* BTA_JV_L2CAP_INCLUDED */
 
 /* data type for BTA_JV_API_RFCOMM_CONNECT_EVT */
 typedef struct {
@@ -345,11 +354,14 @@ typedef union {
     tBTA_JV_API_FREE_CHANNEL        free_channel;
     tBTA_JV_API_CREATE_RECORD       create_record;
     tBTA_JV_API_ADD_ATTRIBUTE       add_attr;
+#if BTA_JV_L2CAP_INCLUDED
     tBTA_JV_API_L2CAP_CONNECT       l2cap_connect;
     tBTA_JV_API_L2CAP_READ          l2cap_read;
     tBTA_JV_API_L2CAP_WRITE         l2cap_write;
     tBTA_JV_API_L2CAP_CLOSE         l2cap_close;
     tBTA_JV_API_L2CAP_SERVER        l2cap_server;
+    tBTA_JV_API_L2CAP_WRITE_FIXED   l2cap_write_fixed;
+#endif /* BTA_JV_L2CAP_INCLUDED */
     tBTA_JV_API_RFCOMM_CONNECT      rfcomm_connect;
     tBTA_JV_API_RFCOMM_READ         rfcomm_read;
     tBTA_JV_API_RFCOMM_WRITE        rfcomm_write;
@@ -357,7 +369,6 @@ typedef union {
     tBTA_JV_API_PM_STATE_CHANGE     change_pm_state;
     tBTA_JV_API_RFCOMM_CLOSE        rfcomm_close;
     tBTA_JV_API_RFCOMM_SERVER       rfcomm_server;
-    tBTA_JV_API_L2CAP_WRITE_FIXED   l2cap_write_fixed;
 } tBTA_JV_MSG;
 
 /* JV control block */
@@ -368,7 +379,9 @@ typedef struct {
     UINT32                  sdp_handle[BTA_JV_MAX_SDP_REC]; /* SDP records created */
     UINT8                   *p_sel_raw_data;/* the raw data of last service select */
     tBTA_JV_DM_CBACK        *p_dm_cback;
+#if BTA_JV_L2CAP_INCLUDED
     tBTA_JV_L2C_CB          l2c_cb[BTA_JV_MAX_L2C_CONN];    /* index is GAP handle (index) */
+#endif /* BTA_JV_L2CAP_INCLUDED */
     tBTA_JV_RFC_CB          rfc_cb[BTA_JV_MAX_RFC_CONN];
     tBTA_JV_PCB             port_cb[MAX_RFC_PORTS];         /* index of this array is
                                                                the port_handle, */
@@ -407,12 +420,14 @@ extern void bta_jv_free_scn (tBTA_JV_MSG *p_data);
 extern void bta_jv_start_discovery (tBTA_JV_MSG *p_data);
 extern void bta_jv_create_record (tBTA_JV_MSG *p_data);
 extern void bta_jv_delete_record (tBTA_JV_MSG *p_data);
+#if BTA_JV_L2CAP_INCLUDED
 extern void bta_jv_l2cap_connect (tBTA_JV_MSG *p_data);
 extern void bta_jv_l2cap_close (tBTA_JV_MSG *p_data);
 extern void bta_jv_l2cap_start_server (tBTA_JV_MSG *p_data);
 extern void bta_jv_l2cap_stop_server (tBTA_JV_MSG *p_data);
 extern void bta_jv_l2cap_read (tBTA_JV_MSG *p_data);
 extern void bta_jv_l2cap_write (tBTA_JV_MSG *p_data);
+#endif /* BTA_JV_L2CAP_INCLUDED */
 extern void bta_jv_rfcomm_connect (tBTA_JV_MSG *p_data);
 extern void bta_jv_rfcomm_close (tBTA_JV_MSG *p_data);
 extern void bta_jv_rfcomm_start_server (tBTA_JV_MSG *p_data);
@@ -421,11 +436,12 @@ extern void bta_jv_rfcomm_read (tBTA_JV_MSG *p_data);
 extern void bta_jv_rfcomm_write (tBTA_JV_MSG *p_data);
 extern void bta_jv_set_pm_profile (tBTA_JV_MSG *p_data);
 extern void bta_jv_change_pm_state(tBTA_JV_MSG *p_data);
+#if BTA_JV_L2CAP_INCLUDED
 extern void bta_jv_l2cap_connect_le (tBTA_JV_MSG *p_data);
 extern void bta_jv_l2cap_start_server_le (tBTA_JV_MSG *p_data);
 extern void bta_jv_l2cap_stop_server_le (tBTA_JV_MSG *p_data);
 extern void bta_jv_l2cap_write_fixed (tBTA_JV_MSG *p_data);
 extern void bta_jv_l2cap_close_fixed (tBTA_JV_MSG *p_data);
-
+#endif /* BTA_JV_L2CAP_INCLUDED */
 #endif  ///defined BTA_JV_INCLUDED && BTA_JV_INCLUDED == TRUE
 #endif /* BTA_JV_INT_H */

+ 19 - 9
components/bt/bluedroid/common/include/common/bt_target.h

@@ -96,6 +96,12 @@
 
 #endif /* #if CONFIG_CLASSIC_BT_ENABLED */
 
+/* This is set to enable use of GAP L2CAP connections. */
+#if (VND_BT_JV_BTA_L2CAP == TRUE)
+#define BTA_JV_L2CAP_INCLUDED       TRUE
+#define GAP_CONN_INCLUDED           TRUE
+#endif /* VND_BT_JV_BTA_L2CAP */
+
 #ifndef CLASSIC_BT_INCLUDED
 #define CLASSIC_BT_INCLUDED         FALSE
 #endif /* CLASSIC_BT_INCLUDED */
@@ -293,6 +299,19 @@
 #define BTA_SDP_INCLUDED FALSE
 #endif
 
+/* This is set to enable use of GAP L2CAP connections. */
+#ifndef VND_BT_JV_BTA_L2CAP
+#define VND_BT_JV_BTA_L2CAP        FALSE
+#endif
+
+#ifndef BTA_JV_L2CAP_INCLUDED
+#define BTA_JV_L2CAP_INCLUDED       FALSE
+#endif
+
+#ifndef GAP_CONN_INCLUDED
+#define GAP_CONN_INCLUDED           FALSE
+#endif
+
 /******************************************************************************
 **
 ** Stack-layer components
@@ -1710,15 +1729,6 @@ Range: 2 octets
 #define GAP_INCLUDED                TRUE
 #endif
 
-/* This is set to enable use of GAP L2CAP connections. */
-#ifndef GAP_CONN_INCLUDED
-#if (GAP_INCLUDED == TRUE && CLASSIC_BT_INCLUDED == TRUE)
-#define GAP_CONN_INCLUDED           TRUE
-#else
-#define GAP_CONN_INCLUDED           FALSE
-#endif
-#endif
-
 /* This is set to enable posting event for data write */
 #ifndef GAP_CONN_POST_EVT_INCLUDED
 #define GAP_CONN_POST_EVT_INCLUDED  FALSE