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 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) { | ||||
|   if (on == nullptr && strcasecmp(str, "on") == 0) | ||||
|     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. | ||||
| 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. | ||||
| 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. | ||||
| 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); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user