AWS IoT Over-the-air Update v3.0.0
Client library for AWS IoT OTA
ota_platform_interface.h
Go to the documentation of this file.
1/*
2 * AWS IoT Over-the-air Update v3.0.0
3 * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved.
4 *
5 * Permission is hereby granted, free of charge, to any person obtaining a copy of
6 * this software and associated documentation files (the "Software"), to deal in
7 * the Software without restriction, including without limitation the rights to
8 * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
9 * the Software, and to permit persons to whom the Software is furnished to do so,
10 * subject to the following conditions:
11 *
12 * The above copyright notice and this permission notice shall be included in all
13 * copies or substantial portions of the Software.
14 *
15 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
17 * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
18 * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
19 * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
20 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
21 */
22
28#ifndef OTA_PLATFORM_INTERFACE
29#define OTA_PLATFORM_INTERFACE
30
31#include "ota_private.h"
32
61typedef uint32_t OtaPalStatus_t;
62
66typedef uint32_t OtaPalSubStatus_t;
67
72typedef enum OtaPalMainStatus
73{
91
105/* @[define_ota_err_code_helpers] */
106#define OTA_PAL_ERR_MASK 0xffffffUL
107#define OTA_PAL_SUB_BITS 24U
108#define OTA_PAL_MAIN_ERR( err ) ( ( OtaPalMainStatus_t ) ( uint32_t ) ( ( uint32_t ) ( err ) >> ( uint32_t ) OTA_PAL_SUB_BITS ) )
109#define OTA_PAL_SUB_ERR( err ) ( ( uint32_t ) ( err ) & ( uint32_t ) OTA_PAL_ERR_MASK )
110#define OTA_PAL_COMBINE_ERR( main, sub ) ( ( ( uint32_t ) ( main ) << ( uint32_t ) OTA_PAL_SUB_BITS ) | ( uint32_t ) ( sub ) )
111/* @[define_ota_err_code_helpers] */
112
133typedef OtaPalStatus_t ( * OtaPalAbort_t )( OtaFileContext_t * const pFileContext );
134
158typedef OtaPalStatus_t (* OtaPalCreateFileForRx_t)( OtaFileContext_t * const pFileContext );
159
184typedef OtaPalStatus_t ( * OtaPalCloseFile_t )( OtaFileContext_t * const pFileContext );
185
205typedef int16_t ( * OtaPalWriteBlock_t ) ( OtaFileContext_t * const pFileContext,
206 uint32_t offset,
207 uint8_t * const pData,
208 uint32_t blockSize );
209
222typedef OtaPalStatus_t ( * OtaPalActivateNewImage_t )( OtaFileContext_t * const pFileContext );
223
236typedef OtaPalStatus_t ( * OtaPalResetDevice_t ) ( OtaFileContext_t * const pFileContext );
237
260 OtaImageState_t eState );
261
286
291typedef struct OtaPalInterface
292{
293 /* MISRA rule 21.8 prohibits the use of abort from stdlib.h. However, this is merely one of the
294 * OTA platform abstraction layer interfaces, which is used to abort an OTA update. So it's a
295 * false positive. */
296 /* coverity[misra_c_2012_rule_21_8_violation] */
306
307#endif /* ifndef OTA_PLATFORM_INTERFACE */
OtaPalMainStatus_t
The OTA platform interface main status.
Definition: ota_platform_interface.h:73
OtaPalImageState_t
OTA Platform Image State.
Definition: ota_private.h:329
OtaImageState_t
OTA Image states.
Definition: ota_private.h:312
@ OtaPalNullFileContext
The PAL is called with a NULL file context.
Definition: ota_platform_interface.h:77
@ OtaPalRejectFailed
Error trying to reject the OTA image.
Definition: ota_platform_interface.h:85
@ OtaPalOutOfMemory
Out of memory.
Definition: ota_platform_interface.h:76
@ OtaPalRxFileCreateFailed
The PAL failed to create the OTA receive file.
Definition: ota_platform_interface.h:79
@ OtaPalFileAbort
Error in low level file abort.
Definition: ota_platform_interface.h:88
@ OtaPalUninitialized
Result is not yet initialized from PAL.
Definition: ota_platform_interface.h:75
@ OtaPalBootInfoCreateFailed
The PAL failed to create the OTA boot info file.
Definition: ota_platform_interface.h:81
@ OtaPalSignatureCheckFailed
The signature check failed for the specified file.
Definition: ota_platform_interface.h:78
@ OtaPalActivateFailed
The activation of the new OTA image failed.
Definition: ota_platform_interface.h:87
@ OtaPalBadSignerCert
The signer certificate was not readable or zero length.
Definition: ota_platform_interface.h:82
@ OtaPalBadImageState
The specified OTA image state was out of range.
Definition: ota_platform_interface.h:83
@ OtaPalSuccess
OTA platform interface success.
Definition: ota_platform_interface.h:74
@ OtaPalFileClose
Error in low level file close.
Definition: ota_platform_interface.h:89
@ OtaPalAbortFailed
Error trying to abort the OTA.
Definition: ota_platform_interface.h:84
@ OtaPalCommitFailed
The acceptance commit of the new OTA image failed.
Definition: ota_platform_interface.h:86
@ OtaPalRxFileTooLarge
The OTA receive file is too big for the platform to support.
Definition: ota_platform_interface.h:80
uint32_t OtaPalSubStatus_t
The OTA platform interface sub status.
Definition: ota_platform_interface.h:66
uint32_t OtaPalStatus_t
The OTA platform interface return status. Composed of main and sub status.
Definition: ota_platform_interface.h:61
OtaPalStatus_t(* OtaPalCreateFileForRx_t)(OtaFileContext_t *const pFileContext)
Create a new receive file for the data chunks as they come in.
Definition: ota_platform_interface.h:158
OtaPalStatus_t(* OtaPalCloseFile_t)(OtaFileContext_t *const pFileContext)
Authenticate and close the underlying receive file in the specified OTA context.
Definition: ota_platform_interface.h:184
OtaPalImageState_t(* OtaPalGetPlatformImageState_t)(OtaFileContext_t *const pFileContext)
Get the state of the OTA update image.
Definition: ota_platform_interface.h:285
OtaPalStatus_t(* OtaPalResetDevice_t)(OtaFileContext_t *const pFileContext)
Reset the device.
Definition: ota_platform_interface.h:236
OtaPalStatus_t(* OtaPalActivateNewImage_t)(OtaFileContext_t *const pFileContext)
Activate the newest MCU image received via OTA.
Definition: ota_platform_interface.h:222
OtaPalStatus_t(* OtaPalAbort_t)(OtaFileContext_t *const pFileContext)
Abort an OTA transfer.
Definition: ota_platform_interface.h:133
OtaPalStatus_t(* OtaPalSetPlatformImageState_t)(OtaFileContext_t *const pFileContext, OtaImageState_t eState)
Attempt to set the state of the OTA update image.
Definition: ota_platform_interface.h:259
int16_t(* OtaPalWriteBlock_t)(OtaFileContext_t *const pFileContext, uint32_t offset, uint8_t *const pData, uint32_t blockSize)
Write a block of data to the specified file at the given offset.
Definition: ota_platform_interface.h:205
Macros, enums, variables, and definitions internal to the OTA Agent module and shared by other OTA mo...
OTA File Context Information.
Definition: ota_private.h:380
OTA pal Interface structure.
Definition: ota_platform_interface.h:292
OtaPalSetPlatformImageState_t setPlatformImageState
Set the state of the OTA update image.
Definition: ota_platform_interface.h:303
OtaPalWriteBlock_t writeBlock
Write a block of data to the specified file at the given offset.
Definition: ota_platform_interface.h:300
OtaPalResetDevice_t reset
Reset the device.
Definition: ota_platform_interface.h:302
OtaPalAbort_t abort
Abort an OTA transfer.
Definition: ota_platform_interface.h:297
OtaPalGetPlatformImageState_t getPlatformImageState
Get the state of the OTA update image.
Definition: ota_platform_interface.h:304
OtaPalCreateFileForRx_t createFile
Create a new receive file.
Definition: ota_platform_interface.h:298
OtaPalActivateNewImage_t activate
Activate the file received over-the-air.
Definition: ota_platform_interface.h:301
OtaPalCloseFile_t closeFile
Authenticate and close the receive file.
Definition: ota_platform_interface.h:299