Shinichiro Nakamura
/
Drive2ChoroQ
This is a demonstration of two Choro Q Hybrid cars.
appconf.cpp@0:d825f8dae2be, 2010-11-22 (annotated)
- Committer:
- shintamainjp
- Date:
- Mon Nov 22 12:23:23 2010 +0000
- Revision:
- 0:d825f8dae2be
Initial version.
Who changed what in which revision?
User | Revision | Line number | New 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 | } |