]> git.tdb.fi Git - r2c2.git/blobdiff - source/libr2c2/block.h
Handle sensors in a separate class
[r2c2.git] / source / libr2c2 / block.h
index 23fb3c789c6c77a0c0768b7d52dd9c140b678e82..f71ee29b63f6871ccc2a419e9638a02a22dc54e2 100644 (file)
@@ -9,20 +9,13 @@ namespace R2C2 {
 
 class Layout;
 class Route;
+class TrackCircuit;
 class TrackIter;
 class Train;
 
-class Block: public sigc::trackable
+class Block
 {
 public:
-       enum State
-       {
-               INACTIVE,
-               MAYBE_INACTIVE,
-               MAYBE_ACTIVE,
-               ACTIVE
-       };
-
        struct Endpoint
        {
                Track *track;
@@ -36,15 +29,13 @@ public:
        };
 
        sigc::signal<void, Train *> signal_reserved;
-       sigc::signal<void, State> signal_state_changed;
 
 private:
        Layout &layout;
        unsigned id;
        unsigned sensor_id;
        unsigned turnout_id;
-       State state;
-       Msp::Time::TimeDelta state_confirm_timeout;
+       TrackCircuit *sensor;
        std::set<Track *> tracks;
        std::vector<Endpoint> endpoints;
        Train *train;
@@ -56,7 +47,7 @@ public:
        unsigned get_id() const { return id; }
        unsigned get_sensor_id() const { return sensor_id; }
        unsigned get_turnout_id() const { return turnout_id; }
-       State get_state() const { return state; }
+       TrackCircuit &get_sensor() const { return *sensor; }
        const std::set<Track *> &get_tracks() const { return tracks; }
        bool has_track(Track &) const;
        const std::vector<Endpoint> &get_endpoints() const { return endpoints; }
@@ -68,11 +59,9 @@ public:
        Block *get_link(unsigned) const;
        bool reserve(Train *);
        Train *get_train() const { return train; }
-       void tick(const Msp::Time::TimeDelta &);
 private:
        void find_paths(const TrackIter &, unsigned);
        void determine_id();
-       void sensor_event(unsigned, bool);
 };
 
 } // namespace R2C2