blob: 4a6879b9be257534df72c3b4aef9ae8e4cc6fa28 [file] [log] [blame]
#ifndef BASYX_CONTROLCOMPONENT_MAP_CONTROLCOMPONENT_H
#define BASYX_CONTROLCOMPONENT_MAP_CONTROLCOMPONENT_H
#include <BaSyx/controlcomponent/interfaces/IControlComponent.h>
#include <BaSyx/vab/ElementMap.h>
#include <BaSyx/controlcomponent/enumerations/ControlComponentConstants.h>
#include <BaSyx/controlcomponent/enumerations/ExecutionOrder.h>
namespace basyx {
namespace controlcomponent {
namespace map {
class ControlComponent : public IControlComponent, public vab::ElementMap
{
private:
std::map<int, std::shared_ptr<IControlComponentChangeListener>> componentChangeListeners;
std::string savedOccupierId;
basyx::object status_map, operations;
public:
ControlComponent();
virtual void addControlComponentChangeListener(const std::shared_ptr<IControlComponentChangeListener> listener) override;
virtual void removeControlComponentChangeListener(const std::shared_ptr<IControlComponentChangeListener> listener) override;
const basyx::object getServiceOperationMap();
void put(const std::string &key, basyx::object value);
virtual void finishState() override;
virtual const std::vector<std::string> & getOrderList() override;
virtual void addOrder(const std::string &newOrder) override;
virtual void clearOrder() override;
virtual OccupationState getOccupationState() override;
virtual void setOccupationState(const OccupationState &occState) override;
virtual std::string getOccupierID() override;
virtual void setOccupierID(const std::string &occId) override;
virtual std::string getLastOccupierID() override;
virtual void setLastOccupierID(const std::string &occId) override;
virtual ExecutionMode getExecutionMode() override;
virtual void setExecutionMode(const ExecutionMode &exMode) override;
virtual ExecutionState getExecutionState() override;
virtual void setExecutionState(const ExecutionState &newSt) override;
virtual std::string getOperationMode() override;
virtual void setOperationMode(const std::string &opMode) override;
virtual std::string getWorkState() override;
virtual void setWorkState(const std::string &workState) override;
virtual std::string getErrorState() override;
virtual void setErrorState(const std::string &errorState) override;
virtual std::string getLastErrorState() override;
virtual void setLastErrorState(const std::string &lastErrorState) override;
virtual std::string getCommand() override;
virtual void setCommand(const std::string &cmd) override;
virtual std::string getLocalOverwrite() override;
virtual void setLocalOverwrite(const std::string &cmd) override;
virtual std::string getLocalOverwriteFree() override;
virtual void setLocalOverwriteFree(const std::string &cmd) override;
private:
void changeExecutionState(const ExecutionOrder &);
void invokeLocalOverwrite();
void clearLocalOverwrite();
void freeControlComponent(const std::string &);
void occupyControlComponent(const std::string &occupier);
void priorityOccupation(const std::string &occupier);
object init_service_operations();
template<typename T> void insert_status(const basyx::controlcomponent::ControlComponentConstants &, T status);
template<typename T> T get_status(const basyx::controlcomponent::ControlComponentConstants &);
};
}
}
}
#endif //BASYX_CONTROLCOMPONENT_CONTROLCOMPONENT_H