Parcourir la source

Merge branch 'bugfix/set_eir_when_no_eir_data' into 'master'

change(bt/bluedroid): Send a name tag with zero length when there is no EIR data

Closes BTQABR2023-100

See merge request espressif/esp-idf!25805
Bao Hong De il y a 2 ans
Parent
commit
e5739ddd45
1 fichiers modifiés avec 13 ajouts et 2 suppressions
  1. 13 2
      components/bt/host/bluedroid/bta/dm/bta_dm_act.c

+ 13 - 2
components/bt/host/bluedroid/bta/dm/bta_dm_act.c

@@ -4324,13 +4324,24 @@ static void bta_dm_set_eir (char *local_name)
         }
     }
 
-    if ( free_eir_length ) {
+    /* If there is no other data to be sent in the EIR packet, the Host shall
+     * send a name tag with zero length and the type field set to indicate
+     * that this is the complete name (i.e., total of 2 octets with length =
+     * 1).
+     */
+    if (eir_type_num == 0) {
+        UINT8_TO_STREAM(p, 1);
+        UINT8_TO_STREAM(p, BTM_EIR_COMPLETE_LOCAL_NAME_TYPE);
+        free_eir_length -= 2;
+    }
+
+    if (free_eir_length) {
         UINT8_TO_STREAM(p, 0);    /* terminator of significant part */
     }
 
     tBTM_STATUS btm_status = BTM_WriteEIR( p_buf, p_bta_dm_eir_cfg->bta_dm_eir_fec_required );
 
-    if ( btm_status == BTM_MODE_UNSUPPORTED) {
+    if (btm_status == BTM_MODE_UNSUPPORTED) {
         status = BTA_WRONG_MODE;
     } else if (btm_status != BTM_SUCCESS) {
         status = BTA_FAILURE;