enum Protocol
{
+ NONE,
MM,
MM_27
};
struct Locomotive
{
Protocol protocol;
+ bool ext_func;
unsigned speed;
bool reverse;
unsigned funcs;
struct Turnout
{
- bool state;
+ unsigned bits;
+ unsigned state;
bool active;
- bool pending;
+ bool synced;
+ unsigned pending;
Msp::Time::TimeStamp off_timeout;
Turnout();
virtual const char *enumerate_protocols(unsigned) const;
virtual unsigned get_protocol_speed_steps(const std::string &) const;
- virtual void add_loco(unsigned, const std::string &);
+ virtual void add_loco(unsigned, const std::string &, const VehicleType &);
virtual void set_loco_speed(unsigned, unsigned);
virtual void set_loco_reverse(unsigned, bool);
virtual void set_loco_function(unsigned, unsigned, bool);
- virtual void add_turnout(unsigned);
- virtual void set_turnout(unsigned, bool);
- virtual bool get_turnout(unsigned) const;
+ virtual void add_turnout(unsigned, const TrackType &);
+ virtual void set_turnout(unsigned, unsigned);
+ virtual unsigned get_turnout(unsigned) const;
virtual void add_sensor(unsigned);
virtual void set_sensor(unsigned, bool) { }
void command(Command);
void command(Command, const unsigned char *, unsigned);
void command(Command, unsigned, const unsigned char *, unsigned);
- void loco_command(unsigned, unsigned, bool, unsigned);
+ void loco_command(unsigned, unsigned, bool, unsigned, bool);
void turnout_command(unsigned, bool, bool);
void process_reply(const Msp::Time::TimeStamp &);
unsigned read_all(unsigned char *, unsigned);