

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 为设备生成代码
<a name="managedintegrations-sdk-codegen-generate"></a>

使用托管集成代码生成工具为您的设备创建自定义 C 代码。本节介绍如何从 SDK 附带的示例文件或您自己的规范中生成代码。学习如何使用生成脚本、了解工作流程以及如何创建符合设备要求的代码。

**Topics**
+ [先决条件](#managedintegrations-sdk-codegen-genprereq)
+ [为自定义.matter 文件生成代码](#managedintegrations-sdk-codegen-genspecfile)
+ [代码生成工作流程](#managedintegrations-sdk-codegen-genworkflow)

## 先决条件
<a name="managedintegrations-sdk-codegen-genprereq"></a>

1. Python 3.10 或更高版本。

2. 从.matter 文件开始生成代码。终端设备 SDK 在以下文件中提供了两个示例文件`codgen/matter_files folder`：
+ `custom-air-purifier.matter `
+ `aws_camera.matter`

**注意**  
这些示例文件为演示应用程序集群生成代码。

**生成代码**  
运行以下命令在 out 文件夹中生成代码：

```
bash ./gen-data-model-api.sh
```

## 为自定义.matter 文件生成代码
<a name="managedintegrations-sdk-codegen-genspecfile"></a>

要为特定`.matter`文件生成代码或提供您自己的`.matter`文件，请执行以下任务。

**为自定义.matter 文件生成代码**

1. 准备好你的.matter 文件

1. 运行生成命令：

   ```
   ./codegen.sh [--format] configs/dm_basic.json path-to-matter-file output-directory
   ```

**（可选）使用自定义架构生成代码**

1. 按`JSON`格式准备自定义架构

1. 运行生成命令：

   ```
   ./codegen.sh [--format] configs/dm_basic.json path-to-matter-file output-directory --custom-schemas-dir path-to-custom-schema-directory
   ```

上面的命令使用多个组件将您的`.matter`文件转换为`C`代码：
+ `codegen.py`来自**ConnectedHome知识产权**项目
+ Python 插件位于 `codegen/py_scripts/iotmi_data_model.py`
+ 文件夹中的 Jinja2 模板 `codegen/py_scripts/templates`

该插件定义了要传递给 Jinja2 模板的变量，然后使用这些变量生成最终的 C 代码输出。添加该`--format`标志会将 Clang 格式应用于生成的代码。

## 代码生成工作流程
<a name="managedintegrations-sdk-codegen-genworkflow"></a>

代码生成过程使用实用函数和拓扑排序来组织您的.matter 文件数据结构。`topsort.py`这样可以确保数据类型及其依赖关系的正确排序。

然后，该脚本将您的.matter 文件规范与 Python 插件处理相结合，以提取和格式化必要的信息。最后，它应用 Jinja2 模板格式来创建最终的 C 代码输出。

此工作流程可确保将.matter 文件中的设备特定要求准确地转换为与托管集成系统集成的功能性 C 代码。