MotorControlModuleSDFM_TMS3.../Projects/EFC_Communication/UMLibrary/configuration/Environment.hh
2024-06-07 11:12:56 +03:00

108 lines
3.7 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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