24 #ifndef ASYNCPOSITIONCONTROLLER_HPP__
25 #define ASYNCPOSITIONCONTROLLER_HPP__
31 #include <ccut/async.hpp>
32 #include <ccut/utils.hpp>
33 #include <logger/Logger.hpp>
34 #include <oatpp/core/macro/component.hpp>
36 #include "Exception.hpp"
37 #include "FutureCoroutine.hpp"
39 #include "SmcController.hpp"
40 #include "device/DeviceBase.hpp"
41 #include "device/DeviceStore.hpp"
42 #include "device/PositionSensor.hpp"
43 #include "platform/PlatformFactory.hpp"
44 #include "util/serialize.hpp"
46 #include OATPP_CODEGEN_BEGIN(ApiController)
56 addTag(*
this,
"position");
59 void addParams(
const std::shared_ptr<oatpp::web::server::api::Endpoint::Info>& info)
61 info->pathParams.add<String>(
"id")
62 .addExample(
"Resolver for axis X", String(
"mfe://1/resolver/X"))
63 .addExample(
"Resolver for axis Y", String(
"mfe://1/resolver/Y"))
64 .addExample(
"Resolver for axis Z", String(
"mfe://1/resolver/Z"));
67 auto ¶m = info->queryParams.add<String>(
"unit")
68 .addExample(
"steps (default)", String(
"steps"))
69 .addExample(
"radians", String(
"rad"));
71 param.required =
false;
72 param.description =
"request unit";
76 ENDPOINT_INFO(getPosition)
78 info->summary =
"get current position";
79 info->addResponse<Float64>(Status::CODE_200,
"application/json")
80 .addExample(
"example", Float64(1234));
83 ENDPOINT_ASYNC(
"GET",
"/position/{id}/value", getPosition)
86 ENDPOINT_ASYNC_INIT(getPosition)
87 Action act()
override;
91 ENDPOINT_INFO(putCurrentPosition)
93 info->summary =
"Set current position";
94 info->addResponse(Status::CODE_200,
"application/json");
95 info->addConsumes<Float64>(
"application/json")
96 .addExample(
"absolute position", Float64(123));
99 ENDPOINT_ASYNC(
"PUT",
"/position/{id}/settings/value", putCurrentPosition)
102 ENDPOINT_ASYNC_INIT(putCurrentPosition)
103 Action act()
override;
104 Action onSetCurrentPosition(
const Float64 &position);
111 #include OATPP_CODEGEN_END(ApiController)