+/* $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
{
private:
int serial_fd;
- bool p50_enabled;
bool power;
std::list<Command> queue;
std::map<unsigned, Turnout *> turnouts;
void set_power(bool);
bool get_power() const { return power; }
void set_debug(bool);
+ const std::map<unsigned, Turnout *> &get_turnouts() const { return turnouts; }
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 &);
+ Command &command(Cmd);
+ Command &command(Cmd, unsigned char);
+ Command &command(Cmd, const unsigned char *, unsigned);
void add_turnout(Turnout &);
Turnout &get_turnout(unsigned) const;
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