MotorControlModuleSDFM_TMS3.../Projects/EFC_Application/UMLibrary/driver/IParamStorage.hh

67 lines
1.4 KiB
C++

/*
* IParamStorage.h
*
* Created on: 21 íîÿá. 2018 ã.
* Author: titov
*/
#ifndef SOURCE_DRIVER_IPARAMSTORAGE_H_
#define SOURCE_DRIVER_IPARAMSTORAGE_H_
#include <cstddef>
#include <utility>
#include <exception>
#include "../systemic/IParameterProvider.hh"
namespace driver {
struct IParamStorage : public systemic::IParameterProvider {
/*!\brief Çàïèñü äàííûõ íà ýíåðãîíåçàâèñèìóþ ïàìÿòü.
*/
virtual void flush() = 0;
/*!\brief ×òåíèå äàííûõ ñ ýíåðãîíåçàâèñèìîé ïàìÿòè.
*/
virtual void load() = 0;
/*!\brief Ôóíêöèÿ ïðîâåðêè ñîîòâåñòâèÿ äàííûõ â òåêóùåé ïàìÿòè è ÏÇÓ.
* \return Ïðèçíàê ñîîòâåñòâèÿ.
*/
virtual bool isDataSync() const = 0;
/*!\brief Î÷èñòêà ñòðóêòóðû äàííûõ.
*/
virtual void clear() = 0;
};
}
#include "../systemic/SystemException.hh"
namespace {
struct LackOfMemory : public systemic::SystemException {
typedef systemic::IParameterProvider::Id Id;
std::size_t requested_memory;
Id param_id;
LackOfMemory( std::size_t mem, Id id ) : requested_memory(mem), param_id(id) {}
std::size_t id() const noexcept { return 403; }
const char * what() const noexcept { return "lack of memory in storage"; }
std::pair<const char *, std::size_t> binary() const noexcept {
return { reinterpret_cast<const char *>( &requested_memory ), sizeof(std::size_t) + sizeof(Id) };
}
};
}
#endif /* SOURCE_DRIVER_IPARAMSTORAGE_H_ */