Got controller connected and working, buttons broken

This commit is contained in:
2026-05-15 16:38:57 +12:00
parent 1ff9b657a1
commit 4a06855f4e
7 changed files with 2763 additions and 489 deletions

View File

@@ -0,0 +1,3 @@
idf_component_register(SRCS "xbox_controller.c"
PRIV_REQUIRES bt esp_hid driver mbedtls nvs_flash
INCLUDE_DIRS "include")

View File

@@ -0,0 +1,7 @@
#ifndef XBOX_CONTROLLER_H
#define XBOX_CONTROLLER_H
void init_controller(void);
void print_state(void);
#endif

View File

@@ -0,0 +1,673 @@
#include <stdio.h>
#include <stdint.h>
#include "xbox_controller.h"
#include "nvs_flash.h"
#include "esp_err.h"
#include "esp_hidh.h"
#include "esp_hid_common.h"
#include "esp_gattc_api.h"
#include "esp_bt_main.h"
#include "esp_bt.h"
#include "esp_log.h"
#include "esp_gap_ble_api.h"
#include "freertos/idf_additions.h"
#define HIDH_IDLE_MODE 0x00
#define HIDH_BLE_MODE 0x01
#define HIDH_BT_MODE 0x02
#define HIDH_BTDM_MODE 0x03
#define XBOX_CONTROLLER_INDEX_BUTTONS_DIR 12
#define XBOX_CONTROLLER_INDEX_BUTTONS_MAIN 13
#define XBOX_CONTROLLER_INDEX_BUTTONS_CENTER 14
#define XBOX_CONTROLLER_INDEX_BUTTONS_SHARE 15
typedef struct {
bool A;
bool B;
bool X;
bool Y;
bool UP;
bool DOWN;
bool LEFT;
bool RIGHT;
bool RB;
bool LB;
bool START;
bool SELECT;
bool XBOX_BUT;
bool RS;
bool LS;
uint16_t joyLX;
uint16_t joyLY;
uint16_t joyRX;
uint16_t joyRY;
uint16_t trigL;
uint16_t trigR;
}controller_state_t;
controller_state_t xbox_state;
void print_state(void) {
ESP_LOGI("xbox_ctrl_output", "A:%1d,B:%1d,X:%1d,Y:%1d,U:%1d,D:%1d,L%1d,R:%1d\n",
xbox_state.A, xbox_state.B, xbox_state.X, xbox_state.Y,
xbox_state.UP, xbox_state.DOWN, xbox_state.LEFT, xbox_state.RIGHT);
ESP_LOGI("xbox_ctrl_output", "RB:%1d,LB:%1d,RS:%1d,LS:%1d,START:%1d,SELECT:%1d,XBOX:%1d",
xbox_state.RB, xbox_state.LB, xbox_state.RS, xbox_state.LS,
xbox_state.START, xbox_state.SELECT, xbox_state.XBOX_BUT);
ESP_LOGI("xbox_ctrl_output", "jLX:%5d,jLY:%5d,jRX:%5d,jRY:%5d,tL:%5d,tR:%5d",
xbox_state.joyLX, xbox_state.joyLY, xbox_state.joyRX, xbox_state.joyRY,
xbox_state.trigL, xbox_state.trigR);
}
const char *esp_ble_key_type_str(esp_ble_key_type_t key_type)
{
const char *key_str = NULL;
switch (key_type) {
case ESP_LE_KEY_NONE:
key_str = "ESP_LE_KEY_NONE";
break;
case ESP_LE_KEY_PENC:
key_str = "ESP_LE_KEY_PENC";
break;
case ESP_LE_KEY_PID:
key_str = "ESP_LE_KEY_PID";
break;
case ESP_LE_KEY_PCSRK:
key_str = "ESP_LE_KEY_PCSRK";
break;
case ESP_LE_KEY_PLK:
key_str = "ESP_LE_KEY_PLK";
break;
case ESP_LE_KEY_LLK:
key_str = "ESP_LE_KEY_LLK";
break;
case ESP_LE_KEY_LENC:
key_str = "ESP_LE_KEY_LENC";
break;
case ESP_LE_KEY_LID:
key_str = "ESP_LE_KEY_LID";
break;
case ESP_LE_KEY_LCSRK:
key_str = "ESP_LE_KEY_LCSRK";
break;
default:
key_str = "INVALID BLE KEY TYPE";
break;
}
return key_str;
}
void controller_msg_callback(void *handler_args, esp_event_base_t base, int32_t id, void *event_data) {
esp_hidh_event_t event = (esp_hidh_event_t)id;
esp_hidh_event_data_t *param = (esp_hidh_event_data_t *) event_data;
switch (event)
{
case ESP_HIDH_OPEN_EVENT:
{
if (param->open.status == ESP_OK)
{
const uint8_t *bda = esp_hidh_dev_bda_get(param->open.dev);
ESP_LOGI("xbox_ctrl", ESP_BD_ADDR_STR " OPEN: %s", ESP_BD_ADDR_HEX(bda), esp_hidh_dev_name_get(param->open.dev));
esp_hidh_dev_dump(param->open.dev, stdout);
}
else
{
ESP_LOGE("xbox_ctrl", " OPEN failed!");
}
break;
}
case ESP_HIDH_BATTERY_EVENT:
{
const uint8_t *bda = esp_hidh_dev_bda_get(param->battery.dev);
ESP_LOGI("xbox_ctrl", ESP_BD_ADDR_STR " BATTERY: %d%%", ESP_BD_ADDR_HEX(bda), param->battery.level);
break;
}
case ESP_HIDH_INPUT_EVENT:
{
uint8_t btnBits;
btnBits = param->input.data[XBOX_CONTROLLER_INDEX_BUTTONS_MAIN];
xbox_state.A = (btnBits & (1 << 0) << 0);
xbox_state.B = (btnBits & (1 << 1) << 1);
xbox_state.X = (btnBits & (1 << 2) << 2);
xbox_state.Y = (btnBits & (1 << 3) << 3);
xbox_state.LB = (btnBits & (1 << 6) << 6);
xbox_state.RB = (btnBits & (1 << 7) << 7);
btnBits = param->input.data[XBOX_CONTROLLER_INDEX_BUTTONS_CENTER];
xbox_state.SELECT = (btnBits & (1 << 2) << 2);
xbox_state.START = (btnBits & (1 << 3) << 3);
xbox_state.XBOX_BUT = (btnBits & (1 << 4) << 4);
xbox_state.LS = (btnBits & (1 << 5) << 5);
xbox_state.RS = (btnBits & (1 << 6) << 6);
btnBits = param->input.data[XBOX_CONTROLLER_INDEX_BUTTONS_DIR];
xbox_state.UP = btnBits == 1 || btnBits == 2 || btnBits == 8;
xbox_state.RIGHT = 2 <= btnBits && btnBits <= 4;
xbox_state.DOWN = 4 <= btnBits && btnBits <= 6;
xbox_state.LEFT = 6 <= btnBits && btnBits <= 8;
xbox_state.joyLX = (uint16_t)param->input.data[0] | ((uint16_t)param->input.data[1] << 8); // 0-65535
xbox_state.joyLY = (uint16_t)param->input.data[2] | ((uint16_t)param->input.data[3] << 8);
xbox_state.joyRX = (uint16_t)param->input.data[4] | ((uint16_t)param->input.data[5] << 8);
xbox_state.joyRY = (uint16_t)param->input.data[6] | ((uint16_t)param->input.data[7] << 8);
xbox_state.trigL = (uint16_t)param->input.data[8] | ((uint16_t)param->input.data[9] << 8); // 0-1024
xbox_state.trigR = (uint16_t)param->input.data[10] | ((uint16_t)param->input.data[11] << 8);
break;
}
case ESP_HIDH_FEATURE_EVENT:
{
const uint8_t *bda = esp_hidh_dev_bda_get(param->feature.dev);
ESP_LOGI("xbox_ctrl", ESP_BD_ADDR_STR " FEATURE: %8s, MAP: %2u, ID: %3u, Len: %d", ESP_BD_ADDR_HEX(bda),
esp_hid_usage_str(param->feature.usage), param->feature.map_index, param->feature.report_id,
param->feature.length);
ESP_LOG_BUFFER_HEX("xbox_ctrl", param->feature.data, param->feature.length);
break;
}
case ESP_HIDH_CLOSE_EVENT:
{
const uint8_t *bda = esp_hidh_dev_bda_get(param->close.dev);
ESP_LOGI("xbox_ctrl", ESP_BD_ADDR_STR " CLOSE: %s", ESP_BD_ADDR_HEX(bda), esp_hidh_dev_name_get(param->close.dev));
break;
}
default:
ESP_LOGI("xbox_ctrl", "EVENT: %d", event);
break;
}
}
static const char *ble_addr_type_names[] = {"PUBLIC", "RANDOM", "RPA_PUBLIC", "RPA_RANDOM"};
typedef struct esp_hidh_scan_result_s {
struct esp_hidh_scan_result_s *next;
esp_bd_addr_t bda;
const char *name;
int8_t rssi;
esp_hid_usage_t usage;
esp_hid_transport_t transport; //BT, BLE or USB
union {
struct {
esp_bt_uuid_t uuid;
} bt;
struct {
esp_ble_addr_type_t addr_type;
uint16_t appearance;
} ble;
};
} esp_hid_scan_result_t;
static esp_hid_scan_result_t *bt_scan_results = NULL;
static size_t num_bt_scan_results = 0;
static esp_hid_scan_result_t *ble_scan_results = NULL;
static size_t num_ble_scan_results = 0;
static SemaphoreHandle_t bt_hidh_cb_semaphore = NULL;
#define WAIT_BT_CB() xSemaphoreTake(bt_hidh_cb_semaphore, portMAX_DELAY)
#define SEND_BT_CB() xSemaphoreGive(bt_hidh_cb_semaphore)
static SemaphoreHandle_t ble_hidh_cb_semaphore = NULL;
#define WAIT_BLE_CB() xSemaphoreTake(ble_hidh_cb_semaphore, portMAX_DELAY)
#define SEND_BLE_CB() xSemaphoreGive(ble_hidh_cb_semaphore)
#define SIZEOF_ARRAY(a) (sizeof(a)/sizeof(*a))
static esp_ble_scan_params_t hid_scan_params = {
.scan_type = BLE_SCAN_TYPE_ACTIVE,
.own_addr_type = BLE_ADDR_TYPE_PUBLIC,
.scan_filter_policy = BLE_SCAN_FILTER_ALLOW_ALL,
.scan_interval = 0x50,
.scan_window = 0x30,
.scan_duplicate = BLE_SCAN_DUPLICATE_ENABLE,
};
static esp_err_t start_ble_scan(uint32_t seconds)
{
esp_err_t ret = ESP_OK;
if ((ret = esp_ble_gap_set_scan_params(&hid_scan_params)) != ESP_OK) {
ESP_LOGE("xbox_ctrl", "esp_ble_gap_set_scan_params failed: %d", ret);
return ret;
}
WAIT_BLE_CB();
if ((ret = esp_ble_gap_start_scanning(seconds)) != ESP_OK) {
ESP_LOGE("xbox_ctrl", "esp_ble_gap_start_scanning failed: %d", ret);
return ret;
}
return ret;
}
esp_err_t esp_hid_scan(uint32_t seconds, size_t *num_results, esp_hid_scan_result_t **results)
{
if (num_bt_scan_results || bt_scan_results || num_ble_scan_results || ble_scan_results) {
ESP_LOGE("xbox_ctrl", "There are old scan results. Free them first!");
return ESP_FAIL;
}
if (start_ble_scan(seconds) == ESP_OK) {
WAIT_BLE_CB();
} else {
return ESP_FAIL;
}
*num_results = num_bt_scan_results + num_ble_scan_results;
*results = bt_scan_results;
if (num_bt_scan_results) {
while (bt_scan_results->next != NULL) {
bt_scan_results = bt_scan_results->next;
}
bt_scan_results->next = ble_scan_results;
} else {
*results = ble_scan_results;
}
num_bt_scan_results = 0;
bt_scan_results = NULL;
num_ble_scan_results = 0;
ble_scan_results = NULL;
return ESP_OK;
}
const char *ble_addr_type_str(esp_ble_addr_type_t ble_addr_type)
{
if (ble_addr_type > BLE_ADDR_TYPE_RPA_RANDOM) {
return "UNKNOWN";
}
return ble_addr_type_names[ble_addr_type];
}
void esp_hid_scan_results_free(esp_hid_scan_result_t *results)
{
esp_hid_scan_result_t *r = NULL;
while (results) {
r = results;
results = results->next;
if (r->name != NULL) {
free((char *)r->name);
}
free(r);
}
}
#define SCAN_DURATION_SECONDS 10
void hid_task(void *pvParameters)
{
size_t results_len = 0;
esp_hid_scan_result_t *results = NULL;
ESP_LOGI("xbox_ctrl", "SCAN...");
// start scan for HID devices
esp_hid_scan(SCAN_DURATION_SECONDS, &results_len, &results);
ESP_LOGI("xbox_ctrl", "SCAN: %u results", results_len);
if (results_len)
{
esp_hid_scan_result_t *r = results;
esp_hid_scan_result_t *cr = NULL;
while (r)
{
printf(" %s: " ESP_BD_ADDR_STR ", ", (r->transport == ESP_HID_TRANSPORT_BLE) ? "BLE" : "BT ", ESP_BD_ADDR_HEX(r->bda));
printf("RSSI: %d, ", r->rssi);
printf("USAGE: %s, ", esp_hid_usage_str(r->usage));
if (r->transport == ESP_HID_TRANSPORT_BLE)
{
if (r->ble.appearance == 0x03c4)
cr = r;
printf("APPEARANCE: 0x%04x, ", r->ble.appearance);
printf("ADDR_TYPE: '%s', ", ble_addr_type_str(r->ble.addr_type));
}
printf("NAME: %s ", r->name ? r->name : "");
printf("\n");
r = r->next;
}
if (cr)
{
// open the last result
esp_hidh_dev_open(cr->bda, cr->transport, cr->ble.addr_type);
}
// free the results
esp_hid_scan_results_free(results);
}
vTaskDelete(NULL);
}
#define GAP_DBG_PRINTF(...) printf(__VA_ARGS__)
static esp_hid_scan_result_t *find_scan_result(esp_bd_addr_t bda, esp_hid_scan_result_t *results)
{
esp_hid_scan_result_t *r = results;
while (r) {
if (memcmp(bda, r->bda, sizeof(esp_bd_addr_t)) == 0) {
return r;
}
r = r->next;
}
return NULL;
}
static void add_ble_scan_result(esp_bd_addr_t bda, esp_ble_addr_type_t addr_type, uint16_t appearance, uint8_t *name, uint8_t name_len, int rssi)
{
if (find_scan_result(bda, ble_scan_results)) {
ESP_LOGW("xbox_controller", "Result already exists!");
return;
}
esp_hid_scan_result_t *r = (esp_hid_scan_result_t *)malloc(sizeof(esp_hid_scan_result_t));
if (r == NULL) {
ESP_LOGE("xbox_controller", "Malloc ble_hidh_scan_result_t failed!");
return;
}
r->transport = ESP_HID_TRANSPORT_BLE;
memcpy(r->bda, bda, sizeof(esp_bd_addr_t));
r->ble.appearance = appearance;
r->ble.addr_type = addr_type;
r->usage = esp_hid_usage_from_appearance(appearance);
r->rssi = rssi;
r->name = NULL;
if (name_len && name) {
char *name_s = (char *)malloc(name_len + 1);
if (name_s == NULL) {
free(r);
ESP_LOGE("xbox_controller", "Malloc result name failed!");
return;
}
memcpy(name_s, name, name_len);
name_s[name_len] = 0;
r->name = (const char *)name_s;
}
r->next = ble_scan_results;
ble_scan_results = r;
num_ble_scan_results++;
}
static void handle_ble_device_result(struct ble_scan_result_evt_param *scan_rst)
{
uint16_t uuid = 0;
uint16_t appearance = 0;
char name[64] = {0};
uint8_t uuid_len = 0;
uint8_t *uuid_d = esp_ble_resolve_adv_data(scan_rst->ble_adv, ESP_BLE_AD_TYPE_16SRV_CMPL, &uuid_len);
if (uuid_d != NULL && uuid_len) {
uuid = uuid_d[0] + (uuid_d[1] << 8);
}
uint8_t appearance_len = 0;
uint8_t *appearance_d = esp_ble_resolve_adv_data(scan_rst->ble_adv, ESP_BLE_AD_TYPE_APPEARANCE, &appearance_len);
if (appearance_d != NULL && appearance_len) {
appearance = appearance_d[0] + (appearance_d[1] << 8);
}
uint8_t adv_name_len = 0;
uint8_t *adv_name = esp_ble_resolve_adv_data(scan_rst->ble_adv, ESP_BLE_AD_TYPE_NAME_CMPL, &adv_name_len);
if (adv_name == NULL) {
adv_name = esp_ble_resolve_adv_data(scan_rst->ble_adv, ESP_BLE_AD_TYPE_NAME_SHORT, &adv_name_len);
}
if (adv_name != NULL && adv_name_len) {
memcpy(name, adv_name, adv_name_len);
name[adv_name_len] = 0;
}
GAP_DBG_PRINTF("BLE: " ESP_BD_ADDR_STR ", ", ESP_BD_ADDR_HEX(scan_rst->bda));
GAP_DBG_PRINTF("RSSI: %d, ", scan_rst->rssi);
GAP_DBG_PRINTF("UUID: 0x%04x, ", uuid);
GAP_DBG_PRINTF("APPEARANCE: 0x%04x, ", appearance);
GAP_DBG_PRINTF("ADDR_TYPE: '%s'", ble_addr_type_str(scan_rst->ble_addr_type));
if (adv_name_len) {
GAP_DBG_PRINTF(", NAME: '%s'", name);
}
GAP_DBG_PRINTF("\n");
if (uuid == ESP_GATT_UUID_HID_SVC) {
add_ble_scan_result(scan_rst->bda, scan_rst->ble_addr_type, appearance, adv_name, adv_name_len, scan_rst->rssi);
}
}
static const char *ble_gap_evt_names[] = { "ADV_DATA_SET_COMPLETE", "SCAN_RSP_DATA_SET_COMPLETE", "SCAN_PARAM_SET_COMPLETE", "SCAN_RESULT", "ADV_DATA_RAW_SET_COMPLETE", "SCAN_RSP_DATA_RAW_SET_COMPLETE", "ADV_START_COMPLETE", "SCAN_START_COMPLETE", "AUTH_CMPL", "KEY", "SEC_REQ", "PASSKEY_NOTIF", "PASSKEY_REQ", "OOB_REQ", "LOCAL_IR", "LOCAL_ER", "NC_REQ", "ADV_STOP_COMPLETE", "SCAN_STOP_COMPLETE", "SET_STATIC_RAND_ADDR", "UPDATE_CONN_PARAMS", "SET_PKT_LENGTH_COMPLETE", "SET_LOCAL_PRIVACY_COMPLETE", "REMOVE_BOND_DEV_COMPLETE", "CLEAR_BOND_DEV_COMPLETE", "GET_BOND_DEV_COMPLETE", "READ_RSSI_COMPLETE", "UPDATE_WHITELIST_COMPLETE"};
const char *ble_gap_evt_str(uint8_t event)
{
if (event >= SIZEOF_ARRAY(ble_gap_evt_names)) {
return "UNKNOWN";
}
return ble_gap_evt_names[event];
}
static void ble_gap_event_handler(esp_gap_ble_cb_event_t event, esp_ble_gap_cb_param_t *param)
{
switch (event) {
/*
* SCAN
* */
case ESP_GAP_BLE_SCAN_PARAM_SET_COMPLETE_EVT: {
ESP_LOGV("xbox_controller", "BLE GAP EVENT SCAN_PARAM_SET_COMPLETE");
SEND_BLE_CB();
break;
}
case ESP_GAP_BLE_SCAN_RESULT_EVT: {
esp_ble_gap_cb_param_t *scan_result = (esp_ble_gap_cb_param_t *)param;
switch (scan_result->scan_rst.search_evt) {
case ESP_GAP_SEARCH_INQ_RES_EVT: {
handle_ble_device_result(&scan_result->scan_rst);
break;
}
case ESP_GAP_SEARCH_INQ_CMPL_EVT:
ESP_LOGV("xbox_controller", "BLE GAP EVENT SCAN DONE: %d", scan_result->scan_rst.num_resps);
SEND_BLE_CB();
break;
default:
break;
}
break;
}
case ESP_GAP_BLE_SCAN_STOP_COMPLETE_EVT: {
ESP_LOGV("xbox_controller", "BLE GAP EVENT SCAN CANCELED");
break;
}
/*
* ADVERTISEMENT
* */
case ESP_GAP_BLE_ADV_DATA_SET_COMPLETE_EVT:
ESP_LOGV("xbox_controller", "BLE GAP ADV_DATA_SET_COMPLETE");
break;
case ESP_GAP_BLE_ADV_START_COMPLETE_EVT:
ESP_LOGV("xbox_controller", "BLE GAP ADV_START_COMPLETE");
break;
/*
* AUTHENTICATION
* */
case ESP_GAP_BLE_AUTH_CMPL_EVT:
if (!param->ble_security.auth_cmpl.success) {
ESP_LOGE("xbox_controller", "BLE GAP AUTH ERROR: 0x%x", param->ble_security.auth_cmpl.fail_reason);
} else {
ESP_LOGI("xbox_controller", "BLE GAP AUTH SUCCESS");
}
break;
case ESP_GAP_BLE_KEY_EVT: //shows the ble key info share with peer device to the user.
ESP_LOGI("xbox_controller", "BLE GAP KEY type = %s", esp_ble_key_type_str(param->ble_security.ble_key.key_type));
break;
case ESP_GAP_BLE_PASSKEY_NOTIF_EVT: // ESP_IO_CAP_OUT
// The app will receive this evt when the IO has Output capability and the peer device IO has Input capability.
// Show the passkey number to the user to input it in the peer device.
ESP_LOGI("xbox_controller", "BLE GAP PASSKEY_NOTIF passkey:%"PRIu32, param->ble_security.key_notif.passkey);
break;
case ESP_GAP_BLE_NC_REQ_EVT: // ESP_IO_CAP_IO
// The app will receive this event when the IO has DisplayYesNO capability and the peer device IO also has DisplayYesNo capability.
// show the passkey number to the user to confirm it with the number displayed by peer device.
ESP_LOGI("xbox_controller", "BLE GAP NC_REQ passkey:%"PRIu32, param->ble_security.key_notif.passkey);
esp_ble_confirm_reply(param->ble_security.key_notif.bd_addr, true);
break;
case ESP_GAP_BLE_PASSKEY_REQ_EVT: // ESP_IO_CAP_IN
// The app will receive this evt when the IO has Input capability and the peer device IO has Output capability.
// See the passkey number on the peer device and send it back.
ESP_LOGI("xbox_controller", "BLE GAP PASSKEY_REQ");
//esp_ble_passkey_reply(param->ble_security.ble_req.bd_addr, true, 1234);
break;
case ESP_GAP_BLE_SEC_REQ_EVT:
ESP_LOGI("xbox_controller", "BLE GAP SEC_REQ");
// Send the positive(true) security response to the peer device to accept the security request.
// If not accept the security request, should send the security response with negative(false) accept value.
esp_ble_gap_security_rsp(param->ble_security.ble_req.bd_addr, true);
break;
default:
ESP_LOGV("xbox_controller", "BLE GAP EVENT %s", ble_gap_evt_str(event));
break;
}
}
static esp_err_t init_ble_gap(void)
{
esp_err_t ret;
if ((ret = esp_ble_gap_register_callback(ble_gap_event_handler)) != ESP_OK) {
ESP_LOGE("xbox_controller", "esp_ble_gap_register_callback failed: %d", ret);
return ret;
}
return ret;
}
static esp_err_t init_low_level(uint8_t mode)
{
esp_err_t ret;
esp_bt_controller_config_t bt_cfg = BT_CONTROLLER_INIT_CONFIG_DEFAULT();
{
ret = esp_bt_controller_mem_release(ESP_BT_MODE_CLASSIC_BT);
if (ret) {
ESP_LOGE("xbox_controller", "esp_bt_controller_mem_release failed: %d", ret);
return ret;
}
}
ret = esp_bt_controller_init(&bt_cfg);
if (ret) {
ESP_LOGE("xbox_controller", "esp_bt_controller_init failed: %d", ret);
return ret;
}
ret = esp_bt_controller_enable(mode);
if (ret) {
ESP_LOGE("xbox_controller", "esp_bt_controller_enable failed: %d", ret);
return ret;
}
ret = esp_bluedroid_init();
if (ret) {
ESP_LOGE("xbox_controller", "esp_bluedroid_init failed: %d", ret);
return ret;
}
ret = esp_bluedroid_enable();
if (ret) {
ESP_LOGE("xbox_controller", "esp_bluedroid_enable failed: %d", ret);
return ret;
}
if (mode & ESP_BT_MODE_BLE) {
ret = init_ble_gap();
if (ret) {
return ret;
}
}
return ret;
}
esp_err_t esp_hid_gap_init(uint8_t mode)
{
esp_err_t ret;
if (!mode || mode > ESP_BT_MODE_BTDM) {
ESP_LOGE("xbox_controller", "Invalid mode given!");
return ESP_FAIL;
}
if (bt_hidh_cb_semaphore != NULL) {
ESP_LOGE("xbox_controller", "Already initialised");
return ESP_FAIL;
}
bt_hidh_cb_semaphore = xSemaphoreCreateBinary();
if (bt_hidh_cb_semaphore == NULL) {
ESP_LOGE("xbox_controller", "xSemaphoreCreateMutex failed!");
return ESP_FAIL;
}
ble_hidh_cb_semaphore = xSemaphoreCreateBinary();
if (ble_hidh_cb_semaphore == NULL) {
ESP_LOGE("xbox_controller", "xSemaphoreCreateMutex failed!");
vSemaphoreDelete(bt_hidh_cb_semaphore);
bt_hidh_cb_semaphore = NULL;
return ESP_FAIL;
}
ret = init_low_level(mode);
if (ret != ESP_OK) {
vSemaphoreDelete(bt_hidh_cb_semaphore);
bt_hidh_cb_semaphore = NULL;
vSemaphoreDelete(ble_hidh_cb_semaphore);
ble_hidh_cb_semaphore = NULL;
return ret;
}
return ESP_OK;
}
void init_controller(void)
{
esp_err_t ret;
ret = nvs_flash_init();
if (ret == ESP_ERR_NVS_NO_FREE_PAGES || ret == ESP_ERR_NVS_NEW_VERSION_FOUND)
{
ESP_ERROR_CHECK(nvs_flash_erase());
ret = nvs_flash_init();
}
ESP_ERROR_CHECK(ret);
ESP_ERROR_CHECK(esp_hid_gap_init(HIDH_BLE_MODE));
ble_hidh_cb_semaphore = xSemaphoreCreateBinary();
ESP_ERROR_CHECK(esp_ble_gattc_register_callback(esp_hidh_gattc_event_handler));
esp_hidh_config_t cfg = {
.callback = controller_msg_callback,
.event_stack_size = 4096,
.callback_arg = NULL
};
ESP_ERROR_CHECK(esp_hidh_init(&cfg));
xTaskCreate(&hid_task, "hid_task", 6 * 1024, NULL, 2, NULL);
}

