summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYaroslav Mamykin (GitHub) <ymamykin@luxoft.com>2019-10-04 17:08:19 +0300
committerYarik <ymamykin@gmail.com>2019-11-15 15:16:38 +0200
commite95b2f6b51fb1d5f615c17dafec291b7cd2d7bf6 (patch)
tree499c4683dd5cf3236fbd0b706d10037de9efb49e
parent352eec9ec6f48fdaf43476a3511f8ecd86d43384 (diff)
downloadsdl_core-e95b2f6b51fb1d5f615c17dafec291b7cd2d7bf6.tar.gz
fixup! Fix versioning appliance for vehicle data
-rw-r--r--src/components/application_manager/rpc_plugins/vehicle_info_plugin/src/custom_vehicle_data_manager_impl.cc12
-rw-r--r--src/components/smart_objects/include/smart_objects/object_schema_item.h4
-rw-r--r--src/components/smart_objects/src/object_schema_item.cc13
3 files changed, 21 insertions, 8 deletions
diff --git a/src/components/application_manager/rpc_plugins/vehicle_info_plugin/src/custom_vehicle_data_manager_impl.cc b/src/components/application_manager/rpc_plugins/vehicle_info_plugin/src/custom_vehicle_data_manager_impl.cc
index 9df6d922aa..df401b8a44 100644
--- a/src/components/application_manager/rpc_plugins/vehicle_info_plugin/src/custom_vehicle_data_manager_impl.cc
+++ b/src/components/application_manager/rpc_plugins/vehicle_info_plugin/src/custom_vehicle_data_manager_impl.cc
@@ -289,7 +289,9 @@ void CustomVehicleDataManagerImpl::UpdateVehicleDataItems() {
item.until.is_initialized() ? std::string(*item.until) : "",
bool(*item.deprecated),
bool(*item.removed),
- history);
+ history,
+ true); // Mark member as custom as soon as custom data is treated
+ // in different way
}
case SMemberType::SMEMBER_VDR_MOBILE: {
// valid since struct_schema_items is not used in
@@ -305,7 +307,9 @@ void CustomVehicleDataManagerImpl::UpdateVehicleDataItems() {
item.until.is_initialized() ? std::string(*item.until) : "",
bool(*item.deprecated),
bool(*item.removed),
- history);
+ history,
+ true); // Mark member as custom as soon as custom data is treated
+ // in different way
}
case SMemberType::SMEMBER_MOBILE: {
TSchemaItemParameter<VehicleDataItem> tschema_item(item);
@@ -318,7 +322,9 @@ void CustomVehicleDataManagerImpl::UpdateVehicleDataItems() {
item.until.is_initialized() ? std::string(*item.until) : "",
bool(*item.deprecated),
bool(*item.removed),
- history);
+ history,
+ true); // Mark member as custom as soon as custom data is treated
+ // in different way
}
case SMemberType::SMEMBER_BOOL_HMI: {
auto member_schema =
diff --git a/src/components/smart_objects/include/smart_objects/object_schema_item.h b/src/components/smart_objects/include/smart_objects/object_schema_item.h
index 3ff8ada8c6..ed2c8fbd8a 100644
--- a/src/components/smart_objects/include/smart_objects/object_schema_item.h
+++ b/src/components/smart_objects/include/smart_objects/object_schema_item.h
@@ -67,7 +67,8 @@ struct SMember {
const std::string& Until = "",
const bool IsDeprecated = false,
const bool IsRemoved = false,
- const std::vector<SMember>& history_vector = {});
+ const std::vector<SMember>& history_vector = {},
+ const bool IsCustom = false);
/**
* @brief Checks the version a parameter was removed (until)
* If the mobile's msg version is greater than or
@@ -89,6 +90,7 @@ struct SMember {
bool mIsRemoved;
mutable bool mIsValid;
std::vector<SMember> mHistoryVector;
+ bool mIsCustom;
};
typedef std::map<std::string, SMember> Members;
diff --git a/src/components/smart_objects/src/object_schema_item.cc b/src/components/smart_objects/src/object_schema_item.cc
index 8b75e79130..cb277f2844 100644
--- a/src/components/smart_objects/src/object_schema_item.cc
+++ b/src/components/smart_objects/src/object_schema_item.cc
@@ -49,7 +49,8 @@ SMember::SMember()
, mIsMandatory(true)
, mIsDeprecated(false)
, mIsRemoved(false)
- , mIsValid(true) {}
+ , mIsValid(true)
+ , mIsCustom(false) {}
SMember::SMember(const ISchemaItemPtr SchemaItem,
const bool IsMandatory,
@@ -57,8 +58,12 @@ SMember::SMember(const ISchemaItemPtr SchemaItem,
const std::string& Until,
const bool IsDeprecated,
const bool IsRemoved,
- const std::vector<SMember>& history_vector)
- : mSchemaItem(SchemaItem), mIsMandatory(IsMandatory), mIsValid(true) {
+ const std::vector<SMember>& history_vector,
+ const bool IsCustom)
+ : mSchemaItem(SchemaItem)
+ , mIsMandatory(IsMandatory)
+ , mIsValid(true)
+ , mIsCustom(IsCustom) {
if (Since.size() > 0) {
utils::SemanticVersion since_struct(Since);
if (since_struct.isValid()) {
@@ -80,7 +85,7 @@ bool SMember::CheckHistoryFieldVersion(
const utils::SemanticVersion& MessageVersion) const {
if (MessageVersion.isValid()) {
if (mSince != boost::none) {
- if (MessageVersion < mSince.get()) {
+ if (MessageVersion < mSince.get() && !mIsCustom) {
return false; // Msg version predates `since` field
} else {
if (mUntil != boost::none && (MessageVersion >= mUntil.get())) {