1 /*
2  * SPDX-FileCopyrightText: 2015-2021 Espressif Systems (Shanghai) CO LTD
3  *
4  * SPDX-License-Identifier: Apache-2.0
5  */
6 
7 #include <stdlib.h>
8 #include <string.h>
9 #include "esp_bt_device.h"
10 #include "esp_bt_main.h"
11 #include "device/controller.h"
12 #include "btc/btc_task.h"
13 #include "btc/btc_dev.h"
14 
esp_bt_dev_get_address(void)15 const uint8_t *esp_bt_dev_get_address(void)
16 {
17     if (esp_bluedroid_get_status() != ESP_BLUEDROID_STATUS_ENABLED) {
18 	return NULL;
19     }
20     return controller_get_interface()->get_address()->address;
21 }
22 
esp_bt_dev_set_device_name(const char * name)23 esp_err_t esp_bt_dev_set_device_name(const char *name)
24 {
25     btc_msg_t msg = {0};
26     btc_dev_args_t arg;
27 
28     if (esp_bluedroid_get_status() != ESP_BLUEDROID_STATUS_ENABLED) {
29         return ESP_ERR_INVALID_STATE;
30     }
31     if (!name){
32         return ESP_ERR_INVALID_ARG;
33     }
34     if (strlen(name) > BTC_MAX_LOC_BD_NAME_LEN) {
35         return ESP_ERR_INVALID_ARG;
36     }
37 
38     msg.sig = BTC_SIG_API_CALL;
39     msg.pid = BTC_PID_DEV;
40     msg.act = BTC_DEV_ACT_SET_DEVICE_NAME;
41     arg.set_dev_name.device_name = (char *)osi_malloc((BTC_MAX_LOC_BD_NAME_LEN + 1) * sizeof(char));
42     if (!arg.set_dev_name.device_name) {
43         return ESP_ERR_NO_MEM;
44     }
45 
46     strcpy(arg.set_dev_name.device_name, name);
47 
48     return (btc_transfer_context(&msg, &arg, sizeof(btc_dev_args_t), NULL, NULL) == BT_STATUS_SUCCESS ? ESP_OK : ESP_FAIL);
49 }
50