

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Migration de la version 1 vers la version 3 pour le port PAL OTA
<a name="porting-migration-ota-pal"></a>

La bibliothèque Over-the-air des mises à jour a apporté quelques modifications à la structure des dossiers et au placement des configurations requises par la bibliothèque et les applications de démonstration. Pour que les applications OTA conçues pour fonctionner avec la version v1.2.0 puissent migrer vers la version 3.0.0 de la bibliothèque, vous devez mettre à jour les signatures des fonctions du port PAL et inclure des fichiers de configuration supplémentaires, comme décrit dans ce guide de migration.

## Modifications apportées à OTA PAL
<a name="porting-migration-ota-pal-changes"></a>
+ Le nom du répertoire du port PAL OTA a été mis à jour de `ota` à`ota_pal_for_aws`. Ce dossier doit contenir 2 fichiers : `ota_pal.c` et`ota_pal.h`. Le fichier d'en-tête PAL `libraries/freertos_plus/aws/ota/src/aws_iot_ota_pal.h` a été supprimé de la bibliothèque OTA et doit être défini dans le port.
+ Les codes de retour (`OTA_Err_t`) sont traduits en une énumération`OTAMainStatus_t`. Reportez-vous à [ota\$1platform\$1interface.h](https://github.com/aws/ota-for-aws-iot-embedded-sdk/blob/v3.0.0/source/include/ota_platform_interface.h#L68-L90) pour les codes de retour traduits. [ Des macros auxiliaires](https://github.com/aws/ota-for-aws-iot-embedded-sdk/blob/666241d0f643b07d5146a3715b649d80f8135e0b/source/include/ota_platform_interface.h#L105-L111) sont également fournies pour combiner, `OtaPalMainStatus` `OtaPalSubStatus` coder `OtaPalStatus` et `OtaMainStatus` extraire des données similaires.
+ Connexion au PAL 
  + Suppression de la `DEFINE_OTA_METHOD_NAME` macro.
  + Plus tôt :`OTA_LOG_L1( "[%s] Receive file created.\r\n", OTA_METHOD_NAME );`.
  + Mise à jour : `LogInfo(( "Receive file created."));` utilisez `LogDebug` `LogWarn` et `LogError` pour le journal approprié.
+ Variable `cOTA_JSON_FileSignatureKey` modifiée en`OTA_JsonFileSignatureKey`.

### Fonctions
<a name="porting-migration-ota-pal-functions"></a>

Les signatures de fonction sont définies dans `ota_pal.h` et commencent par le préfixe `otaPal` au lieu de`prvPAL`.

**Note**  
Le nom exact du PAL est techniquement ouvert, mais pour être compatible avec les tests de qualification, le nom doit être conforme à ceux spécifiés ci-dessous.


****  

|  Version 1   |  Version 3   |  Remarques   | 
| --- | --- | --- | 
|  `OTA_Err_t prvPAL_CreateFileForRx( OTA_FileContext_t * const *C* );`  |  `OtaPalStatus_t otaPal_CreateFileForRx( OtaFileContext_t * const *pFileContext* );`  |  Créez un nouveau fichier de réception pour les blocs de données au fur et à mesure de leur arrivée.  | 
|  `int16_t prvPAL_WriteBlock( OTA_FileContext_t * const C, uint32_t ulOffset, uint8_t * const pcData, uint32_t ulBlockSize );`  |  `int16_t otaPal_WriteBlock( OtaFileContext_t * const pFileContext, uint32_t ulOffset, uint8_t * const pData, uint32_t ulBlockSize );`  |  Ecrivez un bloc de données dans le fichier spécifié au décalage indiqué.   | 
|  `OTA_Err_t prvPAL_ActivateNewImage( void );`  |  `OtaPalStatus_t otaPal_ActivateNewImage( OtaFileContext_t * const *pFileContext* );`  |  Activez la dernière image du microcontrôleur reçue via OTA.  | 
|  `OTA_Err_t prvPAL_ResetDevice( void );`  |  `OtaPalStatus_t otaPal_ResetDevice( OtaFileContext_t * const *pFileContext* );`  |  Réinitialisez l'appareil.  | 
|  `OTA_Err_t prvPAL_CloseFile( OTA_FileContext_t * const *C* );`  |  `OtaPalStatus_t otaPal_CloseFile( OtaFileContext_t * const *pFileContext* );`  |  Authentifiez et fermez le fichier de réception sous-jacent dans le contexte OTA spécifié.  | 
|  `OTA_Err_t prvPAL_Abort( OTA_FileContext_t * const *C* );`  |  `OtaPalStatus_t otaPal_Abort( OtaFileContext_t * const *pFileContext* );`  |  Arrêtez un transfert OTA.  | 
|  `OTA_Err_t prvPAL_SetPlatformImageState( OTA_ImageState_t *eState* );`  |  `OtaPalStatus_t otaPal_SetPlatformImageState( OtaFileContext_t * const pFileContext, OtaImageState_t eState );`  |  Essayez de définir l'état de l'image de mise à jour OTA.  | 
|  `OTA_PAL_ImageState_t prvPAL_GetPlatformImageState( void );`  |  `OtaPalImageState_t otaPal_GetPlatformImageState( OtaFileContext_t * const *pFileContext* );`  |  Obtenez l'état de l'image de mise à jour OTA.  | 
+ Version 1 : `OTA_Err_t prvPAL_CreateFileForRx( OTA_FileContext_t * const *C* );`

  Version 3 : `OtaPalStatus_t otaPal_CreateFileForRx( OtaFileContext_t * const *pFileContext* );`

  Remarques : Créez un nouveau fichier de réception pour les blocs de données au fur et à mesure de leur arrivée.
+ Version 1 : `int16_t prvPAL_WriteBlock( OTA_FileContext_t * const C, uint32_t ulOffset, uint8_t * const pcData, uint32_t ulBlockSize );`

  Version 3 : `int16_t otaPal_WriteBlock( OtaFileContext_t * const pFileContext, uint32_t ulOffset, uint8_t * const pData, uint32_t ulBlockSize );`

  Remarques : Ecrivez un bloc de données dans le fichier spécifié au décalage indiqué. 
+ Version 1 : `OTA_Err_t prvPAL_ActivateNewImage( void );`

  Version 3 : `OtaPalStatus_t otaPal_ActivateNewImage( OtaFileContext_t * const *pFileContext* );`

  Remarques : Activez la dernière image du microcontrôleur reçue via OTA.
+ Version 1 : `OTA_Err_t prvPAL_ResetDevice( void );`

  Version 3 : `OtaPalStatus_t otaPal_ResetDevice( OtaFileContext_t * const *pFileContext* );`

  Remarques : Réinitialisez l'appareil.
+ Version 1 : `OTA_Err_t prvPAL_CloseFile( OTA_FileContext_t * const *C* );`

  Version 3 : `OtaPalStatus_t otaPal_CloseFile( OtaFileContext_t * const *pFileContext* );`

  Remarques : Authentifiez et fermez le fichier de réception sous-jacent dans le contexte OTA spécifié.
+ Version 1 : `OTA_Err_t prvPAL_Abort( OTA_FileContext_t * const *C* );`

  Version 3 : `OtaPalStatus_t otaPal_Abort( OtaFileContext_t * const *pFileContext* );`

  Remarques : Arrêtez un transfert OTA.
+ Version 1 : `OTA_Err_t prvPAL_SetPlatformImageState( OTA_ImageState_t *eState* );`

  Version 3 : `OtaPalStatus_t otaPal_SetPlatformImageState( OtaFileContext_t * const pFileContext, OtaImageState_t eState );`

  Remarques : Essayez de définir l'état de l'image de mise à jour OTA.
+ Version 1 : `OTA_PAL_ImageState_t prvPAL_GetPlatformImageState( void );`

  Version 3 : `OtaPalImageState_t otaPal_GetPlatformImageState( OtaFileContext_t * const *pFileContext* );`

  Remarques : Obtenez l'état de l'image de mise à jour OTA.

### Les types de données
<a name="porting-migration-ota-pal-data-types"></a>


****  

|  Version 1   |  Fichier  |  Version 3   |  Fichier  |  Remarques   | 
| --- | --- | --- | --- | --- | 
|  `OTA_PAL_ImageState_t`  |  `aws_iot_ota_agent.h`  |  `OtaPalImageState_t`  |  `ota_private.h`  |  *État de l'image défini par l'implémentation de la plate-forme.*  | 
|  `OTA_Err_t`  |  `aws_iot_ota_agent.h`  |  `OtaErr_t OtaPalStatus_t (combination of OtaPalMainStatus_t and OtaPalSubStatus_t)`  |  `ota.h`, `ota_platform_interface.h`  |  v1 : Il s'agissait de macros définissant un entier non signé de 32. v3 : énumération spécialisée représentant le type d'erreur et associée à un code d'erreur.  | 
|  `OTA_FileContext_t`  |  `aws_iot_ota_agent.h`  |  `OtaFileContext_t`  |  `ota_private.h`  |  v1 : contient une énumération et des tampons pour les données. v3 : contient des variables de longueur de données supplémentaires.  | 
|  `OTA_ImageState_t`  |  `aws_iot_ota_agent.h`  |  `OtaImageState_t`  |  `ota_private.h`  |  *États de l'image OTA*  | 
+ Version 1 : `OTA_PAL_ImageState_t`

  Dossier : `aws_iot_ota_agent.h`

  Version 3 : `OtaPalImageState_t`

  Dossier : `ota_private.h`

  Remarques : *État de l'image défini par l'implémentation de la plate-forme.*
+ Version 1 : `OTA_Err_t`

  Dossier : `aws_iot_ota_agent.h`

  Version 3 : `OtaErr_t OtaPalStatus_t (combination of OtaPalMainStatus_t and OtaPalSubStatus_t)`

  Fichier :`ota.h`, `ota_platform_interface.h`

  Remarques : v1 : il s'agissait de macros définissant un entier non signé de 32. v3 : énumération spécialisée représentant le type d'erreur et associée à un code d'erreur.
+ Version 1 : `OTA_FileContext_t`

  Dossier : `aws_iot_ota_agent.h`

  Version 3 : `OtaFileContext_t`

  Dossier : `ota_private.h`

  Remarques : v1 : contient une énumération et des tampons pour les données. v3 : contient des variables de longueur de données supplémentaires.
+ Version 1 : `OTA_ImageState_t`

  Dossier : `aws_iot_ota_agent.h`

  Version 3 : `OtaImageState_t`

  Dossier : `ota_private.h`

  Remarques : *états des images OTA*

### Configuration changes
<a name="porting-migration-ota-pal-config-changes"></a>

Le fichier `aws_ota_agent_config.h` a été renommé en [https://github.com/aws/amazon-freertos/blob/main/vendors/pc/boards/windows/aws_demos/config_files/ota_config.h](https://github.com/aws/amazon-freertos/blob/main/vendors/pc/boards/windows/aws_demos/config_files/ota_config.h)ce sens que les gardes d'inclusion passent de `_AWS_OTA_AGENT_CONFIG_H_` à`OTA_CONFIG_H_`.
+ Le fichier `aws_ota_codesigner_certificate.h` a été supprimé.
+ Inclut la nouvelle pile de journalisation pour imprimer les messages de débogage :

  ```
  /**************************************************/
  /******* DO NOT CHANGE the following order ********/
  /**************************************************/
  
  /* Logging related header files are required to be included in the following order:
   * 1. Include the header file "logging_levels.h".
   * 2. Define LIBRARY_LOG_NAME and  LIBRARY_LOG_LEVEL.
   * 3. Include the header file "logging_stack.h".
   */
  
  /* Include header that defines log levels. */
  #include "logging_levels.h"
  
  /* Configure name and log level for the OTA library. */
  #ifndef LIBRARY_LOG_NAME
      #define LIBRARY_LOG_NAME     "OTA"
  #endif
  #ifndef LIBRARY_LOG_LEVEL
      #define LIBRARY_LOG_LEVEL    LOG_INFO
  #endif
  
  #include "logging_stack.h"
  
  /************ End of logging configuration ****************/
  ```
+ Ajout de la configuration constante :

  ```
  /** * @brief Size of the file data block message (excluding the header). */   
  #define otaconfigFILE_BLOCK_SIZE ( 1UL << otaconfigLOG2_FILE_BLOCK_SIZE )
  ```

**Nouveau fichier : [https://github.com/aws/amazon-freertos/blob/main/vendors/pc/boards/windows/aws_demos/config_files/ota_demo_config.h](https://github.com/aws/amazon-freertos/blob/main/vendors/pc/boards/windows/aws_demos/config_files/ota_demo_config.h)**contient les configurations requises par la démo OTA, telles que le certificat de signature de code et la version de l'application.
+ `signingcredentialSIGNING_CERTIFICATE_PEM`qui a été défini dans `demos/include/aws_ota_codesigner_certificate.h` a été déplacé vers `ota_demo_config.h` as `otapalconfigCODE_SIGNING_CERTIFICATE` et est accessible à partir des fichiers PAL sous la forme suivante : 

  ```
  static const char codeSigningCertificatePEM[] = otapalconfigCODE_SIGNING_CERTIFICATE;
  ```

  Le fichier `aws_ota_codesigner_certificate.h` a été supprimé.
+ Les macros `APP_VERSION_BUILD``APP_VERSION_MINOR`, `APP_VERSION_MAJOR` ont été ajoutées à`ota_demo_config.h`. Les anciens fichiers contenant les informations de version ont été supprimés, par exemple `tests/include/aws_application_version.h``libraries/c_sdk/standard/common/include/iot_appversion32.h`,`demos/demo_runner/aws_demo_version.c`.

## Modifications apportées aux tests OTA PAL
<a name="porting-migration-ota-pal-test-changes"></a>
+ Suppression du groupe de test « Full\$1OTA\$1Agent » ainsi que de tous les fichiers associés. Ce groupe de test était auparavant requis pour la qualification. Ces tests concernaient la bibliothèque OTA et ne concernaient pas spécifiquement le port PAL OTA. La bibliothèque OTA dispose désormais d'une couverture complète des tests hébergée dans le référentiel OTA, de sorte que ce groupe de test n'est plus nécessaire.
+ Suppression des groupes de test « Full\$1OTA\$1CBOR » et « Quarantine\$1OTA\$1CBOR » ainsi que de tous les fichiers associés. Ces tests ne faisaient pas partie des tests de qualification. Les fonctionnalités couvertes par ces tests sont actuellement testées dans le référentiel OTA.
+ Déplacement des fichiers de test du répertoire de la bibliothèque vers le `tests/integration_tests/ota_pal` répertoire.
+ Mise à jour des tests de qualification OTA PAL pour utiliser la version 3.0.0 de l'API de bibliothèque OTA.
+ Mise à jour de la façon dont les tests OTA PAL accèdent au certificat de signature de code pour les tests. Auparavant, il existait un fichier d'en-tête dédié pour les informations d'identification de code. Ce n'est plus le cas pour la nouvelle version de la bibliothèque. Le code de test s'attend à ce que cette variable soit définie dans`ota_pal.c`. La valeur est attribuée à une macro définie dans le fichier de configuration OTA spécifique à la plate-forme.

## Liste de contrôle
<a name="porting-migration-ota-pal-test-checklist"></a>

Utilisez cette liste de contrôle pour vous assurer de suivre les étapes requises pour la migration :
+ Mettez à jour le nom du dossier du port ota pal de `ota` à`ota_pal_for_aws`.
+ Ajoutez le fichier `ota_pal.h` avec les fonctions mentionnées ci-dessus. Pour un exemple de `ota_pal.h` fichier, voir [ GitHub](https://github.com/aws/amazon-freertos/blob/main/vendors/pc/boards/windows/ports/ota_pal_for_aws/ota_pal.h).
+ Ajoutez les fichiers de configuration :
  + Changez le nom du fichier `aws_ota_agent_config.h` en (ou créez)`ota_config.h`.
    + Ajoutez :

      ```
      otaconfigFILE_BLOCK_SIZE ( 1UL << otaconfigLOG2_FILE_BLOCK_SIZE )
      ```
    + Inclure :

      ```
      #include "ota_demo_config.h"
      ```
  + Copiez les fichiers ci-dessus `aws_test config` dans le dossier et remplacez les inclusions de `ota_demo_config.h` par`aws_test_ota_config.h`.
  + Ajoutez un `ota_demo_config.h` fichier.
  + Ajoutez un `aws_test_ota_config.h` fichier.
+ Apportez les modifications suivantes à `ota_pal.c` : 
  + Mettez à jour les inclusions avec les derniers noms de fichiers de bibliothèque OTA.
  + Supprimez la macro `DEFINE_OTA_METHOD_NAME`.
  + Mettez à jour les signatures des fonctions OTA PAL.
  + Mettez à jour le nom de la variable de contexte du fichier de `C` à`pFileContext`.
  + Mettez à jour la `OTA_FileContext_t` structure et toutes les variables associées.
  + Mettre à jour `cOTA_JSON_FileSignatureKey` vers`OTA_JsonFileSignatureKey`.
  + Mettez à jour les `Ota_ImageState_t` types `OTA_PAL_ImageState_t` et.
  + Mettez à jour le type et les valeurs d'erreur.
  + Mettez à jour les macros d'impression pour utiliser la pile de journalisation.
  + Mettez à jour le `signingcredentialSIGNING_CERTIFICATE_PEM` à être`otapalconfigCODE_SIGNING_CERTIFICATE`.
  + Commentaires sur `otaPal_CheckFileSignature` les mises à jour et les `otaPal_ReadAndAssumeCertificate` fonctions.
+ Mettez à jour le [https://github.com/aws/amazon-freertos/pull/3208/commits/432e13fcb8dfbfeb6de25110a3d2ea14ccaf1b9a](https://github.com/aws/amazon-freertos/pull/3208/commits/432e13fcb8dfbfeb6de25110a3d2ea14ccaf1b9a)fichier.
+ Mettez à jour les projets IDE.