diff --git a/MQTTSNGateway/src/MQTTSNGWProcess.cpp b/MQTTSNGateway/src/MQTTSNGWProcess.cpp index 1ae4e5f..bfe29ef 100644 --- a/MQTTSNGateway/src/MQTTSNGWProcess.cpp +++ b/MQTTSNGateway/src/MQTTSNGWProcess.cpp @@ -21,6 +21,7 @@ #include #include #include +#include #include "MQTTSNGWProcess.h" #include "Threading.h" @@ -74,6 +75,18 @@ void Process::initialize(int argc, char** argv) signal(SIGINT, signalHandler); signal(SIGTERM, signalHandler); signal(SIGHUP, signalHandler); + + _configFile = string(MQTTSNGW_CONFIG_DIRECTORY) + string(MQTTSNGW_CONFIG_FILE); + + int opt; + while ((opt = getopt(_argc, _argv, "f:")) != -1) + { + if ( opt == 'f' ) + { + _configFile = string(optarg); + } + } + WRITELOG("Using config file:[%s]\n", _configFile.c_str()); } int Process::getArgc() @@ -92,13 +105,11 @@ int Process::getParam(const char* parameter, char* value) char param[MQTTSNGW_PARAM_MAX]; FILE *fp; - string filename = string(MQTTSNGW_CONFIG_DIRECTORY) + string(MQTTSNGW_CONFIG_FILE); - int i = 0, j = 0; - if ((fp = fopen(filename.c_str(), "r")) == NULL) + if ((fp = fopen(_configFile.c_str(), "r")) == NULL) { - WRITELOG("No config file:[%s]\n", filename.c_str()); + WRITELOG("No config file:[%s]\n", _configFile.c_str()); return -1; } diff --git a/MQTTSNGateway/src/MQTTSNGWProcess.h b/MQTTSNGateway/src/MQTTSNGWProcess.h index c344503..f155f56 100644 --- a/MQTTSNGateway/src/MQTTSNGWProcess.h +++ b/MQTTSNGateway/src/MQTTSNGWProcess.h @@ -70,6 +70,7 @@ public: private: int _argc; char** _argv; + string _configFile; RingBuffer* _rb; Semaphore* _rbsem; Mutex _mt; diff --git a/MQTTSNGateway/src/MQTTSNGateway.cpp b/MQTTSNGateway/src/MQTTSNGateway.cpp index b965533..3610410 100644 --- a/MQTTSNGateway/src/MQTTSNGateway.cpp +++ b/MQTTSNGateway/src/MQTTSNGateway.cpp @@ -50,6 +50,7 @@ Gateway::~Gateway() void Gateway::initialize(int argc, char** argv) { char param[MQTTSNGW_PARAM_MAX]; + MultiTaskProcess::initialize(argc, argv); _params.gatewayId = 0; if (getParam("GatewayID", param) == 0) @@ -113,8 +114,6 @@ void Gateway::initialize(int argc, char** argv) } } } - - MultiTaskProcess::initialize(argc, argv); } void Gateway::run(void)