diff options
| -rw-r--r-- | include/command_id.h | 41 | ||||
| -rw-r--r-- | include/device_proto.h | 34 | 
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;                      };                    } | 
