24 #include "MockPositionSensor.hpp"
26 #include <ccut/async.hpp>
28 #include "MockPlatform.hpp"
29 #include "device/PositionSensor.hpp"
31 using namespace logger;
33 using namespace smc::internal;
35 MockPositionSensor::MockPositionSensor(
36 const std::string &uid,
37 const std::shared_ptr<MockPlatform> &mock) :
42 std::future<units::value_t> MockPositionSensor::getPosition(
44 units::unit_t unit)
const
46 std::shared_ptr<MockPlatform> mock(m_mock.lock());
48 return ccut::make_future_error<units::value_t>(
49 Exception(ErrorCode::Canceled,
"platform stopped (deleted)"));
51 info(MockPlatform::s_loggerCat)
52 <<
"Querying POSITION " <<
uid()
53 <<
" on MockPlatform id: " << mock->getPlatformId() <<
" for position";
54 std::promise<units::value_t> positionPromise;
55 auto positionFuture = positionPromise.get_future();
59 mock->getLvdtAngle(
uid())};
60 if (!
convert(lvdtPosition, unit))
61 throw Exception(ErrorCode::IncompatibleUnits);
63 positionPromise.set_value(lvdtPosition);
67 positionPromise.set_exception(std::current_exception());
69 return positionFuture;
75 std::shared_ptr<MockPlatform> mock(m_mock.lock());
77 return ccut::make_future_error(
78 Exception(ErrorCode::Canceled,
"platform stopped (deleted)"));
80 info(MockPlatform::s_loggerCat)
81 <<
"Set POSITION " <<
uid()
82 <<
" on MockPlatform id: " << mock->getPlatformId();
83 std::promise<void> prom;
87 if (!
convert(lvdtPosition, units::MILLIMETERS))
88 throw Exception(ErrorCode::IncompatibleUnits);
90 mock->setLvdtAngle(
uid(), lvdtPosition.value);
95 prom.set_exception(std::current_exception());
97 return prom.get_future();
102 std::shared_ptr<MockPlatform> mock(m_mock.lock());
104 throw Exception(ErrorCode::Canceled,
"platform stopped (deleted)");
106 info(MockPlatform::s_loggerCat)
107 <<
"Get last POSITION " <<
uid()
108 <<
" on MockPlatform id: " << mock->getPlatformId();
113 throw Exception(ErrorCode::IncompatibleUnits);
virtual bool convert(units::Value &value, units::unit_t unit) const
Convert value in a manner specific to this device.
DeviceId uid() const
Get the address of device.
Exception thrown by MotionController in case of issues with command.
units::value_t lastPosition(units::unit_t unit) const override
Get last known position.
std::future< void > setActualPosition(const units::value_t &value) const override
Set the current position value.
main motion-lib namespace