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