

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 產生裝置的程式碼
<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`

**注意**  
這些範例檔案會產生示範應用程式叢集的程式碼。

**產生程式碼**  
執行此命令以在輸出資料夾中產生程式碼：

```
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` 從 **ConnectedHomeIP** 專案
+ 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 程式碼。