Note

当前支持 nimble 主线 1.6.0 版本,禁止使用其余软件包或者第三方包

  • ble_hs_startup_set_evmask_tx 函数中 BLE_HCI_OCF_CB_SET_EVENT_MASK2 功能需要关闭
    // if (version >= BLE_HCI_VER_BCS_4_1) {
    //     /**
    //      * Enable the following events:
    //      *     0x0000000000800000 Authenticated Payload Timeout Event
    //      */
    //     cmd2.event_mask2 = htole64(0x0000000000800000);
    //     rc = ble_hs_hci_cmd_tx(BLE_HCI_OP(BLE_HCI_OGF_CTLR_BASEBAND,
    //                                       BLE_HCI_OCF_CB_SET_EVENT_MASK2),
    //                            &cmd2, sizeof(cmd2), NULL, 0);
    //     if (rc != 0) {
    //         return rc;
    //     }
    // }

  • 主线中头文件和源文件参与编译例子
源文件

nimble/host/src/ble_att_clt.c
nimble/host/src/ble_att_cmd.c
nimble/host/src/ble_att_svr.c
nimble/host/src/ble_att.c
nimble/host/src/ble_audio_broadcast.c
nimble/host/src/ble_dtm.c
nimble/host/src/ble_eatt.c
nimble/host/src/ble_eddystone.c
nimble/host/src/ble_gap.c
nimble/host/src/ble_gattc.c
nimble/host/src/ble_gatts.c
nimble/host/src/ble_gatts_lcl.c
nimble/host/src/ble_hs.c
nimble/host/src/ble_hs_adv.c
nimble/host/src/ble_hs_atomic.c
nimble/host/src/ble_hs_cfg.c
nimble/host/src/ble_hs_conn.c
nimble/host/src/ble_hs_flow.c
nimble/host/src/ble_hs_hci.c
nimble/host/src/ble_hs_hci_cmd.c
nimble/host/src/ble_hs_hci_evt.c
nimble/host/src/ble_hs_hci_util.c
nimble/host/src/ble_hs_id.c
nimble/host/src/ble_hs_log.c
nimble/host/src/ble_hs_mbuf.c
nimble/host/src/ble_hs_misc.c
nimble/host/src/ble_hs_mqueue.c
nimble/host/src/ble_hs_periodic_sync.c
nimble/host/src/ble_hs_pvcy.c
nimble/host/src/ble_hs_shutdown.c
nimble/host/src/ble_hs_startup.c
nimble/host/src/ble_hs_stop.c
nimble/host/src/ble_ibeacon.c
nimble/host/src/ble_iso.c
nimble/host/src/ble_l2cap.c
nimble/host/src/ble_l2cap_coc.c
nimble/host/src/ble_l2cap_sig.c
nimble/host/src/ble_l2cap_sig_cmd.c
nimble/host/src/ble_sm.c
nimble/host/src/ble_sm_alg.c
nimble/host/src/ble_sm_cmd.c
nimble/host/src/ble_sm_lgcy.c
nimble/host/src/ble_sm_sc.c
nimble/host/src/ble_store.c
nimble/host/src/ble_store_util.c
nimble/host/src/ble_uuid.c

nimble/host/services/gap/src/ble_svc_gap.c
nimble/host/services/gatt/src/ble_svc_gatt.c
nimble/host/services/bas/src/ble_svc_bas.c
nimble/host/services/dis/src/ble_svc_dis.c
# nimble/host/store/config/src/ble_store_config.c
# nimble/host/store/config/src/ble_store_config_conf.c
nimble/host/store/ram/src/ble_store_ram.c
nimble/host/util/src/addr.c

nimble/transport/common/hci_h4/src/hci_h4.c
nimble/transport/src/transport.c

ext/tinycrypt/src/aes_decrypt.c
ext/tinycrypt/src/aes_encrypt.c
ext/tinycrypt/src/cbc_mode.c
ext/tinycrypt/src/ccm_mode.c
ext/tinycrypt/src/cmac_mode.c
ext/tinycrypt/src/ctr_mode.c
ext/tinycrypt/src/ctr_prng.c
ext/tinycrypt/src/ecc.c
ext/tinycrypt/src/ecc_dh.c
ext/tinycrypt/src/ecc_dsa.c
ext/tinycrypt/src/ecc_platform_specific.c
ext/tinycrypt/src/hmac.c
ext/tinycrypt/src/hmac_prng.c
ext/tinycrypt/src/sha256.c
ext/tinycrypt/src/utils.c


===========头文件=================

nimble/include
nimble/host/include
nimble/host/services/ans/include
nimble/host/services/bas/include
nimble/host/services/dis/include
nimble/host/services/gap/include
nimble/host/services/gatt/include
nimble/host/services/ias/include
nimble/host/services/lls/include
nimble/host/services/tps/include
nimble/host/store/ram/include
nimble/host/util/include
nimble/transport/include
ext/tinycrypt/include
nimble/transport/common/hci_h4/include



  • porting 请禁止使用 nimble 官方源码,请使用 porting 目录下的文件
头文件
porting/nimble/include
porting/npl/freertos/include

源文件
porting/nimble/src/endian.c
porting/nimble/src/mem.c
porting/nimble/src/nimble_port.c
porting/nimble/src/os_mbuf.c
porting/nimble/src/os_mempool.c
porting/nimble/src/os_msys_init.c

porting/npl/freertos/src/nimble_port_freertos.c
porting/npl/freertos/src/npl_os_freertos.c
  • 初始化 nimble请注意必须在 usb bluetooth 识别以后才能初始化
#include "nimble/nimble_port.h"
#include "usbh_core.h"

void nimble_thread_entry(void *parameter)
{
    nimble_port_run();
}

void nimble_init(void)
{
    nimble_port_init();

    usb_osal_thread_create("nimble", 2048, CONFIG_USBHOST_PSC_PRIO + 1, nimble_thread_entry, NULL);
}