summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/command_id.h41
-rw-r--r--include/device_proto.h34
2 files changed, 45 insertions, 30 deletions
diff --git a/include/command_id.h b/include/command_id.h
index 45285aa..093de1f 100644
--- a/include/command_id.h
+++ b/include/command_id.h
@@ -4,18 +4,31 @@
namespace nitrokey {
namespace proto {
-
-#define OUTPUT_CMD_STICK20_STATUS_IDLE 0
-#define OUTPUT_CMD_STICK20_STATUS_OK 1
-#define OUTPUT_CMD_STICK20_STATUS_BUSY 2
-#define OUTPUT_CMD_STICK20_STATUS_WRONG_PASSWORD 3
-#define OUTPUT_CMD_STICK20_STATUS_BUSY_PROGRESSBAR 4
-#define OUTPUT_CMD_STICK20_STATUS_PASSWORD_MATRIX_READY 5
-#define OUTPUT_CMD_STICK20_STATUS_NO_USER_PASSWORD_UNLOCK 6
-#define OUTPUT_CMD_STICK20_STATUS_SMARTCARD_ERROR 7
-#define OUTPUT_CMD_STICK20_STATUS_SECURITY_BIT_ACTIVE 8
-
-#define STICK20_CMD_START_VALUE 0x20
+ namespace stick20 {
+ enum class device_status : uint8_t {
+ idle = 0,
+ ok,
+ busy,
+ wrong_password,
+ busy_progressbar,
+ password_matrix_ready,
+ no_user_password_unlock,
+ smartcard_error,
+ security_bit_active
+ };
+ const int CMD_START_VALUE = 0x20;
+ const int CMD_END_VALUE = 0x60;
+ }
+ namespace stick10 {
+ enum class command_status : uint8_t {
+ ok = 0,
+ };
+ enum class device_status : uint8_t {
+ ok = 0,
+ busy = 1,
+ wrong_password = 4,
+ };
+ }
enum class CommandID : uint8_t {
@@ -42,8 +55,8 @@ enum class CommandID : uint8_t {
CHANGE_USER_PIN = 0x14,
CHANGE_ADMIN_PIN = 0x15,
- STICK20_CMD_SEND_PASSWORD = STICK20_CMD_START_VALUE + 18,
- STICK20_CMD_SEND_NEW_PASSWORD = STICK20_CMD_START_VALUE + 19,
+ STICK20_CMD_SEND_PASSWORD = stick20::CMD_START_VALUE + 18,
+ STICK20_CMD_SEND_NEW_PASSWORD = stick20::CMD_START_VALUE + 19,
ENABLE_CRYPTED_PARI = 0x20,
DISABLE_CRYPTED_PARI,
diff --git a/include/device_proto.h b/include/device_proto.h
index 81cf93e..bf78d29 100644
--- a/include/device_proto.h
+++ b/include/device_proto.h
@@ -235,27 +235,29 @@ namespace nitrokey {
status = dev.recv(&resp);
if (dev.get_device_model() == DeviceModel::STORAGE &&
- resp.command_id >= 0x20 &&
- resp.command_id < 0x60
- ) {
+ resp.command_id >= stick20::CMD_START_VALUE &&
+ resp.command_id < stick20::CMD_END_VALUE ) {
Log::instance()(std::string("Detected storage device cmd, status: ") +
std::to_string(resp.StorageStatus.Status_u8), Loglevel::DEBUG_L2);
- resp.last_command_status = 0;
- switch (resp.StorageStatus.Status_u8) {
- case 0:
- case 1:
- resp.last_command_status = 0;
- resp.device_status = 0;
+ resp.last_command_status = static_cast<uint8_t>(stick10::command_status::ok);
+ switch (static_cast<stick20::device_status>(resp.StorageStatus.Status_u8)) {
+ case stick20::device_status::idle :
+ case stick20::device_status::ok:
+ resp.device_status = static_cast<uint8_t>(stick10::device_status::ok);
break;
- case 2:
- resp.last_command_status = 0;
- resp.device_status = 1; //pro busy
+ case stick20::device_status::busy:
+ case stick20::device_status::busy_progressbar: //TODO this will be modified later for getting progressbar status
+ resp.device_status = static_cast<uint8_t>(stick10::device_status::busy);
break;
- case 3:
- case 4:
- resp.last_command_status = 4;
- resp.device_status = 0;
+ case stick20::device_status::wrong_password:
+ resp.last_command_status = static_cast<uint8_t>(stick10::device_status::wrong_password);
+ resp.device_status = static_cast<uint8_t>(stick10::device_status::ok);
+ break;
+ default:
+ Log::instance()(std::string("Unknown storage device status, cannot translate: ") +
+ std::to_string(resp.StorageStatus.Status_u8), Loglevel::DEBUG);
+ resp.device_status = resp.StorageStatus.Status_u8;
break;
};
}