36 #include <glog/logging.h>
41 #include <unordered_map>
73 LOG(
ERROR) <<
"No sensors available at: " << ip;
99 payload::ServerStatus::REQUEST_ACCEPTED) {
100 LOG(
WARNING) <<
"API execution on Target Failed";
107 m_interruptCallback.second(
125 std::unique_lock<std::mutex> mutex_lock(
m_implData->handle.net_mutex);
129 if (!
m_implData->handle.net->isServer_Connected()) {
138 if (
m_implData->handle.net->SendCommand() != 0) {
152 delete[]
it->second.cache;
153 it->second.cache =
nullptr;
158 std::map<std::string, std::string> &
params) {
161 std::unique_lock<std::mutex> mutex_lock(
m_implData->handle.net_mutex);
165 return Status::UNREACHABLE;
178 return Status::GENERIC_ERROR;
182 payload::ServerStatus::REQUEST_ACCEPTED) {
183 LOG(
WARNING) <<
"API execution on Target Failed";
184 return Status::GENERIC_ERROR;
196 params[
"radialThreshMin"] =
198 params[
"radialThreshMax"] =
202 params[
"jblfWindowSize"] =
204 params[
"jblfGaussianSigma"] =
206 params[
"jblfExponentialTerm"] =
210 params[
"jblfABThreshold"] =
220 const std::map<std::string, std::string> &
params) {
223 std::unique_lock<std::mutex> mutex_lock(
m_implData->handle.net_mutex);
227 return Status::UNREACHABLE;
233 params.at(
"abThreshMin"));
235 params.at(
"abSumThresh"));
239 params.at(
"radialThreshMin"));
241 params.at(
"radialThreshMax"));
243 params.at(
"jblfApplyFlag"));
245 params.at(
"jblfWindowSize"));
247 params.at(
"jblfGaussianSigma"));
249 params.at(
"jblfExponentialTerm"));
251 params.at(
"jblfMaxEdge"));
253 params.at(
"jblfABThreshold"));
262 return Status::GENERIC_ERROR;
266 payload::ServerStatus::REQUEST_ACCEPTED) {
267 LOG(
WARNING) <<
"API execution on Target Failed";
268 return Status::GENERIC_ERROR;
279 std::unique_lock<std::mutex> mutex_lock(
m_implData->handle.net_mutex);
283 return Status::UNREACHABLE;
288 return Status::UNREACHABLE;
301 return Status::GENERIC_ERROR;
305 payload::ServerStatus::REQUEST_ACCEPTED) {
306 LOG(
WARNING) <<
"API execution on Target Failed";
307 return Status::GENERIC_ERROR;
327 std::unique_lock<std::mutex> mutex_lock(
m_implData->handle.net_mutex);
331 return Status::UNREACHABLE;
335 LOG(
INFO) <<
"Configuring to receive frame in async mode";
347 return Status::GENERIC_ERROR;
351 LOG(
WARNING) <<
"Target is not build to send in async mode";
352 return Status::GENERIC_ERROR;
369 return Status::GENERIC_ERROR;
373 payload::ServerStatus::REQUEST_ACCEPTED) {
374 LOG(
WARNING) <<
"API execution on Target Failed";
375 return Status::GENERIC_ERROR;
389 std::unique_lock<std::mutex> mutex_lock(
m_implData->handle.net_mutex);
391 LOG(
INFO) <<
"Stopping device";
395 return Status::UNREACHABLE;
408 return Status::GENERIC_ERROR;
412 payload::ServerStatus::REQUEST_ACCEPTED) {
413 LOG(
WARNING) <<
"API execution on Target Failed";
414 return Status::GENERIC_ERROR;
430 std::unique_lock<std::mutex> mutex_lock(
m_implData->handle.net_mutex);
434 return Status::UNREACHABLE;
447 return Status::GENERIC_ERROR;
451 payload::ServerStatus::REQUEST_ACCEPTED) {
452 LOG(
WARNING) <<
"API execution on Target Failed";
453 return Status::GENERIC_ERROR;
457 if (modes.size() != 0) {
476 std::unique_lock<std::mutex> mutex_lock(
m_implData->handle.net_mutex);
480 return Status::UNREACHABLE;
494 return Status::GENERIC_ERROR;
498 payload::ServerStatus::REQUEST_ACCEPTED) {
499 LOG(
WARNING) <<
"API execution on Target Failed";
500 return Status::GENERIC_ERROR;
504 .depth_sensor_mode_details()
505 .pixel_format_index();
507 .depth_sensor_mode_details()
508 .frame_width_in_bytes();
510 .depth_sensor_mode_details()
511 .frame_height_in_bytes();
513 .depth_sensor_mode_details()
514 .base_resolution_width();
516 .depth_sensor_mode_details()
517 .base_resolution_height();
519 .depth_sensor_mode_details()
524 .depth_sensor_mode_details()
528 .depth_sensor_mode_details()
529 .frame_content_size();
532 .depth_sensor_mode_details()
548 std::unique_lock<std::mutex> mutex_lock(
m_implData->handle.net_mutex);
552 return Status::UNREACHABLE;
566 return Status::GENERIC_ERROR;
570 payload::ServerStatus::REQUEST_ACCEPTED) {
571 LOG(
WARNING) <<
"API execution on Target Failed";
572 return Status::GENERIC_ERROR;
585 std::unique_lock<std::mutex> mutex_lock(
m_implData->handle.net_mutex);
589 return Status::UNREACHABLE;
596 .mutable_mode_details()
597 ->set_pixel_format_index(
type.pixelFormatIndex);
599 .mutable_mode_details()
600 ->set_frame_width_in_bytes(
type.frameWidthInBytes);
602 .mutable_mode_details()
603 ->set_frame_height_in_bytes(
type.frameHeightInBytes);
605 .mutable_mode_details()
606 ->set_base_resolution_width(
type.baseResolutionWidth);
608 .mutable_mode_details()
609 ->set_base_resolution_height(
type.baseResolutionHeight);
615 for (
int i = 0;
i <
type.frameContent.size();
i++) {
616 content->add_frame_content(
type.frameContent.at(
i));
631 return Status::GENERIC_ERROR;
635 payload::ServerStatus::REQUEST_ACCEPTED) {
636 LOG(
WARNING) <<
"API execution on Target Failed";
637 return Status::GENERIC_ERROR;
653 std::unique_lock<std::mutex> mutex_lock(
m_implData->handle.net_mutex);
658 return Status::GENERIC_ERROR;
666 return Status::UNREACHABLE;
679 return Status::GENERIC_ERROR;
684 return Status::GENERIC_ERROR;
688 payload::ServerStatus::REQUEST_ACCEPTED) {
689 LOG(
WARNING) <<
"API execution on Target Failed";
690 return Status::GENERIC_ERROR;
695 LOG(
WARNING) <<
"getFrame() failed on target";
705 std::vector<std::string> &controls)
const {
709 std::unique_lock<std::mutex> mutex_lock(
m_implData->handle.net_mutex);
713 return Status::UNREACHABLE;
726 return Status::GENERIC_ERROR;
730 payload::ServerStatus::REQUEST_ACCEPTED) {
731 LOG(
WARNING) <<
"API execution on Target Failed";
732 return Status::GENERIC_ERROR;
744 controls.push_back(controlName);
756 std::unique_lock<std::mutex> mutex_lock(
m_implData->handle.net_mutex);
760 return Status::UNREACHABLE;
775 return Status::GENERIC_ERROR;
779 payload::ServerStatus::REQUEST_ACCEPTED) {
780 LOG(
WARNING) <<
"API execution on Target Failed";
781 return Status::GENERIC_ERROR;
794 std::unique_lock<std::mutex> mutex_lock(
m_implData->handle.net_mutex);
798 return Status::UNREACHABLE;
812 return Status::GENERIC_ERROR;
816 payload::ServerStatus::REQUEST_ACCEPTED) {
817 LOG(
WARNING) <<
"API execution on Target Failed";
818 return Status::GENERIC_ERROR;
842 LOG(
ERROR) <<
"Won't return the handle. Device hasn't been opened yet.";
855 LOG(
INFO) <<
"Function used only on target!";
861 unsigned int usDelay) {
865 std::unique_lock<std::mutex> mutex_lock(
m_implData->handle.net_mutex);
869 return Status::UNREACHABLE;
886 return Status::GENERIC_ERROR;
890 payload::ServerStatus::REQUEST_ACCEPTED) {
891 LOG(
WARNING) <<
"API execution on Target Failed";
892 return Status::GENERIC_ERROR;
898 *
data =
static_cast<uint16_t
>(
907 unsigned int usDelay) {
911 std::unique_lock<std::mutex> mutex_lock(
m_implData->handle.net_mutex);
915 return Status::UNREACHABLE;
934 return Status::GENERIC_ERROR;
938 payload::ServerStatus::REQUEST_ACCEPTED) {
939 LOG(
WARNING) <<
"API execution on Target Failed";
940 return Status::GENERIC_ERROR;
949 uint32_t cmd, uint8_t *readback_data, uint16_t payload_len) {
953 std::unique_lock<std::mutex> mutex_lock(
m_implData->handle.net_mutex);
957 return Status::UNREACHABLE;
966 4 *
sizeof(uint8_t));
976 return Status::GENERIC_ERROR;
980 payload::ServerStatus::REQUEST_ACCEPTED) {
981 LOG(
WARNING) <<
"API execution on Target Failed";
982 return Status::GENERIC_ERROR;
988 memcpy(readback_data,
997 uint16_t payload_len) {
1001 std::unique_lock<std::mutex> mutex_lock(
m_implData->handle.net_mutex);
1005 return Status::UNREACHABLE;
1020 return Status::GENERIC_ERROR;
1024 payload::ServerStatus::REQUEST_ACCEPTED) {
1025 LOG(
WARNING) <<
"API execution on Target Failed";
1026 return Status::GENERIC_ERROR;
1041 uint16_t payload_len) {
1045 std::unique_lock<std::mutex> mutex_lock(
m_implData->handle.net_mutex);
1049 return Status::UNREACHABLE;
1067 return Status::GENERIC_ERROR;
1071 payload::ServerStatus::REQUEST_ACCEPTED) {
1072 LOG(
WARNING) <<
"API execution on Target Failed";
1073 return Status::GENERIC_ERROR;
1083 uint16_t payload_len) {
1087 std::unique_lock<std::mutex> mutex_lock(
m_implData->handle.net_mutex);
1091 return Status::UNREACHABLE;
1107 return Status::GENERIC_ERROR;
1111 payload::ServerStatus::REQUEST_ACCEPTED) {
1112 LOG(
WARNING) <<
"API execution on Target Failed";
1113 return Status::GENERIC_ERROR;
1125 std::unique_lock<std::mutex> mutex_lock(
m_implData->handle.net_mutex);
1129 return Status::UNREACHABLE;
1142 return Status::GENERIC_ERROR;
1146 payload::ServerStatus::REQUEST_ACCEPTED) {
1147 LOG(
WARNING) <<
"API execution on Target Failed";
1148 return Status::GENERIC_ERROR;
1171 int &imagerStatus) {
1175 std::unique_lock<std::mutex> mutex_lock(
m_implData->handle.net_mutex);
1179 return Status::UNREACHABLE;
1192 return Status::GENERIC_ERROR;
1196 payload::ServerStatus::REQUEST_ACCEPTED) {
1197 LOG(
WARNING) <<
"API execution on Target Failed";
1198 return Status::GENERIC_ERROR;
1210 uint8_t *iniFile, uint16_t iniFileLength, uint8_t *calData,
1211 uint16_t calDataLength) {
1215 std::unique_lock<std::mutex> mutex_lock(
m_implData->handle.net_mutex);
1219 return Status::UNREACHABLE;
1238 return Status::GENERIC_ERROR;
1242 payload::ServerStatus::REQUEST_ACCEPTED) {
1243 LOG(
WARNING) <<
"API execution on Target Failed";
1244 return Status::GENERIC_ERROR;
1253 using namespace std::chrono;
1257 steady_clock::time_point latestActivityTimestamp =
1258 m_implData->handle.net->getLatestActivityTimestamp();
1261 steady_clock::time_point now = steady_clock::now();
1264 duration<double> inactivityDuration =
1265 duration_cast<duration<double>>(now - latestActivityTimestamp);
1266 if (inactivityDuration.count() > 1.0) {
1268 std::unique_lock<std::mutex> mutex_lock(
1270 if (
m_implData->handle.net->isServer_Connected()) {
1278 std::this_thread::sleep_for(std::chrono::milliseconds(1000));
1287 std::unique_lock<std::mutex> mutex_lock(
m_implData->handle.net_mutex);
1291 return Status::UNREACHABLE;
1305 return Status::GENERIC_ERROR;
1309 payload::ServerStatus::REQUEST_ACCEPTED) {
1310 LOG(
WARNING) <<
"API execution on Target Failed";
1311 return Status::GENERIC_ERROR;
1325 std::unique_lock<std::mutex> mutex_lock(
m_implData->handle.net_mutex);
1329 return Status::UNREACHABLE;
1344 return Status::GENERIC_ERROR;
1348 payload::ServerStatus::REQUEST_ACCEPTED) {
1349 LOG(
WARNING) <<
"API execution on Target Failed";
1350 return Status::GENERIC_ERROR;