1 /* 2 * Copyright (c) 2024 Nordic Semiconductor ASA 3 * 4 * SPDX-License-Identifier: Apache-2.0 5 */ 6 7 #ifndef NRFS_MRAM_H 8 #define NRFS_MRAM_H 9 10 #include <internal/services/nrfs_mram.h> 11 12 #ifdef __cplusplus 13 extern "C" { 14 #endif 15 16 /** @brief MRAM latency service response notification types. */ 17 typedef enum __NRFS_PACKED { 18 NRFS_MRAM_LATENCY_REQ_APPLIED, /** sent only as a response to 19 the request MRAM_LATENCY_NOT_ALLOWED */ 20 NRFS_MRAM_LATENCY_REQ_REJECTED, /** Request rejected. */ 21 } nrfs_mram_latency_evt_type_t; 22 23 /** @brief MRAM latency service response data structure. */ 24 typedef struct { 25 nrfs_mram_latency_evt_type_t type; 26 } nrfs_mram_latency_evt_t; 27 28 /** @brief MRAM latency event handler type. */ 29 typedef void (*nrfs_mram_latency_evt_handler_t)(nrfs_mram_latency_evt_t const * p_evt, 30 void * context); 31 32 /** 33 * @brief Function for initializing the MRAM latency service. 34 * 35 * @param[in] handler Function called as a response to the request. 36 * 37 * @retval NRFS_SUCCESS Service initialized successfully. 38 * @retval NRFS_ERR_INVALID_STATE Service was already initialized. 39 */ 40 nrfs_err_t nrfs_mram_init(nrfs_mram_latency_evt_handler_t handler); 41 42 /** 43 * @brief Function for uninitializing the MRAM latency service. 44 * 45 * @warning Notifications from previous requests are dropped after service uninitialization. 46 */ 47 void nrfs_mram_uninit(void); 48 49 /** 50 * @brief Function for requesting a new acceptable MRAM latency. 51 * 52 * @param[in] mram_latency_request Enum value: MRAM_LATENCY_ALLOWED 53 MRAM_LATENCY_NOT_ALLOWED 54 * @param[in] p_context Opaque user data that will be passed to registered callback. 55 * 56 * @retval NRFS_SUCCESS Request sent successfully. 57 * @retval NRFS_ERR_INVALID_STATE Service is uninitialized. 58 * @retval NRFS_ERR_IPC Backend returned error during request sending. 59 */ 60 nrfs_err_t nrfs_mram_set_latency(mram_latency_request_t mram_latency_request, void * p_context); 61 62 #ifdef __cplusplus 63 } 64 #endif 65 66 #endif /* NRFS_MRAM_H */ 67