Kind kind;
unsigned address;
unsigned bits;
+ unsigned valid_states;
ControlledVariable<unsigned> state;
unsigned uncertain;
unsigned target;
Msp::Time::TimeDelta active_time;
- Accessory(Kind, unsigned, unsigned);
+ Accessory(Kind, unsigned, unsigned, unsigned);
unsigned create_state_command(unsigned, bool, char *) const;
};
virtual void main();
void init_baud_rate();
bool get_work(PendingCommand &);
- unsigned do_command(const PendingCommand &);
+ unsigned do_command(const PendingCommand &, const Msp::Time::TimeDelta &);
unsigned process_reply(const char *, unsigned);
+ void set_power(bool);
};
typedef std::map<unsigned, Locomotive> LocomotiveMap;
SensorMap sensors;
- Msp::Mutex mutex;
+ Msp::Time::TimeDelta command_timeout;
Queue<PendingCommand> command_queue;
Queue<Tag> completed_commands;
RefreshTask refresh;
virtual unsigned get_signal(unsigned) const;
private:
- unsigned add_accessory(Accessory::Kind, unsigned, unsigned);
+ unsigned add_accessory(Accessory::Kind, unsigned, unsigned, unsigned);
void remove_accessory(Accessory::Kind, unsigned);
void set_accessory(Accessory::Kind, unsigned, unsigned);
unsigned get_accessory(Accessory::Kind, unsigned) const;
+ void activate_accessory_by_mask(Accessory &, unsigned);
public:
virtual unsigned add_sensor(unsigned);