Nordic Semiconductor nRF5 AirFuel SDK  version 2.2.0
PRU persistant storage API

Data Structures

struct  pru_pstorage_appdata
 PRU pstorage data container. More...
 

Persistant Storage API functions

typedef struct pru_pstorage_appdata pru_pstorage_appdata_t
 PRU pstorage data container.
 
void pru_pstorage_sys_evt_handler (uint32_t event)
 Handles system callbacks. More...
 
void pru_pstorage_write (pru_pstorage_appdata_t *p_appdata)
 Writes application data to flash. More...
 
void pru_pstorage_status (bool *p_complete, bool *p_success)
 Read status of pstorage operation. More...
 
bool pru_pstorage_read (pru_pstorage_appdata_t *p_appdata)
 Reads application data from flash. More...
 
void pru_pstorage_erase_appdata (void)
 Erase all of PRU appdata.
 

Detailed Description

Function Documentation

void pru_pstorage_sys_evt_handler ( uint32_t  event)

Handles system callbacks.

Parameters
[in]eventEvent identifier.

Definition at line 51 of file pru_pstorage.c.

52 {
53  m_state = PRU_PSTORAGE_STATE_IDLE;
54  switch(event)
55  {
56  case NRF_EVT_FLASH_OPERATION_ERROR:
57  m_operation_success = false;
58  break;
59 
60  case NRF_EVT_FLASH_OPERATION_SUCCESS:
61  m_operation_success = true;
62  break;
63 
64  default:
65  break;
66  }
67 }
static volatile pru_pstorage_state m_state
Definition: pru_pstorage.c:42
static volatile bool m_operation_success
Definition: pru_pstorage.c:41
void pru_pstorage_write ( pru_pstorage_appdata_t p_appdata)

Writes application data to flash.

Parameters
[in]p_appdataPointer to data to be written.

Definition at line 69 of file pru_pstorage.c.

70 {
71  uint32_t err_code = NRF_ERROR_BUSY;
72  m_operation_success = false;
73 
74  if(p_appdata == NULL)
75  {
76  APP_ERROR_HANDLER(NRF_ERROR_INVALID_PARAM);
77  return;
78  }
79 
80  // Wait for pending PSTORAGE action to complete
81  while(m_state != PRU_PSTORAGE_STATE_IDLE)
82  ;
83 
84  while(err_code == NRF_ERROR_BUSY)
85  {
86  m_state = PRU_PSTORAGE_STATE_WRITE;
87  err_code = sd_flash_write((uint32_t*) PRU_PSTORAGE_FLASH_START_ADDR,
88  (uint32_t *) p_appdata,
89  sizeof(pru_pstorage_appdata_t) / sizeof(uint32_t));
90  }
91  APP_ERROR_CHECK(err_code);
92 }
static volatile pru_pstorage_state m_state
Definition: pru_pstorage.c:42
PRU pstorage data container.
Definition: pru_pstorage.h:35
static volatile bool m_operation_success
Definition: pru_pstorage.c:41
#define PRU_PSTORAGE_FLASH_START_ADDR
Definition: pru_pstorage.c:26
void pru_pstorage_status ( bool *  p_complete,
bool *  p_success 
)

Read status of pstorage operation.

Parameters
[in]p_completeIs the current action completed?
[in]p_successWas the last action successful?

Definition at line 116 of file pru_pstorage.c.

117 {
118  *p_complete = (m_state == PRU_PSTORAGE_STATE_IDLE);
119  *p_success = m_operation_success;
120 }
static volatile pru_pstorage_state m_state
Definition: pru_pstorage.c:42
static volatile bool m_operation_success
Definition: pru_pstorage.c:41
bool pru_pstorage_read ( pru_pstorage_appdata_t p_appdata)

Reads application data from flash.

Parameters
[in]p_appdataPointer to where data will be saved.
Returns
true when application data found, false otherwise.

Definition at line 94 of file pru_pstorage.c.

95 {
96  if(p_appdata != NULL)
97  memcpy(p_appdata, (void*) PRU_PSTORAGE_FLASH_START_ADDR, sizeof(pru_pstorage_appdata_t));
98 
99  return p_appdata != NULL && (*(uint32_t *) p_appdata != PRU_PSTORAGE_EMPTY_FLASH_PATTERN);
100 }
PRU pstorage data container.
Definition: pru_pstorage.h:35
#define PRU_PSTORAGE_EMPTY_FLASH_PATTERN
Definition: pru_pstorage.c:23
#define PRU_PSTORAGE_FLASH_START_ADDR
Definition: pru_pstorage.c:26