From 995ca76581e3f4134b1e9f3b2d9b4c3efb0855d4 Mon Sep 17 00:00:00 2001
From: guowenxue <guowenxue@gmail.com>
Date: Tue, 20 Nov 2018 13:28:47 +0800
Subject: [PATCH] Update nbiot all makefile and add nbiot parser code

---
 src/nbiotd/core/iotd_conf.c |  171 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 171 insertions(+), 0 deletions(-)

diff --git a/src/nbiotd/core/iotd_conf.c b/src/nbiotd/core/iotd_conf.c
index e69de29..036db5f 100644
--- a/src/nbiotd/core/iotd_conf.c
+++ b/src/nbiotd/core/iotd_conf.c
@@ -0,0 +1,171 @@
+/*********************************************************************************
+ *      Copyright:  (C) 2018 LingYun IoT System Studio
+ *                  All rights reserved.
+ *
+ *       Filename:  iotd_conf.c
+ *    Description:  This file is for iotd configure file parser API
+ *                 
+ *        Version:  1.0.0(2018年11月20日)
+ *         Author:  Guo Wenxue <guowenxue@gmail.com>
+ *      ChangeLog:  1, Release initial version on "2018年11月20日 12时11分46秒"
+ *                 
+ ********************************************************************************/
+#include "iotd_conf.h"
+#include "cp_iniparser.h"
+
+int parser_iotd_conf(char *conf_file, iotd_conf_t *iotd_conf)
+{
+    dictionary          *ini;
+    char                *str;
+    int                  data;
+    logger_t            *logger;
+    nbiot_conf_t        *nbiot;
+    lora_conf_t         *lora;
+    mqtt_conf_t         *mqtt;
+
+
+    if(!conf_file || !iotd_conf )
+    {
+        log_err("Invalid input arguments\n");
+        return -1;
+    }
+
+    ini = iniparser_load(conf_file);
+    if (ini==NULL) 
+    {   
+        log_err("cannot parse file: %s\n", conf_file);
+        return -2 ;
+    }   
+
+    memset(iotd_conf, 0, sizeof(*iotd_conf));
+    logger = &iotd_conf->logger;
+    nbiot = &iotd_conf->nbiot_conf;
+    lora = &iotd_conf->lora_conf;
+    mqtt = &iotd_conf->mqtt_conf;
+
+    /*+----------------------------------+
+      |  Program  logger configuration   |
+      +----------------------------------+*/
+
+    str = iniparser_getstring(ini, "log:file", NULL);
+    strncpy(logger->file, (strlen(str)>0 ? str : DEF_LOG_FILE), FILENAME_LEN);
+    log_nrml("Set log file [%s] from configuration.\n", logger->file);
+
+    /* If not set the log level from command line, then use the configure one*/
+    if( !(logger->flag&CP_LOGGER_LEVEL_OPT) )
+    {
+        logger->level = iniparser_getint(ini, "log:level", LOG_LEVEL_NRML);
+        log_nrml("Set log level[%d] from configuration.\n", logger->level);
+    }
+
+    /*  Set the log maximum file size in the configure file */
+    logger->size = iniparser_getint(ini, "log:size", DEF_LOG_MAXSIZE);
+    logger->size = logger->size>DEF_LOG_MAXSIZE ? DEF_LOG_MAXSIZE : logger->size;
+    log_nrml("Set log size [%dKiB] from configuration\n", logger->size);
+
+
+    /*+----------------------------------+
+      |    NB-IoT Module configuration   |
+      +----------------------------------+*/
+
+    data = iniparser_getint(ini, "nbiot:enable", 0);
+    nbiot->enable = data? ENABLE : DISABLE;
+    printf("Confiugre NB-IoT thread [%s]\n", nbiot->enable ? "enable" : "disable");
+
+    str = iniparser_getstring(ini, "nbiot:comport", NULL);
+    if( NULL!=str && strlen(str) > 0 )
+    {
+        strncpy(nbiot->comport, str, sizeof(nbiot->comport));
+    }
+    else
+    {
+        log_err("Configure without NB-IoT comport device, thread will not start\n");
+        nbiot->enable = DISABLE;
+    }
+    log_nrml("Configure NB-IoT comport device as '%s'\n", lora->comport);
+
+    nbiot->baudrate = iniparser_getint(ini, "nbiot:baudrate", 9600);
+    log_nrml("Configure NB-IoT comport baudrate as '%d'\n", nbiot->baudrate);
+
+    str = iniparser_getstring(ini, "nbiot:settings", "8N1N");
+    if( NULL!=str && strlen(str) >= 4 )
+    {
+        strncpy(nbiot->settings, str, 4);
+        log_nrml("Configure NB-IoT comport settings as '%s'\n", nbiot->settings);
+    }
+    else
+    {
+        log_err("Configure Invalid NB-IoT comport settings '%s', thread will not start.\n", str);
+        nbiot->enable = DISABLE;
+    }
+
+
+    /*+----------------------------------+
+      |     LoRa Module configuration    |
+      +----------------------------------+*/
+
+    data = iniparser_getint(ini, "lora:enable", 0);
+    lora->enable = data? ENABLE : DISABLE;
+    printf("Confiugre LoRa thread [%s]\n", lora->enable ? "enable" : "disable");
+
+    str = iniparser_getstring(ini, "lora:comport", NULL);
+    if( NULL!=str && strlen(str) > 0 )
+    {
+        strncpy(lora->comport, str, sizeof(lora->comport));
+    }
+    else
+    {
+        log_err("Configure without LoRa comport device, thread will not start\n");
+        lora->enable = DISABLE;
+    }
+    log_nrml("Configure LoRa comport device as '%s'\n", lora->comport);
+
+    lora->baudrate = iniparser_getint(ini, "lora:baudrate", 115200);
+    log_nrml("Configure LoRa comport baudrate as '%d'\n", lora->baudrate);
+
+    str = iniparser_getstring(ini, "lora:settings", "8N1N");
+    if( NULL!=str && strlen(str) >= 4 )
+    {
+        strncpy(lora->settings, str, 4);
+        log_nrml("Configure LoRa comport settings as '%s'\n", lora->settings);
+    }
+    else
+    {
+        log_err("Configure Invalid LoRa comport settings '%s', thread will not start.\n", str);
+        lora->enable = DISABLE;
+    }
+
+
+    /*+----------------------------------+
+      |     MQTT Server configuration    |
+      +----------------------------------+*/
+
+    data = iniparser_getint(ini, "mqtt:enable", 0);
+    mqtt->enable = data? ENABLE : DISABLE;
+    printf("Confiugre MQTT thread [%s]\n", lora->enable ? "enable" : "disable");
+
+    str = iniparser_getstring(ini, "mqtt:hostname", NULL);
+    if( !str || strlen(str) <= 0 )
+    {
+        log_err("Configure MQTT Server hostname invalid, thread will not start\n");
+        mqtt->enable = DISABLE;
+    }
+    strncpy(mqtt->hostname, str, HOSTN_LEN);
+    log_nrml("Configure MQTT Server hostname: \"%s\" \n", mqtt->hostname);
+
+    data = iniparser_getint(ini, "mqtt:port", 0);
+    if( !data )
+    {
+        log_err("Configure MQTT Server port invalid, thread will not start\n");
+        mqtt->enable = DISABLE;
+    }
+    mqtt->port = data;
+    log_nrml("Configure MQTT Server port: [%d]\n", mqtt->port);
+
+
+
+    iniparser_freedict(ini);
+
+    return 0;
+}
+

--
Gitblit v1.9.1