]> git.tdb.fi Git - r2c2.git/blobdiff - source/libmarklin/driver.h
Major architecture rework
[r2c2.git] / source / libmarklin / driver.h
diff --git a/source/libmarklin/driver.h b/source/libmarklin/driver.h
new file mode 100644 (file)
index 0000000..1a5084d
--- /dev/null
@@ -0,0 +1,53 @@
+/* $Id$
+
+This file is part of the MSP Märklin suite
+Copyright © 2010  Mikkosoft Productions, Mikko Rasa
+Distributed under the GPL
+*/
+
+#ifndef LIBMARKLIN_DRIVER_H_
+#define LIBMARKLIN_DRIVER_H_
+
+#include <string>
+#include <sigc++/signal.h>
+
+namespace Marklin {
+
+class Driver
+{
+public:
+       sigc::signal<void, bool> signal_power;
+       sigc::signal<void, unsigned, unsigned, bool> signal_loco_speed;
+       sigc::signal<void, unsigned, unsigned, bool> signal_loco_function;
+       sigc::signal<void, unsigned, bool> signal_turnout;
+       sigc::signal<void, unsigned, bool> signal_sensor;
+
+protected:
+       Driver() { }
+public:
+       virtual ~Driver() { }
+
+       virtual void set_power(bool) = 0;
+       virtual bool get_power() const = 0;
+
+       virtual void add_loco(unsigned) = 0;
+       virtual void set_loco_speed(unsigned, unsigned) = 0;
+       virtual void set_loco_reverse(unsigned, bool) = 0;
+       virtual void set_loco_function(unsigned, unsigned, bool) = 0;
+
+       virtual void add_turnout(unsigned) = 0;
+       virtual void set_turnout(unsigned, bool) = 0;
+       virtual bool get_turnout(unsigned) const = 0;
+
+       virtual void add_sensor(unsigned) = 0;
+       virtual bool get_sensor(unsigned) const = 0;
+
+       virtual void tick() = 0;
+       virtual void flush() = 0;
+
+       static Driver *create(const std::string &);
+};
+
+} // namespace Marklin
+
+#endif