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

Annotation of /smsdaemon/main.cpp

Parent Directory Parent Directory | Revision Log Revision Log


Revision 196 - (hide annotations) (download)
Thu Dec 18 06:53:29 2008 UTC (15 years, 5 months ago) by torben
File size: 2696 byte(s)
Make pretty

astyle -t -b -N

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 torben 196 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 torben 196 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 torben 150 }
45 torben 196 catch (std::exception &e)
46 torben 150 {
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 196
86 torben 146 bool res = config->Open( cmn->configFilePath ) ;
87 torben 196 if (!res)
88     {
89 torben 175 cout << "Could not open config file:" << cmn->configFilePath << endl;
90 torben 146 return 1;
91     }
92 torben 175
93     Logger::initLog();
94 torben 146
95 torben 196
96 torben 26 /////////////////////
97 torben 151 string transconf = config->GetValue("smsdaemon", "transceiver");
98 torben 26
99 torben 196
100     if (transconf == "internal")
101 torben 151 {
102     openModemPort();
103     closeModemPort();
104 torben 196 }
105     else if ( transconf == "debug" || transconf == "smstools")
106 torben 151 {
107     //do nothing
108     }
109     else
110     {
111 torben 157 Logger::logMessage( string("Invalid transceiver setting: ")+transconf);
112 torben 151 exit(1);
113     }
114    
115 torben 150
116 torben 196
117     if (Common::instance()->isDaemon)
118 torben 146 {
119     lookup_uid_values();
120 torben 26 daemonize();
121 torben 150 cmn->daemonized = true;
122 torben 146 }
123 torben 26
124    
125 torben 154 if (transconf == "internal")
126 torben 151 {
127     openModemPort();
128     }
129     else if (transconf =="smstools")
130     {
131     transceiver = new SmsToolTransceiver();
132 torben 196 }
133 torben 151 else if (transconf == "debug")
134     {
135     transceiver = new DebugTransceiver();
136     }
137    
138 torben 26 //////////////////////////////////
139    
140 torben 150 SmsDaemon daemon(*transceiver);
141 torben 26
142 torben 196 daemon.Start();
143 torben 88 //returns here when main-loop exits
144 torben 26
145 torben 196 if (cmn->isDaemon)
146     daemonCleanup();
147 torben 30
148 torben 151 if (transconf == "builtin")
149     {
150     closeModemPort();
151     }
152 torben 150
153 torben 30 return 0;
154 torben 26 }

  ViewVC Help
Powered by ViewVC 1.1.20