7 #include "build/config.hpp"
8 #include "build/version.hpp"
15 #include "XLink/XLink.h"
16 #include "spdlog/cfg/env.h"
17 #include "spdlog/cfg/helpers.h"
18 #include "spdlog/details/os.h"
19 #include "spdlog/spdlog.h"
22 #include "XLink/XLinkLog.h"
25 #ifdef DEPTHAI_ENABLE_BACKWARD
26 #include "backward.hpp"
49 #ifdef DEPTHAI_ENABLE_BACKWARD
50 static std::unique_ptr<backward::SignalHandling> signalHandler;
61 bool initialize(std::string additionalInfo,
bool installSignalHandler,
void* javavm) {
62 return initialize(additionalInfo.c_str(), installSignalHandler, javavm);
65 bool initialize(
const char* additionalInfo,
bool installSignalHandler,
void* javavm) {
67 static const bool initialized = [&]() {
71 #ifdef DEPTHAI_ENABLE_BACKWARD
73 auto envSignalHandler =
utility::getEnv(
"DEPTHAI_INSTALL_SIGNAL_HANDLER");
74 if(installSignalHandler && envSignalHandler !=
"0") {
75 signalHandler = std::make_unique<backward::SignalHandling>();
78 (void)installSignalHandler;
84 if(javavm ==
nullptr && !javavmEnvStr.empty()) {
86 sscanf(javavmEnvStr.c_str(),
"%" SCNuPTR,
reinterpret_cast<uintptr_t*
>(&javavm));
91 if(additionalInfo !=
nullptr && additionalInfo[0] !=
'\0') {
94 logger::debug(
"Library information - version: {}, commit: {} from {}, build: {}, libusb enabled: {}",
97 build::COMMIT_DATETIME,
98 build::BUILD_DATETIME,
99 build::HAVE_LIBUSB_SUPPORT);
107 static XLinkGlobalHandler_t xlinkGlobalHandler = {};
108 xlinkGlobalHandler.protocol = X_LINK_USB_VSC;
109 xlinkGlobalHandler.options = javavm;
110 auto status = XLinkInitialize(&xlinkGlobalHandler);
111 const auto ERROR_MSG_USB_TIP = fmt::format(
"If running in a container, make sure that the following is set: \"{}\"",
112 "-v /dev/bus/usb:/dev/bus/usb --device-cgroup-rule='c 189:* rmw'");
113 if(X_LINK_SUCCESS !=
status) {
114 std::string errorMsg = fmt::format(
"Couldn't initialize XLink: {}. ", XLinkErrorToStr(
status));
115 if(
status == X_LINK_INIT_USB_ERROR) {
116 errorMsg += ERROR_MSG_USB_TIP;
119 throw std::runtime_error(errorMsg);
123 #ifdef DEPTHAI_ENABLE_LIBUSB
124 if(!XLinkIsProtocolInitialized(X_LINK_USB_VSC)) {
125 logger::warn(
"USB protocol not available - {}", ERROR_MSG_USB_TIP);
132 if(profilingEnvLevel ==
"1") {
138 if(xlinkEnvLevel ==
"debug") {
139 mvLogDefaultLevelSet(MVLOG_DEBUG);
140 }
else if(xlinkEnvLevel ==
"info") {
141 mvLogDefaultLevelSet(MVLOG_INFO);
142 }
else if(xlinkEnvLevel ==
"warn") {
143 mvLogDefaultLevelSet(MVLOG_WARN);
144 }
else if(xlinkEnvLevel ==
"error") {
145 mvLogDefaultLevelSet(MVLOG_ERROR);
146 }
else if(xlinkEnvLevel ==
"fatal") {
147 mvLogDefaultLevelSet(MVLOG_FATAL);
148 }
else if(xlinkEnvLevel ==
"off") {
149 mvLogDefaultLevelSet(MVLOG_LAST);
152 mvLogDefaultLevelSet(MVLOG_FATAL);