MotorControlModuleSDFM_TMS3.../Projects/EFC_Communication/UMLibrary/communication/service/CustomParametersConsoleCustomizer.hh
2024-06-07 11:12:56 +03:00

122 lines
3.3 KiB
C++
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
* 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_ */