X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Flibr2c2%2Fblock.h;h=3592992c03ca16d152b61566760c04a71ad0fe8d;hb=b14059de03324aecde3efc649293d98ce5b7aaf2;hp=e13e58b7da510703c57834a232619bd6f1076db3;hpb=45abb4c64c714cb655988a855158a22976f5e35f;p=r2c2.git diff --git a/source/libr2c2/block.h b/source/libr2c2/block.h index e13e58b..3592992 100644 --- a/source/libr2c2/block.h +++ b/source/libr2c2/block.h @@ -19,9 +19,17 @@ class Route; class TrackIter; class Train; -class Block +class Block: public sigc::trackable { public: + enum State + { + INACTIVE, + MAYBE_INACTIVE, + MAYBE_ACTIVE, + ACTIVE + }; + struct Endpoint { Track *track; @@ -32,11 +40,16 @@ public: Endpoint(Track *, unsigned); }; + sigc::signal signal_reserved; + sigc::signal signal_state_changed; + private: Layout &layout; unsigned id; unsigned sensor_id; unsigned turnout_id; + State state; + Msp::Time::TimeDelta state_confirm_timeout; std::set tracks; std::vector endpoints; Train *train; @@ -48,6 +61,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; } const std::set &get_tracks() const { return tracks; } bool has_track(Track &) const; const std::vector &get_endpoints() const { return endpoints; } @@ -59,10 +73,11 @@ public: Block *get_link(unsigned) const; bool reserve(Train *); Train *get_train() const { return train; } - void print_debug(); + void tick(const Msp::Time::TimeDelta &); private: void find_paths(TrackIter, unsigned); void determine_id(); + void sensor_event(unsigned, bool); }; } // namespace R2C2