Subversion Repositories HomeAutomation

Rev

Rev 1326 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | SVN | RSS feed

Rev Author Line No. Line
1309 runge 1
//============================================================================
2
// Name        : Atom.cpp
3
// Author      : Mattias Runge
4
// Version     : 2.0
5
// Copyright   : GPL
6
//============================================================================
7
 
8
#include <iostream>
9
#include <istream>
10
#include <ostream>
11
#include <string>
12
#include <fstream>
13
#include <iterator>
14
 
15
#include <stdio.h>
16
 
1310 runge 17
#include "version.h"
1309 runge 18
#include <boost/asio.hpp>
19
#include <boost/bind.hpp>
20
#include <boost/foreach.hpp>
21
#include <boost/program_options.hpp>
22
#include "broker/Broker.h"
1326 runge 23
#include "message/Header.h"
1309 runge 24
#include "message/Message.h"
25
#include "subscribers/monitor/Monitor.h"
26
#include "subscribers/cannet/CanNet.h"
27
#include "xml/Node.h"
1317 runge 28
#include "thread/Thread.h"
29
#include "net/UdpServer.h"
1309 runge 30
#include "xml/Node.h"
1311 runge 31
#include "protocol/Protocol.h"
1315 runge 32
#include "log/Logger.h"
1326 runge 33
#include "Exception.hpp"
1309 runge 34
 
35
namespace po = boost::program_options;
36
 
37
#define foreach         BOOST_FOREACH
38
#define reverse_foreach BOOST_REVERSE_FOREACH
39
using namespace std;
40
 
41
 
