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

Contents of /smsdaemon/main.cpp

Parent Directory Parent Directory | Revision Log Revision Log


Revision 175 - (show 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 #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 cout << "Could not open config file:" << cmn->configFilePath << endl;
89 return 1;
90 }
91
92 Logger::initLog();
93
94
95 /////////////////////
96 string transconf = config->GetValue("smsdaemon", "transceiver");
97
98
99 if (transconf == "internal")
100 {
101 openModemPort();
102 closeModemPort();
103 }
104 else if ( transconf == "debug" || transconf == "smstools")
105 {
106 //do nothing
107 }
108 else
109 {
110 Logger::logMessage( string("Invalid transceiver setting: ")+transconf);
111 exit(1);
112 }
113
114
115
116 if (Common::instance()->isDaemon)
117 {
118 lookup_uid_values();
119 daemonize();
120 cmn->daemonized = true;
121 }
122
123
124 if (transconf == "internal")
125 {
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 //////////////////////////////////
138
139 SmsDaemon daemon(*transceiver);
140
141 daemon.Start();
142 //returns here when main-loop exits
143
144 if (cmn->isDaemon)
145 daemonCleanup();
146
147 if (transconf == "builtin")
148 {
149 closeModemPort();
150 }
151
152 return 0;
153 }

  ViewVC Help
Powered by ViewVC 1.1.20