

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

# Porting Antarmuka Transportasi Jaringan
<a name="afr-porting-network-transport-interface"></a>

## Mengintegrasikan pustaka TLS
<a name="afr-porting-tls"></a>

Untuk otentikasi Transport Layer Security (TLS), gunakan tumpukan TLS pilihan Anda. Sebaiknya gunakan [Mbed TLS](https://tls.mbed.org/) karena diuji dengan pustaka FreeRTOS. Anda dapat menemukan contoh ini di [GitHub](https://github.com/FreeRTOS/FreeRTOS)repositori ini.

Terlepas dari implementasi TLS yang digunakan oleh perangkat Anda, Anda harus mengimplementasikan kait transport yang mendasarinya untuk tumpukan TLS dengan tumpukan. TCP/IP Mereka harus mendukung [suite cipher TLS yang didukung oleh](https://docs.aws.amazon.com/iot/latest/developerguide/transport-security.html#tls-cipher-suite-support). AWS IoT

## Mem-porting perpustakaan Antarmuka Transportasi Jaringan
<a name="network-intro"></a>

[Anda harus menerapkan antarmuka transportasi jaringan untuk menggunakan [CoreMQTT dan CoreHTTP](https://www.freertos.org/mqtt/index.html).](https://www.freertos.org/http/index.html) Network Transport Interface berisi pointer fungsi dan data konteks yang diperlukan untuk mengirim dan menerima data pada satu koneksi jaringan. Lihat [Transport Interface](https://www.freertos.org/network-interface.html) untuk detail selengkapnya. FreeRTOS menyediakan serangkaian pengujian antarmuka transportasi jaringan bawaan untuk memvalidasi implementasi ini. Bagian berikut memandu Anda cara menyiapkan proyek Anda untuk menjalankan pengujian ini. 

## Prasyarat
<a name="prereqs"></a>

Untuk mem-port tes ini, Anda memerlukan yang berikut:
+ Proyek dengan sistem build yang dapat membangun FreerTOS dengan port kernel FreerTOS yang divalidasi.
+ Implementasi kerja driver jaringan.

## Porting
<a name="porting-network-transport-interface"></a>
+ Tambahkan [ FreeRTOS-Libraries-Integration-Tests](https://github.com/FreeRTOS/FreeRTOS-Libraries-Integration-Tests)sebagai submodul ke dalam proyek Anda. Tidak masalah di mana submodul ditempatkan dalam proyek, selama itu dapat dibangun.
+ Salin `config_template/test_execution_config_template.h` dan `config_template/test_param_config_template.h` ke lokasi proyek di jalur build, dan ganti namanya menjadi `test_execution_config.h` dan`test_param_config.h`.
+ Sertakan file yang relevan ke dalam sistem build. Jika menggunakan`CMake`, `qualification_test.cmake` dan `src/transport_interface_tests.cmake` digunakan untuk menyertakan file yang relevan.
+ Menerapkan fungsi-fungsi berikut di lokasi proyek yang sesuai:
+ 
  + A`network connect function`: Tanda tangan didefinisikan oleh `NetworkConnectFunc` in`src/common/network_connection.h`. Fungsi ini mengambil pointer ke konteks jaringan, pointer untuk meng-host info, dan pointer ke kredensyal jaringan. Ini membuat koneksi dengan server yang ditentukan dalam info host dengan kredensyal jaringan yang disediakan.
  + A`network disconnect function`: Tanda tangan didefinisikan oleh `NetworkDisconnectFunc` in`src/common/network_connection.h`. Fungsi ini mengambil pointer ke konteks jaringan. Ini memutus koneksi yang dibuat sebelumnya yang disimpan dalam konteks jaringan.
  + `setupTransportInterfaceTestParam()`: Ini didefinisikan dalam`src/transport_interface/transport_interface_tests.h`. Implementasi harus memiliki nama dan tanda tangan yang persis sama seperti yang didefinisikan dalam`transport_interface_tests.h`. Fungsi ini mengambil pointer ke *TransportInterfaceTestParam*struct. Ini akan mengisi bidang di *TransportInterfaceTestParam*struct yang digunakan oleh uji antarmuka transport.
+ Terapkan **UNITY\_OUTPUT\_CHAR** sehingga log keluaran pengujian tidak saling terkait dengan log perangkat.
+ Panggilan `runQualificationTest()` dari aplikasi. Perangkat keras perangkat harus diinisialisasi dengan benar dan jaringan harus terhubung sebelum panggilan.

### Manajemen kredensyal (kunci yang dihasilkan di perangkat)
<a name="cred-management-key"></a>

Ketika **FORCE\_GENERATE\_NEW\_KEY\_PAIR in `test_param_config.h` diatur ke 1, aplikasi perangkat menghasilkan key pair** baru di perangkat dan mengeluarkan kunci publik. Aplikasi perangkat menggunakan **ECHO\_SERVER\_ROOT\_CA dan TRANSPORT\_CLIENT\_CERTIFICATE sebagai echo server root CA** **dan sertifikat klien** saat membuat koneksi TLS dengan server gema. IDT menetapkan parameter ini selama kualifikasi berjalan. 

### Manajemen Kredensyal (kunci impor)
<a name="cred-management-importing-key"></a>

Aplikasi perangkat menggunakan **ECHO\_SERVER\_ROOT\_CA, TRANSPORT\_CLIENT\_CERTIFICATE** **dan TRANSPORT\_CLIENT\_PRIVATE\_KEY `test_param_config.h` sebagai root server echo CA, sertifikat** **klien, dan kunci pribadi klien saat membuat koneksi TLS** dengan server gema. IDT menetapkan parameter ini selama kualifikasi berjalan.

## Pengujian
<a name="testing-transport-interface"></a>

Bagian ini menjelaskan bagaimana Anda dapat menguji antarmuka transportasi secara lokal dengan tes kualifikasi. Detail tambahan dapat ditemukan di file README.md yang disediakan di bagian [transport\_interface](https://github.com/FreeRTOS/FreeRTOS-Libraries-Integration-Tests/tree/main/src/transport_interface) pada. FreeRTOS-Libraries-Integration-Tests GitHub

Atau, Anda juga dapat menggunakan IDT untuk mengotomatiskan eksekusi. Lihat [AWS IoT Device Tester FreeRTOS](https://docs.aws.amazon.com/freertos/latest/userguide/device-tester-for-freertos-ug.html) di Panduan Pengguna *FreeRTOS untuk detailnya*.

### Aktifkan tes
<a name="enabling-test"></a>

Buka `test_execution_config.h` dan tentukan **TRANSPORT\_INTERFACE\_TEST\_ENABLED** ke 1.

### Siapkan server gema untuk pengujian
<a name="configuring-echo-server-test"></a>

Server gema yang dapat diakses dari perangkat yang menjalankan pengujian diperlukan untuk pengujian lokal. Server echo harus mendukung TLS jika implementasi antarmuka transport mendukung TLS. Jika Anda belum memilikinya, [ FreeRTOS-Libraries-Integration-Tests](https://github.com/FreeRTOS/FreeRTOS-Libraries-Integration-Tests/tree/main/tools/echo_server) GitHub repositori memiliki implementasi server gema.

### Mengkonfigurasi proyek untuk pengujian
<a name="configure-project"></a>

Di`test_param_config.h`, perbarui **ECHO\_SERVER\_ENDPOINT dan **ECHO\_SERVER\_PORT** ke titik akhir** dan penyiapan server pada langkah sebelumnya.

### Menyiapkan kredensyal (kunci yang dihasilkan di perangkat)
<a name="setup-credentials-device-key"></a>
+ Setel **ECHO\_SERVER\_ROOT\_CA** ke sertifikat server server gema.
+ Setel **FORCE\_GENERATE\_NEW\_KEY\_PAIR ke 1 untuk menghasilkan key pair** dan mendapatkan kunci publik.
+ Setel **FORCE\_GENERATE\_NEW\_KEY\_PAIR kembali ke 0 setelah pembuatan kunci**.
+ Pengguna kunci publik dan kunci server dan sertifikat untuk menghasilkan sertifikat klien.
+ Setel **TRANSPORT\_CLIENT\_CERTIFICATE ke sertifikat** klien yang dihasilkan.

### Siapkan kredensyal (kunci impor)
<a name="setup-credentials-import-key"></a>
+ Setel **ECHO\_SERVER\_ROOT\_CA** ke sertifikat server server gema.
+ Setel **TRANSPORT\_CLIENT\_CERTIFICATE ke sertifikat klien yang telah dibuat** sebelumnya.
+ Setel **TRANSPORT\_CLIENT\_PRIVATE\_KEY ke kunci pribadi klien yang telah dibuat sebelumnya**.

### Membangun dan mem-flash aplikasi
<a name="build-flash"></a>

Bangun dan flash aplikasi menggunakan rantai alat pilihan Anda. Ketika `runQualificationTest()` dipanggil, tes antarmuka transport akan berjalan. Hasil pengujian dikeluarkan ke port serial.

**catatan**  
Untuk secara resmi memenuhi syarat perangkat untuk FreeRTOS, Anda harus memvalidasi kode sumber porting perangkat terhadap grup uji OTA PAL dan OTA E2E dengan. AWS IoT Device Tester Ikuti petunjuk dalam [Menggunakan FreeRTOS di Panduan Pengguna FreerTOS AWS IoT Device Tester untuk](https://docs.aws.amazon.com/freertos/latest/userguide/device-tester-for-freertos-ug.html) *mengatur validasi port*. AWS IoT Device Tester Untuk menguji port pustaka tertentu, grup pengujian yang benar harus diaktifkan dalam `device.json` file di AWS IoT Device Tester `configs` folder.