summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYaroslav Mamykin (GitHub) <ymamykin@luxoft.com>2019-10-07 15:11:02 +0300
committerYarik <ymamykin@gmail.com>2019-11-15 15:16:38 +0200
commit9faf9bff565c824e2bf277d69873770f870f38e5 (patch)
tree3d3f82abc081bb89fc813039cec5277bb3c7a292
parent9b0afe47c6aaa1bb723857e630a38a88194e4f18 (diff)
downloadsdl_core-9faf9bff565c824e2bf277d69873770f870f38e5.tar.gz
fixup! Fix versioning appliance for vehicle data
-rw-r--r--src/components/smart_objects/CMakeLists.txt1
-rw-r--r--src/components/smart_objects/include/smart_objects/object_schema_item.h7
-rw-r--r--src/components/smart_objects/src/object_schema_item.cc57
3 files changed, 49 insertions, 16 deletions
diff --git a/src/components/smart_objects/CMakeLists.txt b/src/components/smart_objects/CMakeLists.txt
index ef84c52ab9..3ffdedd275 100644
--- a/src/components/smart_objects/CMakeLists.txt
+++ b/src/components/smart_objects/CMakeLists.txt
@@ -34,6 +34,7 @@ include_directories(
${COMPONENTS_DIR}/include
${COMPONENTS_DIR}/smart_objects/include
${COMPONENTS_DIR}/utils/include
+ ${CMAKE_BINARY_DIR}/src/components/interfaces
${BOOST_INCLUDE_DIR}
)
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 ed2c8fbd8a..cdd5368b76 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
@@ -76,6 +76,13 @@ struct SMember {
bool CheckHistoryFieldVersion(
const utils::SemanticVersion& MessageVersion) const;
+ private:
+ bool CheckCustomVehicleData(
+ const utils::SemanticVersion& MessageVersion) const;
+
+ bool CheckAPIVehicleData(const utils::SemanticVersion& MessageVersion) const;
+
+ public:
/**
* @brief Member schema item.
**/
diff --git a/src/components/smart_objects/src/object_schema_item.cc b/src/components/smart_objects/src/object_schema_item.cc
index cb277f2844..02ba989ea0 100644
--- a/src/components/smart_objects/src/object_schema_item.cc
+++ b/src/components/smart_objects/src/object_schema_item.cc
@@ -33,6 +33,7 @@
#include <algorithm>
+#include "generated_msg_version.h"
#include "smart_objects/always_false_schema_item.h"
#include "smart_objects/smart_object.h"
@@ -40,9 +41,13 @@ namespace {
const char connection_key[] = "connection_key";
const char binary_data[] = "binary_data";
const char app_id[] = "appID";
+const utils::SemanticVersion kModuleVersion(application_manager::major_version,
+ application_manager::minor_version,
+ application_manager::patch_version);
} // namespace
namespace ns_smart_device_link {
namespace ns_smart_objects {
+CREATE_LOGGERPTR_LOCAL(vehicle_log, "VEHICLELOG")
SMember::SMember()
: mSchemaItem(CAlwaysFalseSchemaItem::create())
@@ -84,29 +89,46 @@ SMember::SMember(const ISchemaItemPtr SchemaItem,
bool SMember::CheckHistoryFieldVersion(
const utils::SemanticVersion& MessageVersion) const {
if (MessageVersion.isValid()) {
- if (mSince != boost::none) {
- if (MessageVersion < mSince.get() && !mIsCustom) {
- return false; // Msg version predates `since` field
- } else {
- if (mUntil != boost::none && (MessageVersion >= mUntil.get())) {
- return false; // Msg version newer than `until` field
- } else {
- return true; // Mobile msg version falls within specified version
- // range
- }
- }
- }
-
- if (mUntil != boost::none && (MessageVersion >= mUntil.get())) {
- return false; // Msg version newer than `until` field
+ if (mIsCustom) {
+ return CheckCustomVehicleData(MessageVersion);
} else {
- return true; // Mobile msg version falls within specified version range
+ return CheckAPIVehicleData(MessageVersion);
}
}
return true; // Not enough version information. Default true.
}
+bool SMember::CheckCustomVehicleData(
+ const utils::SemanticVersion& MessageVersion) const {
+ if (mSince != boost::none) {
+ if (MessageVersion < mSince.get() && MessageVersion < kModuleVersion) {
+ return false; // Msg version predates `since` field
+ }
+ }
+
+ if (mUntil != boost::none && (MessageVersion >= mUntil.get())) {
+ return false; // Msg version newer than `until` field
+ }
+
+ return true;
+}
+
+bool SMember::CheckAPIVehicleData(
+ const utils::SemanticVersion& MessageVersion) const {
+ if (mSince != boost::none) {
+ if (MessageVersion < mSince.get()) {
+ return false; // Msg version predates `since` field
+ }
+ }
+
+ if (mUntil != boost::none && (MessageVersion >= mUntil.get())) {
+ return false; // Msg version newer than `until` field
+ }
+
+ return true;
+}
+
std::shared_ptr<CObjectSchemaItem> CObjectSchemaItem::create(
const Members& members) {
return std::shared_ptr<CObjectSchemaItem>(new CObjectSchemaItem(members));
@@ -261,6 +283,9 @@ void CObjectSchemaItem::RemoveFakeParams(
std::map<std::string, SMember>::const_iterator members_it =
mMembers.find(key);
+ LOG4CXX_ERROR(vehicle_log, "PROCESSING " << key);
+ LOG4CXX_ERROR(vehicle_log,
+ "MESSAGE VERSION: " << MessageVersion.toString());
if (mMembers.end() != members_it) {
const SMember& member =
GetCorrectMember(members_it->second, MessageVersion);