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

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

移植低功耗蓝牙库

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

注意

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

Prerequisites

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

Porting

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

  • bt_hal_manager.h

  • bt_hal_manager_adapter_ble.h

  • bt_hal_gatt_server.h

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

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

Testing

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

为测试您的低功耗蓝牙移植,您的计算机需要通过 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 可移植层.中的说明进行操作。

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

设置本地测试环境

设置 Raspberry Pi 以用于测试

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

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

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

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

  5. 在您的计算机上,打开 /libraries/abstractions/ble_hal/test/ble_test_scripts/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. 清除设备上存储的任何现有 BLE 绑定。

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

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

Validation

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

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

如果设备支持无线更新,则您还应使用配套设备通过低功耗蓝牙验证无线更新。有关更多详细信息,请参阅下一个主题。 使用低功耗蓝牙执行无线更新