50 lines
865 B
C++
50 lines
865 B
C++
/*
|
|
* BrakeProxy.cpp
|
|
*
|
|
* Created on: 7 îêò. 2020 ã.
|
|
* Author: LeonidTitov
|
|
*/
|
|
|
|
#include "BrakeProxy.hh"
|
|
|
|
technological::proxy::BrakeProxy::BrakeProxy(
|
|
ResourceKeeper<driver::IBrake> & brake ) : brake(brake), intention(false) {}
|
|
|
|
void technological::proxy::BrakeProxy::engage() {
|
|
|
|
intention = false;
|
|
|
|
if( brake ) {
|
|
brake->engage();
|
|
brake.unlock();
|
|
}
|
|
|
|
}
|
|
|
|
void technological::proxy::BrakeProxy::disengage() {
|
|
|
|
intention = true;
|
|
|
|
if( brake or brake.try_lock() )
|
|
brake->disengage();
|
|
|
|
}
|
|
|
|
bool technological::proxy::BrakeProxy::isApplied() const {
|
|
|
|
return (brake) ? brake->isApplied() : false;
|
|
|
|
}
|
|
|
|
bool technological::proxy::BrakeProxy::isFree() const {
|
|
|
|
return (brake) ? brake->isFree() : false;
|
|
|
|
}
|
|
|
|
bool technological::proxy::BrakeProxy::isBlocked() const {
|
|
|
|
return not( brake ) and intention;
|
|
|
|
}
|