You are viewing an older revision! See the latest version

ConfigFile

Overview

Some applications need variable configurations.

For example, The configuration of account information for Twitter...

It's not good for publish if I implemented a program with a account information for Twitter, and it's not secure.

So, in this document we will show you a configuration file helper class for local file system on mbed.

You can use a variable configuration with it.

Basic concept

  • A configuration set consist from a key and a value.

http://mbed.org/media/uploads/shintamainjp/_scaled_keyvalue.png

How to use it?

Configuration file

We need a configuration file.

  • A comment line started by #.
  • Empty lines have not meaning.
  • Key=Value based configuration.
  • A space character in a side of a key and a value have a meaning.

Configurtion file example

#
# Configuration file for mbed.
#

MyKey1=This is a value for key1.
MyKey2=Value 2

Message1 = This is a test message no.1
 Message2  =  This is a test message no.2
  Message3   =   This is a test message no.3

Reading

This example codes read a file named input.cfg on mbed local file system.

#include "mbed.h"
#include "ConfigFile.h"
 
LocalFileSystem local("local");
ConfigFile cfg;

int main(void) {
    char *key = "MyKey";
    char value[BUFSIZ];
    /*
     * Read a configuration file from a mbed.
     */
    if (!cfg.read("/local/input.cfg")) {
        error("Failure to read a configuration file.\n");
    }

    /*
     * Get a configuration value.
     */
    if (cfg.getValue(key, &value[0], sizeof(value))) {
        printf("'%s'='%s'\n", key, value);
    }
}

A result of a example configuration file

'MyKey1'='This is a value for key1.'
'MyKey2'='Value 2'
'Message1 '=' This is a test message no.1'
' Message2  '='  This is a test message no.2'
'  Message3   '='   This is a test message no.3'
  • Ignored comments.
  • Ignored empty lines.
  • Keep spaces side of keys and values.

Writing

This example codes write a configuration to a file.

#include "mbed.h"
#include "ConfigFile.h"
 
LocalFileSystem local("local");
ConfigFile cfg;

int main(void) {

    /*
     * Set a configuration value.
     */
    if (!cfg.setValue("MyKey", "TestValue")) {
        error("Failure to set a value.\n");
    }    

    /*
     * Write to a file.
     */
    if (!cfg.read("/local/output.cfg")) {
        error("Failure to write a configuration file.\n");
    }
}

A result of a example configuration file

MyKey1=This is a value for key1.
MyKey2=Value 2
Message1 = This is a test message no.1
 Message2  =  This is a test message no.2
  Message3   =   This is a test message no.3

Library API

Import library

Public Member Functions

ConfigFile ()
Create a configuration file class.
~ConfigFile ()
Destroy a configuration file class.
bool getValue (char *key, char *value, size_t siz)
Get a value for a key.
bool setValue (char *key, char *value)
Set a set of a key and value.
bool remove (char *key)
Remove a config.
bool removeAll (void)
Remove all config.
int getCount ()
Get a number of configuration sets.
bool getKeyAndValue (int index, char *key, size_t keybufsiz, char *value, size_t valuebufsiz)
Get a key and a value.
bool read (char *file)
Read from the target file.
bool write (char *file, char *header=NULL, FileFormat ff=UNIX)
Write from the target file.

Example application

Import programConfigFile_TestProgram

A test program for ConfigFile library.

References


All wikipages