-/* $Id$
-
-This file is part of the MSP Märklin suite
-Copyright © 2009 Mikkosoft Productions, Mikko Rasa
-Distributed under the GPL
-*/
-
-#ifndef MARKLINNET_TRAIN_H_
-#define MARKLINNET_TRAIN_H_
+#ifndef R2C2_NET_TRAIN_H_
+#define R2C2_NET_TRAIN_H_
#include <sigc++/signal.h>
-#include "libmarklin/locotype.h"
+#include "libr2c2/vehicletype.h"
#include "packets.h"
-namespace Marklin {
+namespace R2C2 {
class Client;
{
public:
sigc::signal<void, const std::string &> signal_name_changed;
- sigc::signal<void, unsigned> signal_speed_changed;
- sigc::signal<void, bool> signal_reverse_changed;
+ sigc::signal<void, const std::string &, float> signal_control_changed;
sigc::signal<void, unsigned, bool> signal_function_changed;
+ sigc::signal<void, float> signal_target_speed_changed;
+ sigc::signal<void, bool> signal_reverse_changed;
sigc::signal<void, const std::string &> signal_route_changed;
sigc::signal<void, const std::string &> signal_status_changed;
private:
Client &client;
- const LocoType &loco_type;
+ const VehicleType &loco_type;
unsigned address;
std::string name;
- unsigned speed;
+ std::map<std::string, float> controls;
+ float target_speed;
bool reverse;
unsigned functions;
std::string route;
public:
NetTrain(Client &, const TrainInfoPacket &);
- const LocoType &get_loco_type() const { return loco_type; }
+ const VehicleType &get_loco_type() const { return loco_type; }
unsigned get_address() const { return address; }
const std::string &get_name() const { return name; }
- void set_speed(unsigned);
- unsigned get_speed() const { return speed; }
+ void set_control(const std::string &, float);
+ float get_control(const std::string &) const;
+ void set_target_speed(float);
void set_reverse(bool);
+ float get_target_speed() const { return target_speed; }
bool get_reverse() const { return reverse; }
void set_function(unsigned, bool);
bool get_function(unsigned i) const { return (functions>>i)&1; }
void set_route(const std::string &);
const std::string &get_route() const { return route; }
- void process_packet(const TrainSpeedPacket &);
+ void process_packet(const TrainControlPacket &);
void process_packet(const TrainFunctionPacket &);
+ void process_packet(const TrainAIControlPacket &);
void process_packet(const TrainRoutePacket &);
void process_packet(const TrainStatusPacket &);
};
-} // namespace Marklin
+} // namespace R2C2
#endif