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

Contents of /smsdaemon/main.cpp

Parent Directory Parent Directory | Revision Log Revision Log


Revision 154 - (show annotations) (download)
Mon Dec 8 13:48:52 2008 UTC (15 years, 5 months ago) by torben
File size: 2634 byte(s)
The correct config phrase for modemtransceiver is "internal"

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

  ViewVC Help
Powered by ViewVC 1.1.20