Newer
Older

Fabian Tërnava
committed
#include "ExecutableSkillLibrarySegment.h"

Fabian Tërnava
committed
#include <ArmarXCore/core/time/ice_conversions.h>
#include <RobotAPI/libraries/armem/server/MemoryToIceAdapter.h>
#include <RobotAPI/libraries/armem_skills/aron/Skill.aron.generated.h>
#include <RobotAPI/libraries/armem_skills/aron_conversions.h>
#include <RobotAPI/libraries/aron/converter/datatype/DatatypeConverterVisitor.h>
#include <RobotAPI/libraries/aron/converter/json/NLohmannJSONConverter.h>

Fabian Tërnava
committed
namespace armarx::skills::segment
{
ExecutableSkillLibraryCoreSegment::ExecutableSkillLibraryCoreSegment(
armem::server::MemoryToIceAdapter& iceMemory) :
Base(iceMemory, CoreSegmentName, skills::arondto::SkillDescription::ToAronType())
void
ExecutableSkillLibraryCoreSegment::defineProperties(PropertyDefinitionsPtr defs,
const std::string& prefix)
this->setDefaultMaxHistorySize(10);
Base::defineProperties(defs, prefix);
void
ExecutableSkillLibraryCoreSegment::init()
void
ExecutableSkillLibraryCoreSegment::addSkillProvider(const skills::ProviderInfo& info)
auto skills = info.providedSkills;

Fabian Tërnava
committed
auto provId = id().withProviderSegmentName(info.providerId.providerName);
for (const auto& [s, d] : skills)
armarx::skills::arondto::SkillDescription skillDescription;
armem::toAron(skillDescription, d);
armem::Commit commit;
auto& entityUpdate = commit.add();
entityUpdate.confidence = 1.0;
entityUpdate.referencedTime = armem::Time::Now();
entityUpdate.sentTime = armem::Time::Now();
entityUpdate.arrivedTime = armem::Time::Now();
entityUpdate.instancesData = {skillDescription.toAron()};
entityUpdate.entityID = provId.withEntityName(d.skillId.skillName);
// Commit data to memory and notify
iceMemory.commit(commit);
}
void
ExecutableSkillLibraryCoreSegment::removeSkillProvider(const std::string& providerName)
skills.erase(providerName);
// TODO also add info about removed provider to memory?
} // namespace armarx::skills::segment