17 std::bind(&
App::addClient, this, std::placeholders::_1, std::placeholders::_2))
18 , m_cameraInterface(std::make_unique<camera::Interface>(camera::Interface::HalfResolution()))
19 , m_frameCollector(std::make_unique<frame_collector::FrameCollector>(*m_cameraInterface.get()))
20 , m_messageHandler(std::make_unique<handlers::MessageHandler>())
135 auto ctx = std::make_shared<irsol::server::handlers::Context>(*
this);
138 registerMessageHandler<protocol::Inquiry, handlers::InquiryFrameRateHandler>(
"fr", ctx);
139 registerMessageHandler<protocol::Assignment, handlers::AssignmentFrameRateHandler>(
"fr", ctx);
140 registerMessageHandler<protocol::Assignment, handlers::AssignmentInputSequenceLengthHandler>(
142 registerMessageHandler<protocol::Assignment, handlers::AssignmentIntegrationTimeHandler>(
144 registerMessageHandler<protocol::Inquiry, handlers::InquiryIntegrationTimeHandler>(
"it", ctx);
145 registerMessageHandler<protocol::Inquiry, handlers::InquiryInputSequenceLengthHandler>(
147 registerMessageHandler<protocol::Command, handlers::CommandAbortHandler>(
"abort", ctx);
148 registerMessageHandler<protocol::Command, handlers::CommandGIHandler>(
"gi", ctx);
149 registerMessageHandler<protocol::Command, handlers::CommandGISHandler>(
"gis", ctx);
150 registerMessageHandler<protocol::Inquiry, handlers::InquiryImgLeftHandler>(
"img_l", ctx);
151 registerMessageHandler<protocol::Inquiry, handlers::InquiryImgTopHandler>(
"img_t", ctx);
152 registerMessageHandler<protocol::Inquiry, handlers::InquiryImgWidthHandler>(
"img_w", ctx);
153 registerMessageHandler<protocol::Inquiry, handlers::InquiryImgHeightHandler>(
"img_h", ctx);
154 registerMessageHandler<protocol::Assignment, handlers::AssignmentImgLeftHandler>(
"img_l", ctx);
155 registerMessageHandler<protocol::Assignment, handlers::AssignmentImgTopHandler>(
"img_t", ctx);
156 registerMessageHandler<protocol::Assignment, handlers::AssignmentImgWidthHandler>(
"img_w", ctx);
157 registerMessageHandler<protocol::Assignment, handlers::AssignmentImgHeightHandler>(
"img_h", ctx);
159 registerLambdaHandler<protocol::Command>(
163 std::shared_ptr<handlers::Context> ctx,
164 std::shared_ptr<irsol::server::ClientSession> client,
166 std::vector<protocol::OutMessage>
result;
167 auto& cam = ctx->app.camera();
168 auto img = cam.captureImage(std::chrono::milliseconds(10000));
171 IRSOL_NAMED_LOG_ERROR(client->id(),
"Failed to capture image.");
172 result.emplace_back(irsol::protocol::Error::from(cmd,
"Failed to capture image"));
176 uint32_t width =
static_cast<uint32_t
>(img.GetWidth());
177 uint32_t height =
static_cast<uint32_t
>(img.GetHeight());
178 size_t dataSize = img.GetSize();
180 const void* imageBuffer = img.GetImageData();
181 std::vector<irsol::types::byte_t> rawData(dataSize);
182 memcpy(rawData.data(), imageBuffer, dataSize);