+/* $Id$
+
+This file is part of the MSP Märklin suite
+Copyright © 2006-2009 Mikkosoft Productions, Mikko Rasa
+Distributed under the GPL
+*/
+
#ifndef LIBMARKLIN_TURNOUT_H_
#define LIBMARKLIN_TURNOUT_H_
namespace Marklin {
class Control;
+class Reply;
class Turnout
{
public:
- sigc::signal<void, unsigned> signal_route_changed;
+ sigc::signal<void, unsigned> signal_path_changing;
+ sigc::signal<void, unsigned> signal_path_changed;
- Turnout(Control &, unsigned);
- void set_route(unsigned);
- unsigned get_address() const { return addr; }
- unsigned get_route() const { return route; }
private:
- Control &control;
+ Control &control;
unsigned addr;
- unsigned route;
+ unsigned char path;
+ unsigned char pending_path;
+ unsigned char pending_cmds;
+ bool dual;
+ bool on;
- void command(bool);
- void status_reply(Error, const std::string &);
- bool switch_timeout();
+public:
+ Turnout(Control &, unsigned, bool =false);
+
+ void set_path(unsigned char);
+ unsigned get_address() const { return addr; }
+ unsigned char get_path() const { return path; }
+private:
+ void command(unsigned char);
+ void command_reply(const Reply &, unsigned char);
+ void status_reply(const Reply &, unsigned char);
void turnout_event(unsigned, bool);
};
-typedef std::list<Turnout *> TurnoutSeq;
-typedef std::map<unsigned, Turnout *> TurnoutMap;
} // namespace Marklin