AWS IoT Over-the-air Update  v3.1.0
Client library for AWS IoT OTA
ota_os_interface.h
Go to the documentation of this file.
1 /*
2  * AWS IoT Over-the-air Update v3.1.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 
29 #ifndef OTA_OS_INTERFACE_H
30 #define OTA_OS_INTERFACE_H
31 
32 /* *INDENT-OFF* */
33 #ifdef __cplusplus
34  extern "C" {
35 #endif
36 /* *INDENT-ON* */
37 
38 
77 struct OtaEventContext;
78 
82 typedef struct OtaEventContext OtaEventContext_t;
83 
87 typedef enum
88 {
89  OtaRequestTimer = 0,
90  OtaSelfTestTimer,
91  OtaNumOfTimers
92 } OtaTimerId_t;
93 
98 typedef enum OtaOsStatus
99 {
111 
122 typedef OtaOsStatus_t ( * OtaInitEvent_t ) ( OtaEventContext_t * pEventCtx );
123 
138 typedef OtaOsStatus_t ( * OtaSendEvent_t )( OtaEventContext_t * pEventCtx,
139  const void * pEventMsg,
140  unsigned int timeout );
141 
157  void * pEventMsg,
158  uint32_t timeout );
159 
171 typedef OtaOsStatus_t ( * OtaDeinitEvent_t )( OtaEventContext_t * pEventCtx );
172 
183 typedef void ( * OtaTimerCallback_t )( OtaTimerId_t otaTimerId );
184 
201 typedef OtaOsStatus_t ( * OtaStartTimer_t ) ( OtaTimerId_t otaTimerId,
202  const char * const pTimerName,
203  const uint32_t timeout,
204  OtaTimerCallback_t callback );
205 
216 typedef OtaOsStatus_t ( * OtaStopTimer_t ) ( OtaTimerId_t otaTimerId );
217 
228 typedef OtaOsStatus_t ( * OtaDeleteTimer_t ) ( OtaTimerId_t otaTimerId );
229 
241 typedef void * ( * OtaMalloc_t ) ( size_t size );
242 
255 typedef void ( * OtaFree_t ) ( void * ptr );
256 
261 typedef struct OtaEventInterface
262 {
269 
274 typedef struct OtaTimerInterface
275 {
278  #ifndef __cplusplus
280  #else
281  OtaDeleteTimer_t deleteTimer;
282  #endif
284 
289 typedef struct OtaMallocInterface
290 {
291  /* MISRA rule 21.3 prohibits the use of malloc and free from stdlib.h, however, we're only
292  * defining the interface here. On FreeRTOS this is implemented with pvPortMalloc and vPortFree,
293  * and on Linux it's implemented with standard C malloc and free. This is a false positive. */
294  /* coverity[misra_c_2012_rule_21_3_violation] */
296  /* coverity[misra_c_2012_rule_21_3_violation] */
299 
304 typedef struct OtaOSInterface
305 {
310 
311 /* *INDENT-OFF* */
312 #ifdef __cplusplus
313  }
314 #endif
315 /* *INDENT-ON* */
316 
317 #endif /* ifndef OTA_OS_INTERFACE_H */
OtaEventInterface_t
Definition: ota_os_interface.h:262
OtaEventInterface_t::init
OtaInitEvent_t init
Initialization event.
Definition: ota_os_interface.h:263
OtaEventInterface_t::recv
OtaReceiveEvent_t recv
Receive data.
Definition: ota_os_interface.h:265
OtaOsSuccess
@ OtaOsSuccess
OTA OS interface success.
Definition: ota_os_interface.h:100
OtaEventContext_t
struct OtaEventContext OtaEventContext_t
Type definition for Event Context.
Definition: ota_os_interface.h:82
OtaReceiveEvent_t
OtaOsStatus_t(* OtaReceiveEvent_t)(OtaEventContext_t *pEventCtx, void *pEventMsg, uint32_t timeout)
Receive an OTA event.
Definition: ota_os_interface.h:156
OtaTimerCallback_t
void(* OtaTimerCallback_t)(OtaTimerId_t otaTimerId)
Timer callback.
Definition: ota_os_interface.h:183
OtaMallocInterface_t
OTA memory allocation interface.
Definition: ota_os_interface.h:290
OtaMalloc_t
void *(* OtaMalloc_t)(size_t size)
Allocate memory.
Definition: ota_os_interface.h:241
OtaSendEvent_t
OtaOsStatus_t(* OtaSendEvent_t)(OtaEventContext_t *pEventCtx, const void *pEventMsg, unsigned int timeout)
Sends an OTA event.
Definition: ota_os_interface.h:138
OtaOsEventQueueReceiveFailed
@ OtaOsEventQueueReceiveFailed
Failed to receive from the event queue.
Definition: ota_os_interface.h:103
OtaFree_t
void(* OtaFree_t)(void *ptr)
Free memory.
Definition: ota_os_interface.h:255
OtaOSInterface_t::event
OtaEventInterface_t event
OTA Event interface.
Definition: ota_os_interface.h:306
OtaOSInterface_t
OTA OS Interface.
Definition: ota_os_interface.h:305
OtaMallocInterface_t::malloc
OtaMalloc_t malloc
OTA memory allocate interface.
Definition: ota_os_interface.h:295
OtaEventInterface_t::pEventContext
OtaEventContext_t * pEventContext
Event context to store event information.
Definition: ota_os_interface.h:267
OtaDeinitEvent_t
OtaOsStatus_t(* OtaDeinitEvent_t)(OtaEventContext_t *pEventCtx)
Deinitialize the OTA Events mechanism.
Definition: ota_os_interface.h:171
OtaOSInterface_t::timer
OtaTimerInterface_t timer
OTA Timer interface.
Definition: ota_os_interface.h:307
OtaTimerInterface_t
OTA Retry Timer Interface.
Definition: ota_os_interface.h:275
OtaOsTimerStartFailed
@ OtaOsTimerStartFailed
Failed to create the timer.
Definition: ota_os_interface.h:106
OtaOsTimerStopFailed
@ OtaOsTimerStopFailed
Failed to stop the timer.
Definition: ota_os_interface.h:108
OtaTimerId_t
OtaTimerId_t
Enumeration for tracking multiple timers.
Definition: ota_os_interface.h:88
OtaOsTimerDeleteFailed
@ OtaOsTimerDeleteFailed
Failed to delete the timer.
Definition: ota_os_interface.h:109
OtaEventInterface_t::send
OtaSendEvent_t send
Send data.
Definition: ota_os_interface.h:264
OtaOsStatus_t
OtaOsStatus_t
The OTA OS interface return status.
Definition: ota_os_interface.h:99
OtaEventInterface_t::deinit
OtaDeinitEvent_t deinit
Deinitialize event.
Definition: ota_os_interface.h:266
OtaOsEventQueueDeleteFailed
@ OtaOsEventQueueDeleteFailed
Failed to delete the event queue.
Definition: ota_os_interface.h:104
OtaTimerInterface_t::start
OtaStartTimer_t start
Timer start state.
Definition: ota_os_interface.h:276
OtaOsTimerCreateFailed
@ OtaOsTimerCreateFailed
Failed to create the timer.
Definition: ota_os_interface.h:105
OtaOsEventQueueCreateFailed
@ OtaOsEventQueueCreateFailed
Failed to create the event queue.
Definition: ota_os_interface.h:101
OtaDeleteTimer_t
OtaOsStatus_t(* OtaDeleteTimer_t)(OtaTimerId_t otaTimerId)
Delete a timer.
Definition: ota_os_interface.h:228
OtaOsEventQueueSendFailed
@ OtaOsEventQueueSendFailed
Posting event message to the event queue failed.
Definition: ota_os_interface.h:102
OtaOSInterface_t::mem
OtaMallocInterface_t mem
OTA memory interface.
Definition: ota_os_interface.h:308
OtaTimerInterface_t::stop
OtaStopTimer_t stop
Timer stop state.
Definition: ota_os_interface.h:277
OtaOsTimerRestartFailed
@ OtaOsTimerRestartFailed
Failed to restart the timer.
Definition: ota_os_interface.h:107
OtaInitEvent_t
OtaOsStatus_t(* OtaInitEvent_t)(OtaEventContext_t *pEventCtx)
Initialize the OTA events.
Definition: ota_os_interface.h:122
OtaStopTimer_t
OtaOsStatus_t(* OtaStopTimer_t)(OtaTimerId_t otaTimerId)
Stop timer.
Definition: ota_os_interface.h:216
OtaStartTimer_t
OtaOsStatus_t(* OtaStartTimer_t)(OtaTimerId_t otaTimerId, const char *const pTimerName, const uint32_t timeout, OtaTimerCallback_t callback)
Start timer.
Definition: ota_os_interface.h:201
OtaMallocInterface_t::free
OtaFree_t free
OTA memory deallocate interface.
Definition: ota_os_interface.h:297