]> granicus.if.org Git - esp-idf/commitdiff
components/bt: Set default Class of Device of BT profile
authorbaohongde <baohongde@espressif.com>
Fri, 26 Oct 2018 09:03:39 +0000 (17:03 +0800)
committerbaohongde <baohongde@espressif.com>
Fri, 26 Oct 2018 09:03:39 +0000 (17:03 +0800)
The CoD of each profile both are 0x2c0414, now they are as follow:
A2DP sink:   0x240414
A2DP source: 0x280400
HFP:         0x200408
SPP:         0x001F00

components/bt/bluedroid/bta/av/bta_av_act.c
components/bt/bluedroid/bta/av/bta_av_main.c
components/bt/bluedroid/bta/hf_client/bta_hf_client_act.c
components/bt/bluedroid/bta/jv/bta_jv_act.c
components/bt/bluedroid/common/include/common/bt_target.h

index 5aa91b84d61f575d8b49986967c0b1495099e574..341ced1a4ae9725d4a6243063884b332269a0204 100644 (file)
@@ -1870,8 +1870,14 @@ void bta_av_dereg_comp(tBTA_AV_DATA *p_data)
             bta_av_cb.features  = 0;
         }
 
-        /* Clear the Capturing service class bit */
-        cod.service = BTM_COD_SERVICE_CAPTURING;
+        /* Clear the Capturing/Rendering service class bit */
+        if (p_data->api_reg.tsep == AVDT_TSEP_SRC) {
+            cod.service = BTM_COD_SERVICE_CAPTURING | BTM_COD_SERVICE_AUDIO;
+        } else {
+#if (BTA_AV_SINK_INCLUDED == TRUE)
+            cod.service = BTM_COD_SERVICE_RENDERING | BTM_COD_SERVICE_AUDIO;
+#endif
+        }
         utl_set_device_class(&cod, BTA_UTL_CLR_COD_SERVICE_CLASS);
     }
 }
index a72626b26a6541f2e58152af0a5e423bf1d8bc1f..d16b896d4423bcd4499645abc46df815cbc5767e 100644 (file)
@@ -577,15 +577,19 @@ static void bta_av_api_register(tBTA_AV_DATA *p_data)
 #endif
             }
 
-            /* Set the Capturing service class bit */
+            /* Set the Calss of Device (Audio & Capturing/Rendering service class bit) */
             if (p_data->api_reg.tsep == AVDT_TSEP_SRC) {
-                cod.service = BTM_COD_SERVICE_CAPTURING;
+                cod.service = BTM_COD_SERVICE_CAPTURING | BTM_COD_SERVICE_AUDIO;
+                cod.major = BTM_COD_MAJOR_AUDIO;
+                cod.minor = BTM_COD_MINOR_UNCLASSIFIED;
             } else {
 #if (BTA_AV_SINK_INCLUDED == TRUE)
-                cod.service = BTM_COD_SERVICE_RENDERING;
+                cod.service = BTM_COD_SERVICE_RENDERING | BTM_COD_SERVICE_AUDIO;
+                cod.major = BTM_COD_MAJOR_AUDIO;
+                cod.minor = BTM_COD_MINOR_LOUDSPEAKER;
 #endif
             }
-            utl_set_device_class(&cod, BTA_UTL_SET_COD_SERVICE_CLASS);
+            utl_set_device_class(&cod, BTA_UTL_SET_COD_ALL);
         } /* if 1st channel */
 
         /* get stream configuration and create stream */
index c42b5bd14fc0c45c6d768189151e2d5c4797e585..3adaad23eed9cdc412cce5b22b55fc65c284fe50 100644 (file)
@@ -73,9 +73,11 @@ void bta_hf_client_register(tBTA_HF_CLIENT_DATA *p_data)
     /* create SDP records */
     bta_hf_client_create_record(p_data);
 
-    /* Set the Audio service class bit */
+    /* Set the Class of Device (Audio service class bit) */
     cod.service = BTM_COD_SERVICE_AUDIO;
-    utl_set_device_class(&cod, BTA_UTL_SET_COD_SERVICE_CLASS);
+    cod.major = BTM_COD_MAJOR_AUDIO;
+    cod.minor = BTM_COD_MINOR_CONFM_HANDSFREE;
+    utl_set_device_class(&cod, BTA_UTL_SET_COD_ALL);
 
     /* start RFCOMM server */
     bta_hf_client_start_server();
