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 Data Model
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.
Argomenti
Processo di generazione del codice
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.

L'SDK del dispositivo finale include plugin Python e modelli Jinja2 compatibili con il progetto. codegen.pyconnectedhomeip
I seguenti argomenti secondari descrivono questi file.
Plugin Python
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:
-
L'aggiunta di informazioni non disponibili da
codegen.py
, ad esempio i tipi globali -
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
L'End Device SDK fornisce modelli Jinja2 personalizzati per gestori di modelli di dati e funzioni C di basso livello.
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
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
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 percodegen.py
lo strumento per generare file sorgente C per End device SDK. Un file di esempio si trova incodegen/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, consultaGenera codice per dispositivi.