

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Integra il middleware con SDK
<a name="managedintegrations-sdk-integration-middleware"></a>

L'integrazione del middleware nel nuovo hub è discussa nelle sezioni seguenti.

**Topics**
+ [Integrazione dell'API Device Porting Kit (DPK)](#smarthome-sdk-v2-integration-dpk)
+ [Implementazione di riferimento e organizzazione del codice](#managedintegrations-sdk-integration-code)

## Integrazione dell'API Device Porting Kit (DPK)
<a name="smarthome-sdk-v2-integration-dpk"></a>

Per integrare l'SDK di qualsiasi fornitore di chipset con il middleware, viene fornita un'interfaccia API standard dal livello DPK (Device porting kit) del sistema intermedio. I fornitori di servizi di integrazione gestita o ODM devono implementare queste API in base all'SDK del fornitore supportato dai Zigbee/Z-wave/Wi-Fi chipset utilizzati nei loro hub IoT.

## Implementazione di riferimento e organizzazione del codice
<a name="managedintegrations-sdk-integration-code"></a>

Ad eccezione del middleware, tutti gli altri componenti Device SDK, come le integrazioni gestite Device Agent e Common Data Model Bridge (CDMB), possono essere utilizzati senza alcuna modifica e devono solo essere compilati in modo incrociato.

L'implementazione del middleware si basa sull'SDK Silicon Labs per Zigbee e. Z-Wave Se i chipset Z-Wave e Zigbee utilizzati nel nuovo hub sono supportati dall'SDK Silicon Labs presente nel middleware, il middleware di riferimento può essere utilizzato senza alcuna modifica. È sufficiente compilare in modo incrociato il middleware e può quindi essere eseguito sul nuovo hub.

Le API DPK (Device porting kit) per Zigbee sono disponibili nelle API DPK e l'implementazione di riferimento delle API DPK è presente `acehal_zigbee.c` all'interno della cartella. `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
```

Le API DPK for sono disponibili nella cartella e l'implementazione di Z-Wave riferimento delle API DPK è presente all'interno della `acehal_zwave.c` cartella. `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
```

Come punto di partenza per implementare il livello DPK per un SDK di un fornitore diverso, l'implementazione di riferimento può essere utilizzata e modificata. Saranno necessarie le seguenti due modifiche per supportare un SDK di un fornitore diverso:

1. Sostituisci l'SDK del fornitore corrente con l'SDK del nuovo fornitore nel repository.

1. Implementa le API middleware DPK (Device porting kit) in base all'SDK del nuovo fornitore. 