+++ /dev/null
-/* $Id$
-
-This file is part of the MSP Märklin suite
-Copyright © 2006-2009 Mikkosoft Productions, Mikko Rasa
-Distributed under the GPL
-*/
-
-#ifndef LIBMARKLIN_CONTROL_H_
-#define LIBMARKLIN_CONTROL_H_
-
-#include <list>
-#include <string>
-#include <msp/time/timer.h>
-#include <msp/time/timestamp.h>
-#include "constants.h"
-#include "sensor.h"
-#include "locomotive.h"
-#include "turnout.h"
-
-namespace Marklin {
-
-class Command;
-class Reply;
-
-class Control
-{
-public:
- sigc::signal<void, bool> signal_power_event;
- sigc::signal<void, unsigned, bool> signal_turnout_event;
- sigc::signal<void, unsigned, bool> signal_sensor_event;
-
-private:
- int serial_fd;
- bool power;
- std::list<Command> queue;
- std::map<unsigned, Turnout *> turnouts;
- std::map<unsigned, Locomotive *> locomotives;
- std::map<unsigned, Sensor *> sensors;
- Msp::Time::TimeStamp next_event_query;
- bool poll_sensors;
- bool debug;
- Msp::Time::Timer timer;
-
-public:
- Control();
- ~Control();
-
- void open(const std::string &);
- void set_debug(bool);
- void set_power(bool);
- bool get_power() const { return power; }
- Command &command(Cmd);
- Command &command(Cmd, unsigned char);
- Command &command(Cmd, const unsigned char *, unsigned);
- unsigned get_queue_length() const { return queue.size(); }
- void flush();
-
- void add_turnout(Turnout &);
- Turnout &get_turnout(unsigned) const;
- const std::map<unsigned, Turnout *> &get_turnouts() const { return turnouts; }
- void add_locomotive(Locomotive &);
- Locomotive &get_locomotive(unsigned) const;
- const std::map<unsigned, Locomotive *> &get_locomotives() const { return locomotives; }
- void add_sensor(Sensor &);
- Sensor &get_sensor(unsigned) const;
- const std::map<unsigned, Sensor *> &get_sensors() const { return sensors; }
-
- void tick();
- Msp::Time::Timer::Slot &set_timer(const Msp::Time::TimeDelta &);
-private:
- void status_done(const Reply &);
- void event_query_done(const Reply &);
- void turnout_event_done(const Reply &);
- void sensor_event_done(const Reply &);
-};
-
-} // namespace Marklin
-
-#endif