

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

# 将中间件与 SDK 集成
<a name="managedintegrations-sdk-integration-middleware"></a>

以下各节将讨论新集线器上的中间件集成。

**Topics**
+ [设备移植套件 (DPK) API 集成](#smarthome-sdk-v2-integration-dpk)
+ [参考实现和代码组织](#managedintegrations-sdk-integration-code)

## 设备移植套件 (DPK) API 集成
<a name="smarthome-sdk-v2-integration-dpk"></a>

为了将任何芯片组供应商的 SDK 与中间件集成，中间的 DPK（设备移植套件）层提供了标准的 API 接口。托管集成服务提供商或 ODM 需要根据其物联网中心使用的 Zigbee/Z-wave/Wi-Fi 芯片组支持的供应商 SDK 来实现这些 API。

## 参考实现和代码组织
<a name="managedintegrations-sdk-integration-code"></a>

除中间件外，所有其他设备 SDK 组件，例如托管集成 Device Agent 和通用数据模型桥 (CDMB)，无需任何修改即可使用，只需要交叉编译即可。

中间件的实现基于适用于 Zigbee 的 Silicon Labs SDK 和。 Z-Wave如果中间件中的 Silicon Labs SDK 支持新集线器中使用的 Z-Wave 和 Zigbee 芯片组，则无需任何修改即可使用参考中间件。你只需要交叉编译中间件，然后它就可以在新的集线器上运行。

Zigbee 的 DPK（设备移植套件）API 可以在中找到`acehal_zigbee.c`，DPK API 的参考实现位于该文件夹中。`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
```

的 DPK API Z-Wave 可以在中找到，`acehal_zwave.c`DPK API 的参考实现也存在于该文件夹中`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，需要进行以下两项修改：

1. 将当前供应商 SDK 替换为存储库中的新供应商 SDK。

1. 根据新的供应商 SDK 实现中间件 DPK（设备移植套件）API。