/[projects]/smsdaemon/main.cpp
ViewVC logotype

Annotation of /smsdaemon/main.cpp

Parent Directory Parent Directory | Revision Log Revision Log


Revision 175 - (hide annotations) (download)
Wed Dec 10 22:02:28 2008 UTC (15 years, 5 months ago) by torben
File size: 2698 byte(s)
Common.cpp, actually use the config file specified on command line

(the rest): enable optional use of syslog

1 torben 26 #include <string>
2 torben 114 #include <stdlib.h>
3 torben 175 #include <iostream>
4 torben 26
5     #include "daemon.h"
6 torben 158 #include "Common.h"
7 torben 157 #include "Logger.h"
8 torben 26
9 torben 149 #include "ModemTransceiver.h"
10 torben 151 #include "DebugTransceiver.h"
11     #include "SmsToolTransceiver.h"
12    
13 torben 132 #include "serialport/SerialPort.h"
14 torben 88 #include "SmsDaemon.h"
15 torben 146 #include "ConfigFile.h"
16 torben 26
17     using namespace std;
18    
19    
20 torben 57 bool sms_exit(int exitcode)
21     {
22     if (Common::instance()->isDaemon)
23     daemonCleanup();
24 torben 26
25 torben 57 exit(exitcode);
26     }
27    
28 torben 150 SerialPort* port = 0;
29     ISmsTransceiver* transceiver = 0;
30 torben 146
31 torben 150 void openModemPort()
32     {
33     Common* cmn = Common::instance();
34     ConfigFile* config = cmn->GetConfigfile();
35    
36 torben 168 port = new SerialPort ( config->GetValue("gsmmodem","serialport") );
37 torben 150 try
38     {
39     port->Open( SerialPort::BAUD_9600,
40     SerialPort::CHAR_SIZE_8,
41     SerialPort::PARITY_NONE,
42     SerialPort::STOP_BITS_1,
43     SerialPort::FLOW_CONTROL_HARD );
44     }
45     catch(std::exception &e)
46     {
47 torben 157 Logger::logMessage( string("PortOpen Exception: ") + e.what() );
48 torben 150 sms_exit(1);
49     }
50    
51     transceiver = new ModemTransceiver(*port);
52    
53     try
54     {
55     ((ModemTransceiver*)transceiver)->Init();
56     }
57     catch (std::exception& e)
58     {
59 torben 157 Logger::logMessage( string("ModemTransceiver Exception: ") + e.what() );
60 torben 150 sms_exit(2);
61     }
62     }
63     void closeModemPort()
64     {
65     port->Close();
66     delete port;
67     delete transceiver;
68     }
69    
70 torben 26 int main(int argc, char* argv[])
71     {
72     Common* cmn = Common::instance();
73    
74     //Set default values
75    
76 torben 157 Logger::setLogfile( "/var/log/smsdaemon.log");
77 torben 26 cmn->pidfile = "/var/run/smsdaemon.pid";
78     cmn->spooldir = "/var/spool/smsdaemon";
79    
80    
81     cmn->loadConfig(argc,argv);
82 torben 36 cmn->daemonStart = time(0);
83 torben 26
84 torben 146 ConfigFile* config = cmn->GetConfigfile();
85 torben 26
86 torben 146 bool res = config->Open( cmn->configFilePath ) ;
87     if (!res) {
88 torben 175 cout << "Could not open config file:" << cmn->configFilePath << endl;
89 torben 146 return 1;
90     }
91 torben 175
92     Logger::initLog();
93 torben 146
94    
95 torben 26 /////////////////////
96 torben 151 string transconf = config->GetValue("smsdaemon", "transceiver");
97 torben 26
98    
99 torben 154 if (transconf == "internal")
100 torben 151 {
101     openModemPort();
102     closeModemPort();
103     }
104     else if ( transconf == "debug" || transconf == "smstools")
105     {
106     //do nothing
107     }
108     else
109     {
110 torben 157 Logger::logMessage( string("Invalid transceiver setting: ")+transconf);
111 torben 151 exit(1);
112     }
113    
114 torben 150
115    
116 torben 146 if (Common::instance()->isDaemon)
117     {
118     lookup_uid_values();
119 torben 26 daemonize();
120 torben 150 cmn->daemonized = true;
121 torben 146 }
122 torben 26
123    
124 torben 154 if (transconf == "internal")
125 torben 151 {
126     openModemPort();
127     }
128     else if (transconf =="smstools")
129     {
130     transceiver = new SmsToolTransceiver();
131     }
132     else if (transconf == "debug")
133     {
134     transceiver = new DebugTransceiver();
135     }
136    
137 torben 26 //////////////////////////////////
138    
139 torben 150 SmsDaemon daemon(*transceiver);
140 torben 26
141 torben 88 daemon.Start();
142     //returns here when main-loop exits
143 torben 26
144 torben 30 if (cmn->isDaemon)
145     daemonCleanup();
146    
147 torben 151 if (transconf == "builtin")
148     {
149     closeModemPort();
150     }
151 torben 150
152 torben 30 return 0;
153 torben 26 }

  ViewVC Help
Powered by ViewVC 1.1.20