http://http://diytec.web.fc2.com/mark2r2/

Dependencies:   EthernetNetIf NTPClient_NetServices mbed ConfigFile

appconf.cpp

Committer:
mark2r2
Date:
2011-09-20
Revision:
0:08a4d61cd84c

File content as of revision 0:08a4d61cd84c:

/*************************************************************

 History
 2011/08/23 - Add nsvlong0,cpmlong0.
 2011/08/03 - variable stream number.


*************************************************************/
/**
 * =============================================================================
 * Application configuration for 'Expansion Board One' example no.2
 * http://mbed.org/users/shintamainjp/notebook/starboard_expbrd-one_ex2_en/
 * =============================================================================
 * Copyright (c) 2010 Shinichiro Nakamura (CuBeatSystems)
 *
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to deal
 * in the Software without restriction, including without limitation the rights
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be included in
 * all copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 * THE SOFTWARE.
 * =============================================================================
 */

#include "appconf.h"
#include "ConfigFile.h"

#define KEY_PACHUBE_APIKEY   "PACHUBE_APIKEY"
#define KEY_PACHUBE_FEEDID   "PACHUBE_FEEDID"
#define KEY_STREAM_NSV0      "nsv0"      //  2011/08/03
#define KEY_STREAM_CPM0      "cpm0"      //  2011/08/03
#ifdef DUALGM
#define KEY_STREAM_NSV1      "nsv1"      //  2011/08/03
#define KEY_STREAM_CPM1      "cpm1"      //  2011/08/03
#endif
#define KEY_STREAM_NSVLONG0   "nsvlong0"   //  2011/08/23
#define KEY_STREAM_CPMLONG0   "cpmlong0"   //  2011/08/23

//#define KEY_PACHUBE_INTERVAL "PACHUBE_INTERVAL"

/**
 * Initialize configuration.
 *
 * @param p A pointer to a application config.
 */
void appconf_init(appconf_t *p) {
    memset(p->apikey, 0, sizeof(p->apikey));
    memset(p->feedid, 0, sizeof(p->feedid));
    p->stream_nsv0 = -1; //default value 2011/08/03
    p->stream_cpm0 = -1; //default value 2011/08/03
#ifdef DUALGM
    p->stream_nsv1 = 2; //default value 2011/08/03
    p->stream_cpm1 = 3; //default value 2011/08/03
#endif
    p->stream_nsvlong0 = 0; //default value 2011/08/23
    p->stream_cpmlong0 = 1; //default value 2011/08/23

//    p->interval = 0;
}

/**
 * Read configuration.
 *
 * @param filename Filename.
 * @param p A pointer to a application config.
 * @return Return zero if it succeed.
 */
int appconf_read(char *filename, appconf_t *p) {
    ConfigFile cf;
    if (!cf.read(filename)) {
        return -1;
    }
    if (!cf.getValue(KEY_PACHUBE_APIKEY, p->apikey, sizeof(p->apikey))) {
        return -2;
    }    
    if (!cf.getValue(KEY_PACHUBE_FEEDID, p->feedid, sizeof(p->feedid))) {
        return -3;
    }
/*
    char buf[64];
    if (!cf.getValue(KEY_PACHUBE_INTERVAL, buf, sizeof(buf))) {
        return -4;
    } else {
        if (sscanf(buf, "%d", &(p->interval)) != 1) {
            return -5;
        }
    }
*/
// 2011/08/03 begin
    char buf[64];
    if(cf.getValue(KEY_STREAM_NSV0, buf, sizeof(buf))) {
      if(sscanf(buf, "%d", &(p->stream_nsv0)) !=1) {
        return -5;
      }
   }

    if(cf.getValue(KEY_STREAM_CPM0, buf, sizeof(buf))) {
      if(sscanf(buf, "%d", &(p->stream_cpm0)) !=1) {
        return -6;
      }
   }
#ifdef DUALGM
    if(cf.getValue(KEY_STREAM_NSV1, buf, sizeof(buf))) {
      if(sscanf(buf, "%d", &(p->stream_nsv1)) !=1) {
        return -7;
      }
   }

    if(cf.getValue(KEY_STREAM_CPM1, buf, sizeof(buf))) {
      if(sscanf(buf, "%d", &(p->stream_cpm1)) !=1) {
        return -8;
      }
   }
#endif
// 2011/08/03 end
    if(cf.getValue(KEY_STREAM_NSVLONG0, buf, sizeof(buf))) {     //  2011/08/23
      if(sscanf(buf, "%d", &(p->stream_nsvlong0)) !=1) {         //  2011/08/23
        return -9;                                              //  2011/08/23
      }                                                         //  2011/08/23
   }                                                            //  2011/08/23
    if(cf.getValue(KEY_STREAM_CPMLONG0, buf, sizeof(buf))) {     //  2011/08/23
      if(sscanf(buf, "%d", &(p->stream_cpmlong0)) !=1) {         //  2011/08/23
        return -10;                                              //  2011/08/23
      }                                                         //  2011/08/23
   }                                                            //  2011/08/23
    return 0;
}

/**
 * Write configuration.
 *
 * @param filename Filename.
 * @param p A pointer to a application config.
 * @return Return zero if it succeed.
 */
int appconf_write(char *filename, appconf_t *p) {
    ConfigFile cf;
    if (!cf.setValue(KEY_PACHUBE_APIKEY, p->apikey)) {
        return -1;
    }
    if (!cf.setValue(KEY_PACHUBE_FEEDID, p->feedid)) {
        return -2;
    }
/*
    char buf[64];
    snprintf(buf, sizeof(buf) - 1, "%d", p->interval);
    if (!cf.setValue(KEY_PACHUBE_INTERVAL, buf)) {
        return -3;
    }
*/
    if (!cf.write(filename)) {
        return -4;
    }
    return 0;
}