1 /*
2  * Copyright (c) 2024 Nordic Semiconductor ASA
3  *
4  * SPDX-License-Identifier: Apache-2.0
5  */
6 
7 #ifndef NRFS_RESET_H
8 #define NRFS_RESET_H
9 
10 #include <internal/services/nrfs_reset.h>
11 
12 #ifdef __cplusplus
13 extern "C" {
14 #endif
15 
16 /** @brief Reset service event types. */
17 typedef enum __NRFS_PACKED {
18 	NRFS_RESET_EVT_DONE,   /** Reset done. */
19 	NRFS_RESET_EVT_REJECT, /** Request rejected. */
20 } nrfs_reset_evt_type_t;
21 
22 /** @brief Reset service event. */
23 typedef struct {
24 	nrfs_reset_evt_type_t type; /** Event type. */
25 } nrfs_reset_evt_t;
26 
27 /** @brief Reset service event handler type. */
28 typedef void (*nrfs_reset_evt_handler_t)(nrfs_reset_evt_t const * p_evt);
29 
30 /**
31  * @brief Function for initializing the RESET service.
32  *
33  * @param[in] handler   Function called as a response to the request.
34  *
35  * @retval NRFS_SUCCESS           Service initialized successfully.
36  * @retval NRFS_ERR_INVALID_STATE Service was already initialized.
37  */
38 nrfs_err_t nrfs_reset_init(nrfs_reset_evt_handler_t handler);
39 
40 /**
41  * @brief Function for uninitializing the RESET service.
42  *
43  * @warning Notifications from previous requests are dropped after service uninitialization.
44  */
45 void nrfs_reset_uninit(void);
46 
47 /**
48  * @brief Function for requesting a reset of all services.
49  *
50  * @retval NRFS_SUCCESS           Request sent successfully.
51  * @retval NRFS_ERR_INVALID_STATE Service is uninitialized.
52  * @retval NRFS_ERR_IPC           Backend returned error during request sending.
53  */
54 nrfs_err_t nrfs_request_reset(void);
55 
56 #ifdef __cplusplus
57 }
58 #endif
59 
60 #endif /* NRFS_RESET_H */
61