1*d6a95748SAlexander Hansen #include "utils.hpp" 2*d6a95748SAlexander Hansen 3*d6a95748SAlexander Hansen #include <libpldm/firmware_update.h> 4*d6a95748SAlexander Hansen #include <libpldm/pldm_types.h> 5*d6a95748SAlexander Hansen 6*d6a95748SAlexander Hansen #include <string> 7*d6a95748SAlexander Hansen 8*d6a95748SAlexander Hansen namespace pldm 9*d6a95748SAlexander Hansen { 10*d6a95748SAlexander Hansen namespace utils 11*d6a95748SAlexander Hansen { 12*d6a95748SAlexander Hansen 13*d6a95748SAlexander Hansen std::expected<std::string, std::string> toString(const uint8_t pldm_string_type,const struct variable_field & var)14*d6a95748SAlexander Hansen toString(const uint8_t pldm_string_type, 15*d6a95748SAlexander Hansen const struct variable_field &var) 16*d6a95748SAlexander Hansen { 17*d6a95748SAlexander Hansen if (var.ptr == nullptr || !var.length) { 18*d6a95748SAlexander Hansen return std::unexpected("null pointer"); 19*d6a95748SAlexander Hansen } 20*d6a95748SAlexander Hansen 21*d6a95748SAlexander Hansen if (pldm_string_type != PLDM_STR_TYPE_ASCII) { 22*d6a95748SAlexander Hansen // unsupported string encoding 23*d6a95748SAlexander Hansen return std::unexpected("not an ascii string"); 24*d6a95748SAlexander Hansen } 25*d6a95748SAlexander Hansen 26*d6a95748SAlexander Hansen std::string s(var.length, ' '); 27*d6a95748SAlexander Hansen for (size_t i = 0; i < var.length; i++) { 28*d6a95748SAlexander Hansen s[i] = static_cast<char>(var.ptr[i]); 29*d6a95748SAlexander Hansen } 30*d6a95748SAlexander Hansen 31*d6a95748SAlexander Hansen return s; 32*d6a95748SAlexander Hansen } 33*d6a95748SAlexander Hansen 34*d6a95748SAlexander Hansen } // namespace utils 35*d6a95748SAlexander Hansen } // namespace pldm 36