summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--device.cc12
-rw-r--r--libnitrokey/device.h7
2 files changed, 19 insertions, 0 deletions
diff --git a/device.cc b/device.cc
index 74de0b3..d3f6e09 100644
--- a/device.cc
+++ b/device.cc
@@ -36,12 +36,24 @@ std::mutex mex_dev_com;
using namespace nitrokey::device;
using namespace nitrokey::log;
+using namespace nitrokey::misc;
using namespace std::chrono;
const uint16_t nitrokey::device::NITROKEY_VID = 0x20a0;
const uint16_t nitrokey::device::NITROKEY_PRO_PID = 0x4108;
const uint16_t nitrokey::device::NITROKEY_STORAGE_PID = 0x4109;
+Option<DeviceModel> nitrokey::device::product_id_to_model(uint16_t product_id) {
+ switch (product_id) {
+ case NITROKEY_PRO_PID:
+ return DeviceModel::PRO;
+ case NITROKEY_STORAGE_PID:
+ return DeviceModel::STORAGE;
+ default:
+ return {};
+ }
+}
+
std::atomic_int Device::instances_count{0};
std::chrono::milliseconds Device::default_delay {0} ;
diff --git a/libnitrokey/device.h b/libnitrokey/device.h
index 477640f..8fbb385 100644
--- a/libnitrokey/device.h
+++ b/libnitrokey/device.h
@@ -26,6 +26,7 @@
#include <cstdint>
#include <string>
#include <vector>
+#include "misc.h"
#define HID_REPORT_SIZE 65
@@ -64,6 +65,12 @@ extern const uint16_t NITROKEY_PRO_PID;
extern const uint16_t NITROKEY_STORAGE_PID;
/**
+ * Convert the given USB product ID to a Nitrokey model. If there is no model
+ * with that ID, return an absent value.
+ */
+misc::Option<DeviceModel> product_id_to_model(uint16_t product_id);
+
+/**
* Information about a connected device.
*
* This struct contains the information about a connected device returned by