

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 整合中介軟體與 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 介面。受管整合服務供應商或 ODMs 需要根據其 IoT Hub 上使用的 Zigbee/Z-wave/Wi-Fi 晶片組支援的廠商 SDK 實作這些 APIs。

## 參考實作和程式碼組織
<a name="managedintegrations-sdk-integration-code"></a>

除了中介軟體之外，所有其他 Device SDK 元件，例如受管整合 Device Agent 和通用資料模型橋接器 (CDMB) 都可以使用，無需進行任何修改，而且只需要跨編譯。

中介軟體的實作是以適用於 Zigbee 和 Z-Wave 的 Silicon Labs 開發套件為基礎。如果中介軟體中存在的 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 API 可在 中找到，`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：

1. 將目前的廠商 SDK 取代為儲存庫中的新廠商 SDK。

1. 根據新廠商 SDK 實作中介軟體 DPK （裝置移植套件） APIs。