移植低功耗蓝牙库 - FreeRTOS
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

移植低功耗蓝牙库

您可以使用 FreeRTOS 低功耗蓝牙库预置 Wi-Fi 并通过低功耗蓝牙发送 MQTT 消息。低功耗蓝牙库还包括更高级别的 API,可以使用它们与低功耗蓝牙堆栈直接通信。有关更多信息,请参阅 FreeRTOS 用户指南中的 FreeRTOS 低功耗蓝牙库

注意

目前,资格认证不需要移植 FreeRTOS 低功耗蓝牙库。

先决条件

要移植低功耗蓝牙库,需要具备以下条件:

移植

/libraries/abstractions/ble_hal/include 文件夹中的三个文件定义了 FreeRTOS 低功耗蓝牙 API:

  • bt_hal_manager.h

  • bt_hal_manager_adapter_ble.h

  • bt_hal_gatt_server.h

每个文件包含描述 API 的注释。您必须实施以下 API:

bt_hal_manager.h

  • pxBtManagerInit

  • pxEnable

  • pxDisable

  • pxGetDeviceProperty

  • pxSetDeviceProperty(所有选项都是强制性的,eBTpropertyRemoteRssieBTpropertyRemoteVersionInfo 除外)

  • pxPair

  • pxRemoveBond

  • pxGetConnectionState

  • pxPinReply

  • pxSspReply

  • pxGetTxpower

  • pxGetLeAdapter

  • pxDeviceStateChangedCb

  • pxAdapterPropertiesCb

  • pxSspRequestCb

  • pxPairingStateChangedCb

  • pxTxPowerCb

bt_hal_manager_adapter_ble.h

  • pxRegisterBleApp

  • pxUnregisterBleApp

  • pxBleAdapterInit

  • pxStartAdv

  • pxStopAdv

  • pxSetAdvData

  • pxConnParameterUpdateRequest

  • pxRegisterBleAdapterCb

  • pxAdvStartCb

  • pxSetAdvDataCb

  • pxConnParameterUpdateRequestCb

  • pxCongestionCb

bt_hal_gatt_server.h

  • pxRegisterServer

  • pxUnregisterServer

  • pxGattServerInit

  • pxAddService

  • pxAddIncludedService

  • pxAddCharacteristic

  • pxSetVal

  • pxAddDescriptor

  • pxStartService

  • pxStopService

  • pxDeleteService

  • pxSendIndication

  • pxSendResponse

  • pxMtuChangedCb

  • pxCongestionCb

  • pxIndicationSentCb

  • pxRequestExecWriteCb

  • pxRequestWriteCb

  • pxRequestReadCb

  • pxServiceDeletedCb

  • pxServiceStoppedCb

  • pxServiceStartedCb

  • pxDescriptorAddedCb

  • pxSetValCallbackCb

  • pxCharacteristicAddedCb

  • pxIncludedServiceAddedCb

  • pxServiceAddedCb

  • pxConnectionCb

  • pxUnregisterServerCb

  • pxRegisterServerCb

测试

此图表显示了低功耗蓝牙测试框架。

为测试您的低功耗蓝牙移植,您的计算机需要通过 SSH 与启用蓝牙的外部设备 (Raspberry Pi 3 Model B+) 通信,并通过低功耗蓝牙与您的设备通信。

低功耗蓝牙移植和资格认证测试以 FreeRTOS 低功耗蓝牙架构中制造商硬件堆栈之上的低级别封装层为目标。

如果使用 IDE 构建测试项目,您需要在 IDE 项目中设置库移植。

设置 IDE 测试项目

如果使用 IDE 进行移植和测试,您需要先将一些源文件添加到 IDE 测试项目中,然后才能测试移植的代码。

重要

在以下步骤中,请确保您将源文件从磁盘上位置添加到了 IDE 项目。请勿创建源文件的重复副本。

在 IDE 项目中设置低功耗蓝牙库

  1. /vendors/vendor/boards/board/ports/ble 中的所有文件添加到 aws_tests IDE 项目中。

  2. /libraries/abstractions/ble_hal/include 中的所有文件添加到 aws_tests IDE 项目中。

  3. /libraries/c_sdk/standard/ble 中的所有文件添加到 aws_tests IDE 项目中。

  4. 打开 /vendors/vendor/boards/board/aws_tests/application_code/main.c,然后启用所需的低功耗蓝牙驱动程序。

配置 CMakeLists.txt 文件

如果使用 CMake 构建测试项目,您需要在 CMake 列表文件中为库定义一个可移植层目标。

要在 CMakeLists.txt 中定义库的可移植层目标,请按照FreeRTOS 可移植层中的说明进行操作。

/vendors/vendor/boards/board/CMakeLists.txt 中的 CMakeLists.txt 模板列表文件包括示例可移植层目标定义。您可以取消注释要移植的库的定义,并对其进行修改以适合您的平台。

设置本地测试环境

设置 Raspberry Pi 以用于测试

  1. 按照设置 Raspberry Pi 中的说明,设置 Raspberry Pi 以及 Raspbian OS。

  2. kernel.org 存储库下载 bluez 5.50。

  3. 按照 kernel.org 存储库的自述文件中的说明,在 Raspberry Pi 上安装 bluez 5.50。

  4. 在 Raspberry Pi 中启用 SSH。有关说明,请参阅 Raspberry Pi 文档

  5. 在您的计算机上,打开 /tests/bleTestsScripts/runPI.sh 脚本,然后将前两行中的 IP 地址更改为您的 Raspberry Pi 的 IP 地址:

    #!/bin/sh scp * root@192.168.1.4: ssh -t -t 192.168.1.4 -l root << 'ENDSSH' rm -rf "/var/lib/bluetooth/*" hciconfig hci0 reset python test1.py sleep 1 ENDSSH

运行测试

执行低功耗蓝牙测试

  1. 执行 runPI.sh 脚本。

  2. 构建测试项目,然后将其刷写到您的设备以执行该项目。

  3. 在 UART 控制台中检查测试结果。

验证

要正式对设备进行 FreeRTOS 资格认证,您需要使用 AWS IoT Device Tester 验证设备的移植源代码。按照《FreeRTOS 用户指南》中的将 AWS IoT Device Tester 用于 FreeRTOS 中的说明操作,设置 Device Tester 以进行移植验证。要测试特定库的移植,必须在 Device Tester configs 文件夹下面的 device.json 文件中启用正确的测试组。

移植低功耗蓝牙库后,可以开始 FreeRTOS 资格认证流程。有关更多信息,请参阅 FreeRTOS 资格认证指南