diff --git a/components/bt/host/bluedroid/bta/dm/bta_dm_act.c b/components/bt/host/bluedroid/bta/dm/bta_dm_act.c index 9d0f8a6d60..165261e699 100644 --- a/components/bt/host/bluedroid/bta/dm/bta_dm_act.c +++ b/components/bt/host/bluedroid/bta/dm/bta_dm_act.c @@ -4306,13 +4306,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;