Skip to main content

How To: Configuration

twr_config functions help you to easily create a variable or structure of variables that are saved in internal EEPROM memory.

The library will automatically initialize your configuration when:

  • It runs for the first time
  • The signature parameter is different
  • The new configuration structure has a different length
  • The EEPROM is corrupted



The first parameter, signature, is a unique number for your firmware. This way if you load a different firmware to the Core Module that is using a configuration structure with the same length, the library will see that and initialize the configuration properly again.

The last parameter init_config can be:

  • NULL - the config structure is zeroed when initialized
  • Pointer to structure - the init_config is copied to the config structure when initialized

In the simple example below there is a structure for saving a PIR Module configuration (report_interval, pir_sensitivity, pir_deadtime).

In the application_init() is some showcase on how to use some of the functions available in the twr_config_* SDK module.

Simple PIR Module Configuration Code Example

#include <application.h>

// Example structure that save configuration of PIR detector
typedef struct config_t
uint16_t report_interval;
uint8_t pir_sensitivity;
uint16_t pir_deadtime;

} config_t;

config_t config;

void application_init()
// Load configuration
twr_config_init(0x12345678, &config, sizeof(config), NULL);

// Change parameter
config.report_interval = 500;

// Save config to EEPROM

// Reset configuration