Nimble Bookstoreを使用してテキストを受信して​​コンソールに印刷するBluetoothサーバーを作成するESP-32のC ++コードの例を次に示します。

#include <esp_log.h>
#include <nimble/nimble_port.h>
#include <nimble/nimble_port_frertos.h>
#include <host/ble_hs.h>
#include <host/user/user.h>

static void ble_app_sync（void）{
    esp_logi（ "Nimble"、 "Bluetooth Initialized"）;
}

static int ble_app_gap_event（struct ble_gap_event *event、void *arg）{
    switch（event-> type）{
        case ble_gap_event_connect：
            esp_logi（ "nimble"、 "デバイス接続"）;
            壊す;

        case ble_gap_event_disconnect：
            esp_logi（ "nimble"、 "デバイスが切断された"）;
            壊す;

        case ble_gap_event_adv_complete：
            esp_logi（ "Nimble"、 "Advertising Complete"）;
            壊す;

        case ble_gap_event_subscribe：
            esp_logi（ "Nimble"、 "subscription Indeciventivent"）;
            壊す;

        case ble_gap_event_unsubscribe：
            esp_logi（ "nimble"、 "subscription削除"）;
            壊す;

        case ble_gap_event_conn_update：
            esp_logi（ "nimble"、 "接続パラメーターが更新された"）;
            壊す;
    }

    0を返します。
}

extern "c" void app_main（void）{
    nimble_port_init（）;
    nimble_port_run（）;

    BLE_HS_CFG.SYNC_CB = BLE_APP_SYNC;
    BLE_HS_CFG.GAP_EVENT_CB = BLE_APP_GAP_EVENT;

    BLE_HS_ID_INFER_AUTO（0、0）;

    while（1）{
        nimble_port_poll（）;
    }
}
Aquí está un ejemplo de código en C++ para un ESP-32 que utiliza la librería NimBLE para crear un servidor Bluetooth que reciba un texto y lo imprima en la consola:

#include <esp_log.h>
#include <nimble/nimble_port.h>
#include <nimble/nimble_port_freertos.h>
#include <host/ble_hs.h>
#include <host/util/util.h>

static void ble_app_on_sync(void) {
    ESP_LOGI("Nimble", "Bluetooth initialized");
}

static int ble_app_gap_event(struct ble_gap_event *event, void *arg) {
    switch (event->type) {
        case BLE_GAP_EVENT_CONNECT:
            ESP_LOGI("Nimble", "Device connected");
            break;

        case BLE_GAP_EVENT_DISCONNECT:
            ESP_LOGI("Nimble", "Device disconnected");
            break;

        case BLE_GAP_EVENT_ADV_COMPLETE:
            ESP_LOGI("Nimble", "Advertising complete");
            break;

        case BLE_GAP_EVENT_SUBSCRIBE:
            ESP_LOGI("Nimble", "Subscription established");
            break;

        case BLE_GAP_EVENT_UNSUBSCRIBE:
            ESP_LOGI("Nimble", "Subscription removed");
            break;

        case BLE_GAP_EVENT_CONN_UPDATE:
            ESP_LOGI("Nimble", "Connection parameters updated");
            break;
    }

    return 0;
}

extern "C" void app_main(void) {
    nimble_port_init();
    nimble_port_run();

    ble_hs_cfg.sync_cb = ble_app_on_sync;
    ble_hs_cfg.gap_event_cb = ble_app_gap_event;

    ble_hs_id_infer_auto(0, 0);

    while (1) {
        nimble_port_poll();
    }
}