Smart Remote 3 nRF52 v1.2
Copy URL
Source
Bootloader
bootloader
dfu
nrf_dfu_req_handler.h
1
/*$$$LICENCE_NORDIC_STANDARD<2016>$$$*/
9
#ifndef NRF_DFU_REQ_HANDLER_H__
10
#define NRF_DFU_REQ_HANDLER_H__
11
12
#include <stdint.h>
13
#include <stdbool.h>
14
#include "nrf_dfu_types.h"
15
#include "nrf_dfu_handling_error.h"
16
17
#ifdef __cplusplus
18
extern
"C"
19
{
20
#endif
21
24
typedef
enum
25
{
26
NRF_DFU_OBJ_TYPE_INVALID
,
27
NRF_DFU_OBJ_TYPE_COMMAND
,
28
NRF_DFU_OBJ_TYPE_DATA
,
29
}
nrf_dfu_obj_type_t
;
30
31
36
typedef
enum
37
{
38
39
NRF_DFU_OBJECT_OP_NONE
= 0,
40
NRF_DFU_OBJECT_OP_CREATE
= 1,
41
NRF_DFU_OBJECT_OP_WRITE
= 2,
42
NRF_DFU_OBJECT_OP_EXECUTE
= 3,
43
NRF_DFU_OBJECT_OP_CRC
= 4,
44
NRF_DFU_OBJECT_OP_SELECT
= 6,
45
NRF_DFU_OBJECT_OP_OTHER
= 7,
46
}
nrf_dfu_req_op_t
;
47
48
49
#if defined(__CC_ARM)
50
#pragma push
51
#pragma anon_unions
52
#elif defined(__ICCARM__)
53
#pragma language=extended
54
#elif defined(__GNUC__)
55
// Anonymous unions are enabled by default.
56
#endif
57
58
63
typedef
struct
64
{
65
nrf_dfu_req_op_t
req_type
;
67
union
68
{
69
struct
70
{
71
uint32_t
obj_type
;
72
uint32_t
object_size
;
73
};
74
struct
75
{
76
uint8_t
const
*
p_req
;
77
uint32_t
req_len
;
78
};
79
};
80
}
nrf_dfu_req_t
;
81
82
85
typedef
struct
86
{
87
uint32_t
max_size
;
88
uint32_t
offset
;
89
uint32_t
crc
;
90
}
nrf_dfu_res_t
;
91
92
#if defined(__CC_ARM)
93
#pragma pop
94
#elif defined(__ICCARM__)
95
// Leave anonymous unions enabled.
96
#elif defined(__GNUC__)
97
// Anonymous unions are enabled by default.
98
#endif
99
100
typedef
void (* nrf_dfu_req_callback)(
void
const
* p_context,
nrf_dfu_res_code_t
res_code,
nrf_dfu_res_t
const
* dfu_res);
101
102
110
ret_code_t
nrf_dfu_req_handler_init
(
void
);
111
112
122
ret_code_t
nrf_dfu_req_handler_on_req
(
void
const
* p_context,
123
nrf_dfu_req_t
const
* p_req,
124
nrf_dfu_req_callback p_callback);
125
126
132
void
nrf_dfu_req_handler_reset_if_dfu_complete
(
void
);
133
134
135
#ifdef __cplusplus
136
}
137
#endif
138
139
#endif // NRF_DFU_REQ_HANDLER_H__
140