From 46a94679152da263e3e805ec2073359ae60ce6ab Mon Sep 17 00:00:00 2001 From: Robin Krahl Date: Mon, 14 Jan 2019 20:52:25 +0100 Subject: Add NK_get_SD_usage_data function to C API The NK_get_SD_usage_data function returns the minimum and maximum write level for the SD card. This function cannot be tested due to the missing struct support in the Python tests. --- NK_C_API.cc | 17 +++++++++++++++++ NK_C_API.h | 28 ++++++++++++++++++++++++++++ 2 files changed, 45 insertions(+) diff --git a/NK_C_API.cc b/NK_C_API.cc index 7d0a10e..5e95303 100644 --- a/NK_C_API.cc +++ b/NK_C_API.cc @@ -687,6 +687,23 @@ extern "C" { return 0; } + NK_C_API int NK_get_SD_usage_data(struct NK_SD_usage_data* out) { + if (out == nullptr) + return -1; + auto m = NitrokeyManager::instance(); + auto result = get_with_status([&]() { + return m->get_SD_usage_data(); + }, std::make_pair(0, 0)); + auto error_code = std::get<0>(result); + if (error_code != 0) + return error_code; + + auto data = std::get<1>(result); + out->write_level_min = std::get<0>(data); + out->write_level_max = std::get<1>(data); + + return 0; + } NK_C_API char* NK_get_SD_usage_data_as_string() { auto m = NitrokeyManager::instance(); diff --git a/NK_C_API.h b/NK_C_API.h index b1bdf1e..2d05a15 100644 --- a/NK_C_API.h +++ b/NK_C_API.h @@ -128,6 +128,23 @@ extern "C" { bool stick_initialized; }; + /** + * Data about the usage of the SD card. + */ + struct NK_SD_usage_data { + /** + * The minimum write level, as a percentage of the total card + * size. + */ + uint8_t write_level_min; + /** + * The maximum write level, as a percentage of the total card + * size. + */ + uint8_t write_level_max; + }; + + struct NK_storage_ProductionTest{ uint8_t FirmwareVersion_au8[2]; uint8_t FirmwareVersionInternal_u8; @@ -736,6 +753,17 @@ extern "C" { */ NK_C_API int NK_get_status_storage(struct NK_storage_status* out); + /** + * Get SD card usage attributes. Usable during hidden volumes creation. + * If the command was successful (return value 0), the usage data is + * written to the output pointer’s target. The output pointer must + * not be null. + * Storage only + * @param out the output pointer for the usage data + * @return command processing error code + */ + NK_C_API int NK_get_SD_usage_data(struct NK_SD_usage_data* out); + /** * Get SD card usage attributes as string. * Usable during hidden volumes creation. -- cgit v1.2.3