Gerador de código de modelo de dados - Integrações gerenciadas para AWS IoT Device Management

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 gerador de código do SDK do dispositivo final e como ele funciona.

O SDK do dispositivo final inclui plug-ins Python e modelos Jinja2 que funcionam no projeto. codegen.pyconnectedhomeip Essa combinação gera vários arquivos C para cada cluster com base na entrada do arquivo.matter.

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:

  1. Adicionar informações não disponíveis emcodegen.py, como tipos globais

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

Modelos Jinja2
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 da codegen.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.