50 lines
865 B
C++
50 lines
865 B
C++
|
|
/*
|
|||
|
|
* BrakeProxy.cpp
|
|||
|
|
*
|
|||
|
|
* Created on: 7 <EFBFBD><EFBFBD><EFBFBD>. 2020 <EFBFBD>.
|
|||
|
|
* 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;
|
|||
|
|
|
|||
|
|
}
|