aboutsummaryrefslogtreecommitdiff
path: root/include/device_proto.h
diff options
context:
space:
mode:
authorSzczepan Zalega <szczepan@nitrokey.com>2016-11-03 13:45:53 +0100
committerSzczepan Zalega <szczepan@nitrokey.com>2016-11-26 18:56:28 +0100
commit130a33311567a1f0f6a9a2d8707bff20a558eb20 (patch)
tree382228626bd47f64c09abe45f7b58a3c8c396c6c /include/device_proto.h
parent7d943d3e8717ba47af4b53787cc4c29ad6ee2f90 (diff)
downloadlibnitrokey-130a33311567a1f0f6a9a2d8707bff20a558eb20.tar.gz
libnitrokey-130a33311567a1f0f6a9a2d8707bff20a558eb20.tar.bz2
Treat LongOperationException as CommandFailed and handle it transparently
Signed-off-by: Szczepan Zalega <szczepan@nitrokey.com>
Diffstat (limited to 'include/device_proto.h')
-rw-r--r--include/device_proto.h15
1 files changed, 8 insertions, 7 deletions
diff --git a/include/device_proto.h b/include/device_proto.h
index 187d25c..0953566 100644
--- a/include/device_proto.h
+++ b/include/device_proto.h
@@ -316,21 +316,22 @@ namespace nitrokey {
clear_packet(outp);
if (status <= 0)
- throw std::runtime_error(
+ throw std::runtime_error( //FIXME replace with CriticalErrorException
std::string("Device error while executing command ") +
std::to_string(status));
- if (resp.device_status == static_cast<uint8_t>(stick10::device_status::busy) &&
- static_cast<stick20::device_status>(resp.storage_status.device_status)
- == stick20::device_status::busy_progressbar){
- throw LongOperationInProgressException(resp.command_id, resp.storage_status.progress_bar_value);
- }
-
Log::instance()("Incoming HID packet:", Loglevel::DEBUG);
Log::instance()(static_cast<std::string>(resp), Loglevel::DEBUG);
Log::instance()(std::string("receiving_retry_counter count: ") + std::to_string(receiving_retry_counter),
Loglevel::DEBUG);
+ if (resp.device_status == static_cast<uint8_t>(stick10::device_status::busy) &&
+ static_cast<stick20::device_status>(resp.storage_status.device_status)
+ == stick20::device_status::busy_progressbar){
+ throw LongOperationInProgressException(
+ resp.command_id, resp.device_status, resp.storage_status.progress_bar_value);
+ }
+
if (!resp.isValid()) throw std::runtime_error("Invalid incoming packet");
if (receiving_retry_counter <= 0)
throw std::runtime_error(