MotorControlModuleSDFM_TMS3.../Projects/EFC_Communication/UMLibrary/configuration/Environment.hh

108 lines
3.7 KiB
C++
Raw Normal View History

2024-06-07 11:12:56 +03:00
/*
* Environment.h
*
* Created on: 26 нояб. 2018 г.
* Author: titov
*/
#ifndef SOURCE_SYSTEMIC_ENVIRONMENT_H_
#define SOURCE_SYSTEMIC_ENVIRONMENT_H_
#include "../systemic/SignalManager.hh"
#include "../systemic/StatusManager.hh"
#include "../systemic/CustomParameters.hpp"
#include "../systemic/ResourceHolder.hpp"
#include "../systemic/ProcScheduler.hh"
#include "../systemic/SystemException.hh"
#include "ProcessConfig.hh"
#include "../memories/memories.hh"
namespace configuration {
struct Environment {
typedef uint16_t Id;
typedef Id StatusId;
typedef Id SignalId;
typedef Id SettingId;
typedef Id TechFunctionId;
typedef Id GpioId;
systemic::SignalManager & signals;
systemic::StatusManager & statuses;
systemic::CustomParameters & cparams;
systemic::ResourceHolder & rholder;
systemic::ProcScheduler & scheduler;
systemic::ExceptionInfo & exception;
/**
* @brief Модель памяти системы
*
* Аллокатор (Allocator)
* Распредилитель памяти, используется для однократного выделения области памяти.
* В рамках выделенной области развёртывается платформо-независимое runtime окружение библиотеки
*
* Регион памяти (Memory Region)
* Память поделена на три региона:
* - Память объектов
* - Память данных
* - Память структур описания, используемых во время сборки приложения
*
* Регионы памяти могут располагаться в одной физической памяти.
*/
/**
* @brief Аллокатор статической памяти объектов
*
* Надёжная, быстрая память объектов находится ближе к процессору.
*/
std::pmr::memory_resource & static_object_ma;
/**
* @brief Аллокатор статической памяти данных.
*
* Медленная память данных большого объёма.
*/
std::pmr::memory_resource & static_data_ma;
/**
* @brief Аллокатор статической памяти структур описания.
*
* Память структур описания доступна на изменение только из методов шагов инициализации.
* Память можно использовать на запись только до завершения инициализации, читать можно всегда.
*/
std::pmr::memory_resource & static_setup_ma;
std::pair<const char *, std::size_t> (* platform_info)( std::size_t info_id );
Environment(
systemic::SignalManager & sgm,
systemic::StatusManager & stm,
systemic::CustomParameters & cps,
systemic::ResourceHolder & rch,
systemic::ProcScheduler & sch,
systemic::ExceptionInfo & exp,
std::pmr::memory_resource & object_mr,
std::pmr::memory_resource & data_mr,
std::pmr::memory_resource & setup_mr
)
: signals(sgm), statuses(stm), cparams(cps), rholder(rch), scheduler(sch),
static_object_ma(object_mr),
static_data_ma(data_mr),
static_setup_ma(setup_mr),
exception(exp),
platform_info(nullptr) { }
};
}
#endif /* SOURCE_SYSTEMIC_ENVIRONMENT_H_ */