/* * CustomParametersConsoleCustomizer.h * * Created on: 22 нояб. 2016 г. * Author: Gorbunov_DV */ #ifndef SOURCE_SYSTEM_CUSTOMPARAMETERSCONSOLECUSTOMIZER_H_ #define SOURCE_SYSTEM_CUSTOMPARAMETERSCONSOLECUSTOMIZER_H_ #include "IMessageHandler.hh" #include "IMessageLink.hh" #include "../../systemic/ResourceHolder.hpp" #include "../../driver/IParamStorage.hh" #include namespace communication { namespace service { class CustomParametersConsoleCustomizer { public: CustomParametersConsoleCustomizer( driver::IParamStorage & storage ); IMessageHandler & getWriteParameterMessageHandler() { return write_param; } IMessageHandler & getReadParameterMessageHandler() { return read_param; } IMessageHandler & getRequestLoadParametersMessageHandler() { return requestLoadParametersToMemory; } IMessageHandler & getRequestStoreParametersMessageHandler() { return requestStoreParametersToMemory; } IMessageHandler & getRequestStorageState() { return storage_state; } IMessageHandler & getRequestEraseStorage() { return erase_storage; } private: typedef systemic::ResourceHolder Resources; typedef uint16_t Quantity; struct ParametersPackHead { uint16_t quantity:8; uint16_t storage:8; ParametersPackHead() : storage(0), quantity(0) {} }; struct ParamSetting { uint16_t id; uint16_t byte_size; // - если 0, то считаем, что приняли float -> 4 байта ParamSetting() : id(0xFFFFu), byte_size(0) {} }; class WriteParameterMessageHandler : public IMessageHandler { public: WriteParameterMessageHandler( driver::IParamStorage & o) : storage(&o) {} virtual void handler(IMessageLink * link); private: driver::IParamStorage * storage; }; class ReadParameterMessageHandler : public IMessageHandler { public: static const std::size_t max_read_parameter = 16; ReadParameterMessageHandler( driver::IParamStorage & o) : storage(&o) {} virtual void handler(IMessageLink * link); private: driver::IParamStorage * storage; }; class RequestLoadParametersToMemory : public IMessageHandler { public: RequestLoadParametersToMemory( driver::IParamStorage & o) : storage(&o) {} virtual void handler(IMessageLink * link); private: driver::IParamStorage * storage; }; class RequestStoreParametersToMemory : public IMessageHandler { public: RequestStoreParametersToMemory( driver::IParamStorage & o) : storage(&o) {} virtual void handler(IMessageLink * link); private: driver::IParamStorage * storage; }; class RequestStorageState : public IMessageHandler { public: RequestStorageState( driver::IParamStorage & o) : storage(&o) {} virtual void handler(IMessageLink * link); private: driver::IParamStorage * storage; }; class EraseStorage : public IMessageHandler { public: EraseStorage( driver::IParamStorage & o) : storage(&o) {} virtual void handler(IMessageLink * link); private: driver::IParamStorage * storage; }; WriteParameterMessageHandler write_param ; ReadParameterMessageHandler read_param; RequestLoadParametersToMemory requestLoadParametersToMemory; RequestStoreParametersToMemory requestStoreParametersToMemory; RequestStorageState storage_state; EraseStorage erase_storage; }; } } /* namespace system */ #endif /* SOURCE_SYSTEM_CUSTOMPARAMETERSCONSOLECUSTOMIZER_H_ */