From 0d9f83ba881a967ee0ac12b7438f55dbfe42ab8f Mon Sep 17 00:00:00 2001 From: Stefan Wahren Date: Thu, 7 Nov 2013 00:32:01 +0100 Subject: [PATCH] Extend XML output with storage number, tariff and device --- mbus/mbus-protocol-aux.c | 15 +++++++++++++++ mbus/mbus-protocol.c | 14 ++++++++++++++ 2 files changed, 29 insertions(+) diff --git a/mbus/mbus-protocol-aux.c b/mbus/mbus-protocol-aux.c index a2ff793..32e775f 100755 --- a/mbus/mbus-protocol-aux.c +++ b/mbus/mbus-protocol-aux.c @@ -1156,6 +1156,9 @@ mbus_record_new() record->unit = NULL; record->function_medium = NULL; record->quantity = NULL; + record->device = -1; + record->tariff = -1; + record->storage_number = 0; return record; } @@ -1257,6 +1260,10 @@ mbus_parse_variable_record(mbus_data_record *data) MBUS_ERROR("%s: memory allocation error\n", __PRETTY_FUNCTION__); return NULL; } + + record->storage_number = mbus_data_record_storage_number(data); + record->tariff = mbus_data_record_tariff(data); + record->device = mbus_data_record_device(data); if ((data->drh.dib.dif == MBUS_DIB_DIF_MANUFACTURER_SPECIFIC) || (data->drh.dib.dif == MBUS_DIB_DIF_MORE_RECORDS_FOLLOW)) /* MBUS_DIB_DIF_VENDOR_SPECIFIC */ @@ -1395,6 +1402,14 @@ mbus_data_variable_xml_normalized(mbus_data_variable *data) { mbus_str_xml_encode(str_encoded, norm_record->function_medium, sizeof(str_encoded)); len += snprintf(&buff[len], buff_size - len, " %s\n", str_encoded); + + len += snprintf(&buff[len], buff_size - len, " %ld\n", norm_record->storage_number); + + if (norm_record->tariff >= 0) + { + len += snprintf(&buff[len], buff_size - len, " %ld\n", norm_record->tariff); + len += snprintf(&buff[len], buff_size - len, " %d\n", norm_record->device); + } mbus_str_xml_encode(str_encoded, norm_record->unit, sizeof(str_encoded)); diff --git a/mbus/mbus-protocol.c b/mbus/mbus-protocol.c index 93ec8b1..27b0354 100755 --- a/mbus/mbus-protocol.c +++ b/mbus/mbus-protocol.c @@ -3657,6 +3657,7 @@ mbus_data_variable_record_xml(mbus_data_record *record, int record_cnt, int fram size_t len = 0; struct tm * timeinfo; char timestamp[21]; + long tariff; if (record) { @@ -3687,6 +3688,19 @@ mbus_data_variable_record_xml(mbus_data_record *record, int record_cnt, int fram mbus_str_xml_encode(str_encoded, mbus_data_record_function(record), sizeof(str_encoded)); len += snprintf(&buff[len], sizeof(buff) - len, " %s\n", str_encoded); + + len += snprintf(&buff[len], sizeof(buff) - len, + " %ld\n", + mbus_data_record_storage_number(record)); + + + if ((tariff = mbus_data_record_tariff(record)) >= 0) + { + len += snprintf(&buff[len], sizeof(buff) - len, " %ld\n", + tariff); + len += snprintf(&buff[len], sizeof(buff) - len, " %d\n", + mbus_data_record_device(record)); + } mbus_str_xml_encode(str_encoded, mbus_data_record_unit(record), sizeof(str_encoded)); len += snprintf(&buff[len], sizeof(buff) - len,