MotorControlModuleSDFM_TMS3.../Projects/EFC_Communication/UMLibrary/application/virtualization/PinFromDecoderv2SetupInitializer.cpp
2024-06-07 11:12:56 +03:00

50 lines
1.6 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.

/*
* PinFromDecoderSetupv2.cpp
*
* Created on: 22 окт. 2019 г.
* Author: user
*/
#include "PinFromDecoderv2Setup.hh"
#include "../../systemic/SystemException.hh"
struct GpioPinDecoderError : public systemic::SystemException {
const char * what() const noexcept { return "driver::GpioPinDecoder_v2::grab return nullptr"; }
std::size_t id() const noexcept { return 3873; };
std::pair<const char *, std::size_t> binary() const noexcept {
return {reinterpret_cast<const char *>(this), sizeof(GpioPinDecoderError)};
}
GpioPinDecoderError( configuration::Environment::Id decoder_id, uint16_t pin_id ) : decoder_id(decoder_id), pin_id(pin_id) {}
configuration::Environment::Id decoder_id;
uint16_t pin_id;
};
bool application::virtualization::PinFromDecoder_v2Setup::input( Environment & env ) {
return grab( pin_decoder, env.rholder.getShared< driver::GpioPinDecoder_v2 >( links.gpio_decoder_id ) );
}
void application::virtualization::PinFromDecoder_v2Setup::build( Environment & env ) {
Local< driver::GpioPinDecoder_v2 > decoder( pin_decoder, *env.rholder.getShared< driver::GpioPinDecoder_v2 >( links.gpio_decoder_id ) );
peripheral::IGpio * pin = decoder->grab( config.pin_id );
if( not pin )
throw GpioPinDecoderError( links.gpio_decoder_id, config.pin_id );
if( links.gpio_id )
env.rholder.share( *pin, links.gpio_id );
}
application::virtualization::PinFromDecoder_v2Setup::PinFromDecoder_v2Setup(
const Links & links, const Setting & config ) : links(links), config(config)
{}