本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
将中间件与 SDK 集成
以下各节将讨论新集线器上的中间件集成。
设备移植套件 (DPK) API 集成
为了将任何芯片组供应商的 SDK 与中间件集成,中间的 DPK(设备移植套件)层提供了标准的 API 接口。托管集成服务提供商或 ODMs 需要 APIs 根据其物联网中心上使用的 Zigbee/Z-wave/Wi Wi-Fi 芯片组支持的供应商 SDK 来实现这些服务。
参考实现和代码组织
除中间件外,所有其他设备 SDK 组件,例如托管集成 Device Agent 和通用数据模型桥 (CDMB),无需任何修改即可使用,只需要交叉编译即可。
中间件的实现基于适用于 Zigbee 和 Z-Wave 的 Silicon Labs SDK。如果中间件中的 Silicon Labs SDK 支持新集线器中使用的 Z-Wave 和 Zigbee 芯片组,则无需任何修改即可使用参考中间件。你只需要交叉编译中间件,然后它就可以在新的集线器上运行。
Zigbee 的 DPK(设备移植套件) APIs 可以在中找到acehal_zigbee.c,DPK 的参考实现 APIs 位于该文件夹中。zigbee
IotManagedIntegrationsDeviceSDK-Middleware/example-iot-ace-dpk/example/dpk/ace_hal/zigbee/ |— CMakeLists.txt |— include |— |— zigbee_log.h |— src |— |— acehal_zigbee.c |— zigbeed |— |— CMakeLists.txt |— |— ember |— |— |— ace_ember_common.c |— |— |— ace_ember_ctrl.c |— |— |— ace_ember_hal_callbacks.c |— |— |— ace_ember_network_creator.c |— |— |— ace_ember_power_settings.c |— |— |— ace_ember_zts.c |— |— include |— |— |— zbd_api.h |— |— |— zbd_callbacks.h |— |— |— zbd_common.h |— |— |— zbd_network_creator.h |— |— |— zbd_power_settings.h |— |— |— zbd_zts.h
Z-Wave APIs 的 DPK 可以在中找到acehal_zwave.c,文件夹中有 DPK APIs 的参考实现。zwaved
IotManagedIntegrationsDeviceSDK-Middleware/example-iot-ace-dpk/example/dpk/ace_hal/zwave/ |— CMakeLists.txt |— include |— |— zwave_log.h |— src |— |— acehal_zwave.c |— zwaved |— |— CMakeLists.txt |— |— fxnZwaveClient |— |— |— zwave_client.c |— |— |— zwave_client.h |— |— include |— |— |— zwaved_cc_intf_api.h |— |— |— zwaved_common_utils.h |— |— |— zwaved_ctrl_api.h |— |— zware |— |— |— ace_zware_cc_intf.c |— |— |— ace_zware_common_utils.c |— |— |— ace_zware_ctrl.c |— |— |— ace_zware_debug.c |— |— |— ace_zware_debug.h |— |— |— ace_zware_internal.h
作为为不同供应商 SDK 实现 DPK 层的起点,可以使用和修改参考实现。要支持不同的供应商 SDK,需要进行以下两项修改:
-
将当前供应商 SDK 替换为存储库中的新供应商 SDK。
-
APIs 根据新的供应商 SDK 实现中间件 DPK(设备移植套件)。