# nvm.h File Reference

Non-Volatile Memory Manager. More...

`#include <stdint.h>`
`#include <stdbool.h>`
`#include "em_device.h"`
Include dependency graph for nvm.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

## Data Structures

struct | NVM_Object_Descriptor_t
| Describes the properties of an object in a page. More...
struct | NVM_Page_Descriptor_t
| Describes the properties of a page. More...
struct | NVM_Config_t
| Configuration structure. More...

## Typedefs

typedef NVM_Object_Descriptor_t | NVM_Page_t []
| A collection of object descriptors that make up a page.
typedef NVM_Page_Descriptor_t | NVM_Page_Table_t []
| The list of pages registered for use.

## Enumerations

enum | NVM_Page_Type_t { nvmPageTypeNormal = 0, nvmPageTypeWear = 1 }
| Enum describing the type of logical page we have; normal or wear. More...
enum | NVM_Result_t { nvmResultOk = 0, nvmResultAddrInvalid = 1, nvmResultInputInvalid = 2, nvmResultDataInvalid = 3, nvmResultWriteLock = 4, nvmResultNoPages = 5, nvmResultNoPage = 6, nvmResultErrorInitial = 7, nvmResultError = 8 }
| Result type for all the API functions. More...

## Functions

NVM_Result_t | NVM_Init (NVM_Config_t const *config)
| Initialize the NVM manager.
NVM_Result_t | NVM_Erase (uint32_t erasureCount)
| Erase the entire NVM.
NVM_Result_t | NVM_Write (uint16_t pageId, uint8_t objectId)
| Write an object or a page.
NVM_Result_t | NVM_Read (uint16_t pageId, uint8_t objectId)
| Read an object or an entire page.
uint32_t | NVM_WearLevelGet (void)
| Get maximum wear level.

## Detailed Description

Non-Volatile Memory Manager.

Author:
  Energy Micro AS

Version:
  3.20.2

This is a software manager module for non-volatile memory. It consists of nvm.c, nvm.h and nvm_hal.h. In addition to this it requires a valid nvm_hal.c. This lets the manager work with different types of memory. Files nvm_config_template.* shows possible configuration of objects and could be used as template for customer application.

The module has the following public interfaces:

NVM_Init() NVM_Erase() NVM_Write() NVM_Read() NVM_WearLevel()

Users have to be aware of the following limitations of the module:

- Maximum 254 objects in a page and 256 pages (limited by uint8_t).

## License

(C) Copyright 2013 Energy Micro AS, http://www.energymicro.com

Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:

1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. 4. The source and compiled code may only be used on Energy Micro "EFM32" microcontrollers and "EFR4" radios.

DISCLAIMER OF WARRANTY/LIMITATION OF REMEDIES: Energy Micro AS has no obligation to support this Software. Energy Micro AS is providing the Software "AS IS", with no express or implied warranties of any kind, including, but not limited to, any implied warranties of merchantability or fitness for any particular purpose or warranties against infringement of any proprietary rights of a third party.

Energy Micro AS will not be liable for any consequential, incidental, or special damages, or any other relief, or for any claim by any third party, arising from your use of this Software.

Definition in file nvm.h.