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
}