| /* |
| * hidl interface for wpa_supplicant daemon |
| * Copyright (c) 2004-2016, Jouni Malinen <j@w1.fi> |
| * Copyright (c) 2004-2016, Roshan Pius <rpius@google.com> |
| * |
| * This software may be distributed under the terms of the BSD license. |
| * See README for more details. |
| */ |
| |
| #ifndef MISC_UTILS_H_ |
| #define MISC_UTILS_H_ |
| |
| extern "C" { |
| #include "wpabuf.h" |
| } |
| |
| namespace { |
| constexpr size_t kWpsPinNumDigits = 8; |
| // Custom deleter for wpabuf. |
| void freeWpaBuf(wpabuf *ptr) { wpabuf_free(ptr); } |
| } // namespace |
| |
| namespace android { |
| namespace hardware { |
| namespace wifi { |
| namespace supplicant { |
| namespace V1_0 { |
| namespace implementation { |
| namespace misc_utils { |
| using wpabuf_unique_ptr = std::unique_ptr<wpabuf, void (*)(wpabuf *)>; |
| |
| // Creates a unique_ptr for wpabuf ptr with a custom deleter. |
| inline wpabuf_unique_ptr createWpaBufUniquePtr(struct wpabuf *raw_ptr) |
| { |
| return {raw_ptr, freeWpaBuf}; |
| } |
| |
| // Creates a wpabuf ptr with a custom deleter copying the data from the provided |
| // vector. |
| inline wpabuf_unique_ptr convertVectorToWpaBuf(const std::vector<uint8_t> &data) |
| { |
| return createWpaBufUniquePtr( |
| wpabuf_alloc_copy(data.data(), data.size())); |
| } |
| |
| // Copies the provided wpabuf contents to a std::vector. |
| inline std::vector<uint8_t> convertWpaBufToVector(const struct wpabuf *buf) |
| { |
| if (buf) { |
| return std::vector<uint8_t>( |
| wpabuf_head_u8(buf), wpabuf_head_u8(buf) + wpabuf_len(buf)); |
| } else { |
| return std::vector<uint8_t>(); |
| } |
| } |
| |
| // Returns a string holding the wps pin. |
| inline std::string convertWpsPinToString(int pin) |
| { |
| char pin_str[kWpsPinNumDigits + 1]; |
| snprintf(pin_str, sizeof(pin_str), "%08d", pin); |
| return pin_str; |
| } |
| |
| } // namespace misc_utils |
| } // namespace implementation |
| } // namespace V1_0 |
| } // namespace supplicant |
| } // namespace wifi |
| } // namespace hardware |
| } // namespace android |
| #endif // MISC_UTILS_H_ |