@@ -98,8 +100,14 @@ void bta_hf_client_register(tBTA_HF_CLIENT_DATA *p_data)
 *******************************************************************************/
 void bta_hf_client_deregister(tBTA_HF_CLIENT_DATA *p_data)
 {
+    tBTA_UTL_COD   cod;
+
     bta_hf_client_cb.scb.deregister = TRUE;
 
+    /* Clear the Audio service class bit */
+    cod.service = BTM_COD_SERVICE_AUDIO;
+    utl_set_device_class(&cod, BTA_UTL_CLR_COD_SERVICE_CLASS);
+
     /* remove sdp record */
     bta_hf_client_del_record(p_data);
 
@@ -653,7 +661,7 @@ void bta_hf_client_ccwa(char *number)
     if ((evt = osi_calloc(sizeof(tBTA_HF_CLIENT_NUMBER))) != NULL) {
         strlcpy(evt->number, number, BTA_HF_CLIENT_NUMBER_LEN + 1);
         evt->number[BTA_HF_CLIENT_NUMBER_LEN] = '\0';
-        
+
 
         (*bta_hf_client_cb.p_cback)(BTA_HF_CLIENT_CCWA_EVT, evt);
         osi_free(evt);
@@ -709,7 +717,7 @@ void bta_hf_client_clcc(UINT32 idx, BOOLEAN incoming, UINT8 status, BOOLEAN mpty
             strlcpy(evt->number, number, BTA_HF_CLIENT_NUMBER_LEN + 1);
             evt->number[BTA_HF_CLIENT_NUMBER_LEN] = '\0';
         }
-        
+
         (*bta_hf_client_cb.p_cback)(BTA_HF_CLIENT_CLCC_EVT, evt);
         osi_free(evt);
     } else {
index f89ba3e0ba842623b1c8ac649feb8e168ac94c24..8b89ad850817e18b65c2df061c834fece1760b61 100644 (file)
@@ -643,10 +643,17 @@ BOOLEAN bta_jv_check_psm(UINT16 psm)
 *******************************************************************************/
 void bta_jv_enable(tBTA_JV_MSG *p_data)
 {
+    tBTA_UTL_COD   cod;
+
     tBTA_JV_STATUS status = BTA_JV_SUCCESS;
     bta_jv_cb.p_dm_cback = p_data->enable.p_cback;
     bta_jv_cb.p_dm_cback(BTA_JV_ENABLE_EVT, (tBTA_JV *)&status, 0);
     memset(bta_jv_cb.free_psm_list, 0, sizeof(bta_jv_cb.free_psm_list));
+
+    /* Set the Class of Device */
+    cod.major = BTM_COD_MAJOR_UNCLASSIFIED;
+    cod.minor = BTM_COD_MINOR_UNCLASSIFIED;
+    utl_set_device_class(&cod, BTA_UTL_SET_COD_MAJOR_MINOR);
 }
 
 /*******************************************************************************
@@ -662,8 +669,6 @@ void bta_jv_enable(tBTA_JV_MSG *p_data)
 void bta_jv_disable (tBTA_JV_MSG *p_data)
 {
     UNUSED(p_data);
-
-    APPL_TRACE_ERROR("%s", __func__);
 }
 
 
index 7beeb19106e163062cf2c906fa7d7fec8a5c55f6..5c415a2b6d7f34331e4c6d1467c714e4878bb043 100644 (file)
 */
 #define BTA_DM_COD_LOUDSPEAKER {0x2C, 0x04, 0x14}
 
+/*
+* {SERVICE_CLASS, MAJOR_CLASS, MINOR_CLASS}
+*
+* SERVICE_CLASS:0x00 None
+* MAJOR_CLASS:0x1f - Uncategorized: device code not specified
+* MINOR_CLASS:0x00 - None
+*/
+#define BTA_DM_COD_UNCLASSIFIED {0x00, 0x1f, 0x00}
+
 /* Default class of device */
 #ifndef BTA_DM_COD
-#define BTA_DM_COD BTA_DM_COD_LOUDSPEAKER
+#define BTA_DM_COD BTA_DM_COD_UNCLASSIFIED
 #endif
 
 /* The number of SCO links. */