#include #include #include "daemon.h" #include "common.h" #include "GsmModem.h" #include "serialport/SerialPort.h" #include "SmsDaemon.h" #include "ConfigFile.h" using namespace std; bool sms_exit(int exitcode) { if (Common::instance()->isDaemon) daemonCleanup(); exit(exitcode); } int main(int argc, char* argv[]) { Common* cmn = Common::instance(); //Set default values cmn->setLogfile( "/var/log/smsdaemon.log"); cmn->pidfile = "/var/run/smsdaemon.pid"; cmn->spooldir = "/var/spool/smsdaemon"; cmn->loadConfig(argc,argv); 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); return 1; } ///////////////////// //Write a delimiter line in the logfile to seperate sessions if (Common::instance()->isDaemon) { lookup_uid_values(); daemonize(); } SerialPort port( config->GetValue("smsdaemon","serialport") ); try { port.Open( SerialPort::BAUD_9600, SerialPort::CHAR_SIZE_8, SerialPort::PARITY_NONE, SerialPort::STOP_BITS_1, SerialPort::FLOW_CONTROL_HARD ); } catch(std::exception &e) { cmn->logMessage( string("PortOpen Exception: ") + e.what() ); sms_exit(1); } GsmModem modem(port); try { modem.Init(); } catch (std::exception& e) { cmn->logMessage( string("GsmModem Exception: ") + e.what() ); sms_exit(2); } ////////////////////////////////// SmsDaemon daemon(modem); daemon.Start(); //returns here when main-loop exits if (cmn->isDaemon) daemonCleanup(); return 0; }