MotorControlModuleSDFM_TMS3.../Projects/EFC_Communication/UMLibrary/systemic/CustomParameters.cpp
2024-06-07 11:12:56 +03:00

87 lines
2.4 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.

/*
* CustomParameters.cpp
*
* Created on: 20 мая 2019 г.
* Author: titov
*/
#include "CustomParameters.hpp"
systemic::CustomParameters::CustomParameters(
IParameterProvider * * providers, std::size_t size) :
providers(providers), size(size) {}
bool systemic::CustomParameters::addProvider( IParameterProvider * provider,
ProviderId provider_id ) {
bool result = false;
if( provider_id < size and not providers[provider_id] )
result = ( providers[provider_id] = provider );
return result;
}
bool systemic::CustomParameters::flushString(
ProviderId provider_id, Id parameter_id,
std::pair<const peripheral::protected_char *, std::size_t> string ) {
bool result = false;
if( provider_id < size and providers[provider_id] ) {
if( providers[provider_id]->getParameterBuff(parameter_id).get().first == string.first )
result = providers[provider_id]->flushParameterBuff(parameter_id);
}
return result;
}
systemic::SharedData systemic::CustomParameters::getString( ProviderId provider_id, Id parameter_id) const {
systemic::SharedData result;
if( provider_id < size and providers[provider_id] )
result = providers[provider_id]->getParameterBuff(parameter_id);
return result;
}
systemic::SharedData systemic::CustomParameters::createString( ProviderId provider_id, Id parameter_id, std::size_t size ) {
systemic::SharedData result;
if( provider_id < CustomParameters::size and providers[provider_id] ){
result = providers[provider_id]->createParameterBuff(parameter_id, size);
}
return result;
}
bool systemic::getStringView( SharedData & string,
const CustomParameters & cparams,
CustomParameters::ProviderId provider_id,
CustomParameters::Id id ) {
if( not string.get().first )
string = cparams.getString( provider_id, id );
return string.get().first;
}
bool systemic::createStringView( SharedData & string,
CustomParameters & cparams,
CustomParameters::ProviderId provider_id,
std::size_t size,
CustomParameters::Id id ) {
if( not string.get().first )
string = cparams.createString( provider_id, id, size );
return string.get().first;
}