--- smsdaemon/main.cpp 2008/06/09 18:15:53 26 +++ smsdaemon/main.cpp 2008/06/13 10:10:06 75 @@ -1,4 +1,3 @@ -#include #include #include @@ -58,10 +57,11 @@ } else { - modem.SendSms(sms[i].sender, "Unknown command!"); + modem.SendSms(sms[i].sender, "Unknown command!", false); } modem.DeleteSms(sms[i].sms_index); + cmn->smsCounter.incomming++; } if (sms.size() == 0) @@ -73,6 +73,13 @@ } } +bool sms_exit(int exitcode) +{ + if (Common::instance()->isDaemon) + daemonCleanup(); + + exit(exitcode); +} int main(int argc, char* argv[]) { @@ -84,10 +91,11 @@ cmn->pidfile = "/var/run/smsdaemon.pid"; cmn->spooldir = "/var/spool/smsdaemon"; - cmn->uid = 500; - cmn->gid = 500; + cmn->uid = 1000; + cmn->gid = 1000; cmn->loadConfig(argc,argv); + cmn->daemonStart = time(0); ///////////////////// @@ -101,19 +109,47 @@ cmn->pluginManager.LoadPlugins(); - SerialPort port("/dev/ttyS1" ); - port.Open( SerialPort::BAUD_9600 ); + 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); + } + ////////////////////////////////// - Common::instance()->logMessage("SMS daemon started"); + cmn->logMessage("SMS daemon started"); modem.DeleteAllSms(); main_loop(modem); + cmn->logMessage( cmn->getStatusMessage() ); + + if (cmn->isDaemon) + daemonCleanup(); + + return 0; }