44 lines
1.6 KiB
C++
44 lines
1.6 KiB
C++
/*
|
|
* BinaryEncoderSync.cpp
|
|
*
|
|
* Created on: 1 ôåâð. 2022 ã.
|
|
* Author: titov
|
|
*/
|
|
|
|
#include "BinaryEncoderSync.hh"
|
|
|
|
#include "../../driver/BinaryEncoderSync.hh"
|
|
|
|
bool application::board::BinaryEncoderSync::input( Environment & env ) {
|
|
|
|
return grab( data_master, env.rholder.getShared<communication::ISubscriberRegistrator>( links.data_master ) );
|
|
|
|
}
|
|
|
|
void application::board::BinaryEncoderSync::build( Environment & env ) {
|
|
|
|
Local<communication::ISubscriberRegistrator> local_data_master( data_master, *env.rholder.getShared<communication::ISubscriberRegistrator>( links.data_master ) );
|
|
|
|
driver::detail::BinaryEncoderSync * encoder = memories::instance_object<driver::detail::BinaryEncoderSync>( env.static_object_ma,
|
|
config.angle_bitoffset, config.agnle_bitsize,
|
|
config.turn_bitoffset, config.turn_bitsize );
|
|
|
|
local_data_master->addSubscriber(config.frame_bitoffset, config.frame_bitsize, encoder );
|
|
|
|
systemic::ProcScheduler::ProcessParameter proc = {
|
|
.priority = params.priority,
|
|
.period = params.period, .phase = params.phase,
|
|
.controlled = false
|
|
};
|
|
|
|
env.scheduler.registerProcess( params.processor_id, *encoder,
|
|
proc );
|
|
|
|
env.rholder.share<driver::IEncoder>( *encoder, links.encoder_sync );
|
|
|
|
}
|
|
|
|
application::board::BinaryEncoderSync::BinaryEncoderSync(
|
|
const Links & links, const Setting & config,
|
|
configuration::ProcessConfig & params ) : links(links), config(config), params(params) {}
|