As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Gerador de código de modelo de dados
Saiba como usar o gerador de código para o modelo de dados. O código gerado pode ser usado para serializar e desserializar os modelos de dados que são trocados entre a nuvem e o dispositivo.
O repositório do projeto contém uma ferramenta de geração de código para criar manipuladores de modelos de dados de código C. Os tópicos a seguir descrevem o gerador de código e o fluxo de trabalho.
Processo de geração de código
O gerador de código cria arquivos de origem C a partir de três entradas principais: AWS'implementação do Matter Data Model (arquivo.matter) da plataforma avançada Zigbee Cluster Library (ZCL), um plug-in Python que manipula o pré-processamento e modelos Jinja2 que definem a estrutura do código. Durante a geração, o plug-in Python processa seus arquivos.matter adicionando definições de tipo globais, organizando tipos de dados com base em suas dependências e formatando as informações para renderização de modelos.
A imagem a seguir descreve o gerador de código que cria os arquivos de origem C.

O SDK do dispositivo final inclui plug-ins Python e modelos Jinja2 que funcionam no projeto. codegen.pyconnectedhomeip
Os subtópicos a seguir descrevem esses arquivos.
Plug-in Python
O gerador de código,codegen.py
, analisa os arquivos.matter e envia as informações como objetos Python para o plug-in. O arquivo do plug-in iotmi_data_model.py
pré-processa esses dados e renderiza fontes com os modelos fornecidos. O pré-processamento inclui:
-
Adicionar informações não disponíveis em
codegen.py
, como tipos globais -
Executando classificação topológica em tipos de dados para estabelecer a ordem de definição correta
nota
A classificação topológica garante que os tipos dependentes sejam definidos após suas dependências, independentemente da ordem original.
Modelos Jinja2
O SDK do dispositivo final fornece modelos Jinja2 personalizados para manipuladores de modelos de dados e funções C de baixo nível.
Modelo | Fonte gerada | Observações |
---|---|---|
cluster.h.jinja |
iotmi_device_<cluster>.h |
Cria arquivos de cabeçalho de função C de baixo nível. |
cluster.c.jinja |
iotmi_device_<cluster>.c |
Implemente e registre ponteiros de função de retorno de chamada com o Data Model Handler. |
cluster_type_helpers.h.jinja |
iotmi_device_type_helpers_<cluster>.h |
Define protótipos de funções para tipos de dados. |
cluster_type_helpers.c.jinja |
iotmi_device_type_helpers_<cluster>.c |
Gera protótipos de funções de tipo de dados para enumerações, bitmaps, listas e estruturas específicas do cluster. |
iot_device_dm_types.h.jinja |
iotmi_device_dm_types.h |
Define os tipos de dados C para tipos de dados globais. |
iot_device_type_helpers_global.h.jinja |
iotmi_device_type_helpers_global.h |
Define os tipos de dados C para operações globais. |
iot_device_type_helpers_global.c.jinja |
iotmi_device_type_helpers_global.c |
Declara tipos de dados padrão, incluindo booleanos, inteiros, ponto flutuante, cadeias de caracteres, bitmaps, listas e estruturas. |
(Opcional) Esquema personalizado
O SDK do dispositivo final combina o processo padronizado de geração de código com o esquema personalizado. Isso permite a extensão do Matter Data Model para seus dispositivos e software de dispositivos. Esquemas personalizados podem ajudar a descrever os recursos de device-to-cloud comunicação do dispositivo.
Para obter informações detalhadas sobre modelos de dados de integrações gerenciadas, incluindo formato, estrutura e requisitos, consulteModelo de dados de integrações gerenciadas.
Use a codegen.py
ferramenta para gerar arquivos de origem C para o esquema personalizado, da seguinte forma:
nota
Cada cluster personalizado exige o mesmo ID de cluster para os três arquivos a seguir.
-
Crie um esquema personalizado em um
JSON
formato que forneça uma representação de clusters para geração de relatórios de recursos para criar novos clusters personalizados na nuvem. Um arquivo de amostra está localizado emcodegen/custom_schemas/custom.SimpleLighting@1.0
. -
Crie o arquivo de definição ZCL (Zigbee Cluster Library) em
XML
formato que contenha as mesmas informações do esquema personalizado. Use a ferramenta ZAP para gerar seus arquivos Matter IDL a partir do ZCL XML. Um arquivo de amostra está localizado emcodegen/zcl/custom.SimpleLighting.xml
. -
A saída da ferramenta ZAP é
Matter IDL File (.matter)
e ela define os clusters Matter correspondentes ao seu esquema personalizado. Essa é a entrada dacodegen.py
ferramenta para gerar arquivos de origem C para o SDK do dispositivo final. Um arquivo de amostra está localizado emcodegen/matter_files/custom-light.matter
.
Para obter instruções detalhadas sobre como integrar modelos de dados de integrações gerenciadas personalizadas em seu fluxo de trabalho de geração de código, consulteGere código para dispositivos.