special char for servicecode

This commit is contained in:
MichaelDvP
2025-10-23 13:31:42 +02:00
parent 61c23a57d9
commit fa8421b297
2 changed files with 8 additions and 3 deletions

View File

@@ -414,6 +414,10 @@ char * Helpers::render_string(char * result, const char * c, const uint8_t len)
*p = 0xC3; *p = 0xC3;
*(++p) = 0xBC; *(++p) = 0xBC;
break; break;
case 0xF0: // greek capital Xi, used for boiler servicecode dhw+heat
*p = 0xCE;
*(++p) = 0x9E;
break;
default: default:
*p = (*c & 0x80) ? '?' : *c; *p = (*c & 0x80) ? '?' : *c;
break; break;

View File

@@ -1308,7 +1308,8 @@ void Boiler::process_UBAMonitorFast(std::shared_ptr<const Telegram> telegram) {
if ((telegram->message_length > 18) && (telegram->offset == 0)) { if ((telegram->message_length > 18) && (telegram->offset == 0)) {
char serviceCode[4]; char serviceCode[4];
telegram->read_value(serviceCode[0], 18); telegram->read_value(serviceCode[0], 18);
serviceCode[0] = (serviceCode[0] == (char)0xF0) ? '~' : serviceCode[0]; // 0xF0 for 3 stacked horizontal lines like greek capital Xi
// serviceCode[0] = (serviceCode[0] == (char)0xF0) ? '~' : serviceCode[0];
telegram->read_value(serviceCode[1], 19); telegram->read_value(serviceCode[1], 19);
serviceCode[2] = '\0'; // null terminate string serviceCode[2] = '\0'; // null terminate string
has_update(serviceCode_, serviceCode, sizeof(serviceCode_)); has_update(serviceCode_, serviceCode, sizeof(serviceCode_));
@@ -1474,9 +1475,9 @@ void Boiler::process_UBAMonitorFastPlus(std::shared_ptr<const Telegram> telegram
if ((telegram->message_length > 3) && (telegram->offset == 0)) { if ((telegram->message_length > 3) && (telegram->offset == 0)) {
char serviceCode[4] = {0}; char serviceCode[4] = {0};
telegram->read_value(serviceCode[0], 1); telegram->read_value(serviceCode[0], 1);
serviceCode[0] = (serviceCode[0] == (char)0xF0) ? '~' : serviceCode[0]; // serviceCode[0] = (serviceCode[0] == (char)0xF0) ? '~' : serviceCode[0];
telegram->read_value(serviceCode[1], 2); telegram->read_value(serviceCode[1], 2);
serviceCode[1] = (serviceCode[1] == (char)0xF0) ? '~' : serviceCode[1]; // serviceCode[1] = (serviceCode[1] == (char)0xF0) ? '~' : serviceCode[1];
telegram->read_value(serviceCode[2], 3); telegram->read_value(serviceCode[2], 3);
serviceCode[3] = '\0'; serviceCode[3] = '\0';
has_update(serviceCode_, serviceCode, sizeof(serviceCode_)); has_update(serviceCode_, serviceCode, sizeof(serviceCode_));