View File

@@ -1,3 +1,3 @@
idf_component_register(SRCS "wacky_bully.c"
REQUIRES "drv8701" freertos
REQUIRES bt "drv8701" freertos xbox_controller
INCLUDE_DIRS ".")

View File

@@ -3,6 +3,7 @@
#include "freertos/idf_additions.h"
#include "portmacro.h"
#include "soc/gpio_num.h"
#include "xbox_controller.h"
drv8701_task_config_t motor1 = {
@@ -30,6 +31,8 @@ void app_main(void)
{
printf("Starting\n");
init_controller();
xTaskCreate(drv8701_task, "Motor1 Task", 2048, (void *)&motor1, 4, NULL);
xTaskCreate(drv8701_task, "Motor2 Task", 2048, (void *)&motor2, 4, NULL);
xTaskCreate(drv8701_task, "Motor3 Task", 2048, (void *)&motor3, 4, NULL);
@@ -38,6 +41,7 @@ void app_main(void)
vTaskDelay(500 / portTICK_PERIOD_MS);
float motor1_vel = 0.0;
while(true) {
print_state();
motor1_vel = motor1_vel + 0.1;
if (motor1_vel > 1.0)
motor1_vel = -1.0;

View File

@@ -1058,12 +1058,659 @@ CONFIG_COMPILER_CXX_GLIBCXX_CONSTEXPR_NO_CHANGE=y
#
# Bluetooth
#
CONFIG_BT_ENABLED=y
# default:
# CONFIG_BT_ENABLED is not set
CONFIG_BT_BLUEDROID_ENABLED=y
# default:
# CONFIG_BT_NIMBLE_ENABLED is not set
# default:
# CONFIG_BT_CONTROLLER_ONLY is not set
CONFIG_BT_CONTROLLER_ENABLED=y
# CONFIG_BT_CONTROLLER_DISABLED is not set
#
# Bluedroid Options
#
# default:
CONFIG_BT_BTC_TASK_STACK_SIZE=3072
# default:
CONFIG_BT_BLUEDROID_PINNED_TO_CORE_0=y
# default:
# CONFIG_BT_BLUEDROID_PINNED_TO_CORE_1 is not set
# default:
CONFIG_BT_BLUEDROID_PINNED_TO_CORE=0
# default:
CONFIG_BT_BTU_TASK_STACK_SIZE=4352
# default:
CONFIG_BT_BLUEDROID_ESP_COEX_VSC=y
# default:
CONFIG_BT_BLE_ENABLED=y
# default:
CONFIG_BT_GATTS_ENABLE=y
# default:
# CONFIG_BT_GATTS_PPCP_CHAR_GAP is not set
# default:
# CONFIG_BT_BLE_BLUFI_ENABLE is not set
# default:
CONFIG_BT_GATT_MAX_SR_PROFILES=8
# default:
CONFIG_BT_GATT_MAX_SR_ATTRIBUTES=100
# default:
# CONFIG_BT_GATTS_SEND_SERVICE_CHANGE_MANUAL is not set
# default:
CONFIG_BT_GATTS_SEND_SERVICE_CHANGE_AUTO=y
# default:
CONFIG_BT_GATTS_SEND_SERVICE_CHANGE_MODE=0
# default:
# CONFIG_BT_GATTS_ROBUST_CACHING_ENABLED is not set
# default:
# CONFIG_BT_GATTS_DEVICE_NAME_WRITABLE is not set
# default:
# CONFIG_BT_GATTS_APPEARANCE_WRITABLE is not set
# default:
# CONFIG_BT_GATTS_SECURITY_LEVELS_CHAR is not set
# default:
# CONFIG_BT_GATTS_KEY_MATERIAL_CHAR is not set
# default:
CONFIG_BT_GATTC_ENABLE=y
# default:
CONFIG_BT_GATTC_MAX_CACHE_CHAR=40
# default:
CONFIG_BT_GATTC_NOTIF_REG_MAX=5
# default:
# CONFIG_BT_GATTC_CACHE_NVS_FLASH is not set
# default:
CONFIG_BT_GATTC_CONNECT_RETRY_COUNT=3
# default:
CONFIG_BT_BLE_ESTAB_LINK_CONN_TOUT=30
# default:
CONFIG_BT_BLE_SMP_ENABLE=y
# default:
# CONFIG_BT_SMP_SLAVE_CON_PARAMS_UPD_ENABLE is not set
# default:
# CONFIG_BT_BLE_SMP_ID_RESET_ENABLE is not set
# default:
CONFIG_BT_BLE_SMP_BOND_NVS_FLASH=y
#
# Bluedroid debug option
#
# default:
# CONFIG_BT_BLUEDROID_MEM_DEBUG is not set
# default:
# CONFIG_BT_BLUEDROID_MEM_STATS is not set
# default:
# CONFIG_BT_BLUEDROID_THREAD_DEBUG is not set
# end of Bluedroid debug option
# default:
# CONFIG_BT_STACK_NO_LOG is not set
#
# BT DEBUG LOG LEVEL
#
# default:
# CONFIG_BT_LOG_HCI_TRACE_LEVEL_NONE is not set
# default:
# CONFIG_BT_LOG_HCI_TRACE_LEVEL_ERROR is not set
# default:
CONFIG_BT_LOG_HCI_TRACE_LEVEL_WARNING=y
# default:
# CONFIG_BT_LOG_HCI_TRACE_LEVEL_API is not set
# default:
# CONFIG_BT_LOG_HCI_TRACE_LEVEL_EVENT is not set
# default:
# CONFIG_BT_LOG_HCI_TRACE_LEVEL_DEBUG is not set
# default:
# CONFIG_BT_LOG_HCI_TRACE_LEVEL_VERBOSE is not set
# default:
CONFIG_BT_LOG_HCI_TRACE_LEVEL=2
# default:
# CONFIG_BT_LOG_BTM_TRACE_LEVEL_NONE is not set
# default:
# CONFIG_BT_LOG_BTM_TRACE_LEVEL_ERROR is not set
# default:
CONFIG_BT_LOG_BTM_TRACE_LEVEL_WARNING=y
# default:
# CONFIG_BT_LOG_BTM_TRACE_LEVEL_API is not set
# default:
# CONFIG_BT_LOG_BTM_TRACE_LEVEL_EVENT is not set
# default:
# CONFIG_BT_LOG_BTM_TRACE_LEVEL_DEBUG is not set
# default:
# CONFIG_BT_LOG_BTM_TRACE_LEVEL_VERBOSE is not set
# default:
CONFIG_BT_LOG_BTM_TRACE_LEVEL=2
# default:
# CONFIG_BT_LOG_L2CAP_TRACE_LEVEL_NONE is not set
# default:
# CONFIG_BT_LOG_L2CAP_TRACE_LEVEL_ERROR is not set
# default:
CONFIG_BT_LOG_L2CAP_TRACE_LEVEL_WARNING=y
# default:
# CONFIG_BT_LOG_L2CAP_TRACE_LEVEL_API is not set
# default:
# CONFIG_BT_LOG_L2CAP_TRACE_LEVEL_EVENT is not set
# default:
# CONFIG_BT_LOG_L2CAP_TRACE_LEVEL_DEBUG is not set
# default:
# CONFIG_BT_LOG_L2CAP_TRACE_LEVEL_VERBOSE is not set
# default:
CONFIG_BT_LOG_L2CAP_TRACE_LEVEL=2
# default:
# CONFIG_BT_LOG_RFCOMM_TRACE_LEVEL_NONE is not set
# default:
# CONFIG_BT_LOG_RFCOMM_TRACE_LEVEL_ERROR is not set
# default:
CONFIG_BT_LOG_RFCOMM_TRACE_LEVEL_WARNING=y
# default:
# CONFIG_BT_LOG_RFCOMM_TRACE_LEVEL_API is not set
# default:
# CONFIG_BT_LOG_RFCOMM_TRACE_LEVEL_EVENT is not set
# default:
# CONFIG_BT_LOG_RFCOMM_TRACE_LEVEL_DEBUG is not set
# default:
# CONFIG_BT_LOG_RFCOMM_TRACE_LEVEL_VERBOSE is not set
# default:
CONFIG_BT_LOG_RFCOMM_TRACE_LEVEL=2
# default:
# CONFIG_BT_LOG_SDP_TRACE_LEVEL_NONE is not set
# default:
# CONFIG_BT_LOG_SDP_TRACE_LEVEL_ERROR is not set
# default:
CONFIG_BT_LOG_SDP_TRACE_LEVEL_WARNING=y
# default:
# CONFIG_BT_LOG_SDP_TRACE_LEVEL_API is not set
# default:
# CONFIG_BT_LOG_SDP_TRACE_LEVEL_EVENT is not set
# default:
# CONFIG_BT_LOG_SDP_TRACE_LEVEL_DEBUG is not set
# default:
# CONFIG_BT_LOG_SDP_TRACE_LEVEL_VERBOSE is not set
# default:
CONFIG_BT_LOG_SDP_TRACE_LEVEL=2
# default:
# CONFIG_BT_LOG_GAP_TRACE_LEVEL_NONE is not set
# default:
# CONFIG_BT_LOG_GAP_TRACE_LEVEL_ERROR is not set
# default:
CONFIG_BT_LOG_GAP_TRACE_LEVEL_WARNING=y
# default:
# CONFIG_BT_LOG_GAP_TRACE_LEVEL_API is not set
# default:
# CONFIG_BT_LOG_GAP_TRACE_LEVEL_EVENT is not set
# default:
# CONFIG_BT_LOG_GAP_TRACE_LEVEL_DEBUG is not set
# default:
# CONFIG_BT_LOG_GAP_TRACE_LEVEL_VERBOSE is not set
# default:
CONFIG_BT_LOG_GAP_TRACE_LEVEL=2
# default:
# CONFIG_BT_LOG_BNEP_TRACE_LEVEL_NONE is not set
# default:
# CONFIG_BT_LOG_BNEP_TRACE_LEVEL_ERROR is not set
# default:
CONFIG_BT_LOG_BNEP_TRACE_LEVEL_WARNING=y
# default:
# CONFIG_BT_LOG_BNEP_TRACE_LEVEL_API is not set
# default:
# CONFIG_BT_LOG_BNEP_TRACE_LEVEL_EVENT is not set
# default:
# CONFIG_BT_LOG_BNEP_TRACE_LEVEL_DEBUG is not set
# default:
# CONFIG_BT_LOG_BNEP_TRACE_LEVEL_VERBOSE is not set
# default:
CONFIG_BT_LOG_BNEP_TRACE_LEVEL=2
# default:
# CONFIG_BT_LOG_PAN_TRACE_LEVEL_NONE is not set
# default:
# CONFIG_BT_LOG_PAN_TRACE_LEVEL_ERROR is not set
# default:
CONFIG_BT_LOG_PAN_TRACE_LEVEL_WARNING=y
# default:
# CONFIG_BT_LOG_PAN_TRACE_LEVEL_API is not set
# default:
# CONFIG_BT_LOG_PAN_TRACE_LEVEL_EVENT is not set
# default:
# CONFIG_BT_LOG_PAN_TRACE_LEVEL_DEBUG is not set
# default:
# CONFIG_BT_LOG_PAN_TRACE_LEVEL_VERBOSE is not set
# default:
CONFIG_BT_LOG_PAN_TRACE_LEVEL=2
# default:
# CONFIG_BT_LOG_A2D_TRACE_LEVEL_NONE is not set
# default:
# CONFIG_BT_LOG_A2D_TRACE_LEVEL_ERROR is not set
# default:
CONFIG_BT_LOG_A2D_TRACE_LEVEL_WARNING=y
# default:
# CONFIG_BT_LOG_A2D_TRACE_LEVEL_API is not set
# default:
# CONFIG_BT_LOG_A2D_TRACE_LEVEL_EVENT is not set
# default:
# CONFIG_BT_LOG_A2D_TRACE_LEVEL_DEBUG is not set
# default:
# CONFIG_BT_LOG_A2D_TRACE_LEVEL_VERBOSE is not set
# default:
CONFIG_BT_LOG_A2D_TRACE_LEVEL=2
# default:
# CONFIG_BT_LOG_AVDT_TRACE_LEVEL_NONE is not set
# default:
# CONFIG_BT_LOG_AVDT_TRACE_LEVEL_ERROR is not set
# default:
CONFIG_BT_LOG_AVDT_TRACE_LEVEL_WARNING=y
# default:
# CONFIG_BT_LOG_AVDT_TRACE_LEVEL_API is not set
# default:
# CONFIG_BT_LOG_AVDT_TRACE_LEVEL_EVENT is not set
# default:
# CONFIG_BT_LOG_AVDT_TRACE_LEVEL_DEBUG is not set
# default:
# CONFIG_BT_LOG_AVDT_TRACE_LEVEL_VERBOSE is not set
# default:
CONFIG_BT_LOG_AVDT_TRACE_LEVEL=2
# default:
# CONFIG_BT_LOG_AVCT_TRACE_LEVEL_NONE is not set
# default:
# CONFIG_BT_LOG_AVCT_TRACE_LEVEL_ERROR is not set
# default:
CONFIG_BT_LOG_AVCT_TRACE_LEVEL_WARNING=y
# default:
# CONFIG_BT_LOG_AVCT_TRACE_LEVEL_API is not set
# default:
# CONFIG_BT_LOG_AVCT_TRACE_LEVEL_EVENT is not set
# default:
# CONFIG_BT_LOG_AVCT_TRACE_LEVEL_DEBUG is not set
# default:
# CONFIG_BT_LOG_AVCT_TRACE_LEVEL_VERBOSE is not set
# default:
CONFIG_BT_LOG_AVCT_TRACE_LEVEL=2
# default:
# CONFIG_BT_LOG_AVRC_TRACE_LEVEL_NONE is not set
# default:
# CONFIG_BT_LOG_AVRC_TRACE_LEVEL_ERROR is not set
# default:
CONFIG_BT_LOG_AVRC_TRACE_LEVEL_WARNING=y
# default:
# CONFIG_BT_LOG_AVRC_TRACE_LEVEL_API is not set
# default:
# CONFIG_BT_LOG_AVRC_TRACE_LEVEL_EVENT is not set
# default:
# CONFIG_BT_LOG_AVRC_TRACE_LEVEL_DEBUG is not set
# default:
# CONFIG_BT_LOG_AVRC_TRACE_LEVEL_VERBOSE is not set
# default:
CONFIG_BT_LOG_AVRC_TRACE_LEVEL=2
# default:
# CONFIG_BT_LOG_MCA_TRACE_LEVEL_NONE is not set
# default:
# CONFIG_BT_LOG_MCA_TRACE_LEVEL_ERROR is not set
# default:
CONFIG_BT_LOG_MCA_TRACE_LEVEL_WARNING=y
# default:
# CONFIG_BT_LOG_MCA_TRACE_LEVEL_API is not set
# default:
# CONFIG_BT_LOG_MCA_TRACE_LEVEL_EVENT is not set
# default:
# CONFIG_BT_LOG_MCA_TRACE_LEVEL_DEBUG is not set
# default:
# CONFIG_BT_LOG_MCA_TRACE_LEVEL_VERBOSE is not set
# default:
CONFIG_BT_LOG_MCA_TRACE_LEVEL=2
# default:
# CONFIG_BT_LOG_HID_TRACE_LEVEL_NONE is not set
# default:
# CONFIG_BT_LOG_HID_TRACE_LEVEL_ERROR is not set
# default:
CONFIG_BT_LOG_HID_TRACE_LEVEL_WARNING=y
# default:
# CONFIG_BT_LOG_HID_TRACE_LEVEL_API is not set
# default:
# CONFIG_BT_LOG_HID_TRACE_LEVEL_EVENT is not set
# default:
# CONFIG_BT_LOG_HID_TRACE_LEVEL_DEBUG is not set
# default:
# CONFIG_BT_LOG_HID_TRACE_LEVEL_VERBOSE is not set
# default:
CONFIG_BT_LOG_HID_TRACE_LEVEL=2
# default:
# CONFIG_BT_LOG_APPL_TRACE_LEVEL_NONE is not set
# default:
# CONFIG_BT_LOG_APPL_TRACE_LEVEL_ERROR is not set
# default:
CONFIG_BT_LOG_APPL_TRACE_LEVEL_WARNING=y
# default:
# CONFIG_BT_LOG_APPL_TRACE_LEVEL_API is not set
# default:
# CONFIG_BT_LOG_APPL_TRACE_LEVEL_EVENT is not set
# default:
# CONFIG_BT_LOG_APPL_TRACE_LEVEL_DEBUG is not set
# default:
# CONFIG_BT_LOG_APPL_TRACE_LEVEL_VERBOSE is not set
# default:
CONFIG_BT_LOG_APPL_TRACE_LEVEL=2
# default:
# CONFIG_BT_LOG_GATT_TRACE_LEVEL_NONE is not set
# default:
# CONFIG_BT_LOG_GATT_TRACE_LEVEL_ERROR is not set
# default:
CONFIG_BT_LOG_GATT_TRACE_LEVEL_WARNING=y
# default:
# CONFIG_BT_LOG_GATT_TRACE_LEVEL_API is not set
# default:
# CONFIG_BT_LOG_GATT_TRACE_LEVEL_EVENT is not set
# default:
# CONFIG_BT_LOG_GATT_TRACE_LEVEL_DEBUG is not set
# default:
# CONFIG_BT_LOG_GATT_TRACE_LEVEL_VERBOSE is not set
# default:
CONFIG_BT_LOG_GATT_TRACE_LEVEL=2
# default:
# CONFIG_BT_LOG_SMP_TRACE_LEVEL_NONE is not set
# default:
# CONFIG_BT_LOG_SMP_TRACE_LEVEL_ERROR is not set
# default:
CONFIG_BT_LOG_SMP_TRACE_LEVEL_WARNING=y
# default:
# CONFIG_BT_LOG_SMP_TRACE_LEVEL_API is not set
# default:
# CONFIG_BT_LOG_SMP_TRACE_LEVEL_EVENT is not set
# default:
# CONFIG_BT_LOG_SMP_TRACE_LEVEL_DEBUG is not set
# default:
# CONFIG_BT_LOG_SMP_TRACE_LEVEL_VERBOSE is not set
# default:
CONFIG_BT_LOG_SMP_TRACE_LEVEL=2
# default:
# CONFIG_BT_LOG_BTIF_TRACE_LEVEL_NONE is not set
# default:
# CONFIG_BT_LOG_BTIF_TRACE_LEVEL_ERROR is not set
# default:
CONFIG_BT_LOG_BTIF_TRACE_LEVEL_WARNING=y
# default:
# CONFIG_BT_LOG_BTIF_TRACE_LEVEL_API is not set
# default:
# CONFIG_BT_LOG_BTIF_TRACE_LEVEL_EVENT is not set
# default:
# CONFIG_BT_LOG_BTIF_TRACE_LEVEL_DEBUG is not set
# default:
# CONFIG_BT_LOG_BTIF_TRACE_LEVEL_VERBOSE is not set
# default:
CONFIG_BT_LOG_BTIF_TRACE_LEVEL=2
# default:
# CONFIG_BT_LOG_BTC_TRACE_LEVEL_NONE is not set
# default:
# CONFIG_BT_LOG_BTC_TRACE_LEVEL_ERROR is not set
# default:
CONFIG_BT_LOG_BTC_TRACE_LEVEL_WARNING=y
# default:
# CONFIG_BT_LOG_BTC_TRACE_LEVEL_API is not set
# default:
# CONFIG_BT_LOG_BTC_TRACE_LEVEL_EVENT is not set
# default:
# CONFIG_BT_LOG_BTC_TRACE_LEVEL_DEBUG is not set
# default:
# CONFIG_BT_LOG_BTC_TRACE_LEVEL_VERBOSE is not set
# default:
CONFIG_BT_LOG_BTC_TRACE_LEVEL=2
# default:
# CONFIG_BT_LOG_OSI_TRACE_LEVEL_NONE is not set
# default:
# CONFIG_BT_LOG_OSI_TRACE_LEVEL_ERROR is not set
# default:
CONFIG_BT_LOG_OSI_TRACE_LEVEL_WARNING=y
# default:
# CONFIG_BT_LOG_OSI_TRACE_LEVEL_API is not set
# default:
# CONFIG_BT_LOG_OSI_TRACE_LEVEL_EVENT is not set
# default:
# CONFIG_BT_LOG_OSI_TRACE_LEVEL_DEBUG is not set
# default:
# CONFIG_BT_LOG_OSI_TRACE_LEVEL_VERBOSE is not set
# default:
CONFIG_BT_LOG_OSI_TRACE_LEVEL=2
# default:
# CONFIG_BT_LOG_BLUFI_TRACE_LEVEL_NONE is not set
# default:
# CONFIG_BT_LOG_BLUFI_TRACE_LEVEL_ERROR is not set
# default:
CONFIG_BT_LOG_BLUFI_TRACE_LEVEL_WARNING=y
# default:
# CONFIG_BT_LOG_BLUFI_TRACE_LEVEL_API is not set
# default:
# CONFIG_BT_LOG_BLUFI_TRACE_LEVEL_EVENT is not set
# default:
# CONFIG_BT_LOG_BLUFI_TRACE_LEVEL_DEBUG is not set
# default:
# CONFIG_BT_LOG_BLUFI_TRACE_LEVEL_VERBOSE is not set
# default:
CONFIG_BT_LOG_BLUFI_TRACE_LEVEL=2
# end of BT DEBUG LOG LEVEL
# default:
CONFIG_BT_ACL_CONNECTIONS=4
# default:
CONFIG_BT_MULTI_CONNECTION_ENBALE=y
# CONFIG_BT_ALLOCATION_FROM_SPIRAM_FIRST is not set
# default:
# CONFIG_BT_BLE_DYNAMIC_ENV_MEMORY is not set
# default:
CONFIG_BT_SMP_ENABLE=y
# default:
CONFIG_BT_SMP_MAX_BONDS=15
# default:
# CONFIG_BT_BLE_ACT_SCAN_REP_ADV_SCAN is not set
# default:
CONFIG_BT_MAX_DEVICE_NAME_LEN=32
# default:
CONFIG_BT_BLE_RPA_TIMEOUT=900
# default:
CONFIG_BT_BLE_HOST_ALLOW_SUB_SPEC_MIN_CONN_INT=y
# CONFIG_BT_BLE_50_FEATURES_SUPPORTED is not set
CONFIG_BT_BLE_42_FEATURES_SUPPORTED=y
# default:
CONFIG_BT_BLE_42_DTM_TEST_EN=y
# default:
CONFIG_BT_BLE_42_ADV_EN=y
# default:
CONFIG_BT_BLE_42_SCAN_EN=y
# default:
CONFIG_BT_BLE_VENDOR_HCI_EN=y
# default:
# CONFIG_BT_BLE_HIGH_DUTY_ADV_INTERVAL is not set
# default:
# CONFIG_BT_ABORT_WHEN_ALLOCATION_FAILS is not set
# end of Bluedroid Options
#
# Controller Options
#
# default:
CONFIG_BT_CTRL_MODE_EFF=1
# default:
CONFIG_BT_CTRL_BLE_MAX_ACT=6
# default:
CONFIG_BT_CTRL_BLE_MAX_ACT_EFF=6
# default:
CONFIG_BT_CTRL_BLE_STATIC_ACL_TX_BUF_NB=0
# default:
CONFIG_BT_CTRL_PINNED_TO_CORE_0=y
# default:
# CONFIG_BT_CTRL_PINNED_TO_CORE_1 is not set
# default:
CONFIG_BT_CTRL_PINNED_TO_CORE=0
# default:
CONFIG_BT_CTRL_HCI_MODE_VHCI=y
# default:
# CONFIG_BT_CTRL_HCI_MODE_UART_H4 is not set
# default:
CONFIG_BT_CTRL_HCI_TL=1
# default:
CONFIG_BT_CTRL_ADV_DUP_FILT_MAX=30
# default:
CONFIG_BT_BLE_CCA_MODE_NONE=y
# default:
# CONFIG_BT_BLE_CCA_MODE_HW is not set
# default:
# CONFIG_BT_BLE_CCA_MODE_SW is not set
# default:
CONFIG_BT_BLE_CCA_MODE=0
# default:
CONFIG_BT_CTRL_HW_CCA_VAL=75
# default:
CONFIG_BT_CTRL_HW_CCA_EFF=0
# default:
CONFIG_BT_CTRL_CE_LENGTH_TYPE_ORIG=y
# default:
# CONFIG_BT_CTRL_CE_LENGTH_TYPE_CE is not set
# default:
# CONFIG_BT_CTRL_CE_LENGTH_TYPE_SD is not set
# default:
CONFIG_BT_CTRL_CE_LENGTH_TYPE_EFF=0
# default:
CONFIG_BT_CTRL_TX_ANTENNA_INDEX_0=y
# default:
# CONFIG_BT_CTRL_TX_ANTENNA_INDEX_1 is not set
# default:
CONFIG_BT_CTRL_TX_ANTENNA_INDEX_EFF=0
# default:
CONFIG_BT_CTRL_RX_ANTENNA_INDEX_0=y
# default:
# CONFIG_BT_CTRL_RX_ANTENNA_INDEX_1 is not set
# default:
CONFIG_BT_CTRL_RX_ANTENNA_INDEX_EFF=0
# default:
# CONFIG_BT_CTRL_DFT_TX_POWER_LEVEL_N24 is not set
# default:
# CONFIG_BT_CTRL_DFT_TX_POWER_LEVEL_N21 is not set
# default:
# CONFIG_BT_CTRL_DFT_TX_POWER_LEVEL_N18 is not set
# default:
# CONFIG_BT_CTRL_DFT_TX_POWER_LEVEL_N15 is not set
# default:
# CONFIG_BT_CTRL_DFT_TX_POWER_LEVEL_N12 is not set
# default:
# CONFIG_BT_CTRL_DFT_TX_POWER_LEVEL_N9 is not set
# default:
# CONFIG_BT_CTRL_DFT_TX_POWER_LEVEL_N6 is not set
# default:
# CONFIG_BT_CTRL_DFT_TX_POWER_LEVEL_N3 is not set
# default:
# CONFIG_BT_CTRL_DFT_TX_POWER_LEVEL_N0 is not set
# default:
# CONFIG_BT_CTRL_DFT_TX_POWER_LEVEL_P3 is not set
# default:
# CONFIG_BT_CTRL_DFT_TX_POWER_LEVEL_P6 is not set
# default:
CONFIG_BT_CTRL_DFT_TX_POWER_LEVEL_P9=y
# default:
# CONFIG_BT_CTRL_DFT_TX_POWER_LEVEL_P12 is not set
# default:
# CONFIG_BT_CTRL_DFT_TX_POWER_LEVEL_P15 is not set
# default:
# CONFIG_BT_CTRL_DFT_TX_POWER_LEVEL_P18 is not set
# default:
# CONFIG_BT_CTRL_DFT_TX_POWER_LEVEL_P20 is not set
# default:
CONFIG_BT_CTRL_DFT_TX_POWER_LEVEL_EFF=11
# default:
CONFIG_BT_CTRL_BLE_ADV_REPORT_FLOW_CTRL_SUPP=y
# default:
CONFIG_BT_CTRL_BLE_ADV_REPORT_FLOW_CTRL_NUM=100
# default:
CONFIG_BT_CTRL_BLE_ADV_REPORT_DISCARD_THRSHOLD=20
# default:
CONFIG_BT_CTRL_BLE_SCAN_DUPL=y
# default:
CONFIG_BT_CTRL_SCAN_DUPL_TYPE_DEVICE=y
# default:
# CONFIG_BT_CTRL_SCAN_DUPL_TYPE_DATA is not set
# default:
# CONFIG_BT_CTRL_SCAN_DUPL_TYPE_DATA_DEVICE is not set
# default:
CONFIG_BT_CTRL_SCAN_DUPL_TYPE=0
# default:
CONFIG_BT_CTRL_SCAN_DUPL_CACHE_SIZE=100
# default:
CONFIG_BT_CTRL_DUPL_SCAN_CACHE_REFRESH_PERIOD=0
# default:
# CONFIG_BT_CTRL_BLE_MESH_SCAN_DUPL_EN is not set
# default:
# CONFIG_BT_CTRL_COEX_PHY_CODED_TX_RX_TLIM_EN is not set
# default:
CONFIG_BT_CTRL_COEX_PHY_CODED_TX_RX_TLIM_DIS=y
# default:
CONFIG_BT_CTRL_COEX_PHY_CODED_TX_RX_TLIM_EFF=0
#
# MODEM SLEEP Options
#
# default:
# CONFIG_BT_CTRL_MODEM_SLEEP is not set
# end of MODEM SLEEP Options
# default:
CONFIG_BT_CTRL_SLEEP_MODE_EFF=0
# default:
CONFIG_BT_CTRL_SLEEP_CLOCK_EFF=0
# default:
CONFIG_BT_CTRL_HCI_TL_EFF=1
# default:
# CONFIG_BT_CTRL_AGC_RECORRECT_EN is not set
# default:
# CONFIG_BT_CTRL_SCAN_BACKOFF_UPPERLIMITMAX is not set
# default:
# CONFIG_BT_BLE_ADV_DATA_LENGTH_ZERO_AUX is not set
# default:
CONFIG_BT_CTRL_CHAN_ASS_EN=y
# default:
CONFIG_BT_CTRL_LE_PING_EN=y
#
# BLE disconnects when Instant Passed (0x28) occurs
#
# default:
# CONFIG_BT_CTRL_BLE_LLCP_CONN_UPDATE is not set
# default:
# CONFIG_BT_CTRL_BLE_LLCP_CHAN_MAP_UPDATE is not set
# default:
# CONFIG_BT_CTRL_BLE_LLCP_PHY_UPDATE is not set
# end of BLE disconnects when Instant Passed (0x28) occurs
# default:
# CONFIG_BT_CTRL_RUN_IN_FLASH_ONLY is not set
# default:
CONFIG_BT_CTRL_DTM_ENABLE=y
# default:
CONFIG_BT_CTRL_BLE_MASTER=y
# default:
# CONFIG_BT_CTRL_BLE_TEST is not set
# default:
CONFIG_BT_CTRL_BLE_SCAN=y
# default:
CONFIG_BT_CTRL_BLE_SECURITY_ENABLE=y
# default:
CONFIG_BT_CTRL_BLE_ADV=y
# default:
# CONFIG_BT_CTRL_CHECK_CONNECT_IND_ACCESS_ADDRESS is not set
# default:
CONFIG_BT_CTRL_BLE_MIN_CONN_INTERVAL_ENABLE=y
#
# Controller debug log Options (Experimental)
#
# end of Controller debug log Options (Experimental)
# end of Controller Options
#
# Common Options
#
# default:
CONFIG_BT_ALARM_MAX_NUM=50
# default:
CONFIG_BT_SMP_CRYPTO_STACK_TINYCRYPT=y
# default:
# CONFIG_BT_SMP_CRYPTO_STACK_MBEDTLS is not set
#
# BT Logs
@@ -1090,8 +1737,14 @@ CONFIG_COMPILER_CXX_GLIBCXX_CONSTEXPR_NO_CHANGE=y
# default:
# CONFIG_BT_LE_USED_MEM_STATISTICS_ENABLED is not set
# end of Common Options
# default:
# CONFIG_BT_HCI_LOG_DEBUG_EN is not set
# end of Bluetooth
# default:
# CONFIG_BLE_MESH is not set
#
# Console Library
#
@@ -1190,7 +1843,9 @@ CONFIG_ESP_TLS_DYN_BUF_STRATEGY_SUPPORTED=y
# default:
CONFIG_ESP_COEX_ENABLED=y
# default:
# CONFIG_ESP_COEX_EXTERNAL_COEXIST_ENABLE is not set
CONFIG_ESP_COEX_SW_COEXIST_ENABLE=y
# default:
# CONFIG_ESP_COEX_POWER_MANAGEMENT is not set
# default:
# CONFIG_ESP_COEX_GPIO_DEBUG is not set
# end of Wireless Coexistence
@@ -3823,8 +4478,191 @@ CONFIG_STACK_CHECK_NONE=y
# CONFIG_STACK_CHECK_STRONG is not set
# CONFIG_STACK_CHECK_ALL is not set
# CONFIG_WARN_WRITE_STRINGS is not set
# CONFIG_EXTERNAL_COEX_ENABLE is not set
# CONFIG_ESP_WIFI_EXTERNAL_COEXIST_ENABLE is not set
CONFIG_BLUEDROID_ENABLED=y
# CONFIG_NIMBLE_ENABLED is not set
CONFIG_BTC_TASK_STACK_SIZE=3072
CONFIG_BLUEDROID_PINNED_TO_CORE_0=y
# CONFIG_BLUEDROID_PINNED_TO_CORE_1 is not set
CONFIG_BLUEDROID_PINNED_TO_CORE=0
CONFIG_BTU_TASK_STACK_SIZE=4352
CONFIG_GATTS_ENABLE=y
# CONFIG_GATTS_SEND_SERVICE_CHANGE_MANUAL is not set
CONFIG_GATTS_SEND_SERVICE_CHANGE_AUTO=y
CONFIG_GATTS_SEND_SERVICE_CHANGE_MODE=0
CONFIG_GATTC_ENABLE=y
# CONFIG_GATTC_CACHE_NVS_FLASH is not set
CONFIG_BLE_ESTABLISH_LINK_CONNECTION_TIMEOUT=30
CONFIG_BLE_SMP_ENABLE=y
# CONFIG_SMP_SLAVE_CON_PARAMS_UPD_ENABLE is not set
# CONFIG_BLUEDROID_MEM_DEBUG is not set
# CONFIG_HCI_TRACE_LEVEL_NONE is not set
# CONFIG_HCI_TRACE_LEVEL_ERROR is not set
CONFIG_HCI_TRACE_LEVEL_WARNING=y
# CONFIG_HCI_TRACE_LEVEL_API is not set
# CONFIG_HCI_TRACE_LEVEL_EVENT is not set
# CONFIG_HCI_TRACE_LEVEL_DEBUG is not set
# CONFIG_HCI_TRACE_LEVEL_VERBOSE is not set
CONFIG_HCI_INITIAL_TRACE_LEVEL=2
# CONFIG_BTM_TRACE_LEVEL_NONE is not set
# CONFIG_BTM_TRACE_LEVEL_ERROR is not set
CONFIG_BTM_TRACE_LEVEL_WARNING=y
# CONFIG_BTM_TRACE_LEVEL_API is not set
# CONFIG_BTM_TRACE_LEVEL_EVENT is not set
# CONFIG_BTM_TRACE_LEVEL_DEBUG is not set
# CONFIG_BTM_TRACE_LEVEL_VERBOSE is not set
CONFIG_BTM_INITIAL_TRACE_LEVEL=2
# CONFIG_L2CAP_TRACE_LEVEL_NONE is not set
# CONFIG_L2CAP_TRACE_LEVEL_ERROR is not set
CONFIG_L2CAP_TRACE_LEVEL_WARNING=y
# CONFIG_L2CAP_TRACE_LEVEL_API is not set
# CONFIG_L2CAP_TRACE_LEVEL_EVENT is not set
# CONFIG_L2CAP_TRACE_LEVEL_DEBUG is not set
# CONFIG_L2CAP_TRACE_LEVEL_VERBOSE is not set
CONFIG_L2CAP_INITIAL_TRACE_LEVEL=2
# CONFIG_RFCOMM_TRACE_LEVEL_NONE is not set
# CONFIG_RFCOMM_TRACE_LEVEL_ERROR is not set
CONFIG_RFCOMM_TRACE_LEVEL_WARNING=y
# CONFIG_RFCOMM_TRACE_LEVEL_API is not set
# CONFIG_RFCOMM_TRACE_LEVEL_EVENT is not set
# CONFIG_RFCOMM_TRACE_LEVEL_DEBUG is not set
# CONFIG_RFCOMM_TRACE_LEVEL_VERBOSE is not set
CONFIG_RFCOMM_INITIAL_TRACE_LEVEL=2
# CONFIG_SDP_TRACE_LEVEL_NONE is not set
# CONFIG_SDP_TRACE_LEVEL_ERROR is not set
CONFIG_SDP_TRACE_LEVEL_WARNING=y
# CONFIG_SDP_TRACE_LEVEL_API is not set
# CONFIG_SDP_TRACE_LEVEL_EVENT is not set
# CONFIG_SDP_TRACE_LEVEL_DEBUG is not set
# CONFIG_SDP_TRACE_LEVEL_VERBOSE is not set
CONFIG_BTH_LOG_SDP_INITIAL_TRACE_LEVEL=2
# CONFIG_GAP_TRACE_LEVEL_NONE is not set
# CONFIG_GAP_TRACE_LEVEL_ERROR is not set
CONFIG_GAP_TRACE_LEVEL_WARNING=y
# CONFIG_GAP_TRACE_LEVEL_API is not set
# CONFIG_GAP_TRACE_LEVEL_EVENT is not set
# CONFIG_GAP_TRACE_LEVEL_DEBUG is not set
# CONFIG_GAP_TRACE_LEVEL_VERBOSE is not set
CONFIG_GAP_INITIAL_TRACE_LEVEL=2
CONFIG_BNEP_INITIAL_TRACE_LEVEL=2
# CONFIG_PAN_TRACE_LEVEL_NONE is not set
# CONFIG_PAN_TRACE_LEVEL_ERROR is not set
CONFIG_PAN_TRACE_LEVEL_WARNING=y
# CONFIG_PAN_TRACE_LEVEL_API is not set
# CONFIG_PAN_TRACE_LEVEL_EVENT is not set
# CONFIG_PAN_TRACE_LEVEL_DEBUG is not set
# CONFIG_PAN_TRACE_LEVEL_VERBOSE is not set
CONFIG_PAN_INITIAL_TRACE_LEVEL=2
# CONFIG_A2D_TRACE_LEVEL_NONE is not set
# CONFIG_A2D_TRACE_LEVEL_ERROR is not set
CONFIG_A2D_TRACE_LEVEL_WARNING=y
# CONFIG_A2D_TRACE_LEVEL_API is not set
# CONFIG_A2D_TRACE_LEVEL_EVENT is not set
# CONFIG_A2D_TRACE_LEVEL_DEBUG is not set
# CONFIG_A2D_TRACE_LEVEL_VERBOSE is not set
CONFIG_A2D_INITIAL_TRACE_LEVEL=2
# CONFIG_AVDT_TRACE_LEVEL_NONE is not set
# CONFIG_AVDT_TRACE_LEVEL_ERROR is not set
CONFIG_AVDT_TRACE_LEVEL_WARNING=y
# CONFIG_AVDT_TRACE_LEVEL_API is not set
# CONFIG_AVDT_TRACE_LEVEL_EVENT is not set
# CONFIG_AVDT_TRACE_LEVEL_DEBUG is not set
# CONFIG_AVDT_TRACE_LEVEL_VERBOSE is not set
CONFIG_AVDT_INITIAL_TRACE_LEVEL=2
# CONFIG_AVCT_TRACE_LEVEL_NONE is not set
# CONFIG_AVCT_TRACE_LEVEL_ERROR is not set
CONFIG_AVCT_TRACE_LEVEL_WARNING=y
# CONFIG_AVCT_TRACE_LEVEL_API is not set
# CONFIG_AVCT_TRACE_LEVEL_EVENT is not set
# CONFIG_AVCT_TRACE_LEVEL_DEBUG is not set
# CONFIG_AVCT_TRACE_LEVEL_VERBOSE is not set
CONFIG_AVCT_INITIAL_TRACE_LEVEL=2
# CONFIG_AVRC_TRACE_LEVEL_NONE is not set
# CONFIG_AVRC_TRACE_LEVEL_ERROR is not set
CONFIG_AVRC_TRACE_LEVEL_WARNING=y
# CONFIG_AVRC_TRACE_LEVEL_API is not set
# CONFIG_AVRC_TRACE_LEVEL_EVENT is not set
# CONFIG_AVRC_TRACE_LEVEL_DEBUG is not set
# CONFIG_AVRC_TRACE_LEVEL_VERBOSE is not set
CONFIG_AVRC_INITIAL_TRACE_LEVEL=2
# CONFIG_MCA_TRACE_LEVEL_NONE is not set
# CONFIG_MCA_TRACE_LEVEL_ERROR is not set
CONFIG_MCA_TRACE_LEVEL_WARNING=y
# CONFIG_MCA_TRACE_LEVEL_API is not set
# CONFIG_MCA_TRACE_LEVEL_EVENT is not set
# CONFIG_MCA_TRACE_LEVEL_DEBUG is not set
# CONFIG_MCA_TRACE_LEVEL_VERBOSE is not set
CONFIG_MCA_INITIAL_TRACE_LEVEL=2
# CONFIG_HID_TRACE_LEVEL_NONE is not set
# CONFIG_HID_TRACE_LEVEL_ERROR is not set
CONFIG_HID_TRACE_LEVEL_WARNING=y
# CONFIG_HID_TRACE_LEVEL_API is not set
# CONFIG_HID_TRACE_LEVEL_EVENT is not set
# CONFIG_HID_TRACE_LEVEL_DEBUG is not set
# CONFIG_HID_TRACE_LEVEL_VERBOSE is not set
CONFIG_HID_INITIAL_TRACE_LEVEL=2
# CONFIG_APPL_TRACE_LEVEL_NONE is not set
# CONFIG_APPL_TRACE_LEVEL_ERROR is not set
CONFIG_APPL_TRACE_LEVEL_WARNING=y
# CONFIG_APPL_TRACE_LEVEL_API is not set
# CONFIG_APPL_TRACE_LEVEL_EVENT is not set
# CONFIG_APPL_TRACE_LEVEL_DEBUG is not set
# CONFIG_APPL_TRACE_LEVEL_VERBOSE is not set
CONFIG_APPL_INITIAL_TRACE_LEVEL=2
# CONFIG_GATT_TRACE_LEVEL_NONE is not set
# CONFIG_GATT_TRACE_LEVEL_ERROR is not set
CONFIG_GATT_TRACE_LEVEL_WARNING=y
# CONFIG_GATT_TRACE_LEVEL_API is not set
# CONFIG_GATT_TRACE_LEVEL_EVENT is not set
# CONFIG_GATT_TRACE_LEVEL_DEBUG is not set
# CONFIG_GATT_TRACE_LEVEL_VERBOSE is not set
CONFIG_GATT_INITIAL_TRACE_LEVEL=2
# CONFIG_SMP_TRACE_LEVEL_NONE is not set
# CONFIG_SMP_TRACE_LEVEL_ERROR is not set
CONFIG_SMP_TRACE_LEVEL_WARNING=y
# CONFIG_SMP_TRACE_LEVEL_API is not set
# CONFIG_SMP_TRACE_LEVEL_EVENT is not set
# CONFIG_SMP_TRACE_LEVEL_DEBUG is not set
# CONFIG_SMP_TRACE_LEVEL_VERBOSE is not set
CONFIG_SMP_INITIAL_TRACE_LEVEL=2
# CONFIG_BTIF_TRACE_LEVEL_NONE is not set
# CONFIG_BTIF_TRACE_LEVEL_ERROR is not set
CONFIG_BTIF_TRACE_LEVEL_WARNING=y
# CONFIG_BTIF_TRACE_LEVEL_API is not set
# CONFIG_BTIF_TRACE_LEVEL_EVENT is not set
# CONFIG_BTIF_TRACE_LEVEL_DEBUG is not set
# CONFIG_BTIF_TRACE_LEVEL_VERBOSE is not set
CONFIG_BTIF_INITIAL_TRACE_LEVEL=2
# CONFIG_BTC_TRACE_LEVEL_NONE is not set
# CONFIG_BTC_TRACE_LEVEL_ERROR is not set
CONFIG_BTC_TRACE_LEVEL_WARNING=y
# CONFIG_BTC_TRACE_LEVEL_API is not set
# CONFIG_BTC_TRACE_LEVEL_EVENT is not set
# CONFIG_BTC_TRACE_LEVEL_DEBUG is not set
# CONFIG_BTC_TRACE_LEVEL_VERBOSE is not set
CONFIG_BTC_INITIAL_TRACE_LEVEL=2
# CONFIG_OSI_TRACE_LEVEL_NONE is not set
# CONFIG_OSI_TRACE_LEVEL_ERROR is not set
CONFIG_OSI_TRACE_LEVEL_WARNING=y
# CONFIG_OSI_TRACE_LEVEL_API is not set
# CONFIG_OSI_TRACE_LEVEL_EVENT is not set
# CONFIG_OSI_TRACE_LEVEL_DEBUG is not set
# CONFIG_OSI_TRACE_LEVEL_VERBOSE is not set
CONFIG_OSI_INITIAL_TRACE_LEVEL=2
# CONFIG_BLUFI_TRACE_LEVEL_NONE is not set
# CONFIG_BLUFI_TRACE_LEVEL_ERROR is not set
CONFIG_BLUFI_TRACE_LEVEL_WARNING=y
# CONFIG_BLUFI_TRACE_LEVEL_API is not set
# CONFIG_BLUFI_TRACE_LEVEL_EVENT is not set
# CONFIG_BLUFI_TRACE_LEVEL_DEBUG is not set
# CONFIG_BLUFI_TRACE_LEVEL_VERBOSE is not set
CONFIG_BLUFI_INITIAL_TRACE_LEVEL=2
CONFIG_SMP_ENABLE=y
# CONFIG_BLE_ACTIVE_SCAN_REPORT_ADV_SCAN_RSP_INDIVIDUALLY is not set
# CONFIG_BT_NIMBLE_COEX_PHY_CODED_TX_RX_TLIM_EN is not set
CONFIG_BT_NIMBLE_COEX_PHY_CODED_TX_RX_TLIM_DIS=y
CONFIG_SW_COEXIST_ENABLE=y
CONFIG_ESP32_WIFI_SW_COEXIST_ENABLE=y
CONFIG_ESP_WIFI_SW_COEXIST_ENABLE=y
# CONFIG_CAM_CTLR_DVP_CAM_ISR_IRAM_SAFE is not set
# CONFIG_GPTIMER_ISR_IRAM_SAFE is not set
# CONFIG_MCPWM_ISR_IRAM_SAFE is not set

File diff suppressed because it is too large Load Diff