]> git.tdb.fi Git - r2c2.git/blobdiff - source/libmarklin/control.h
Forgot to add the new files
[r2c2.git] / source / libmarklin / control.h
index df8ea1bc3c76ad9cc51b65c0c29c81481be87644..a041e957caaf1b009ee216b43ef34e1794cf52e7 100644 (file)
@@ -1,3 +1,10 @@
+/* $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_
 
 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 p50_enabled;
+       int serial_fd;
        bool power;
        std::list<Command> queue;
        std::map<unsigned, Turnout *> turnouts;
@@ -30,37 +42,36 @@ private:
        Msp::Time::Timer timer;
 
 public:
-       sigc::signal<void, bool> signal_power_event;
-       sigc::signal<void, unsigned, bool> signal_turnout_event;
-       sigc::signal<void, unsigned, bool> signal_sensor_event;
-
        Control();
        ~Control();
 
-       void       set_power(bool);
-       bool       get_power() const { return power; }
-       void       set_debug(bool);
-       const std::map<unsigned, Sensor *> &get_sensors() const { return sensors; }
-       unsigned   get_queue_length() const { return queue.size(); }
-       void       open(const std::string &);
-       Command    &command(const std::string &);
+       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;
-       void       add_locomotive(Locomotive &);
+       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;
-       void       add_sensor(Sensor &);
-       Sensor     &get_sensor(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();
+       void tick();
        Msp::Time::Timer::Slot &set_timer(const Msp::Time::TimeDelta &);
 private:
-       void read_all(int, char *, int);
-       std::string read_reply(Cmd);
-       void status_done(Error, const std::string &);
-       void event_query_done(Error, const std::string &);
-       void turnout_event_done(Error, const std::string &);
-       void sensor_event_done(Error, const std::string &);
+       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