

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

# Generazione di codice per dispositivi
<a name="managedintegrations-sdk-codegen-generate"></a>

Crea codice C personalizzato per i tuoi dispositivi utilizzando gli strumenti di generazione di codice di Managed Integrations. Questa sezione descrive come generare codice da file di esempio inclusi nell'SDK o in base a specifiche personalizzate. Scopri come utilizzare gli script di generazione, comprendere il processo di flusso di lavoro e creare codice che soddisfi i requisiti del tuo dispositivo.

**Topics**
+ [Prerequisiti](#managedintegrations-sdk-codegen-genprereq)
+ [Genera codice per file.matter personalizzati](#managedintegrations-sdk-codegen-genspecfile)
+ [Workflow di generazione del codice](#managedintegrations-sdk-codegen-genworkflow)

## Prerequisiti
<a name="managedintegrations-sdk-codegen-genprereq"></a>

1. Python 3.10 o versioni successive.

2. Inizia con un file.matter per la generazione del codice. L'SDK del dispositivo finale fornisce due file di esempio in: `codgen/matter_files folder`
+ `custom-air-purifier.matter `
+ `aws_camera.matter`

**Nota**  
Questi file di esempio generano codice per cluster di applicazioni demo.

**Genera codice**  
Esegui questo comando per generare codice nella cartella out:

```
bash ./gen-data-model-api.sh
```

## Genera codice per file.matter personalizzati
<a name="managedintegrations-sdk-codegen-genspecfile"></a>

Per generare il codice per un `.matter` file specifico o fornire un `.matter` file personalizzato, esegui le seguenti operazioni.

**Per generare il codice per i file.matter personalizzati**

1. Prepara il tuo file.matter

1. Esegui il comando di generazione:

   ```
   ./codegen.sh [--format] configs/dm_basic.json path-to-matter-file output-directory
   ```

**(Facoltativo) Per generare codice con schema personalizzato**

1. Prepara lo schema personalizzato in `JSON` formato

1. Esegui il comando di generazione:

   ```
   ./codegen.sh [--format] configs/dm_basic.json path-to-matter-file output-directory --custom-schemas-dir path-to-custom-schema-directory
   ```

I comandi precedenti utilizzano diversi componenti per trasformare il `.matter` file in `C` codice:
+ `codegen.py`dal progetto **ConnectedHomeIP**
+ Plugin Python che si trova in `codegen/py_scripts/iotmi_data_model.py`
+ Modelli Jinja2 dalla cartella `codegen/py_scripts/templates`

Il plugin definisce le variabili da passare ai modelli Jinja2, che vengono poi utilizzate per generare l'output finale del codice C. L'aggiunta del `--format` flag applica il formato Clang al codice generato.

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

Il processo di generazione del codice organizza le strutture di dati dei file.matter utilizzando funzioni di utilità e ordinamento topologico. `topsort.py` Ciò garantisce il corretto ordinamento dei tipi di dati e delle loro dipendenze.

Lo script combina quindi le specifiche del file.matter con l'elaborazione del plugin Python per estrarre e formattare le informazioni necessarie. Infine, applica la formattazione del modello Jinja2 per creare l'output finale del codice C.

Questo flusso di lavoro garantisce che i requisiti specifici del dispositivo contenuti nel file.matter siano tradotti accuratamente in codice C funzionale che si integra con il sistema Managed Integrations.