From bf0ab11b0a408833cdac7c0d7917b56c62e766b4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pawe=C5=82=20Pelikan?= Date: Wed, 23 Jul 2025 16:07:01 +0200 Subject: [PATCH] nrfs: Add internal req for MRAM Service --- .../internal/requests/nrfs_mram_reqs.h | 1 + nrfs/include/internal/services/nrfs_mram.h | 1 - nrfs/include/services/nrfs_mram.h | 9 +++++++++ nrfs/src/services/nrfs_mram.c | 20 +++++++++++++++++++ 4 files changed, 30 insertions(+), 1 deletion(-) diff --git a/nrfs/include/internal/requests/nrfs_mram_reqs.h b/nrfs/include/internal/requests/nrfs_mram_reqs.h index 64a1ac97..a3d2198c 100644 --- a/nrfs/include/internal/requests/nrfs_mram_reqs.h +++ b/nrfs/include/internal/requests/nrfs_mram_reqs.h @@ -15,6 +15,7 @@ extern "C" { enum { NRFS_MRAM_REQ_SET_LATENCY = NRFS_REQUEST_ID_DEF(NRFS_SERVICE_ID_MRAM, 0x01), + NRFS_MRAM_REQ_INTERNAL = NRFS_REQUEST_ID_DEF(NRFS_SERVICE_ID_MRAM, 0x02), }; #ifdef __cplusplus diff --git a/nrfs/include/internal/services/nrfs_mram.h b/nrfs/include/internal/services/nrfs_mram.h index 44fa493a..f16a4c53 100644 --- a/nrfs/include/internal/services/nrfs_mram.h +++ b/nrfs/include/internal/services/nrfs_mram.h @@ -17,7 +17,6 @@ extern "C" { typedef enum __NRFS_PACKED { MRAM_LATENCY_ALLOWED, MRAM_LATENCY_NOT_ALLOWED, - MRAM_LATENCY_INTERNAL_REQ } mram_latency_request_t; /** @brief MRAM set latency data structure. */ diff --git a/nrfs/include/services/nrfs_mram.h b/nrfs/include/services/nrfs_mram.h index 00438623..ac443b02 100644 --- a/nrfs/include/services/nrfs_mram.h +++ b/nrfs/include/services/nrfs_mram.h @@ -17,6 +17,7 @@ extern "C" { typedef enum __NRFS_PACKED { NRFS_MRAM_LATENCY_REQ_APPLIED, /** sent only as a response to the request MRAM_LATENCY_NOT_ALLOWED */ + NRFS_MRAM_INTERNAL_REQ_APPLIED, /** internal response */ NRFS_MRAM_LATENCY_REQ_REJECTED, /** Request rejected. */ } nrfs_mram_latency_evt_type_t; @@ -59,6 +60,14 @@ void nrfs_mram_uninit(void); */ nrfs_err_t nrfs_mram_set_latency(mram_latency_request_t mram_latency_request, void * p_context); +/** + * @brief Function for internal usage. + * + * @param[in] enable on/off setting + * @param[in] p_context Opaque user data that will be passed to registered callback. + */ +nrfs_err_t nrfs_mram_internal_switch(bool enable, void * p_context); + #ifdef __cplusplus } #endif diff --git a/nrfs/src/services/nrfs_mram.c b/nrfs/src/services/nrfs_mram.c index a9135fc5..a2b68786 100644 --- a/nrfs/src/services/nrfs_mram.c +++ b/nrfs/src/services/nrfs_mram.c @@ -44,6 +44,21 @@ nrfs_err_t nrfs_mram_set_latency(mram_latency_request_t mram_latency_request, vo return nrfs_backend_send(&req, sizeof(req)); } +nrfs_err_t nrfs_mram_internal_switch(bool enable, void * p_context) +{ + nrfs_mram_set_latency_t req; + + NRFS_SERVICE_HDR_FILL(&req, NRFS_MRAM_REQ_INTERNAL); + req.ctx.ctx = (uint32_t)p_context; + + if (enable) { + req.data.mram_latency_request = MRAM_LATENCY_ALLOWED; + } else { + req.data.mram_latency_request = MRAM_LATENCY_NOT_ALLOWED; + } + return nrfs_backend_send(&req, sizeof(req)); +} + void nrfs_mram_service_notify(void *p_notification, size_t size) { if (!m_cb.handler || !m_cb.is_initialized) { @@ -65,6 +80,11 @@ void nrfs_mram_service_notify(void *p_notification, size_t size) m_cb.handler(&evt, (void *)p_data->ctx.ctx); break; + case NRFS_MRAM_REQ_INTERNAL: /* internal response */ + evt.type = NRFS_MRAM_INTERNAL_REQ_APPLIED; + m_cb.handler(&evt, (void *)p_data->ctx.ctx); + break; + default: break; }