/* $Id$
This file is part of the MSP Märklin suite
-Copyright © 2006-2008 Mikkosoft Productions, Mikko Rasa
+Copyright © 2006-2009 Mikkosoft Productions, Mikko Rasa
Distributed under the GPL
*/
class Locomotive
{
+public:
+ sigc::signal<void, unsigned> signal_speed_changing;
+ sigc::signal<void, unsigned> signal_speed_changed;
+ sigc::signal<void, bool> signal_reverse_changed;
+ sigc::signal<void, unsigned, bool> signal_function_changed;
+
private:
const LocoType &type;
- Control &control;
+ Control &control;
unsigned addr;
unsigned speed;
- bool reverse;
+ bool reverse;
unsigned funcs;
public:
- sigc::signal<void, unsigned> signal_speed_changed;
- sigc::signal<void, unsigned, bool> signal_function_changed;
-
Locomotive(const LocoType &, Control &, unsigned);
const LocoType &get_type() const { return type; }
- void set_speed(unsigned);
- void set_reverse(bool);
- void set_function(unsigned, bool);
- unsigned get_address() const { return addr; }
- unsigned get_speed() const { return speed; }
- bool get_reverse() const { return reverse; }
- bool get_function(unsigned f) const { return (funcs>>f)&1; }
- void refresh_status();
+ unsigned get_address() const { return addr; }
+ void set_speed(unsigned);
+ void set_reverse(bool);
+ void set_function(unsigned, bool);
+ unsigned get_speed() const { return speed; }
+ bool get_reverse() const { return reverse; }
+ bool get_function(unsigned f) const { return (funcs>>f)&1; }
+ unsigned get_functions() const { return funcs; }
+ void refresh_status();
private:
- void send_command(bool);
- void status_reply(const Reply &);
- bool reverse_timeout();
+ void send_command(bool);
+ void status_reply(const Reply &);
+ bool reverse_timeout();
};
} // namespace Marklin