

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

# Migrasi dari versi 1 ke versi 3 untuk aplikasi OTA
<a name="porting-migration-ota"></a>

Panduan ini akan membantu Anda memigrasikan aplikasi Anda dari perpustakaan OTA versi 1 ke versi 3. 

**catatan**  
OTA versi 2 APIs sama dengan OTA v3 APIs, jadi jika aplikasi Anda menggunakan versi 2 APIs maka perubahan tidak diperlukan untuk panggilan API tetapi kami menyarankan Anda mengintegrasikan versi 3 perpustakaan. 

Demo untuk OTA versi 3 tersedia di sini:
+ [ota\_demo\_core\_mqtt](https://github.com/aws/amazon-freertos/tree/main/demos/ota/ota_demo_core_mqtt).
+ [ota\_demo\_core\_http](https://github.com/aws/amazon-freertos/tree/main/demos/ota/ota_demo_core_http).
+ [ota\_ble](https://github.com/aws/amazon-freertos/tree/main/demos/ble/ota_ble).

## Ringkasan perubahan API
<a name="porting-migration-ota-summary"></a>


**Ringkasan perubahan API antara OTA Library versi 1 dan versi 3**  

|  OTA versi 1 API  |  OTA versi 3 API  |  Deskripsi perubahan  | 
| --- | --- | --- | 
| OTA\_ AgentInit | Ota\_init | Paramert input diubah serta nilai yang dikembalikan dari fungsi karena perubahan implementasi di OTA v3. Silakan merujuk ke bagian untuk OTA\_init di bawah ini untuk detailnya. | 
| OTA\_ AgentShutdown | OTA\_Shutdown | Ubah parameter input termasuk parameter tambahan untuk berhenti berlangganan opsional dari topik MQTT. Silakan merujuk ke bagian untuk OTA\_Shutdown di bawah ini untuk detailnya. | 
| OTA\_ GetAgentState | OTA\_ GetState | Nama API diubah tanpa perubahan pada parameter input. Nilai kembaliannya sama tetapi enum dan anggota diganti namanya. Silakan merujuk ke bagian untuk OTA\_ GetState di bawah ini untuk detailnya.  | 
| T/A | OTA\_ GetStatistics | API baru ditambahkan yang menggantikan OTA\_, APIs OTA\_, OTA\_GetPacketsReceived, OTA\_GetPacketsQueued. GetPacketsProcessed GetPacketsDropped Silakan merujuk ke bagian untuk OTA\_ GetStatistics di bawah ini untuk detailnya. | 
| OTA\_ GetPacketsReceived | T/A | API ini dihapus dari versi 3 dan digantikan oleh OTA\_GetStatistics. | 
| OTA\_ GetPacketsQueued | T/A | API ini dihapus dari versi 3 dan digantikan oleh OTA\_GetStatistics. | 
| OTA\_ GetPacketsProcessed | T/A | API ini dihapus dari versi 3 dan digantikan oleh OTA\_GetStatistics. | 
| OTA\_ GetPacketsDropped | T/A | API ini dihapus dari versi 3 dan digantikan oleh OTA\_GetStatistics. | 
| OTA\_ ActivateNewImage | OTA\_ ActivateNewImage | Parameter inputnya sama tetapi kode kesalahan OTA yang dikembalikan diganti namanya dan kode kesalahan baru ditambahkan di pustaka OTA versi 3. Silakan lihat bagian untuk OTA\_ ActivateNewImage untuk detailnya. | 
| OTA\_ SetImageState | OTA\_ SetImageState | Parameter input sama dan diganti namanya, kode kesalahan OTA yang dikembalikan diganti namanya dan kode kesalahan baru ditambahkan di versi 3 pustaka OTA. Silakan lihat bagian untuk OTA\_ SetImageState untuk detailnya. | 
| OTA\_ GetImageState | OTA\_ GetImageState | Parameter inputnya sama, enum kembali diganti namanya di versi 3 pustaka OTA. Silakan lihat bagian untuk OTA\_ GetImageState untuk detailnya. | 
| OTA\_menangguhkan | OTA\_menangguhkan | Parameter inputnya sama, kode kesalahan OTA yang dikembalikan diganti namanya dan kode kesalahan baru ditambahkan di pustaka OTA versi 3. Silakan lihat bagian untuk OTA\_suspend untuk detailnya. | 
| OTA\_resume | OTA\_resume | Parameter input untuk koneksi dihapus saat koneksi ditangani di demo/aplikasi OTA, kode kesalahan OTA yang dikembalikan diganti namanya dan kode kesalahan baru ditambahkan di versi 3 pustaka OTA. Silakan lihat bagian untuk OTA\_resume untuk detailnya. | 
| OTA\_ CheckForUpdate | OTA\_ CheckForUpdate | Parameter inputnya sama, kode kesalahan OTA yang dikembalikan diganti namanya dan kode kesalahan baru ditambahkan di pustaka OTA versi 3. Silakan lihat bagian untuk OTA\_ CheckForUpdate untuk detailnya. | 
| T/A | OTA\_ EventProcessingTask | API baru ditambahkan dan ini adalah loop acara utama untuk menangani peristiwa untuk pembaruan OTA dan harus dipanggil oleh tugas aplikasi. Silakan lihat bagian untuk OTA\_ EventProcessingTask untuk detailnya. | 
| T/A | OTA\_ SignalEvent | API baru ditambahkan dan menambahkan acara ke bagian belakang antrian acara OTA dan digunakan oleh modul OTA internal untuk memberi sinyal tugas agen. Silakan lihat bagian untuk OTA\_ SignalEvent untuk detailnya. | 
| T/A | OTA\_ERR\_STRERROR | API baru untuk kode kesalahan ke konversi string untuk kesalahan OTA. | 
| T/A | OTA\_ \_strerror JobParse | API baru untuk kode kesalahan ke konversi string untuk kesalahan Job Parsing. | 
| T/A | OTA\_ \_strerror OsStatus | API baru untuk kode status ke konversi string untuk status port OTA OS. | 
| T/A | OTA\_ \_strerror PalStatus | API baru untuk kode status ke konversi string untuk status port OTA PAL. | 

## Deskripsi perubahan yang diperlukan
<a name="porting-migration-ota-description"></a>

### Ota\_init
<a name="porting-migration-ota-init"></a>

Saat menginisialisasi Agen OTA di v1, `OTA_AgentInit` API digunakan yang mengambil parameter untuk konteks koneksi, nama benda, panggilan balik lengkap, dan batas waktu sebagai input.

```
OTA_State_t OTA_AgentInit( void * pvConnectionContext,
                           const uint8_t * pucThingName,
                           pxOTACompleteCallback_t xFunc,
                           TickType_t xTicksToWait );
```

API ini sekarang diubah menjadi `OTA_Init` dengan parameter untuk buffer yang diperlukan untuk ota, antarmuka ota, nama benda, dan panggilan balik aplikasi. 

```
OtaErr_t OTA_Init( OtaAppBuffer_t * pOtaBuffer,
                   OtaInterfaces_t * pOtaInterfaces,
                   const uint8_t * pThingName,
                   OtaAppCallback OtaAppCallback );
```

**Dihapus parameter masukan - **    
**pvConnectionContext - **  
Konteks koneksi dihapus karena Perpustakaan OTA Versi 3 tidak memerlukan konteks koneksi untuk diteruskan ke sana dan MQTT/HTTP operasi ditangani oleh antarmuka masing-masing di demo/aplikasi OTA.   
**xTicksToTunggu - **  
Parameter ticks to wait juga dihapus karena tugas dibuat di OTA demo/application sebelum memanggil OTA\_init. 

**Parameter masukan berganti nama -**    
**xFunc - **  
Parameter diganti namanya menjadi OtaAppCallback dan tipenya diubah menjadi OtaAppCallback \_t.

**Parameter masukan baru - **    
**pOtaBuffer**  
Aplikasi harus mengalokasikan buffer dan meneruskannya ke perpustakaan OTA menggunakan struktur OtaAppBuffer \_t selama inisialisasi. Buffer yang diperlukan sedikit berbeda tergantung pada protokol yang digunakan untuk mengunduh file. Untuk protokol MQTT, buffer untuk nama aliran diperlukan dan untuk protokol HTTP buffer untuk url yang telah ditandatangani sebelumnya dan skema otorisasi diperlukan.  
Buffer diperlukan saat menggunakan MQTT untuk mengunduh file -  

```
static OtaAppBuffer_t otaBuffer =
{
    .pUpdateFilePath    = updateFilePath,
    .updateFilePathsize = otaexampleMAX_FILE_PATH_SIZE,
    .pCertFilePath      = certFilePath,
    .certFilePathSize   = otaexampleMAX_FILE_PATH_SIZE,
    .pStreamName        = streamName,
    .streamNameSize     = otaexampleMAX_STREAM_NAME_SIZE,
    .pDecodeMemory      = decodeMem,
    .decodeMemorySize   = ( 1U << otaconfigLOG2_FILE_BLOCK_SIZE ),
    .pFileBitmap        = bitmap,
    .fileBitmapSize     = OTA_MAX_BLOCK_BITMAP_SIZE
};
```
Buffer diperlukan saat menggunakan HTTP untuk mengunduh file -  

```
static OtaAppBuffer_t otaBuffer =
{
    .pUpdateFilePath    = updateFilePath,
    .updateFilePathsize = otaexampleMAX_FILE_PATH_SIZE,
    .pCertFilePath      = certFilePath,
    .certFilePathSize   = otaexampleMAX_FILE_PATH_SIZE,
    .pDecodeMemory      = decodeMem,
    .decodeMemorySize   = ( 1U << otaconfigLOG2_FILE_BLOCK_SIZE ),
    .pFileBitmap        = bitmap,
    .fileBitmapSize     = OTA_MAX_BLOCK_BITMAP_SIZE,
    .pUrl               = updateUrl,
    .urlSize            = OTA_MAX_URL_SIZE,
    .pAuthScheme        = authScheme,
    .authSchemeSize     = OTA_MAX_AUTH_SCHEME_SIZE
};
```
Dimana -   

```
    pUpdateFilePath    Path to store the files. 
    updateFilePathsize Maximum size of the file path.
    pCertFilePath      Path to certificate file. 
    certFilePathSize   Maximum size of the certificate file path.
    pStreamName        Name of stream to download the files.
    streamNameSize     Maximum size of the stream name.
    pDecodeMemory      Place to store the decoded files.
    decodeMemorySize   Maximum size of the decoded files buffer.
    pFileBitmap        Bitmap of the parameters received.
    fileBitmapSize     Maximum size of the bitmap.
    pUrl               Presigned url to download files from S3.
    urlSize            Maximum size of the URL.
    pAuthScheme        Authentication scheme used to validate download.
    authSchemeSize     Maximum size of the auth scheme.
```  
**pOtaInterfaces **  
Parameter input kedua ke OTA\_init adalah referensi ke antarmuka OTA untuk tipe \_t. OtaInterfaces Kumpulan antarmuka ini harus diteruskan ke Perpustakaan OTA dan termasuk dalam antarmuka sistem operasi antarmuka MQTT, antarmuka HTTP, dan antarmuka lapisan abstraksi platform.     
**Antarmuka OS OTA **  
Antarmuka Fungsional OS OTA adalah seperangkat APIs yang harus diimplementasikan agar perangkat dapat menggunakan pustaka OTA. Implementasi fungsi untuk antarmuka ini disediakan ke perpustakaan OTA di aplikasi pengguna. Pustaka OTA memanggil implementasi fungsi untuk melakukan fungsionalitas yang biasanya disediakan oleh sistem operasi. Ini termasuk mengelola acara, timer, dan alokasi memori. Implementasi untuk FreeRTOS dan POSIX disediakan dengan perpustakaan OTA.  
Contoh untuk FreeRTOS menggunakan port FreeRTOS yang disediakan -  

```
    OtaInterfaces_t otaInterfaces;
    otaInterfaces.os.event.init   = OtaInitEvent_FreeRTOS;
    otaInterfaces.os.event.send   = OtaSendEvent_FreeRTOS;
    otaInterfaces.os.event.recv   = OtaReceiveEvent_FreeRTOS;
    otaInterfaces.os.event.deinit = OtaDeinitEvent_FreeRTOS;
    otaInterfaces.os.timer.start  = OtaStartTimer_FreeRTOS;
    otaInterfaces.os.timer.stop   = OtaStopTimer_FreeRTOS;
    otaInterfaces.os.timer.delete = OtaDeleteTimer_FreeRTOS;
    otaInterfaces.os.mem.malloc   = Malloc_FreeRTOS;
    otaInterfaces.os.mem.free     = Free_FreeRTOS;
```
Contoh untuk Linux menggunakan port POSIX yang disediakan -  

```
  OtaInterfaces_t otaInterfaces;
  otaInterfaces.os.event.init    = Posix_OtaInitEvent;
  otaInterfaces.os.event.send    = Posix_OtaSendEvent;
  otaInterfaces.os.event.recv    = Posix_OtaReceiveEvent;
  otaInterfaces.os.event.deinit  = Posix_OtaDeinitEvent;
  otaInterfaces.os.timer.start   = Posix_OtaStartTimer;
  otaInterfaces.os.timer.stop    = Posix_OtaStopTimer;
  otaInterfaces.os.timer.delete  = Posix_OtaDeleteTimer;
  otaInterfaces.os.mem.malloc    = STDC_Malloc;
  otaInterfaces.os.mem.free      = STDC_Free;
```  
**Antarmuka MQTT **  
Antarmuka OTA MQTT adalah satu set APIs yang harus diimplementasikan di perpustakaan untuk memungkinkan perpustakaan OTA mengunduh blok file dari layanan streaming.  
Contoh menggunakan Agen CoreMQTT APIs dari [OTA](https://github.com/aws/amazon-freertos/blob/main/demos/ota/ota_demo_core_mqtt/ota_demo_core_mqtt.c) melalui demo MQTT -   

```
  OtaInterfaces_t otaInterfaces;
  otaInterfaces.mqtt.subscribe = prvMqttSubscribe;
  otaInterfaces.mqtt.publish = prvMqttPublish;
  otaInterfaces.mqtt.unsubscribe = prvMqttUnSubscribe;
```  
**Antarmuka HTTP**  
Antarmuka HTTP OTA adalah satu set APIs yang harus diimplementasikan di perpustakaan untuk memungkinkan perpustakaan OTA mengunduh blok file dengan menghubungkan ke url yang telah ditandatangani sebelumnya dan mengambil blok data. Ini opsional kecuali Anda mengonfigurasi pustaka OTA untuk mengunduh dari URL yang telah ditandatangani sebelumnya alih-alih layanan streaming.  
Contoh menggunakan CoreHTTP APIs dari [OTA melalui demo HTTP](https://github.com/aws/amazon-freertos/blob/main/demos/ota/ota_demo_core_http/ota_demo_core_http.c) -   

```
  OtaInterfaces_t otaInterfaces;
  otaInterfaces.http.init = httpInit;
  otaInterfaces.http.request = httpRequest;
  otaInterfaces.http.deinit = httpDeinit;
```  
**Antarmuka PAL OTA**  
Antarmuka OTA PAL adalah satu set APIs yang harus diimplementasikan agar perangkat dapat menggunakan perpustakaan OTA. Implementasi khusus perangkat untuk OTA PAL disediakan ke perpustakaan di aplikasi pengguna. Fungsi-fungsi ini digunakan oleh perpustakaan untuk menyimpan, mengelola, dan mengotentikasi unduhan.  

```
    OtaInterfaces_t otaInterfaces;
    otaInterfaces.pal.getPlatformImageState = otaPal_GetPlatformImageState;
    otaInterfaces.pal.setPlatformImageState = otaPal_SetPlatformImageState;
    otaInterfaces.pal.writeBlock = otaPal_WriteBlock;
    otaInterfaces.pal.activate = otaPal_ActivateNewImage;
    otaInterfaces.pal.closeFile = otaPal_CloseFile;
    otaInterfaces.pal.reset = otaPal_ResetDevice;
    otaInterfaces.pal.abort = otaPal_Abort;
    otaInterfaces.pal.createFile = otaPal_CreateFileForRx;
```  
**Perubahan imbalan -**  
Pengembalian diubah dari status agen OTA ke kode kesalahan OTA. Silakan merujuk ke [AWS IoT Over-the-air Pembaruan v3.0.0](https://freertos.org/Documentation/api-ref/ota-for-aws-iot-embedded-sdk/docs/doxygen/output/html/group__ota__enum__types.html#ga7ab3c74dc057383c56c6cb9aa6bf0b2d): \_t. OtaErr

### OTA\_Shutdown
<a name="porting-migration-ota-shutdown"></a>

Di Perpustakaan OTA versi 1, API yang digunakan untuk mematikan Agen OTA adalah OTA\_ AgentShutdown yang sekarang diubah menjadi OTA\_shutdown bersama dengan perubahan parameter input.

**OTA Agent Shutdown (versi 1)**  

```
OTA_State_t OTA_AgentShutdown( TickType_t xTicksToWait );
```

**OTA Agent Shutdown (versi 3) **  

```
OtaState_t OTA_Shutdown( uint32_t ticksToWait,
                         uint8_t unsubscribeFlag );
```

**ticksToWait - **  
Jumlah kutu untuk menunggu Agen OTA menyelesaikan proses shutdown. Jika ini diatur ke nol, fungsi akan segera kembali tanpa menunggu. Status sebenarnya dikembalikan ke penelepon. Agen tidak tidur untuk sementara ini tetapi digunakan untuk perulangan sibuk.

**Parameter masukan baru - **  
UnsubscribeFlag -   
Tandai untuk menunjukkan apakah operasi berhenti berlangganan harus dilakukan dari topik pekerjaan saat shutdown dipanggil. Jika bendera 0 maka operasi berhenti berlangganan tidak dipanggil untuk topik pekerjaan. Jika aplikasi harus berhenti berlangganan dari topik pekerjaan maka flag ini harus disetel ke 1 saat memanggil OTA\_Shutdown. 

**Perubahan imbalan -**  
OtaState\_t -   
Enum untuk negara Agen OTA dan anggotanya diganti namanya. Silakan merujuk ke [AWS IoT Over-the-air Pembaruan v3.0.0.](https://freertos.org/Documentation/api-ref/ota-for-aws-iot-embedded-sdk/docs/doxygen/output/html/group__ota__enum__types.html#ga1cb476a5e0ee81fa486f605e64419dcc)

### OTA\_ GetState
<a name="porting-migration-ota-get-state"></a>

Nama API diubah dari OTA\_ menjadi OTA\_AgentGetState . GetState

**OTA Agent Shutdown (versi 1)**  

```
OTA_State_t OTA_GetAgentState( void );
```

**OTA Agent Shutdown (versi 3)**  

```
OtaState_t OTA_GetState( void );
```

**Perubahan imbalan -**  
OtaState\_t -   
Enum untuk negara Agen OTA dan anggotanya diganti namanya. Silakan merujuk ke [AWS IoT Over-the-air Pembaruan v3.0.0.](https://freertos.org/Documentation/api-ref/ota-for-aws-iot-embedded-sdk/docs/doxygen/output/html/group__ota__enum__types.html#ga1cb476a5e0ee81fa486f605e64419dcc)

### OTA\_ GetStatistics
<a name="porting-migration-ota-get-stats"></a>

API tunggal baru ditambahkan untuk statistik. Ini menggantikan OTA\_, APIs OTA\_GetPacketsReceived, OTA\_, OTA\_GetPacketsQueued. GetPacketsProcessed GetPacketsDropped Juga, di Perpustakaan OTA versi 3, nomor statistik hanya terkait dengan pekerjaan saat ini.

**Perpustakaan OTA versi 1**  

```
uint32_t OTA_GetPacketsReceived( void );
uint32_t OTA_GetPacketsQueued( void );
uint32_t OTA_GetPacketsProcessed( void );
uint32_t OTA_GetPacketsDropped( void );
```

**Perpustakaan OTA versi 3**  

```
OtaErr_t OTA_GetStatistics( OtaAgentStatistics_t * pStatistics );
```

**PStatistik - **  
Parameter input/output untuk data statistik seperti paket yang diterima, dijatuhkan, antri dan diproses untuk pekerjaan saat ini.

**Parameter keluaran - **  
Kode kesalahan OTA.

**Contoh penggunaan - **  

```
OtaAgentStatistics_t otaStatistics = { 0 };
OTA_GetStatistics( &otaStatistics );
LogInfo( ( " Received: %u   Queued: %u   Processed: %u   Dropped: %u",
                           otaStatistics.otaPacketsReceived,
                           otaStatistics.otaPacketsQueued,
                           otaStatistics.otaPacketsProcessed,
                           otaStatistics.otaPacketsDropped ) );
```

### OTA\_ ActivateNewImage
<a name="porting-migration-ota-activate"></a>

Parameter inputnya sama tetapi kode kesalahan OTA yang dikembalikan diganti namanya dan kode kesalahan baru ditambahkan di pustaka OTA versi 3.

**Perpustakaan OTA versi 1**  

```
OTA_Err_t OTA_ActivateNewImage( void ); 
```

**Perpustakaan OTA versi 3**  

```
OtaErr_t OTA_ActivateNewImage( void );
```
Enum kode kesalahan OTA yang dikembalikan diubah dan kode kesalahan baru ditambahkan. Silakan merujuk ke [AWS IoT Over-the-air Pembaruan v3.0.0](https://freertos.org/Documentation/api-ref/ota-for-aws-iot-embedded-sdk/docs/doxygen/output/html/group__ota__enum__types.html#ga7ab3c74dc057383c56c6cb9aa6bf0b2d): \_t. OtaErr

**Contoh penggunaan - **  

```
 OtaErr_t otaErr = OtaErrNone;
 otaErr = OTA_ActivateNewImage();
 /* Handle error */
```

### OTA\_ SetImageState
<a name="porting-migration-ota-set-image"></a>

Parameter input sama dan diganti namanya, kode kesalahan OTA yang dikembalikan diganti namanya dan kode kesalahan baru ditambahkan di pustaka OTA versi 3.

**Perpustakaan OTA versi 1 **  

```
OTA_Err_t OTA_SetImageState( OTA_ImageState_t eState ); 
```

**Perpustakaan OTA versi 3**  

```
OtaErr_t OTA_SetImageState( OtaImageState_t state ); 
```
Parameter input diubah namanya menjadi OtaImageState \_t. Silakan merujuk ke [AWS IoT Over-the-air Pembaruan v3.0.0.](https://freertos.org/Documentation/api-ref/ota-for-aws-iot-embedded-sdk/docs/doxygen/output/html/group__ota__enum__types.html#gad4909faa8b9c8672e7f7bef1bc6b5b84)  
Enum kode kesalahan OTA yang dikembalikan diubah dan kode kesalahan baru ditambahkan. Silakan merujuk ke [AWS IoT Over-the-air Pembaruan v3.0.0](https://freertos.org/Documentation/api-ref/ota-for-aws-iot-embedded-sdk/docs/doxygen/output/html/group__ota__enum__types.html#ga7ab3c74dc057383c56c6cb9aa6bf0b2d)/\_t. OtaErr

**Contoh penggunaan - **  

```
  OtaErr_t otaErr = OtaErrNone;
  otaErr = OTA_SetImageState( OtaImageStateAccepted );
  /* Handle error */
```

### OTA\_ GetImageState
<a name="porting-migration-ota-get-image"></a>

Parameter inputnya sama, enum kembali diganti namanya di versi 3 pustaka OTA. 

**Perpustakaan OTA versi 1 **  

```
OTA_ImageState_t OTA_GetImageState( void ); 
```

**Perpustakaan OTA versi 3**  

```
OtaImageState_t OTA_GetImageState( void ); 
```
Enum kembali diubah namanya menjadi \_t. OtaImageState Silakan merujuk ke [AWS IoT Over-the-air Pembaruan v3.0.0](https://freertos.org/Documentation/api-ref/ota-for-aws-iot-embedded-sdk/docs/doxygen/output/html/group__ota__enum__types.html#gad4909faa8b9c8672e7f7bef1bc6b5b84): \_t. OtaImageState

**Contoh penggunaan - **  

```
 OtaImageState_t imageState;
 imageState = OTA_GetImageState();
```

### OTA\_menangguhkan
<a name="porting-migration-ota-suspend"></a>

Parameter inputnya sama, kode kesalahan OTA yang dikembalikan diganti namanya dan kode kesalahan baru ditambahkan di pustaka OTA versi 3. 

**Perpustakaan OTA versi 1 **  

```
OTA_Err_t OTA_Suspend( void ); 
```

**Perpustakaan OTA versi 3**  

```
OtaErr_t OTA_Suspend( void ); 
```
Enum kode kesalahan OTA yang dikembalikan diubah dan kode kesalahan baru ditambahkan. Silakan merujuk ke [AWS IoT Over-the-air Pembaruan v3.0.0](https://freertos.org/Documentation/api-ref/ota-for-aws-iot-embedded-sdk/docs/doxygen/output/html/group__ota__enum__types.html#ga7ab3c74dc057383c56c6cb9aa6bf0b2d): \_t. OtaErr 

**Contoh penggunaan - **  

```
OtaErr_t xOtaError = OtaErrUninitialized;
xOtaError = OTA_Suspend();
/* Handle error */
```

### OTA\_resume
<a name="porting-migration-ota-resume"></a>

Parameter input untuk koneksi dihapus saat koneksi ditangani di demo/aplikasi OTA, kode kesalahan OTA yang dikembalikan diganti namanya dan kode kesalahan baru ditambahkan di versi 3 pustaka OTA.

**Perpustakaan OTA versi 1 **  

```
OTA_Err_t OTA_Resume( void * pxConnection ); 
```

**Perpustakaan OTA versi 3**  

```
OtaErr_t OTA_Resume( void ); 
```
Enum kode kesalahan OTA yang dikembalikan diubah dan kode kesalahan baru ditambahkan. Silakan merujuk ke [AWS IoT Over-the-air Pembaruan v3.0.0](https://freertos.org/Documentation/api-ref/ota-for-aws-iot-embedded-sdk/docs/doxygen/output/html/group__ota__enum__types.html#ga7ab3c74dc057383c56c6cb9aa6bf0b2d): \_t. OtaErr

**Contoh penggunaan - **  

```
OtaErr_t xOtaError = OtaErrUninitialized;
xOtaError = OTA_Resume();
/* Handle error */
```

### OTA\_ CheckForUpdate
<a name="porting-migration-ota-check"></a>

Parameter inputnya sama, kode kesalahan OTA yang dikembalikan diganti namanya dan kode kesalahan baru ditambahkan di pustaka OTA versi 3.

**Perpustakaan OTA versi 1 **  

```
OTA_Err_t OTA_CheckForUpdate( void ); 
```

**Perpustakaan OTA versi 3**  

```
OtaErr_t OTA_CheckForUpdate( void ) 
```
Enum kode kesalahan OTA yang dikembalikan diubah dan kode kesalahan baru ditambahkan. Silakan merujuk ke [AWS IoT Over-the-air Pembaruan v3.0.0](https://freertos.org/Documentation/api-ref/ota-for-aws-iot-embedded-sdk/docs/doxygen/output/html/group__ota__enum__types.html#ga7ab3c74dc057383c56c6cb9aa6bf0b2d): \_t. OtaErr

### OTA\_ EventProcessingTask
<a name="porting-migration-ota-event"></a>

Ini adalah API baru dan merupakan loop acara utama untuk menangani acara untuk pembaruan OTA. Itu harus dipanggil oleh tugas aplikasi. Loop ini akan terus menangani dan mengeksekusi peristiwa yang diterima untuk Pembaruan OTA hingga tugas ini dihentikan oleh aplikasi.

**Perpustakaan OTA versi 3 **  

```
void OTA_EventProcessingTask( void * pUnused ); 
```

**Contoh untuk FreeRTOS -**  

```
/* Create FreeRTOS task*/
xTaskCreate( prvOTAAgentTask,
             "OTA Agent Task",
             otaexampleAGENT_TASK_STACK_SIZE,
             NULL,
             otaexampleAGENT_TASK_PRIORITY,
             NULL );
   
/* Call OTA_EventProcessingTask from the task */                        
static void prvOTAAgentTask( void * pParam )
{
    /* Calling OTA agent task. */
    OTA_EventProcessingTask( pParam );
    LogInfo( ( "OTA Agent stopped." ) );

    /* Delete the task as it is no longer required. */
    vTaskDelete( NULL );
}
```

**Contoh untuk POSIX - **  

```
/* Create posix thread.*/
if( pthread_create( &threadHandle, NULL, otaThread, NULL ) != 0 )
{
    LogError( ( "Failed to create OTA thread: "
                ",errno=%s",
                strerror( errno ) ) );

   /* Handle error. */
}
   
/* Call OTA_EventProcessingTask from the thread.*/                        
static void * otaThread( void * pParam )
{
    /* Calling OTA agent task. */
    OTA_EventProcessingTask( pParam );
    LogInfo( ( "OTA Agent stopped." ) );
    
    return NULL;
}
```

### OTA\_ SignalEvent
<a name="porting-migration-ota-signal"></a>

Ini adalah API baru yang menambahkan acara ke bagian belakang antrian acara dan juga digunakan oleh modul OTA internal untuk memberi sinyal tugas agen.

**Perpustakaan OTA versi 3**  

```
bool OTA_SignalEvent( const OtaEventMsg_t * const pEventMsg ); 
```

**Contoh penggunaan - **  

```
OtaEventMsg_t xEventMsg = { 0 };
xEventMsg.eventId = OtaAgentEventStart;
( void ) OTA_SignalEvent( &xEventMsg );
```

## Mengintegrasikan Perpustakaan OTA sebagai submodul dalam aplikasi Anda
<a name="porting-migration-ota-integrating"></a>

Jika Anda ingin mengintegrasikan perpustakaan OTA dalam aplikasi Anda sendiri, Anda dapat menggunakan perintah git submodule. Submodul Git memungkinkan Anda untuk menyimpan repositori Git sebagai subdirektori dari repositori Git lain. Pustaka OTA versi 3 dipertahankan di repositori [ ota-for-aws-iot-embedded-sdk](https://github.com/aws/ota-for-aws-iot-embedded-sdk).

```
git submodule add https://github.com/aws/ota-for-aws-iot-embedded-sdk.git {{destination_folder}}
```

```
git commit -m "Added the OTA Library as submodule to the project."
```

```
git push
```

Untuk informasi selengkapnya, lihat [Mengintegrasikan Agen OTA ke dalam aplikasi Anda di Panduan](https://docs.aws.amazon.com/freertos/latest/userguide/integrate-ota-agent.html) Pengguna *FreeRTOS*.

## Referensi
<a name="porting-migration-ota-references"></a>
+ [ OTAv1](https://github.com/aws/amazon-freertos/tree/202012.00/libraries/freertos_plus/aws/ota). 
+ [OTAv3](https://github.com/aws/ota-for-aws-iot-embedded-sdk/tree/v3.0.0).