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);
    }
}
  • Ignore comments in a configuration file.
  • Ignore empty lines in a configuration file.
  • Keep spaces in 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.write("/local/output.cfg")) {
        error("Failure to write a configuration file.\n");
    }
}

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