From fbb43d4bd8ae9d890d07dd0c758b015994f7c676 Mon Sep 17 00:00:00 2001 From: Mahdi Movahedi Date: Mon, 5 Feb 2024 18:15:15 +0330 Subject: [PATCH 01/12] Fix bug in handleGetInstalledCertificateIdsRequest to prevent populating response with empty certificateHashData Signed-off-by: Mahdi Movahedi --- lib/ocpp/v16/charge_point_impl.cpp | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/lib/ocpp/v16/charge_point_impl.cpp b/lib/ocpp/v16/charge_point_impl.cpp index e44d2b775..e8f3248dd 100644 --- a/lib/ocpp/v16/charge_point_impl.cpp +++ b/lib/ocpp/v16/charge_point_impl.cpp @@ -2258,19 +2258,21 @@ void ChargePointImpl::handleGetInstalledCertificateIdsRequest(ocpp::Callevse_security->get_installed_certificates(certificate_types); - // convert ocpp::CertificateHashData to v16::CertificateHashData - std::optional> certificate_hash_data_16_vec_opt; - std::vector certificate_hash_data_16_vec; - for (const auto certificate_hash_data_chain_entry : certificate_hash_data_chains) { - certificate_hash_data_16_vec.push_back( - CertificateHashDataType(json(certificate_hash_data_chain_entry.certificateHashData))); - } - certificate_hash_data_16_vec_opt.emplace(certificate_hash_data_16_vec); - response.certificateHashData = certificate_hash_data_16_vec_opt; - response.status = GetInstalledCertificateStatusEnumType::Accepted; + if(!certificate_hash_data_chains.empty()) + { + // convert ocpp::CertificateHashData to v16::CertificateHashData + std::optional> certificate_hash_data_16_vec_opt; + std::vector certificate_hash_data_16_vec; + for (const auto certificate_hash_data_chain_entry : certificate_hash_data_chains) { + certificate_hash_data_16_vec.push_back( + CertificateHashDataType(json(certificate_hash_data_chain_entry.certificateHashData))); + } + certificate_hash_data_16_vec_opt.emplace(certificate_hash_data_16_vec); + response.certificateHashData = certificate_hash_data_16_vec_opt; + response.status = GetInstalledCertificateStatusEnumType::Accepted; + } ocpp::CallResult call_result(response, call.uniqueId); this->send(call_result); From a80e2d71faab5c7140ca40d152619e0cf108a11e Mon Sep 17 00:00:00 2001 From: pietfried Date: Mon, 5 Feb 2024 16:23:47 +0100 Subject: [PATCH 02/12] clang format Signed-off-by: pietfried --- lib/ocpp/v16/charge_point_impl.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/lib/ocpp/v16/charge_point_impl.cpp b/lib/ocpp/v16/charge_point_impl.cpp index e8f3248dd..df538ff7f 100644 --- a/lib/ocpp/v16/charge_point_impl.cpp +++ b/lib/ocpp/v16/charge_point_impl.cpp @@ -2260,8 +2260,7 @@ void ChargePointImpl::handleGetInstalledCertificateIdsRequest(ocpp::Callevse_security->get_installed_certificates(certificate_types); - if(!certificate_hash_data_chains.empty()) - { + if (!certificate_hash_data_chains.empty()) { // convert ocpp::CertificateHashData to v16::CertificateHashData std::optional> certificate_hash_data_16_vec_opt; std::vector certificate_hash_data_16_vec; From 45de2d887ff36c5c23c217288a19b77d05ed2004 Mon Sep 17 00:00:00 2001 From: Mahdi Movahedi Date: Sun, 25 Feb 2024 20:31:56 +0330 Subject: [PATCH 03/12] transactionData omitted in StopTransaction.req (in case no aligned nor sampled value existed) bug fixed Signed-off-by: Mahdi Movahedi --- include/ocpp/v16/transaction.hpp | 1 + lib/ocpp/v16/charge_point_impl.cpp | 6 +++++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/include/ocpp/v16/transaction.hpp b/include/ocpp/v16/transaction.hpp index 4fcc1906a..cabc382a5 100644 --- a/include/ocpp/v16/transaction.hpp +++ b/include/ocpp/v16/transaction.hpp @@ -38,6 +38,7 @@ class Transaction { std::optional reservation_id; bool active; bool finished; + bool has_signed_meter_values; std::unique_ptr meter_values_sample_timer; std::string start_transaction_message_id; std::string stop_transaction_message_id; diff --git a/lib/ocpp/v16/charge_point_impl.cpp b/lib/ocpp/v16/charge_point_impl.cpp index 894e33277..3d4c5b967 100644 --- a/lib/ocpp/v16/charge_point_impl.cpp +++ b/lib/ocpp/v16/charge_point_impl.cpp @@ -3302,6 +3302,10 @@ void ChargePointImpl::on_transaction_stopped(const int32_t connector, const std: const auto meter_value = this->get_signed_meter_value(signed_meter_value.value(), ReadingContext::Transaction_End, timestamp); transaction->add_meter_value(meter_value); + { + std::lock_guard lock(meter_values_mutex); + transaction->has_signed_meter_values = true; + } } const auto stop_energy_wh = std::make_shared(timestamp, energy_wh_import); transaction->add_stop_energy_wh(stop_energy_wh); @@ -3379,7 +3383,7 @@ ChargePointImpl::get_filtered_transaction_data(const std::shared_ptr filtered_transaction_data_vec; - if (!stop_txn_sampled_data_measurands.empty() or !stop_txn_aligned_data_measurands.empty()) { + if (!stop_txn_sampled_data_measurands.empty() or !stop_txn_aligned_data_measurands.empty() or transaction->has_signed_meter_values) { std::vector transaction_data_vec = transaction->get_transaction_data(); for (const auto& entry : transaction_data_vec) { std::vector sampled_values; From 9e16526c6097ab79f6e91e9a30d9d5cac75f1a09 Mon Sep 17 00:00:00 2001 From: Mahdi Movahedi Date: Sun, 25 Feb 2024 20:41:30 +0330 Subject: [PATCH 04/12] enabling has_signed_meter_value flag in on_transaction_started method Signed-off-by: Mahdi Movahedi --- lib/ocpp/v16/charge_point_impl.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lib/ocpp/v16/charge_point_impl.cpp b/lib/ocpp/v16/charge_point_impl.cpp index 3d4c5b967..1a9189c14 100644 --- a/lib/ocpp/v16/charge_point_impl.cpp +++ b/lib/ocpp/v16/charge_point_impl.cpp @@ -3278,6 +3278,10 @@ void ChargePointImpl::on_transaction_started(const int32_t& connector, const std const auto meter_value = this->get_signed_meter_value(signed_meter_value.value(), ReadingContext::Transaction_Begin, timestamp); transaction->add_meter_value(meter_value); + { + std::lock_guard lock(meter_values_mutex); + transaction->has_signed_meter_values = true; + } } this->database_handler->insert_transaction(session_id, transaction->get_transaction_id(), connector, id_token, From 9574d064e5a8bb6f9dcff5f1a46c491a8e021f8f Mon Sep 17 00:00:00 2001 From: Mahdi Movahedi Date: Sun, 25 Feb 2024 22:27:51 +0330 Subject: [PATCH 05/12] add getter and setter method for has_signed_meter_values flag Signed-off-by: Mahdi Movahedi --- include/ocpp/v16/transaction.hpp | 9 +++++++++ lib/ocpp/v16/charge_point_impl.cpp | 12 +++--------- lib/ocpp/v16/transaction.cpp | 11 +++++++++++ 3 files changed, 23 insertions(+), 9 deletions(-) diff --git a/include/ocpp/v16/transaction.hpp b/include/ocpp/v16/transaction.hpp index cabc382a5..2342b255e 100644 --- a/include/ocpp/v16/transaction.hpp +++ b/include/ocpp/v16/transaction.hpp @@ -131,6 +131,15 @@ class Transaction { /// \brief Sets the finished flag for this transaction. This is done when a StopTransaction.req has been pushed to /// the message queue void set_finished(); + + /// @brief Sets the has_signed_meter_value flag for this transaction, this function is called from on_transaction_started + /// and on_transaction_stopped + void set_has_signed_meter_values(); + + /// @brief Indicates if this transaction has signed meter values or not, this function is called from + /// on_transaction_started and on_transaction_stopped + /// @return a boolean value indicating if this transaction has signed meter values or not + bool get_has_signed_meter_values(); }; /// \brief Contains transactions for all available connectors and manages access to these transactions diff --git a/lib/ocpp/v16/charge_point_impl.cpp b/lib/ocpp/v16/charge_point_impl.cpp index 1a9189c14..8107295ed 100644 --- a/lib/ocpp/v16/charge_point_impl.cpp +++ b/lib/ocpp/v16/charge_point_impl.cpp @@ -3278,10 +3278,7 @@ void ChargePointImpl::on_transaction_started(const int32_t& connector, const std const auto meter_value = this->get_signed_meter_value(signed_meter_value.value(), ReadingContext::Transaction_Begin, timestamp); transaction->add_meter_value(meter_value); - { - std::lock_guard lock(meter_values_mutex); - transaction->has_signed_meter_values = true; - } + transaction->set_has_signed_meter_values(); } this->database_handler->insert_transaction(session_id, transaction->get_transaction_id(), connector, id_token, @@ -3306,10 +3303,7 @@ void ChargePointImpl::on_transaction_stopped(const int32_t connector, const std: const auto meter_value = this->get_signed_meter_value(signed_meter_value.value(), ReadingContext::Transaction_End, timestamp); transaction->add_meter_value(meter_value); - { - std::lock_guard lock(meter_values_mutex); - transaction->has_signed_meter_values = true; - } + transaction->set_has_signed_meter_values(); } const auto stop_energy_wh = std::make_shared(timestamp, energy_wh_import); transaction->add_stop_energy_wh(stop_energy_wh); @@ -3387,7 +3381,7 @@ ChargePointImpl::get_filtered_transaction_data(const std::shared_ptr filtered_transaction_data_vec; - if (!stop_txn_sampled_data_measurands.empty() or !stop_txn_aligned_data_measurands.empty() or transaction->has_signed_meter_values) { + if (!stop_txn_sampled_data_measurands.empty() or !stop_txn_aligned_data_measurands.empty() or transaction->get_has_signed_meter_values()) { std::vector transaction_data_vec = transaction->get_transaction_data(); for (const auto& entry : transaction_data_vec) { std::vector sampled_values; diff --git a/lib/ocpp/v16/transaction.cpp b/lib/ocpp/v16/transaction.cpp index 6fd05b323..7d1fc581e 100644 --- a/lib/ocpp/v16/transaction.cpp +++ b/lib/ocpp/v16/transaction.cpp @@ -21,6 +21,7 @@ Transaction::Transaction(const int32_t& connector, const std::string& session_id reservation_id(reservation_id), active(true), finished(false), + has_signed_meter_values(false), meter_values_sample_timer(std::move(meter_values_sample_timer)), start_transaction_message_id(""), stop_transaction_message_id("") { @@ -231,5 +232,15 @@ bool TransactionHandler::transaction_active(int32_t connector) { return this->get_transaction(connector) != nullptr && this->get_transaction(connector)->is_active(); } +void set_has_signed_meter_values() { + std::lock_guard lock(this->meter_values_mutex) + this->has_signed_meter_values = true; +} + +bool get_has_signed_meter_values() { + std::lock_guard lock(this->meter_values_mutex) + return this->has_signed_meter_values; +} + } // namespace v16 } // namespace ocpp From 7c4ba0aa46c63966060d3946f44920cef3808d7f Mon Sep 17 00:00:00 2001 From: Mahdi Movahedi Date: Sun, 25 Feb 2024 22:42:39 +0330 Subject: [PATCH 06/12] fixing clang errors and adding scope for the member function. Signed-off-by: Mahdi Movahedi --- include/ocpp/v16/transaction.hpp | 8 ++++---- lib/ocpp/v16/charge_point_impl.cpp | 3 ++- lib/ocpp/v16/transaction.cpp | 19 ++++++++++--------- 3 files changed, 16 insertions(+), 14 deletions(-) diff --git a/include/ocpp/v16/transaction.hpp b/include/ocpp/v16/transaction.hpp index 2342b255e..d82094805 100644 --- a/include/ocpp/v16/transaction.hpp +++ b/include/ocpp/v16/transaction.hpp @@ -132,12 +132,12 @@ class Transaction { /// the message queue void set_finished(); - /// @brief Sets the has_signed_meter_value flag for this transaction, this function is called from on_transaction_started - /// and on_transaction_stopped + /// @brief Sets the has_signed_meter_value flag for this transaction, this function is called + /// from on_transaction_started and on_transaction_stopped void set_has_signed_meter_values(); - /// @brief Indicates if this transaction has signed meter values or not, this function is called from - /// on_transaction_started and on_transaction_stopped + /// @brief Indicates if this transaction has signed meter values or not, this function is called + /// from on_transaction_started and on_transaction_stopped /// @return a boolean value indicating if this transaction has signed meter values or not bool get_has_signed_meter_values(); }; diff --git a/lib/ocpp/v16/charge_point_impl.cpp b/lib/ocpp/v16/charge_point_impl.cpp index 8107295ed..213b96ad9 100644 --- a/lib/ocpp/v16/charge_point_impl.cpp +++ b/lib/ocpp/v16/charge_point_impl.cpp @@ -3381,7 +3381,8 @@ ChargePointImpl::get_filtered_transaction_data(const std::shared_ptr filtered_transaction_data_vec; - if (!stop_txn_sampled_data_measurands.empty() or !stop_txn_aligned_data_measurands.empty() or transaction->get_has_signed_meter_values()) { + if (!stop_txn_sampled_data_measurands.empty() or !stop_txn_aligned_data_measurands.empty() or + transaction->get_has_signed_meter_values()) { std::vector transaction_data_vec = transaction->get_transaction_data(); for (const auto& entry : transaction_data_vec) { std::vector sampled_values; diff --git a/lib/ocpp/v16/transaction.cpp b/lib/ocpp/v16/transaction.cpp index 7d1fc581e..351426d66 100644 --- a/lib/ocpp/v16/transaction.cpp +++ b/lib/ocpp/v16/transaction.cpp @@ -119,6 +119,16 @@ void Transaction::add_stop_energy_wh(std::shared_ptr stop_energ this->stop(); } +void Transaction::set_has_signed_meter_values() { + std::lock_guard lock(this->meter_values_mutex) + this->has_signed_meter_values = true; +} + +bool Transaction::get_has_signed_meter_values() { + std::lock_guard lock(this->meter_values_mutex) + return this->has_signed_meter_values; +} + std::shared_ptr Transaction::get_stop_energy_wh() { return this->stop_energy_wh; } @@ -232,15 +242,6 @@ bool TransactionHandler::transaction_active(int32_t connector) { return this->get_transaction(connector) != nullptr && this->get_transaction(connector)->is_active(); } -void set_has_signed_meter_values() { - std::lock_guard lock(this->meter_values_mutex) - this->has_signed_meter_values = true; -} - -bool get_has_signed_meter_values() { - std::lock_guard lock(this->meter_values_mutex) - return this->has_signed_meter_values; -} } // namespace v16 } // namespace ocpp From 326791ee7072c84e7afb82eb639969e150dc0d95 Mon Sep 17 00:00:00 2001 From: Mahdi Movahedi Date: Sun, 25 Feb 2024 22:44:05 +0330 Subject: [PATCH 07/12] add missing ; Signed-off-by: Mahdi Movahedi --- lib/ocpp/v16/transaction.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/ocpp/v16/transaction.cpp b/lib/ocpp/v16/transaction.cpp index 351426d66..9a69df89e 100644 --- a/lib/ocpp/v16/transaction.cpp +++ b/lib/ocpp/v16/transaction.cpp @@ -120,12 +120,12 @@ void Transaction::add_stop_energy_wh(std::shared_ptr stop_energ } void Transaction::set_has_signed_meter_values() { - std::lock_guard lock(this->meter_values_mutex) + std::lock_guard lock(this->meter_values_mutex); this->has_signed_meter_values = true; } bool Transaction::get_has_signed_meter_values() { - std::lock_guard lock(this->meter_values_mutex) + std::lock_guard lock(this->meter_values_mutex); return this->has_signed_meter_values; } From 05762a6ebab5afedbeee8f88159ae8e190e07dd3 Mon Sep 17 00:00:00 2001 From: Mahdi Movahedi Date: Fri, 8 Mar 2024 11:37:41 +0330 Subject: [PATCH 08/12] setting meter value existence flag in a single guarded block of code Signed-off-by: Mahdi Movahedi --- include/ocpp/v16/transaction.hpp | 6 +++--- lib/ocpp/v16/charge_point_impl.cpp | 2 -- lib/ocpp/v16/transaction.cpp | 8 +++++++- 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/include/ocpp/v16/transaction.hpp b/include/ocpp/v16/transaction.hpp index d82094805..4f3cf1fa7 100644 --- a/include/ocpp/v16/transaction.hpp +++ b/include/ocpp/v16/transaction.hpp @@ -132,13 +132,13 @@ class Transaction { /// the message queue void set_finished(); - /// @brief Sets the has_signed_meter_value flag for this transaction, this function is called + /// \brief Sets the has_signed_meter_value flag for this transaction, this function is called /// from on_transaction_started and on_transaction_stopped void set_has_signed_meter_values(); - /// @brief Indicates if this transaction has signed meter values or not, this function is called + /// \brief Indicates if this transaction has signed meter values or not, this function is called /// from on_transaction_started and on_transaction_stopped - /// @return a boolean value indicating if this transaction has signed meter values or not + /// \returns a boolean value indicating if this transaction has signed meter values or not bool get_has_signed_meter_values(); }; diff --git a/lib/ocpp/v16/charge_point_impl.cpp b/lib/ocpp/v16/charge_point_impl.cpp index 213b96ad9..71f64ad2f 100644 --- a/lib/ocpp/v16/charge_point_impl.cpp +++ b/lib/ocpp/v16/charge_point_impl.cpp @@ -3278,7 +3278,6 @@ void ChargePointImpl::on_transaction_started(const int32_t& connector, const std const auto meter_value = this->get_signed_meter_value(signed_meter_value.value(), ReadingContext::Transaction_Begin, timestamp); transaction->add_meter_value(meter_value); - transaction->set_has_signed_meter_values(); } this->database_handler->insert_transaction(session_id, transaction->get_transaction_id(), connector, id_token, @@ -3303,7 +3302,6 @@ void ChargePointImpl::on_transaction_stopped(const int32_t connector, const std: const auto meter_value = this->get_signed_meter_value(signed_meter_value.value(), ReadingContext::Transaction_End, timestamp); transaction->add_meter_value(meter_value); - transaction->set_has_signed_meter_values(); } const auto stop_energy_wh = std::make_shared(timestamp, energy_wh_import); transaction->add_stop_energy_wh(stop_energy_wh); diff --git a/lib/ocpp/v16/transaction.cpp b/lib/ocpp/v16/transaction.cpp index 9a69df89e..2f6481945 100644 --- a/lib/ocpp/v16/transaction.cpp +++ b/lib/ocpp/v16/transaction.cpp @@ -39,6 +39,13 @@ void Transaction::add_meter_value(MeterValue meter_value) { if (this->active) { std::lock_guard lock(this->meter_values_mutex); this->meter_values.push_back(meter_value); + + if (std::find_if(meter_value.sampledValue.begin(), meter_value.sampledValue.end(), + [](SampledValue const& SampledValueItem) { + return SampledValueItem.format == ValueFormat::SignedData; + }) != meter_value.sampledValue.end()) { + this->set_has_signed_meter_values(); + } } } @@ -120,7 +127,6 @@ void Transaction::add_stop_energy_wh(std::shared_ptr stop_energ } void Transaction::set_has_signed_meter_values() { - std::lock_guard lock(this->meter_values_mutex); this->has_signed_meter_values = true; } From aac13af761d646422012e1361ba173915454f815 Mon Sep 17 00:00:00 2001 From: Mahdi Movahedi Date: Mon, 6 May 2024 22:20:32 +0330 Subject: [PATCH 09/12] new line deletion in accordance to the clang-format output Signed-off-by: Mahdi Movahedi --- lib/ocpp/v16/transaction.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/lib/ocpp/v16/transaction.cpp b/lib/ocpp/v16/transaction.cpp index 2f6481945..93eb109ec 100644 --- a/lib/ocpp/v16/transaction.cpp +++ b/lib/ocpp/v16/transaction.cpp @@ -248,6 +248,5 @@ bool TransactionHandler::transaction_active(int32_t connector) { return this->get_transaction(connector) != nullptr && this->get_transaction(connector)->is_active(); } - } // namespace v16 } // namespace ocpp From aa51373d1022123412228dbf72712cecf1ba6c46 Mon Sep 17 00:00:00 2001 From: Mahdi Movahedi Date: Mon, 6 May 2024 22:24:02 +0330 Subject: [PATCH 10/12] adding typewriter font format to function names in documentations of the newly added functions Signed-off-by: Mahdi Movahedi --- include/ocpp/v16/transaction.hpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/ocpp/v16/transaction.hpp b/include/ocpp/v16/transaction.hpp index 4f3cf1fa7..4466d3486 100644 --- a/include/ocpp/v16/transaction.hpp +++ b/include/ocpp/v16/transaction.hpp @@ -133,11 +133,11 @@ class Transaction { void set_finished(); /// \brief Sets the has_signed_meter_value flag for this transaction, this function is called - /// from on_transaction_started and on_transaction_stopped + /// from \p on_transaction_started and \p on_transaction_stopped void set_has_signed_meter_values(); /// \brief Indicates if this transaction has signed meter values or not, this function is called - /// from on_transaction_started and on_transaction_stopped + /// from \p on_transaction_started and \p on_transaction_stopped /// \returns a boolean value indicating if this transaction has signed meter values or not bool get_has_signed_meter_values(); }; From 144860388c2ca4f08e54f227738bb5d5c91aef11 Mon Sep 17 00:00:00 2001 From: Mahdi Movahedi Date: Mon, 6 May 2024 22:45:34 +0330 Subject: [PATCH 11/12] correcting the remaining clang-format errors Signed-off-by: Mahdi Movahedi --- include/ocpp/v16/transaction.hpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/ocpp/v16/transaction.hpp b/include/ocpp/v16/transaction.hpp index 4466d3486..418e9fc30 100644 --- a/include/ocpp/v16/transaction.hpp +++ b/include/ocpp/v16/transaction.hpp @@ -131,11 +131,11 @@ class Transaction { /// \brief Sets the finished flag for this transaction. This is done when a StopTransaction.req has been pushed to /// the message queue void set_finished(); - + /// \brief Sets the has_signed_meter_value flag for this transaction, this function is called /// from \p on_transaction_started and \p on_transaction_stopped void set_has_signed_meter_values(); - + /// \brief Indicates if this transaction has signed meter values or not, this function is called /// from \p on_transaction_started and \p on_transaction_stopped /// \returns a boolean value indicating if this transaction has signed meter values or not From 7759214f4aa0baa8c0e97cb832975d0d006f7bc2 Mon Sep 17 00:00:00 2001 From: Mahdi Movahedi Date: Mon, 6 May 2024 23:07:37 +0330 Subject: [PATCH 12/12] running clang-format inline to suppress all clang related errors Signed-off-by: Mahdi Movahedi --- include/ocpp/v16/transaction.hpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/include/ocpp/v16/transaction.hpp b/include/ocpp/v16/transaction.hpp index 418e9fc30..6da96973e 100644 --- a/include/ocpp/v16/transaction.hpp +++ b/include/ocpp/v16/transaction.hpp @@ -132,12 +132,12 @@ class Transaction { /// the message queue void set_finished(); - /// \brief Sets the has_signed_meter_value flag for this transaction, this function is called + /// \brief Sets the has_signed_meter_value flag for this transaction, this function is called /// from \p on_transaction_started and \p on_transaction_stopped void set_has_signed_meter_values(); - /// \brief Indicates if this transaction has signed meter values or not, this function is called - /// from \p on_transaction_started and \p on_transaction_stopped + /// \brief Indicates if this transaction has signed meter values or not, this function is called + /// from \p on_transaction_started and \p on_transaction_stopped /// \returns a boolean value indicating if this transaction has signed meter values or not bool get_has_signed_meter_values(); };