This is a demonstration of two Choro Q Hybrid cars.

Committer:
shintamainjp
Date:
Mon Nov 22 12:23:23 2010 +0000
Revision:
0:d825f8dae2be
Initial version.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
shintamainjp 0:d825f8dae2be 1 #include "appconf.h"
shintamainjp 0:d825f8dae2be 2 #include <ConfigFile.h>
shintamainjp 0:d825f8dae2be 3
shintamainjp 0:d825f8dae2be 4 LocalFileSystem fs_local("local");
shintamainjp 0:d825f8dae2be 5
shintamainjp 0:d825f8dae2be 6 /*
shintamainjp 0:d825f8dae2be 7 * Configuration File Example.
shintamainjp 0:d825f8dae2be 8 *
shintamainjp 0:d825f8dae2be 9 * Ch1=A
shintamainjp 0:d825f8dae2be 10 * Ch2=B
shintamainjp 0:d825f8dae2be 11 */
shintamainjp 0:d825f8dae2be 12
shintamainjp 0:d825f8dae2be 13 #define CONFIG_FILENAME "/local/SETUP.CFG"
shintamainjp 0:d825f8dae2be 14
shintamainjp 0:d825f8dae2be 15 #define KEY_CH1 "Ch1"
shintamainjp 0:d825f8dae2be 16 #define KEY_CH2 "Ch2"
shintamainjp 0:d825f8dae2be 17 #define VALUE_CHANNEL_A "A"
shintamainjp 0:d825f8dae2be 18 #define VALUE_CHANNEL_B "B"
shintamainjp 0:d825f8dae2be 19 #define VALUE_CHANNEL_C "C"
shintamainjp 0:d825f8dae2be 20 #define VALUE_CHANNEL_D "D"
shintamainjp 0:d825f8dae2be 21
shintamainjp 0:d825f8dae2be 22 /**
shintamainjp 0:d825f8dae2be 23 * Initialize a configuration.
shintamainjp 0:d825f8dae2be 24 *
shintamainjp 0:d825f8dae2be 25 * @param p A pointer to a configuration structure.
shintamainjp 0:d825f8dae2be 26 */
shintamainjp 0:d825f8dae2be 27 void appconf_init(appconf_t *p) {
shintamainjp 0:d825f8dae2be 28 p->ch1 = ChoroQ::ChA;
shintamainjp 0:d825f8dae2be 29 p->ch2 = ChoroQ::ChB;
shintamainjp 0:d825f8dae2be 30 }
shintamainjp 0:d825f8dae2be 31
shintamainjp 0:d825f8dae2be 32 /**
shintamainjp 0:d825f8dae2be 33 * Get a channel from the key.
shintamainjp 0:d825f8dae2be 34 *
shintamainjp 0:d825f8dae2be 35 * @param cf A pointer to a config file object.
shintamainjp 0:d825f8dae2be 36 * @param p A pointer to a application config.
shintamainjp 0:d825f8dae2be 37 * @param key The key.
shintamainjp 0:d825f8dae2be 38 * @param ch A pointer to the channel.
shintamainjp 0:d825f8dae2be 39 *
shintamainjp 0:d825f8dae2be 40 * @return Return 0 if it succeed.
shintamainjp 0:d825f8dae2be 41 */
shintamainjp 0:d825f8dae2be 42 static int getChannel(ConfigFile *cf, appconf_t *p, char *key, ChoroQ::Channel *ch) {
shintamainjp 0:d825f8dae2be 43 char value[64];
shintamainjp 0:d825f8dae2be 44 if (!cf->getValue(key, value, sizeof(value))) {
shintamainjp 0:d825f8dae2be 45 return -1;
shintamainjp 0:d825f8dae2be 46 }
shintamainjp 0:d825f8dae2be 47
shintamainjp 0:d825f8dae2be 48 if (strcmp(value, VALUE_CHANNEL_A) == 0) {
shintamainjp 0:d825f8dae2be 49 *ch = ChoroQ::ChA;
shintamainjp 0:d825f8dae2be 50 return 0;
shintamainjp 0:d825f8dae2be 51 } else if (strcmp(value, VALUE_CHANNEL_B) == 0) {
shintamainjp 0:d825f8dae2be 52 *ch = ChoroQ::ChB;
shintamainjp 0:d825f8dae2be 53 return 0;
shintamainjp 0:d825f8dae2be 54 } else if (strcmp(value, VALUE_CHANNEL_C) == 0) {
shintamainjp 0:d825f8dae2be 55 *ch = ChoroQ::ChC;
shintamainjp 0:d825f8dae2be 56 return 0;
shintamainjp 0:d825f8dae2be 57 } else if (strcmp(value, VALUE_CHANNEL_D) == 0) {
shintamainjp 0:d825f8dae2be 58 *ch = ChoroQ::ChD;
shintamainjp 0:d825f8dae2be 59 return 0;
shintamainjp 0:d825f8dae2be 60 } else {
shintamainjp 0:d825f8dae2be 61 return -2;
shintamainjp 0:d825f8dae2be 62 }
shintamainjp 0:d825f8dae2be 63 }
shintamainjp 0:d825f8dae2be 64
shintamainjp 0:d825f8dae2be 65 /**
shintamainjp 0:d825f8dae2be 66 * Read a configuration.
shintamainjp 0:d825f8dae2be 67 *
shintamainjp 0:d825f8dae2be 68 * @param p A pointer to a configuration structure.
shintamainjp 0:d825f8dae2be 69 *
shintamainjp 0:d825f8dae2be 70 * @return Return 0 if read succeed.
shintamainjp 0:d825f8dae2be 71 */
shintamainjp 0:d825f8dae2be 72 int appconf_read(appconf_t *p) {
shintamainjp 0:d825f8dae2be 73 ConfigFile cfg;
shintamainjp 0:d825f8dae2be 74
shintamainjp 0:d825f8dae2be 75 if (!cfg.read(CONFIG_FILENAME)) {
shintamainjp 0:d825f8dae2be 76 return -1;
shintamainjp 0:d825f8dae2be 77 }
shintamainjp 0:d825f8dae2be 78
shintamainjp 0:d825f8dae2be 79 if (getChannel(&cfg, p, KEY_CH1, &p->ch1) != 0) {
shintamainjp 0:d825f8dae2be 80 return -2;
shintamainjp 0:d825f8dae2be 81 }
shintamainjp 0:d825f8dae2be 82 if (getChannel(&cfg, p, KEY_CH2, &p->ch2) != 0) {
shintamainjp 0:d825f8dae2be 83 return -3;
shintamainjp 0:d825f8dae2be 84 }
shintamainjp 0:d825f8dae2be 85
shintamainjp 0:d825f8dae2be 86 return 0;
shintamainjp 0:d825f8dae2be 87 }