--- smsdaemon/main.cpp 2008/12/07 21:42:15 150 +++ smsdaemon/main.cpp 2008/12/22 22:22:42 214 @@ -1,10 +1,16 @@ #include #include +#include #include "daemon.h" -#include "common.h" +#include "Common.h" +#include "Logger.h" #include "ModemTransceiver.h" +#include "DebugTransceiver.h" +#include "SmsToolTransceiver.h" +#include "ProxyTransceiver.h" + #include "serialport/SerialPort.h" #include "SmsDaemon.h" #include "ConfigFile.h" @@ -14,8 +20,8 @@ bool sms_exit(int exitcode) { - if (Common::instance()->isDaemon) - daemonCleanup(); + if (Common::instance()->isDaemon) + daemonCleanup(); exit(exitcode); } @@ -28,18 +34,25 @@ Common* cmn = Common::instance(); ConfigFile* config = cmn->GetConfigfile(); - port = new SerialPort ( config->GetValue("smsdaemon","serialport") ); + std::string portstr = config->GetValue("gsmmodem","serialport",""); + if (portstr == "") + { + Logger::logMessage("'serialport' not defined in config file"); + sms_exit(2); + } + + port = new SerialPort ( portstr ); try { - port->Open( SerialPort::BAUD_9600, - SerialPort::CHAR_SIZE_8, - SerialPort::PARITY_NONE, - SerialPort::STOP_BITS_1, - SerialPort::FLOW_CONTROL_HARD ); + port->Open( SerialPort::BAUD_9600, + SerialPort::CHAR_SIZE_8, + SerialPort::PARITY_NONE, + SerialPort::STOP_BITS_1, + SerialPort::FLOW_CONTROL_HARD ); } - catch(std::exception &e) + catch (std::exception &e) { - cmn->logMessage( string("PortOpen Exception: ") + e.what() ); + Logger::logMessage( string("PortOpen Exception: ") + e.what() ); sms_exit(1); } @@ -51,7 +64,7 @@ } catch (std::exception& e) { - cmn->logMessage( string("ModemTransceiver Exception: ") + e.what() ); + Logger::logMessage( string("ModemTransceiver Exception: ") + e.what() ); sms_exit(2); } } @@ -68,7 +81,7 @@ //Set default values - cmn->setLogfile( "/var/log/smsdaemon.log"); + Logger::setLogfile( "/var/log/smsdaemon.log"); cmn->pidfile = "/var/run/smsdaemon.pid"; cmn->spooldir = "/var/spool/smsdaemon"; @@ -77,41 +90,79 @@ cmn->daemonStart = time(0); ConfigFile* config = cmn->GetConfigfile(); - + bool res = config->Open( cmn->configFilePath ) ; - if (!res) { - cmn->logMessage(string("Could not open config file:") + cmn->configFilePath); + if (!res) + { + cout << "Could not open config file:" << cmn->configFilePath << endl; return 1; } - + + Logger::initLog(); + ///////////////////// - + string transconf = config->GetValue("smsdaemon", "transceiver", ""); + + if (transconf == "") + { + Logger::logMessage("No transceiver defined in config file"); + exit(1); + } + else if (transconf == "internal") + { + openModemPort(); + closeModemPort(); + } + else if ( transconf == "debug" || transconf == "smstools") + { + //do nothing + } + else + { + Logger::logMessage( string("Invalid transceiver setting: ")+transconf); + exit(1); + } + - openModemPort(); - closeModemPort(); - - if (Common::instance()->isDaemon) + if (Common::instance()->isDaemon) { lookup_uid_values(); daemonize(); cmn->daemonized = true; } - openModemPort(); + + if (transconf == "internal") + { + openModemPort(); + } + else if (transconf =="smstools") + { + transceiver = new SmsToolTransceiver(); + } + else if (transconf == "debug") + { + transceiver = new DebugTransceiver(); + } + + ProxyTransceiver proxy(*transceiver); ////////////////////////////////// - SmsDaemon daemon(*transceiver); + SmsDaemon daemon(proxy); - daemon.Start(); + daemon.Start(); //returns here when main-loop exits - if (cmn->isDaemon) - daemonCleanup(); + if (cmn->isDaemon) + daemonCleanup(); - closeModemPort(); + if (transconf == "builtin") + { + closeModemPort(); + } return 0; }