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

Contents of /smsdaemon/main.cpp

Parent Directory Parent Directory | Revision Log Revision Log


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

  ViewVC Help
Powered by ViewVC 1.1.20