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

Annotation of /smsdaemon/main.cpp

Parent Directory Parent Directory | Revision Log Revision Log


Revision 158 - (hide annotations) (download)
Mon Dec 8 21:49:49 2008 UTC (15 years, 5 months ago) by torben
File size: 2669 byte(s)
rename:
	util.* -> Util.*
	common.* -> Common.*

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

  ViewVC Help
Powered by ViewVC 1.1.20