Generatore di codice Data Model - Integrazioni gestite per AWS IoT Device Management

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.

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.

Il generatore di codice SDK del dispositivo finale e come funziona.

L'SDK del dispositivo finale include plugin Python e modelli Jinja2 compatibili con il progetto. codegen.pyconnectedhomeip Questa combinazione genera più file C per ogni cluster in base all'input del file.matter.

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:

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

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

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

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 per codegen.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.