Générateur de code de modèle de données - Intégrations gérées pour AWS IoT Device Management

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Générateur de code de modèle de données

Découvrez comment utiliser le générateur de code pour le modèle de données. Le code généré peut être utilisé pour sérialiser et désérialiser les modèles de données échangés entre le cloud et l'appareil.

Le référentiel du projet contient un outil de génération de code permettant de créer des gestionnaires de modèles de données en code C. Les rubriques suivantes décrivent le générateur de code et le flux de travail.

Processus de génération de code

Le générateur de code crée des fichiers source C à partir de trois entrées principales : AWS« l'implémentation du modèle de données Matter (fichier .matter) à partir de la plate-forme avancée Zigbee Cluster Library (ZCL), un plugin Python qui gère le prétraitement et des modèles Jinja2 qui définissent la structure du code. Pendant la génération, le plugin Python traite vos fichiers .matter en ajoutant des définitions de type globales, en organisant les types de données en fonction de leurs dépendances et en mettant en forme les informations pour le rendu du modèle.

L'image suivante décrit le générateur de code qui crée les fichiers source C.

Le générateur de code du SDK pour appareils finaux et son fonctionnement.

Le SDK pour appareils finaux inclut des plugins Python et des modèles Jinja2 compatibles avec codegen.pyle projet. connectedhomeip Cette combinaison génère plusieurs fichiers C pour chaque cluster en fonction de l'entrée de votre fichier .matter.

Les sous-rubriques suivantes décrivent ces fichiers.

Plug-in Python

Le générateur de code analyse codegen.py les fichiers .matter et envoie les informations sous forme d'objets Python au plugin. Le fichier du plugin iotmi_data_model.py prétraite ces données et affiche les sources à l'aide des modèles fournis. Le prétraitement inclut :

  1. Ajout d'informations non disponiblescodegen.py, telles que les types globaux

  2. Exécution d'un tri topologique sur les types de données pour établir un ordre de définition correct

    Note

    Le tri topologique garantit que les types dépendants sont définis après leurs dépendances, quel que soit leur ordre d'origine.

Modèles Jinja2

Le SDK pour appareils finaux fournit des modèles Jinja2 adaptés aux gestionnaires de modèles de données et aux fonctions C de bas niveau.

Modèles Jinja2
Modèle Source générée Remarques
cluster.h.jinja iotmi_device_<cluster>.h Crée des fichiers d'en-tête de fonction C de bas niveau.
cluster.c.jinja iotmi_device_<cluster>.c Implémentez et enregistrez les pointeurs de la fonction de rappel avec le gestionnaire de modèle de données.
cluster_type_helpers.h.jinja iotmi_device_type_helpers_<cluster>.h Définit les prototypes de fonctions pour les types de données.
cluster_type_helpers.c.jinja iotmi_device_type_helpers_<cluster>.c Génère des prototypes de fonctions de type de données pour les énumérations, les bitmaps, les listes et les structures spécifiques aux clusters.
iot_device_dm_types.h.jinja iotmi_device_dm_types.h Définit les types de données C pour les types de données globaux.
iot_device_type_helpers_global.h.jinja iotmi_device_type_helpers_global.h Définit les types de données C pour les opérations globales.
iot_device_type_helpers_global.c.jinja iotmi_device_type_helpers_global.c Déclare les types de données standard, notamment les booléens, les entiers, les virgules flottantes, les chaînes, les bitmaps, les listes et les structures.

(Facultatif) Schéma personnalisé

Le SDK pour appareils finaux combine le processus de génération de code standardisé avec un schéma personnalisé. Cela permet d'étendre le modèle de données de matière à vos appareils et à leurs logiciels. Les schémas personnalisés peuvent aider à décrire les capacités de device-to-cloud communication des appareils.

Pour obtenir des informations détaillées sur les modèles de données d'intégrations gérées, notamment le format, la structure et les exigences, consultezModèle de données d'intégrations gérées.

Utilisez l'codegen.pyoutil pour générer des fichiers source C pour un schéma personnalisé, comme suit :

Note

Chaque cluster personnalisé nécessite le même ID de cluster pour les trois fichiers suivants.

  • Créez un schéma personnalisé dans un JSON format qui fournit une représentation des clusters pour les rapports de capacité afin de créer de nouveaux clusters personnalisés dans le cloud. Un fichier d'exemple se trouve à l'adressecodegen/custom_schemas/custom.SimpleLighting@1.0.

  • Créez un fichier de définition ZCL (Zigbee Cluster Library) dans un XML format contenant les mêmes informations que le schéma personnalisé. Utilisez l'outil ZAP pour générer vos fichiers Matter IDL à partir du XML ZCL. Un fichier d'exemple se trouve à l'adressecodegen/zcl/custom.SimpleLighting.xml.

  • La sortie de l'outil ZAP est Matter IDL File (.matter) et définit les clusters de matières correspondant à votre schéma personnalisé. Il s'agit de l'entrée de l'codegen.pyoutil permettant de générer des fichiers source C pour le SDK de l'appareil final. Un fichier d'exemple se trouve à l'adressecodegen/matter_files/custom-light.matter.

Pour obtenir des instructions détaillées sur la façon d'intégrer des modèles de données d'intégrations gérées personnalisés dans votre flux de travail de génération de code, consultezGénérer du code pour les appareils.