56 lines
2.4 KiB
C++
56 lines
2.4 KiB
C++
|
|
/*
|
|||
|
|
* IParameterProvider.h
|
|||
|
|
*
|
|||
|
|
* Created on: 19 нояб. 2018 г.
|
|||
|
|
* Author: titov
|
|||
|
|
*/
|
|||
|
|
|
|||
|
|
#ifndef SOURCE_SYSTEMIC_IPARAMETERPROVIDER_H_
|
|||
|
|
#define SOURCE_SYSTEMIC_IPARAMETERPROVIDER_H_
|
|||
|
|
|
|||
|
|
#include <cstddef>
|
|||
|
|
#include <utility>
|
|||
|
|
|
|||
|
|
#include "SharedData.hh"
|
|||
|
|
|
|||
|
|
namespace systemic {
|
|||
|
|
|
|||
|
|
//!Интерфейс поставщика настраиваемых данных.
|
|||
|
|
struct IParameterProvider {
|
|||
|
|
|
|||
|
|
//!Тип идентификатора.
|
|||
|
|
typedef unsigned int Id;
|
|||
|
|
|
|||
|
|
//!Получить буфер настраиваемых данных.
|
|||
|
|
/*!Буфер настраиваемых данных содержит запрошенную настройку и доступен для чтения и модификации.
|
|||
|
|
* \param[in] parameter_id Идентификатор буфера.
|
|||
|
|
* \return Указатель на буфер в случае если запрошенная настройка есть, иначе nullptr и его размер.
|
|||
|
|
*/
|
|||
|
|
virtual SharedData getParameterBuff( Id parameter_id ) const = 0;
|
|||
|
|
|
|||
|
|
|
|||
|
|
/*! \brief Получение указателя на запись настройки
|
|||
|
|
* \param id Идентификатор настройки.
|
|||
|
|
* Если размер принимаемой структуры больше чем имеющейся, либо настройки с указаным идентификатором не существует,
|
|||
|
|
* то под принимаемую настройку выделяется память.
|
|||
|
|
* \return Указатель по которому ожидается прием настройки размером size, либо nullptr, если не удалось выделить память.
|
|||
|
|
*/
|
|||
|
|
virtual SharedData createParameterBuff( Id parameter_id, std::size_t size ) = 0;
|
|||
|
|
|
|||
|
|
//!Сохранить значение параметра.
|
|||
|
|
/*!Сохранить данные буфера с устройстве.
|
|||
|
|
* \param[in] parameter_id Идентификатор буфера.
|
|||
|
|
* \return Статус выполнения запроса.
|
|||
|
|
*/
|
|||
|
|
virtual bool flushParameterBuff( Id parameter_id ) = 0;
|
|||
|
|
|
|||
|
|
//Здесь могла бы быть функция проверкии соотвествия значения параметра значению сохраненному.
|
|||
|
|
virtual ~IParameterProvider() = default;
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
#endif /* SOURCE_SYSTEMIC_IPARAMETERPROVIDER_H_ */
|