mirror of
https://github.com/bluekitchen/btstack.git
synced 2025-02-25 15:41:00 +00:00
hci: replace '00:00:00:00:00:00' placeholder in local name with actual BD ADDR
This commit is contained in:
parent
bc555cb1d8
commit
1c2a62f598
44
src/hci.c
44
src/hci.c
@ -1054,6 +1054,22 @@ static void hci_initializing_next_state(void){
|
||||
hci_stack->substate = (hci_substate_t )( ((int) hci_stack->substate) + 1);
|
||||
}
|
||||
|
||||
#ifdef ENABLE_CLASSIC
|
||||
static void hci_replace_bd_addr_placeholder(uint8_t * data, uint16_t size){
|
||||
const int bd_addr_string_len = 17;
|
||||
int i = 0;
|
||||
while (i < size - bd_addr_string_len){
|
||||
if (memcmp(&data[i], "00:00:00:00:00:00", bd_addr_string_len)) {
|
||||
i++;
|
||||
continue;
|
||||
}
|
||||
// set real address
|
||||
memcpy(&data[i], bd_addr_to_str(hci_stack->local_bd_addr), bd_addr_string_len);
|
||||
i += bd_addr_string_len;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
// assumption: hci_can_send_command_packet_now() == true
|
||||
static void hci_initializing_run(void){
|
||||
log_debug("hci_initializing_run: substate %u, can send %u", hci_stack->substate, hci_can_send_command_packet_now());
|
||||
@ -1243,20 +1259,24 @@ static void hci_initializing_run(void){
|
||||
hci_stack->substate = HCI_INIT_W4_WRITE_CLASS_OF_DEVICE;
|
||||
hci_send_cmd(&hci_write_class_of_device, hci_stack->class_of_device);
|
||||
break;
|
||||
case HCI_INIT_WRITE_LOCAL_NAME:
|
||||
case HCI_INIT_WRITE_LOCAL_NAME: {
|
||||
hci_stack->substate = HCI_INIT_W4_WRITE_LOCAL_NAME;
|
||||
if (hci_stack->local_name){
|
||||
hci_send_cmd(&hci_write_local_name, hci_stack->local_name);
|
||||
} else {
|
||||
char local_name[8+17+1];
|
||||
// BTstack 11:22:33:44:55:66
|
||||
memcpy(local_name, "BTstack ", 8);
|
||||
memcpy(&local_name[8], bd_addr_to_str(hci_stack->local_bd_addr), 17); // strlen(bd_addr_to_str(...)) = 17
|
||||
local_name[8+17] = '\0';
|
||||
log_info("---> Name %s", local_name);
|
||||
hci_send_cmd(&hci_write_local_name, local_name);
|
||||
}
|
||||
const char * local_name = hci_stack->local_name ? hci_stack->local_name : "BTstack 00:00:00:00:00:00";
|
||||
hci_reserve_packet_buffer();
|
||||
uint8_t * packet = hci_stack->hci_packet_buffer;
|
||||
// construct HCI Command and send
|
||||
uint16_t opcode = hci_write_local_name.opcode;
|
||||
hci_stack->last_cmd_opcode = opcode;
|
||||
packet[0] = opcode & 0xff;
|
||||
packet[1] = opcode >> 8;
|
||||
packet[2] = DEVICE_NAME_LEN;
|
||||
memset(&packet[3], 0, DEVICE_NAME_LEN);
|
||||
memcpy(&packet[3], local_name, strlen(local_name));
|
||||
// expand '00:00:00:00:00:00' in name with bd_addr
|
||||
hci_replace_bd_addr_placeholder(&packet[3], DEVICE_NAME_LEN);
|
||||
hci_send_cmd_packet(packet, HCI_CMD_HEADER_SIZE + DEVICE_NAME_LEN);
|
||||
break;
|
||||
}
|
||||
case HCI_INIT_WRITE_EIR_DATA:
|
||||
hci_stack->substate = HCI_INIT_W4_WRITE_EIR_DATA;
|
||||
hci_send_cmd(&hci_write_extended_inquiry_response, 0, hci_stack->eir_data);
|
||||
|
Loading…
x
Reference in New Issue
Block a user