mirror of
https://github.com/esphome/esphome.git
synced 2024-11-30 02:34:12 +01:00
Add helper overloads for hex print 16-bit (#3297)
This commit is contained in:
parent
06a3505698
commit
b7535693fa
2 changed files with 23 additions and 0 deletions
|
@ -213,6 +213,25 @@ std::string format_hex_pretty(const uint8_t *data, size_t length) {
|
||||||
}
|
}
|
||||||
std::string format_hex_pretty(const std::vector<uint8_t> &data) { return format_hex_pretty(data.data(), data.size()); }
|
std::string format_hex_pretty(const std::vector<uint8_t> &data) { return format_hex_pretty(data.data(), data.size()); }
|
||||||
|
|
||||||
|
std::string format_hex_pretty(const uint16_t *data, size_t length) {
|
||||||
|
if (length == 0)
|
||||||
|
return "";
|
||||||
|
std::string ret;
|
||||||
|
ret.resize(5 * length - 1);
|
||||||
|
for (size_t i = 0; i < length; i++) {
|
||||||
|
ret[5 * i] = format_hex_pretty_char((data[i] & 0xF000) >> 12);
|
||||||
|
ret[5 * i + 1] = format_hex_pretty_char((data[i] & 0x0F00) >> 8);
|
||||||
|
ret[5 * i + 2] = format_hex_pretty_char((data[i] & 0x00F0) >> 4);
|
||||||
|
ret[5 * i + 3] = format_hex_pretty_char(data[i] & 0x000F);
|
||||||
|
if (i != length - 1)
|
||||||
|
ret[5 * i + 2] = '.';
|
||||||
|
}
|
||||||
|
if (length > 4)
|
||||||
|
return ret + " (" + to_string(length) + ")";
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
std::string format_hex_pretty(const std::vector<uint16_t> &data) { return format_hex_pretty(data.data(), data.size()); }
|
||||||
|
|
||||||
ParseOnOffState parse_on_off(const char *str, const char *on, const char *off) {
|
ParseOnOffState parse_on_off(const char *str, const char *on, const char *off) {
|
||||||
if (on == nullptr && strcasecmp(str, "on") == 0)
|
if (on == nullptr && strcasecmp(str, "on") == 0)
|
||||||
return PARSE_ON;
|
return PARSE_ON;
|
||||||
|
|
|
@ -386,8 +386,12 @@ template<typename T, enable_if_t<std::is_unsigned<T>::value, int> = 0> std::stri
|
||||||
|
|
||||||
/// Format the byte array \p data of length \p len in pretty-printed, human-readable hex.
|
/// Format the byte array \p data of length \p len in pretty-printed, human-readable hex.
|
||||||
std::string format_hex_pretty(const uint8_t *data, size_t length);
|
std::string format_hex_pretty(const uint8_t *data, size_t length);
|
||||||
|
/// Format the word array \p data of length \p len in pretty-printed, human-readable hex.
|
||||||
|
std::string format_hex_pretty(const uint16_t *data, size_t length);
|
||||||
/// Format the vector \p data in pretty-printed, human-readable hex.
|
/// Format the vector \p data in pretty-printed, human-readable hex.
|
||||||
std::string format_hex_pretty(const std::vector<uint8_t> &data);
|
std::string format_hex_pretty(const std::vector<uint8_t> &data);
|
||||||
|
/// Format the vector \p data in pretty-printed, human-readable hex.
|
||||||
|
std::string format_hex_pretty(const std::vector<uint16_t> &data);
|
||||||
/// Format an unsigned integer in pretty-printed, human-readable hex, starting with the most significant byte.
|
/// Format an unsigned integer in pretty-printed, human-readable hex, starting with the most significant byte.
|
||||||
template<typename T, enable_if_t<std::is_unsigned<T>::value, int> = 0> std::string format_hex_pretty(T val) {
|
template<typename T, enable_if_t<std::is_unsigned<T>::value, int> = 0> std::string format_hex_pretty(T val) {
|
||||||
val = convert_big_endian(val);
|
val = convert_big_endian(val);
|
||||||
|
|
Loading…
Reference in a new issue