

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à.

# Generatore di codice per modelli di dati
<a name="managedintegrations-sdk-device-codegen"></a>

Scopri come utilizzare il generatore di codice per il modello di dati. Il codice generato può essere utilizzato per serializzare e deserializzare i modelli di dati scambiati tra il cloud e il dispositivo.

Il repository del progetto contiene uno strumento di generazione di codice per la creazione di gestori di modelli di dati in codice C. I seguenti argomenti descrivono il generatore di codice e il flusso di lavoro.

**Topics**
+ [Processo di generazione del codice](#managedintegrations-sdk-codegen-intro)
+ [Configurazione dell'ambiente](managedintegrations-sdk-codegen-env.md)
+ [Genera codice per dispositivi](managedintegrations-sdk-codegen-generate.md)

## Processo di generazione del codice
<a name="managedintegrations-sdk-codegen-intro"></a>

Il generatore di codice crea file sorgente C da tre input principali: AWS l'implementazione del Matter Data Model (.matter file) dalla piattaforma avanzata Zigbee Cluster Library (ZCL), un plug-in Python che gestisce la preelaborazione e modelli Jinja2 che definiscono la struttura del codice. Durante la generazione, il plugin Python elabora i tuoi file.matter aggiungendo definizioni di tipo globali, organizzando i tipi di dati in base alle loro dipendenze e formattando le informazioni per il rendering dei modelli.

L'immagine seguente descrive il generatore di codice che crea i file sorgente C.

![Il generatore di codice SDK del dispositivo finale e come funziona.](http://docs.aws.amazon.com/it_it/iot-mi/latest/devguide/images/iot-managedintegrations-sdk-codegen.png)


L'SDK del dispositivo finale include plugin Python e modelli Jinja2 compatibili con il progetto. [https://github.com/project-chip/connectedhomeip/blob/master/scripts/codegen.py](https://github.com/project-chip/connectedhomeip/blob/master/scripts/codegen.py) Questa combinazione genera più file C per ogni cluster in base all'input del file.matter.

**Topics**
+ [Plugin Python](#managedintegrations-sdk-codegen-plugin)
+ [Modelli Jinja2](#managedintegrations-sdk-codegen-jinja)
+ [(Facoltativo) Schema personalizzato](#managedintegrations-sdk-codegen-schema)

### Plugin Python
<a name="managedintegrations-sdk-codegen-plugin"></a>

Il generatore di codice analizza i file.matter e invia le informazioni come oggetti Python al plugin. `codegen.py` Il file del plugin `iotmi_data_model.py` preelabora questi dati e rende i sorgenti con i modelli forniti. La preelaborazione include:

1. L'aggiunta di informazioni non disponibili da`codegen.py`, ad esempio i tipi globali

1. Esecuzione dell'ordinamento topologico sui tipi di dati per stabilire l'ordine di definizione corretto
**Nota**  
L'ordinamento topologico garantisce che i tipi dipendenti siano definiti in base alle rispettive dipendenze, indipendentemente dall'ordine originale.

### Modelli Jinja2
<a name="managedintegrations-sdk-codegen-jinja"></a>

L'End Device SDK fornisce modelli Jinja2 personalizzati per gestori di modelli di dati e funzioni C di basso livello.


**Modelli Jinja2**  

| Modello | Fonte generata | Remarks | 
| --- | --- | --- | 
| cluster.h.jinja | iotmi\_device\_<cluster>.h | Crea file di intestazione di funzioni C di basso livello. | 
| cluster.c.jinja | iotmi\_device\_<cluster>.c | Implementa e registra i puntatori delle funzioni di callback con Data Model Handler. | 
| cluster\_type\_helpers.h.jinja | iotmi\_device\_type\_helpers\_<cluster>.h | Definisce prototipi di funzioni per i tipi di dati. | 
| cluster\_type\_helpers.c.jinja | iotmi\_device\_type\_helpers\_<cluster>.c | Genera prototipi di funzioni relative ai tipi di dati per enumerazioni, bitmap, elenchi e strutture specifici del cluster. | 
| iot\_device\_dm\_types.h.jinja | iotmi\_device\_dm\_types.h | Definisce i tipi di dati C per i tipi di dati globali. | 
| iot\_device\_type\_helpers\_global.h.jinja | iotmi\_device\_type\_helpers\_global.h | Definisce i tipi di dati C per le operazioni globali. | 
| iot\_device\_type\_helpers\_global.c.jinja | iotmi\_device\_type\_helpers\_global.c | Dichiara tipi di dati standard tra cui booleani, numeri interi, virgola mobile, stringhe, bitmap, elenchi e strutture. | 

### (Facoltativo) Schema personalizzato
<a name="managedintegrations-sdk-codegen-schema"></a>

 End Device SDK combina il processo di generazione del codice standardizzato con uno schema personalizzato. Ciò consente l'estensione di Matter Data Model per i dispositivi e il software del dispositivo. Gli schemi personalizzati possono aiutare a descrivere le funzionalità di device-to-cloud comunicazione del dispositivo. 

 Per informazioni dettagliate sui modelli di dati delle integrazioni gestite, inclusi formato, struttura e requisiti, consulta. [Modello di dati di integrazioni gestite](managedintegrations-data-model.md) 

 Usa `codegen.py` lo strumento per generare file sorgente C per schemi personalizzati, come segue: 

**Nota**  
 Ogni cluster personalizzato richiede lo stesso **ID cluster** per i seguenti tre file. 
+  Crea uno schema personalizzato in un `JSON` formato che fornisca una rappresentazione dei cluster per la creazione di report sulle capacità per creare nuovi cluster personalizzati nel cloud. Un file di esempio si trova in. `codegen/custom_schemas/custom.SimpleLighting@1.0` 
+  Crea il file di definizione ZCL (Zigbee Cluster Library) in un `XML` formato che contenga le stesse informazioni dello schema personalizzato. Usa lo strumento ZAP per generare i tuoi file Matter IDL da ZCL XML. Un file di esempio si trova in. `codegen/zcl/custom.SimpleLighting.xml` 
+  L'output dello strumento ZAP è `Matter IDL File (.matter)` e definisce i cluster Matter corrispondenti allo schema personalizzato. Questo è l'input per `codegen.py` lo strumento per generare file sorgente C per End device SDK. Un file di esempio si trova in`codegen/matter_files/custom-light.matter`. 

 Per istruzioni dettagliate su come integrare modelli di dati di integrazioni gestite personalizzate nel flusso di lavoro di generazione del codice, consulta[Genera codice per dispositivi](managedintegrations-sdk-codegen-generate.md). 