Junichi Katsu
/
ChuckChoroQ
ヌンチャクでコントロールするチョロQ機能に限定した物です。
Fork of StarBoardOrangeExample3 by
Diff: appconf.cpp
- Revision:
- 1:03c8bc666945
diff -r 127b9ca59547 -r 03c8bc666945 appconf.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/appconf.cpp Mon Sep 20 02:09:54 2010 +0000 @@ -0,0 +1,59 @@ +#include "appconf.h" +#include <ConfigFile.h> + +LocalFileSystem fs_local("local"); + +#define CONFIG_FILENAME "/local/SETUP.CFG" + +#define KEY_CHANNEL "Channel" +#define VALUE_CHANNEL_A "A" +#define VALUE_CHANNEL_B "B" +#define VALUE_CHANNEL_C "C" +#define VALUE_CHANNEL_D "D" + +/** + * Initialize a configuration. + * + * @param p A pointer to a configuration structure. + */ +void appconf_init(appconf_t *p) { + /* + * Channel default value is a channel C. + */ + p->channel = ChoroQ::ChC; +} + +/** + * Read a configuration. + * + * @param p A pointer to a configuration structure. + * + * @return Return 0 if read succeed. + */ +int appconf_read(appconf_t *p) { + ConfigFile cfg; + + if (!cfg.read(CONFIG_FILENAME)) { + return -1; + } + + char *key = KEY_CHANNEL; + char value[64]; + if (!cfg.getValue(key, value, sizeof(value))) { + return -2; + } + + if (strcmp(value, VALUE_CHANNEL_A) == 0) { + p->channel = ChoroQ::ChA; + } else if (strcmp(value, VALUE_CHANNEL_B) == 0) { + p->channel = ChoroQ::ChB; + } else if (strcmp(value, VALUE_CHANNEL_C) == 0) { + p->channel = ChoroQ::ChC; + } else if (strcmp(value, VALUE_CHANNEL_D) == 0) { + p->channel = ChoroQ::ChD; + } else { + return -3; + } + + return 0; +}