122 lines
3.3 KiB
C++
122 lines
3.3 KiB
C++
/*
|
||
* 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_ */
|