MotorControlModuleSDFM_TMS3.../Projects/EFC_Communication/UMLibrary/communication/service/CustomParametersConsoleCustomizer.hh

122 lines
3.3 KiB
C++
Raw Permalink Normal View History

2024-06-07 11:12:56 +03:00
/*
* 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 <stdint.h>
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_ */