

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 디바이스에 대한 코드 생성
<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 파일로 시작합니다. End 디바이스 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` **ConnectedHomeIP** 프로젝트에서
+ 에 위치한 Python 플러그인 `codegen/py_scripts/iotmi_data_model.py`
+ `codegen/py_scripts/templates` 폴더의 Jinja2 템플릿

플러그인은 Jinja2 템플릿에 전달할 변수를 정의한 다음 최종 C 코드 출력을 생성하는 데 사용됩니다. `--format` 플래그를 추가하면 생성된 코드에 Clang 형식이 적용됩니다.

## 코드 생성 워크플로
<a name="managedintegrations-sdk-codegen-genworkflow"></a>

코드 생성 프로세스는 유틸리티 함수와를 통한 토폴로지 정렬을 사용하여 .matter 파일 데이터 구조를 구성합니다`topsort.py`. 이렇게 하면 데이터 유형과 해당 종속성을 적절하게 정렬할 수 있습니다.

그런 다음 스크립트는 .matter 파일 사양을 Python 플러그인 처리와 결합하여 필요한 정보를 추출하고 형식을 지정합니다. 마지막으로 Jinja2 템플릿 형식을 적용하여 최종 C 코드 출력을 생성합니다.

이 워크플로를 사용하면 .matter 파일의 디바이스별 요구 사항이 관리형 통합 시스템과 통합되는 기능적 C 코드로 정확하게 변환됩니다.