From 6ac0047a29aadd06592c406d15b2441bb9e4399f Mon Sep 17 00:00:00 2001 From: amichelo <andrea.michelotti@lnf.infn.it> Date: Mon, 19 Sep 2022 18:28:28 +0200 Subject: [PATCH] bypass --- .../api/node/NodeGetDescription.cpp | 4 +++- .../control_manager/AbstractControlUnit.cpp | 3 ++- .../control_manager/AbstractControlUnit.h | 20 +++++++++---------- .../driver_manager/DriverErogatorInterface.h | 4 ++-- .../cu_toolkit/driver_manager/DriverManager.h | 7 ++----- .../driver_manager/driver/AbstractDriver.cpp | 11 +++++----- .../driver_manager/driver/AbstractDriver.h | 17 ++++++++-------- .../driver/AbstractDriverInterface.h | 2 +- .../driver/AbstractDriverPlugin.h | 2 +- .../driver/AbstractRemoteIODriver.h | 5 +++-- .../driver/AbstractServerRemoteIODriver.h | 2 +- .../driver_manager/driver/BaseBypassDriver.h | 2 +- .../driver_manager/driver/DriverAccessor.cpp | 7 +++++++ .../driver_manager/driver/DriverAccessor.h | 9 ++++----- .../driver/DriverPluginLoader.h | 2 +- .../driver_manager/driver/DriverTypes.h | 3 --- .../driver_manager/driver/ExternalIODriver.h | 2 +- 17 files changed, 53 insertions(+), 49 deletions(-) diff --git a/ChaosMetadataService/api/node/NodeGetDescription.cpp b/ChaosMetadataService/api/node/NodeGetDescription.cpp index e83c11777..d7d1fed71 100644 --- a/ChaosMetadataService/api/node/NodeGetDescription.cpp +++ b/ChaosMetadataService/api/node/NodeGetDescription.cpp @@ -49,7 +49,9 @@ CDWUniquePtr NodeGetDescription::execute(CDWUniquePtr api_data) { LOG_AND_TROW(USRA_ERR, err, "Error fetching node '"+ api_data->getStringValue(NodeDefinitionKey::NODE_UNIQUE_ID)+"' decription") } } else { - LOG_AND_TROW(USRA_ERR, -3, "Node '"+ api_data->getStringValue(NodeDefinitionKey::NODE_UNIQUE_ID)+"' not found") + // LOG_AND_TROW(USRA_ERR, -3, "Node '"+ api_data->getStringValue(NodeDefinitionKey::NODE_UNIQUE_ID)+"' not found") + + LERR_<< "Node '"+ api_data->getStringValue(NodeDefinitionKey::NODE_UNIQUE_ID)+"' not found"; } return CDWUniquePtr(result); } diff --git a/chaos/cu_toolkit/control_manager/AbstractControlUnit.cpp b/chaos/cu_toolkit/control_manager/AbstractControlUnit.cpp index 2f0c51e19..3a3c67184 100644 --- a/chaos/cu_toolkit/control_manager/AbstractControlUnit.cpp +++ b/chaos/cu_toolkit/control_manager/AbstractControlUnit.cpp @@ -2806,7 +2806,8 @@ void AbstractControlUnit::_setBypassState(bool bypass_stage, end = accessor_instances.end(); it != end; it++) { - (*it)->send(&cmd, chaos::common::constants::CUTimersTimeoutinMSec); + // (*it)->send(&cmd, chaos::common::constants::CUTimersTimeoutinMSec); + (*it)->setBypass(bypass_stage); } ACULDBG_ << "BYPASS COMMAND:"<<bypass_stage; setBypassFlag(bypass_stage); diff --git a/chaos/cu_toolkit/control_manager/AbstractControlUnit.h b/chaos/cu_toolkit/control_manager/AbstractControlUnit.h index 0f5f82e82..8067625a8 100644 --- a/chaos/cu_toolkit/control_manager/AbstractControlUnit.h +++ b/chaos/cu_toolkit/control_manager/AbstractControlUnit.h @@ -230,6 +230,16 @@ class AbstractControlUnit : public DeclareAction, return chaos::ControlUnitDatapackSystemKey::CU_ALRM_LEVEL; } + //! set the value on the busy flag + void setBusyFlag(bool state); + + + //! set the value on the bypass flag + void setBypassFlag(bool state); + + //!return the current value of the busi flag + const bool getBusyFlag() const; + inline int stateVariableNameToEnum(const std::string& name) { if (name.compare(chaos::ControlUnitDatapackSystemKey::CU_ALRM_LEVEL) == 0) { return chaos::cu::control_manager::StateVariableTypeAlarmCU; @@ -855,16 +865,6 @@ class AbstractControlUnit : public DeclareAction, */ void setState(const std::string& state,bool update=false); - //! set the value on the busy flag - void setBusyFlag(bool state); - - - //! set the value on the bypass flag - void setBypassFlag(bool state); - - //!return the current value of the busi flag - const bool getBusyFlag() const; - //!called when an alarm has been modified in his severity void alarmChanged(const std::string& state_variable_tag, const std::string& state_variable_name, diff --git a/chaos/cu_toolkit/driver_manager/DriverErogatorInterface.h b/chaos/cu_toolkit/driver_manager/DriverErogatorInterface.h index 594a59156..88c0ab629 100644 --- a/chaos/cu_toolkit/driver_manager/DriverErogatorInterface.h +++ b/chaos/cu_toolkit/driver_manager/DriverErogatorInterface.h @@ -9,8 +9,8 @@ #ifndef CHAOSFramework_DriverErogatorInterface_h #define CHAOSFramework_DriverErogatorInterface_h -#include <chaos/cu_toolkit/driver_manager/driver/DriverTypes.h> -#include <chaos/cu_toolkit/driver_manager/driver/DriverAccessor.h> +#include "driver/DriverTypes.h" +#include "driver/DriverAccessor.h" namespace chaos { namespace cu { diff --git a/chaos/cu_toolkit/driver_manager/DriverManager.h b/chaos/cu_toolkit/driver_manager/DriverManager.h index 45725962f..504958550 100644 --- a/chaos/cu_toolkit/driver_manager/DriverManager.h +++ b/chaos/cu_toolkit/driver_manager/DriverManager.h @@ -30,12 +30,9 @@ #include <chaos/common/utility/StartableService.h> #include <chaos/common/plugin/PluginInspector.h> -#include <chaos/cu_toolkit/driver_manager/driver/AbstractDriver.h> -#include <chaos/cu_toolkit/driver_manager/driver/DriverAccessor.h> +#include "driver/AbstractDriver.h" +#include "driver/DriverAccessor.h" -#include <boost/thread.hpp> -#include <boost/shared_ptr.hpp> -#include <boost/ptr_container/ptr_vector.hpp> namespace chaos { namespace cu { diff --git a/chaos/cu_toolkit/driver_manager/driver/AbstractDriver.cpp b/chaos/cu_toolkit/driver_manager/driver/AbstractDriver.cpp index 0c687f71a..123a996dc 100644 --- a/chaos/cu_toolkit/driver_manager/driver/AbstractDriver.cpp +++ b/chaos/cu_toolkit/driver_manager/driver/AbstractDriver.cpp @@ -22,8 +22,8 @@ #include <chaos/common/utility/UUIDUtil.h> #include <string> -#include <chaos/cu_toolkit/driver_manager/driver/AbstractDriver.h> -#include <chaos/cu_toolkit/driver_manager/driver/DriverAccessor.h> +#include "AbstractDriver.h" +#include "DriverAccessor.h" using namespace chaos::common::data; using namespace chaos::common::utility; @@ -38,7 +38,7 @@ using namespace chaos::cu::driver_manager::driver; ------------------------------------------------------*/ AbstractDriver::AbstractDriver(BaseBypassShrdPtr custom_bypass_driver) - : accessor_count(0), exclusive(false), bypass_driver(MOVE(custom_bypass_driver)), o_exe(this), is_json_param(false), driver_need_to_deinitialize(false), driver_uuid(UUIDUtil::generateUUIDLite()), command_queue(new DriverQueueType()) {} + : accessor_count(0), exclusive(false), bypass_driver(MOVE(custom_bypass_driver)),bypassEnabled(false),o_exe(this), is_json_param(false), driver_need_to_deinitialize(false), driver_uuid(UUIDUtil::generateUUIDLite()), command_queue(new DriverQueueType()) {} /*------------------------------------------------------ @@ -416,12 +416,13 @@ void AbstractDriver::driverDeinit() { ADLDBG_ << "base driver " << identification_string << " DEINIT"; } -const bool AbstractDriver::isBypass() const { - return o_exe != this; + bool AbstractDriver::isBypass() { + return bypassEnabled; } void AbstractDriver::setBypass(bool bypass) { // boost::unique_lock<boost::shared_mutex> lock(accesso_list_shr_mux); + bypassEnabled =bypass; if (bypass) { LBypassDriverUnqPtrReadLock rl = bypass_driver.getReadLockObject(); diff --git a/chaos/cu_toolkit/driver_manager/driver/AbstractDriver.h b/chaos/cu_toolkit/driver_manager/driver/AbstractDriver.h index 4524af466..e93dc8560 100644 --- a/chaos/cu_toolkit/driver_manager/driver/AbstractDriver.h +++ b/chaos/cu_toolkit/driver_manager/driver/AbstractDriver.h @@ -23,16 +23,14 @@ #define __CHAOSFramework__AbstractDriver__ #include <string> -#include <vector> -#include <boost/thread.hpp> #include <chaos/common/data/Property.h> #include <chaos/common/chaos_errors.h> #include <chaos/common/utility/LockableObject.h> #include <chaos/common/utility/InizializableService.h> #include <chaos/common/thread/TemplatedConcurrentQueue.h> -#include <chaos/cu_toolkit/driver_manager/driver/DriverTypes.h> -#include <chaos/cu_toolkit/driver_manager/driver/BaseBypassDriver.h> +#include "DriverTypes.h" +#include "BaseBypassDriver.h" //#include <json/json.h> @@ -74,7 +72,7 @@ namespace chaos{ template<typename T> friend class DriverWrapperPlugin; friend class chaos::cu::driver_manager::DriverManager; - + friend class DriverAccessor; bool driver_need_to_deinitialize; //! unique uuid for the instance @@ -99,7 +97,7 @@ namespace chaos{ bool is_json_param; // Json::Reader json_reader; // Json::Value json_parameter_document; - + bool bypassEnabled; //! command queue used for receive DrvMsg pack //boost::interprocess::message_queue *commandQueue; ChaosUniquePtr<DriverQueueType> command_queue; @@ -148,12 +146,11 @@ namespace chaos{ virtual void driverDeinit(); const bool isDriverParamInJson() const; - const bool isBypass()const; /* * called via rpc or via user to implement the bypass * */ - void setBypass(bool val); - + + //enable lock/unlock mutex handling bool exclusive; // const Json::Value& getDriverParamJsonRootElement() const; @@ -216,6 +213,8 @@ namespace chaos{ * to set last error */ void setLastError(const std::string&str); + virtual void setBypass(bool val); + virtual bool isBypass(); std::string getLastError(){return lastError;} }; diff --git a/chaos/cu_toolkit/driver_manager/driver/AbstractDriverInterface.h b/chaos/cu_toolkit/driver_manager/driver/AbstractDriverInterface.h index 1924f1783..8860d2e9d 100644 --- a/chaos/cu_toolkit/driver_manager/driver/AbstractDriverInterface.h +++ b/chaos/cu_toolkit/driver_manager/driver/AbstractDriverInterface.h @@ -20,7 +20,7 @@ #ifndef __ASTRACTDRIVERINTERFACE_H__ #define __ASTRACTDRIVERINTERFACE_H__ #include <chaos/common/data/CDataWrapper.h> -#include <chaos/cu_toolkit/driver_manager/driver/DriverAccessor.h> +#include "DriverAccessor.h" namespace chaos_driver=::chaos::cu::driver_manager::driver; namespace chaos { diff --git a/chaos/cu_toolkit/driver_manager/driver/AbstractDriverPlugin.h b/chaos/cu_toolkit/driver_manager/driver/AbstractDriverPlugin.h index 21bd32ae6..503905f21 100644 --- a/chaos/cu_toolkit/driver_manager/driver/AbstractDriverPlugin.h +++ b/chaos/cu_toolkit/driver_manager/driver/AbstractDriverPlugin.h @@ -23,7 +23,7 @@ #define CHAOSFramework_DriverWrapperPlugin_h #include <chaos/common/plugin/PluginDefinition.h> -#include <chaos/cu_toolkit/driver_manager/driver/AbstractDriver.h> +#include "AbstractDriver.h" namespace chaos{ namespace cu { diff --git a/chaos/cu_toolkit/driver_manager/driver/AbstractRemoteIODriver.h b/chaos/cu_toolkit/driver_manager/driver/AbstractRemoteIODriver.h index 84cef2ca6..3ceef3038 100644 --- a/chaos/cu_toolkit/driver_manager/driver/AbstractRemoteIODriver.h +++ b/chaos/cu_toolkit/driver_manager/driver/AbstractRemoteIODriver.h @@ -29,13 +29,14 @@ #include <chaos/common/thread/FutureHelper.h> #include <chaos/common/utility/LockableObject.h> -#include <chaos/cu_toolkit/driver_manager/driver/AbstractDriverPlugin.h> +#include "AbstractDriverPlugin.h" +/* #include <boost/multi_index/member.hpp> #include <boost/multi_index_container.hpp> #include <boost/multi_index/ordered_index.hpp> #include <boost/multi_index/hashed_index.hpp> - +*/ #define AUTHORIZATION_KEY "message_data" #define INIT_HARDWARE_PARAM "driver_param" #define OPCODE_HARDWARE_PARAM "device_param" diff --git a/chaos/cu_toolkit/driver_manager/driver/AbstractServerRemoteIODriver.h b/chaos/cu_toolkit/driver_manager/driver/AbstractServerRemoteIODriver.h index 95df77d7f..b73b88ad4 100644 --- a/chaos/cu_toolkit/driver_manager/driver/AbstractServerRemoteIODriver.h +++ b/chaos/cu_toolkit/driver_manager/driver/AbstractServerRemoteIODriver.h @@ -21,7 +21,7 @@ #ifndef chaos_cu_toolkit_driver_manager_driver_AbstractServerRemoteIODriver_h #define chaos_cu_toolkit_driver_manager_driver_AbstractServerRemoteIODriver_h -#include <chaos/cu_toolkit/driver_manager/driver/AbstractRemoteIODriver.h> +#include "AbstractRemoteIODriver.h" #include <chaos/common/external_unit/ExternalUnitServerEndpoint.h> namespace chaos { diff --git a/chaos/cu_toolkit/driver_manager/driver/BaseBypassDriver.h b/chaos/cu_toolkit/driver_manager/driver/BaseBypassDriver.h index 5fe9a6148..5056e5c38 100644 --- a/chaos/cu_toolkit/driver_manager/driver/BaseBypassDriver.h +++ b/chaos/cu_toolkit/driver_manager/driver/BaseBypassDriver.h @@ -21,7 +21,7 @@ #ifndef __CHAOSFramework_ECA49652_F22D_45D5_A82E_7A29B3D410F6_BaseBypassDriver_h #define __CHAOSFramework_ECA49652_F22D_45D5_A82E_7A29B3D410F6_BaseBypassDriver_h -#include <chaos/cu_toolkit/driver_manager/driver/DriverTypes.h> +#include "DriverTypes.h" namespace chaos{ namespace cu { diff --git a/chaos/cu_toolkit/driver_manager/driver/DriverAccessor.cpp b/chaos/cu_toolkit/driver_manager/driver/DriverAccessor.cpp index c26ea7b6a..bd7a61b39 100644 --- a/chaos/cu_toolkit/driver_manager/driver/DriverAccessor.cpp +++ b/chaos/cu_toolkit/driver_manager/driver/DriverAccessor.cpp @@ -274,3 +274,10 @@ std::string DriverAccessor::getLastError() { #endif } +void DriverAccessor::setBypass(bool val){ + impl->setBypass(val); + +} +const bool DriverAccessor::isBypass() const{ + return impl->isBypass(); +} \ No newline at end of file diff --git a/chaos/cu_toolkit/driver_manager/driver/DriverAccessor.h b/chaos/cu_toolkit/driver_manager/driver/DriverAccessor.h index 295bb9e27..241f534ab 100644 --- a/chaos/cu_toolkit/driver_manager/driver/DriverAccessor.h +++ b/chaos/cu_toolkit/driver_manager/driver/DriverAccessor.h @@ -22,11 +22,9 @@ #ifndef __CHAOSFramework__DriverAccessor__ #define __CHAOSFramework__DriverAccessor__ -#include <set> -#include <boost/atomic/atomic.hpp> -#include <chaos/cu_toolkit/driver_manager/driver/DriverTypes.h> +#include "DriverTypes.h" #include <chaos/common/thread/TemplatedConcurrentQueue.h> -#include <chaos/cu_toolkit/driver_manager/DriverManager.h> +#include "../DriverManager.h" namespace chaos_thread_ns = chaos::common::thread; namespace chaos{ @@ -177,7 +175,8 @@ namespace chaos{ * @return 0 if success */ int setDrvProperty(const std::string& key, const std::string& value); - + void setBypass(bool val); + const bool isBypass()const; std::string getUID() const; std::string getDriverName() const; std::string getLastError(); diff --git a/chaos/cu_toolkit/driver_manager/driver/DriverPluginLoader.h b/chaos/cu_toolkit/driver_manager/driver/DriverPluginLoader.h index 14b7f1c27..3b30f8989 100644 --- a/chaos/cu_toolkit/driver_manager/driver/DriverPluginLoader.h +++ b/chaos/cu_toolkit/driver_manager/driver/DriverPluginLoader.h @@ -22,7 +22,7 @@ #ifndef CHAOSFramework_DriverPluginLoader_h #define CHAOSFramework_DriverPluginLoader_h #include <chaos/common/plugin/PluginLoader.h> -#include <chaos/cu_toolkit/driver_manager/driver/AbstractDriverPlugin.h> +#include "AbstractDriverPlugin.h" namespace chaos { namespace cu{ namespace driver_manager { diff --git a/chaos/cu_toolkit/driver_manager/driver/DriverTypes.h b/chaos/cu_toolkit/driver_manager/driver/DriverTypes.h index 9c1b13698..b16c54475 100644 --- a/chaos/cu_toolkit/driver_manager/driver/DriverTypes.h +++ b/chaos/cu_toolkit/driver_manager/driver/DriverTypes.h @@ -23,9 +23,6 @@ #define CHAOSFramework_DriverGlobal_h #include <stdint.h> -#include <boost/lockfree/queue.hpp> -#include <boost/lockfree/spsc_queue.hpp> -#include <boost/interprocess/ipc/message_queue.hpp> #include <chaos/common/data/CDataWrapper.h> #include <chaos/common/utility/Atomic.h> diff --git a/chaos/cu_toolkit/driver_manager/driver/ExternalIODriver.h b/chaos/cu_toolkit/driver_manager/driver/ExternalIODriver.h index 7bb5e6d6e..211c4a76f 100644 --- a/chaos/cu_toolkit/driver_manager/driver/ExternalIODriver.h +++ b/chaos/cu_toolkit/driver_manager/driver/ExternalIODriver.h @@ -23,7 +23,7 @@ #define __CHAOSFramework__061D444_6ECF_448C_8D63_98139B76FA9D_ExternalIODriver_h #include <chaos/common/chaos_types.h> -#include <chaos/cu_toolkit/driver_manager/driver/AbstractRemoteIODriver.h> +#include "AbstractRemoteIODriver.h" namespace chaos { namespace cu { namespace driver_manager { -- GitLab