EventManager: Add optional debug printing
parent
2f7c3a2dda
commit
b6d9ef4c7e
|
|
@ -110,6 +110,10 @@ for(size_t i = 0; i < messageCount; i++) {
|
||||||
icsneo_closeDevice(myDevice);
|
icsneo_closeDevice(myDevice);
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### Debugging
|
||||||
|
|
||||||
|
To enable debug printing set the `LIBICSNEO_PRINT_EVENTS` environmental variable to the desired `APIEvent::Severity` level, all `Event`s greater than or equal to that level will be printed to stderr. For example, to print all warnings and errors: `LIBICSNEO_PRINT_EVENTS=32`.
|
||||||
|
|
||||||
## Building from Source
|
## Building from Source
|
||||||
### FTD3XX
|
### FTD3XX
|
||||||
Some devices require FTD3XX for USB communication so the [FTDI D3XX library](https://ftdichip.com/drivers/d3xx-drivers/) will be automatically downloaded and included. If you would like to use a system copy of D3XX instead you can set `FTD3XX_ROOT` to the path containing `f3d3xx.h` (`-DFTD3XX_ROOT=<path to directory containing ftd3xx.h>`).
|
Some devices require FTD3XX for USB communication so the [FTDI D3XX library](https://ftdichip.com/drivers/d3xx-drivers/) will be automatically downloaded and included. If you would like to use a system copy of D3XX instead you can set `FTD3XX_ROOT` to the path containing `f3d3xx.h` (`-DFTD3XX_ROOT=<path to directory containing ftd3xx.h>`).
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,8 @@
|
||||||
#include "icsneo/api/eventmanager.h"
|
#include "icsneo/api/eventmanager.h"
|
||||||
#include <memory>
|
#include <memory>
|
||||||
|
#include <optional>
|
||||||
|
#include <iostream>
|
||||||
|
#include <cstdlib>
|
||||||
|
|
||||||
using namespace icsneo;
|
using namespace icsneo;
|
||||||
|
|
||||||
|
|
@ -33,6 +36,25 @@ void EventManager::cancelErrorDowngradingOnCurrentThread() {
|
||||||
void EventManager::add(APIEvent event) {
|
void EventManager::add(APIEvent event) {
|
||||||
if(destructing)
|
if(destructing)
|
||||||
return;
|
return;
|
||||||
|
static const auto printLevel = []() -> std::optional<uint8_t> {
|
||||||
|
#ifdef _MSC_VER
|
||||||
|
#pragma warning(push)
|
||||||
|
#pragma warning(disable : 4996)
|
||||||
|
#endif
|
||||||
|
const auto level = std::getenv("LIBICSNEO_PRINT_EVENTS");
|
||||||
|
#ifdef _MSC_VER
|
||||||
|
#pragma warning(pop)
|
||||||
|
#endif
|
||||||
|
if(!level)
|
||||||
|
return std::nullopt;
|
||||||
|
try {
|
||||||
|
return (uint8_t)std::stoi(level);
|
||||||
|
} catch (std::invalid_argument const&) {
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
}();
|
||||||
|
if(printLevel && (uint8_t)event.getSeverity() >= *printLevel)
|
||||||
|
std::cerr << event.describe() << std::endl;
|
||||||
if(event.getSeverity() == APIEvent::Severity::Error) {
|
if(event.getSeverity() == APIEvent::Severity::Error) {
|
||||||
// if the error was added on a thread that downgrades errors (non-user thread)
|
// if the error was added on a thread that downgrades errors (non-user thread)
|
||||||
std::lock_guard<std::mutex> lk(downgradedThreadsMutex);
|
std::lock_guard<std::mutex> lk(downgradedThreadsMutex);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue