Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions nrfs/include/internal/requests/nrfs_mram_reqs.h
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
1 change: 0 additions & 1 deletion nrfs/include/internal/services/nrfs_mram.h
Original file line number Diff line number Diff line change
Expand Up @@ -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. */
Expand Down
9 changes: 9 additions & 0 deletions nrfs/include/services/nrfs_mram.h
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand Down Expand Up @@ -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
Expand Down
20 changes: 20 additions & 0 deletions nrfs/src/services/nrfs_mram.c
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
Expand All @@ -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;
}
Expand Down