42
using namespace atom;
1328 runge 43
/*
44
#
45
#include <unistd.h>
1309 runge 46
 
1328 runge 47
#
48
#include <stdlib.h>// for MAX_PATH
49
#
50
#include <iostream> // for cout and cin
51
#
52
 
53
#
54
using namespace std;
55
#
56
// function to return the current working directory
57
#
58
// this is generally the application path
59
#
60
void GetCurrentPath(char* buffer)
61
#
62
{
63
#
64
getcwd(buffer, 1024);
65
#
66
}
67
#
68
 
69
#
70
int main()
71
#
72
{
73
#
74
 
75
#
76
// _MAX_PATH is the maximum length allowed for a path
77
#
78
char CurrentPath[1024];
79
#
80
// use the function to get the path
81
#
82
GetCurrentPath(CurrentPath);
83
#
84
 
85
#
86
// display the path for demo purposes only
87
#
88
char temp[1024];
89
#
90
cout << CurrentPath << endl;
91
#
92
cout << "Press Enter to continue";
93
#
94
cin.getline(temp,1024);
95
#
96
return 0;
97
#
98
}
99
*/
1309 runge 100
int main(int argc, char* argv[])
101
{
1326 runge 102
	try
103
	{
104
		log::Logger LOG;
105
		LOG.setName("Main");
1310 runge 106
 
1326 runge 107
		LOG.info("Atom (" + string(AutoVersion::FULLVERSION_STRING) + " " + string(AutoVersion::STATUS) + ")");
108
		LOG.info("Written by Mattias Runge 2009");
1310 runge 109
 
1326 runge 110
		Protocol::getInstance()->load("../../Configuration/protocol.xml", "../../Configuration/protocol-cache.xml");
1310 runge 111
 
1326 runge 112
		broker::Broker::pointer broker = broker::Broker::getInstance();
1318 runge 113
 
1326 runge 114
		subscribers::Monitor::pointer monitorSubscriber(new subscribers::Monitor(broker));
1328 runge 115
		subscribers::CanNet::pointer canNetSubscriber(new subscribers::CanNet(broker, "192.168.1.250", 1100));
1310 runge 116
 
1328 runge 117
		/*LOG.info("Will now try to send a message...");
1310 runge 118
 
1326 runge 119
		message::Header header(0, "irTranceiver", "temperature");
1309 runge 120
 
1326 runge 121
		LOG.info("Header constructed...");
1309 runge 122
 
1326 runge 123
		message::Message::pointer message(new message::Message(header));
1309 runge 124
 
1326 runge 125
		LOG.info("Message constructed...");
1309 runge 126
 
1328 runge 127
		broker->put(message);*/
1309 runge 128
 
1326 runge 129
		sleep(10000000);
130
	}
131
	catch (Exception * e)
132
	{
133
		cout << "Exception: " << e->getDescription() << endl;
134
	}
135
 
136
 
137
 
138
 
1310 runge 139
	return 0;
1309 runge 140
	//udpSubscriber->write(utils::BitBuffer(startPacket));
141
 
142
 
143
	cout << "ABC123" << endl;
144
 
145
	return 0;
1310 runge 146
	/*sleep(1);
1309 runge 147
 
1310 runge 148
		messagebroker::Message message("");
1309 runge 149
 
150
 
1310 runge 151
		message.data = "test1";
152
		broker.put(message);
1309 runge 153
 
1310 runge 154
		message.setOrigin(monitorSubscriber);
155
		message.data = "test2";
156
		broker.put(message);
157
		sleep(1);
158
		delete monitorSubscriber;
1309 runge 159
 
1310 runge 160
		message.data = "test3";
161
		broker.put(message);
162
		sleep(1);
163
		delete udpSubscriber;
1309 runge 164
 
165
 
1310 runge 166
		try
167
		{
168
			// Declare a group of options that will be
169
			// allowed only on command line
170
			po::options_description generic("Generic options");
171
			generic.add_options()	("version,v", "print version string")
172
									("help", "produce help message");
1309 runge 173
 
1310 runge 174
			// Declare a group of options that will be
175
			// allowed both on command line and in
176
			// config file
177
			po::options_description config("Configuration");
178
			config.add_options()("optimization", po::value<int>()->default_value(10), "optimization level")
179
								("include-path,I", po::value<vector<string> >()->composing(), "include path");
1309 runge 180
 
1310 runge 181
			// Hidden options, will be allowed both on command line and
182
			// in config file, but will not be shown to the user.
183
			po::options_description hidden("Hidden options");
184
			hidden.add_options()("input-file", po::value<vector<string> >(), "input file");
1309 runge 185
 
1310 runge 186
			po::options_description cmdline_options;
187
			cmdline_options.add(generic).add(config).add(hidden);
1309 runge 188
 
1310 runge 189
			po::options_description config_file_options;
190
			config_file_options.add(config).add(hidden);
1309 runge 191
 
1310 runge 192
			po::options_description visible("Allowed options");
193
			visible.add(generic).add(config);
1309 runge 194
 
1310 runge 195
			po::positional_options_description p;
196
			p.add("input-file", -1);
1309 runge 197
 
1310 runge 198
			po::variables_map vm;
199
			store(po::command_line_parser(argc, argv).options(cmdline_options).positional(p).run(), vm);
1309 runge 200
 
1310 runge 201
			ifstream ifs("multiple_sources.cfg");
202
			store(parse_config_file(ifs, config_file_options), vm);
203
			notify(vm);
1309 runge 204
 
1310 runge 205
			if (vm.count("help"))
206
			{
207
				cout << visible << "\n";
208
				return 0;
209
			}
1309 runge 210
 
1310 runge 211
			if (vm.count("version"))
212
			{
213
				cout << "Multiple sources example, version 1.0\n";
214
				return 0;
215
			}
1309 runge 216
 
1310 runge 217
			if (vm.count("include-path"))
218
			{
219
				//cout << "Include paths are: " << vm["include-path"].as<vector<string>>() << "\n";
220
			}
1309 runge 221
 
1310 runge 222
			if (vm.count("input-file"))
223
			{
224
				//cout << "Input files are: " << vm["input-file"].as<vector<string>>() << "\n";
225
			}
1309 runge 226
 
1310 runge 227
			//cout << "Optimization level is " << opt << "\n";
1309 runge 228
 
1310 runge 229
	*/
230
	/*if (argc != 3)
231
	{
232
		std::cout << "Usage: async_client <server> <path>\n";
233
		std::cout << "Example:\n";
234
		std::cout << "  async_client www.boost.org /LICENSE_1_0.txt\n";
235
		return 1;
236
	}
1309 runge 237
 
1310 runge 238
	boost::asio::io_service io_service;
239
	client c(io_service, argv[1], argv[2]);
240
	io_service.run();*/
241
	/*
242
			 std::string hello( "Hello, world!" );
1309 runge 243
 
1310 runge 244
			foreach( char ch, hello )
245
			{
246
				std::cout << ch;
247
			}
248
 
249
		}
250
		catch (std::exception& e)
1309 runge 251
		{
1310 runge 252
			std::cout << "Exception: " << e.what() << "\n";
1309 runge 253
		}
1310 runge 254
	*/
1309 runge 255
	return 0;
256
}