mirror of
				https://github.com/esphome/esphome.git
				synced 2025-10-31 07:03:55 +00:00 
			
		
		
		
	Add helper overloads for hex print 16-bit (#3297)
This commit is contained in:
		| @@ -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); | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user