

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Generator kode model data
<a name="managedintegrations-sdk-device-codegen"></a>

Pelajari cara menggunakan generator kode untuk model data. Kode yang dihasilkan dapat digunakan untuk membuat serial dan deserialisasi model data yang dipertukarkan antara cloud dan perangkat.

Repositori proyek berisi alat pembuatan kode untuk membuat penangan model data kode C. Topik berikut menjelaskan pembuat kode dan alur kerja.

**Topics**
+ [Proses pembuatan kode](#managedintegrations-sdk-codegen-intro)
+ [Pengaturan lingkungan](managedintegrations-sdk-codegen-env.md)
+ [Hasilkan kode untuk perangkat](managedintegrations-sdk-codegen-generate.md)

## Proses pembuatan kode
<a name="managedintegrations-sdk-codegen-intro"></a>

Generator kode membuat file sumber C dari tiga input utama: AWS'implementasi Model Data Matter (file.matter) dari Platform Lanjutan Perpustakaan Cluster Zigbee (ZCL), plugin Python yang menangani preprocessing, dan template Jinja2 yang menentukan struktur kode. Selama pembuatan, plugin Python memproses file.matter Anda dengan menambahkan definisi tipe global, mengatur tipe data berdasarkan dependensinya, dan memformat informasi untuk rendering template.

Gambar berikut menjelaskan generator kode membuat file sumber C.

![Generator kode SDK perangkat Akhir dan cara kerjanya.](http://docs.aws.amazon.com/id_id/iot-mi/latest/devguide/images/iot-managedintegrations-sdk-codegen.png)


SDK perangkat Akhir menyertakan plugin Python dan templat Jinja2 yang berfungsi dalam proyek. [https://github.com/project-chip/connectedhomeip/blob/master/scripts/codegen.py](https://github.com/project-chip/connectedhomeip/blob/master/scripts/codegen.py) Kombinasi ini menghasilkan beberapa file C untuk setiap cluster berdasarkan masukan file.matter Anda.

**Topics**
+ [Plugin Python](#managedintegrations-sdk-codegen-plugin)
+ [Jinja2 template](#managedintegrations-sdk-codegen-jinja)
+ [(Opsional) Skema kustom](#managedintegrations-sdk-codegen-schema)

### Plugin Python
<a name="managedintegrations-sdk-codegen-plugin"></a>

Generator kode,`codegen.py`, mem-parsing file.matter, dan mengirimkan informasi sebagai objek Python ke plugin. File plugin `iotmi_data_model.py` memproses data ini dan membuat sumber dengan templat yang disediakan. Preprocessing meliputi:

1. Menambahkan informasi yang tidak tersedia dari`codegen.py`, seperti tipe global

1. Melakukan pengurutan topologi pada tipe data untuk menetapkan urutan definisi yang benar
**catatan**  
Urutan topologi memastikan tipe dependen didefinisikan setelah dependensinya, terlepas dari urutan aslinya.

### Jinja2 template
<a name="managedintegrations-sdk-codegen-jinja"></a>

SDK perangkat Akhir menyediakan template Jinja2 yang disesuaikan untuk penangan model data dan C-Functions tingkat rendah.


**Jinja2 template**  

| Templat | Sumber yang dihasilkan | Keterangan | 
| --- | --- | --- | 
| cluster.h.jinja | iotmi\_device\_<cluster>.h | Membuat file header fungsi C tingkat rendah. | 
| cluster.c.jinja | iotmi\_device\_<cluster>.c | Menerapkan dan mendaftarkan pointer fungsi callback dengan Data Model Handler. | 
| cluster\_type\_helpers.h.jinja | iotmi\_device\_type\_helpers\_<cluster>.h | Mendefinisikan prototipe fungsi untuk tipe data. | 
| cluster\_type\_helpers.c.jinja | iotmi\_device\_type\_helpers\_<cluster>.c | Menghasilkan prototipe fungsi tipe data untuk enumerasi, bitmap, daftar, dan struktur khusus cluster. | 
| iot\_device\_dm\_types.h.jinja | iotmi\_device\_dm\_types.h | Mendefinisikan tipe data C untuk tipe data global. | 
| iot\_device\_type\_helpers\_global.h.jinja | iotmi\_device\_type\_helpers\_global.h | Mendefinisikan tipe data C untuk operasi global. | 
| iot\_device\_type\_helpers\_global.c.jinja | iotmi\_device\_type\_helpers\_global.c | Mendeklarasikan tipe data standar termasuk boolean, integer, floating point, string, bitmap, daftar, dan struktur. | 

### (Opsional) Skema kustom
<a name="managedintegrations-sdk-codegen-schema"></a>

 SDK perangkat akhir menggabungkan proses pembuatan kode standar dengan skema khusus. Ini memungkinkan perpanjangan Model Data Matter untuk perangkat dan perangkat lunak perangkat Anda. Skema khusus dapat membantu menggambarkan kemampuan perangkat untuk device-to-cloud komunikasi. 

 Untuk informasi rinci tentang model data integrasi terkelola, termasuk format, struktur, dan persyaratan, lihat[Model data integrasi terkelola](managedintegrations-data-model.md). 

 Gunakan `codegen.py` alat untuk menghasilkan file sumber C untuk skema kustom, sebagai berikut: 

**catatan**  
 Setiap cluster kustom memerlukan **ID cluster** yang sama untuk tiga file berikut. 
+  Buat skema kustom dalam `JSON` format yang menyediakan representasi cluster untuk pelaporan kemampuan untuk membuat cluster kustom baru di cloud. File sampel terletak di`codegen/custom_schemas/custom.SimpleLighting@1.0`. 
+  Buat file definisi ZCL (Zigbee Cluster Library) dalam `XML` format yang berisi informasi yang sama dengan skema kustom. Gunakan alat ZAP untuk menghasilkan file Matter IDL Anda dari ZCL XHTML. File sampel terletak di`codegen/zcl/custom.SimpleLighting.xml`. 
+  Output dari alat ZAP adalah `Matter IDL File (.matter)` dan mendefinisikan cluster Matter yang sesuai dengan skema kustom Anda. Ini adalah input untuk `codegen.py` alat untuk menghasilkan file sumber C untuk SDK perangkat Akhir. File sampel terletak di`codegen/matter_files/custom-light.matter`. 

 Untuk petunjuk terperinci tentang cara mengintegrasikan model data integrasi terkelola kustom ke dalam alur kerja pembuatan kode Anda, lihat. [Hasilkan kode untuk perangkat](managedintegrations-sdk-codegen-generate.md) 