diff options
author | JackLivio <jack@livio.io> | 2018-08-07 11:49:49 -0400 |
---|---|---|
committer | JackLivio <jack@livio.io> | 2018-08-07 11:49:49 -0400 |
commit | 88bce365ed9000bb95894d1b610d33c0ba3d0bc5 (patch) | |
tree | 3fba7d353388799daa201e7f09b6e5aa3a77150d | |
parent | 174b43c55d89dd98c511bf55c3455755bfb9f86c (diff) | |
parent | 8a5be2b85c5c37b5b2d2b304f0816eda6f05352b (diff) | |
download | sdl_core-88bce365ed9000bb95894d1b610d33c0ba3d0bc5.tar.gz |
Merge branch 'feature/mobile_versioning' into feature/choice_vr_optional
14 files changed, 68 insertions, 65 deletions
diff --git a/src/appMain/CMakeLists.txt b/src/appMain/CMakeLists.txt index a05f4f97a1..b821c94260 100644 --- a/src/appMain/CMakeLists.txt +++ b/src/appMain/CMakeLists.txt @@ -141,7 +141,8 @@ add_executable(${PROJECT} ${SOURCES}) if (HMIADAPTER STREQUAL "messagebroker") add_dependencies(${PROJECT} Boost) - list(APPEND LIBRARIES libboost_system.so) + GET_PROPERTY(BOOST_LIBS_DIRECTORY GLOBAL PROPERTY GLOBAL_BOOST_LIBS) + list(APPEND LIBRARIES boost_system -L${BOOST_LIBS_DIRECTORY}) endif() target_link_libraries(${PROJECT} ${LIBRARIES}) diff --git a/src/components/application_manager/include/application_manager/application.h b/src/components/application_manager/include/application_manager/application.h index 0681761b5a..da5860f06b 100644 --- a/src/components/application_manager/include/application_manager/application.h +++ b/src/components/application_manager/include/application_manager/application.h @@ -127,9 +127,7 @@ class InitialApplicationData { virtual void set_language(const mobile_api::Language::eType& language) = 0; virtual void set_ui_language( const mobile_api::Language::eType& ui_language) = 0; - virtual void set_msg_version(const uint16_t major, - const uint16_t minor, - const uint16_t patch) = 0; + virtual void set_msg_version(const utils::SemanticVersion& version) = 0; }; /* diff --git a/src/components/application_manager/include/application_manager/application_data_impl.h b/src/components/application_manager/include/application_manager/application_data_impl.h index c1056123ea..05091dbfbd 100644 --- a/src/components/application_manager/include/application_manager/application_data_impl.h +++ b/src/components/application_manager/include/application_manager/application_data_impl.h @@ -65,9 +65,7 @@ class InitialApplicationDataImpl : public virtual Application { void set_ngn_media_screen_name(const smart_objects::SmartObject& ngn_name); void set_language(const mobile_api::Language::eType& language); void set_ui_language(const mobile_api::Language::eType& ui_language); - void set_msg_version(const uint16_t major, - const uint16_t minor, - const uint16_t patch); + void set_msg_version(const utils::SemanticVersion& version); void set_perform_interaction_layout( mobile_api::LayoutMode::eType layout) OVERRIDE; diff --git a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/register_app_interface_request.cc b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/register_app_interface_request.cc index 9b546a1340..4284b97786 100644 --- a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/register_app_interface_request.cc +++ b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/register_app_interface_request.cc @@ -298,14 +298,19 @@ void RegisterAppInterfaceRequest::Run() { uint16_t minor = msg_params[strings::sync_msg_version][strings::minor_version].asUInt(); uint16_t patch = 0; + // Check if patch exists since it is not mandatory. if (msg_params[strings::sync_msg_version].keyExists(strings::patch_version)) { patch = msg_params[strings::sync_msg_version][strings::patch_version].asUInt(); } - if (major < minimum_major_version || - (major == minimum_major_version && minor < minimum_minor_version) || - (major == minimum_major_version && minor == minimum_minor_version && - patch < minimum_patch_version)) { + + utils::SemanticVersion mobile_version(major, minor, patch); + utils::SemanticVersion min_module_version( + minimum_major_version, minimum_minor_version, minimum_patch_version); + + if (mobile_version < min_module_version) { + LOG4CXX_WARN(logger_, + "Application RPC Version does not meet minimum requirement"); SendResponse(false, mobile_apis::Result::REJECTED); } @@ -317,15 +322,14 @@ void RegisterAppInterfaceRequest::Run() { } // Version negotiation - utils::SemanticVersion mobile_version(major, minor, patch); utils::SemanticVersion module_version( major_version, minor_version, patch_version); if (mobile_version < module_version) { // Use mobile RPC version as negotiated version - application->set_msg_version(major, minor, patch); + application->set_msg_version(mobile_version); } else { // Use module version as negotiated version - application->set_msg_version(major_version, minor_version, patch_version); + application->set_msg_version(module_version); } // For resuming application need to restore hmi_app_id from resumeCtrl diff --git a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/test/commands/mobile/register_app_interface_request_test.cc b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/test/commands/mobile/register_app_interface_request_test.cc index 0fcc1866ae..2518e9c7fd 100644 --- a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/test/commands/mobile/register_app_interface_request_test.cc +++ b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/test/commands/mobile/register_app_interface_request_test.cc @@ -135,8 +135,6 @@ class RegisterAppInterfaceRequestTest ON_CALL(*mock_app, policy_app_id()).WillByDefault(Return(kAppId)); ON_CALL(*mock_app, msg_version()) .WillByDefault(ReturnRef(mock_semantic_version)); - // EXPECT_CALL(*mock_app, - // msg_version()).WillOnce(Return(mock_semantic_version)); return mock_app; } diff --git a/src/components/application_manager/src/application_data_impl.cc b/src/components/application_manager/src/application_data_impl.cc index 951acb68e9..ea7893ddc5 100644 --- a/src/components/application_manager/src/application_data_impl.cc +++ b/src/components/application_manager/src/application_data_impl.cc @@ -157,12 +157,9 @@ void InitialApplicationDataImpl::set_ui_language( ui_language_ = ui_language; } -void InitialApplicationDataImpl::set_msg_version(const uint16_t major, - const uint16_t minor, - const uint16_t patch) { - msg_version_.major_version = major; - msg_version_.minor_version = minor; - msg_version_.patch_version = patch; +void InitialApplicationDataImpl::set_msg_version( + const utils::SemanticVersion& version) { + msg_version_ = version; } void InitialApplicationDataImpl::set_perform_interaction_layout( diff --git a/src/components/application_manager/test/include/application_manager/mock_application.h b/src/components/application_manager/test/include/application_manager/mock_application.h index 79a268530a..602d228147 100644 --- a/src/components/application_manager/test/include/application_manager/mock_application.h +++ b/src/components/application_manager/test/include/application_manager/mock_application.h @@ -205,10 +205,7 @@ class MockApplication : public ::application_manager::Application { void(const mobile_apis::Language::eType& language)); MOCK_METHOD1(set_ui_language, void(const mobile_apis::Language::eType& ui_language)); - MOCK_METHOD3(set_msg_version, - void(const uint16_t major, - const uint16_t minor, - const uint16_t patch)); + MOCK_METHOD1(set_msg_version, void(const utils::SemanticVersion& version)); // DynamicApplicationData methods MOCK_CONST_METHOD0(help_prompt, const smart_objects::SmartObject*()); MOCK_CONST_METHOD0(timeout_prompt, const smart_objects::SmartObject*()); diff --git a/src/components/formatters/include/formatters/CSmartFactory.h b/src/components/formatters/include/formatters/CSmartFactory.h index e7eb91912f..d66dc56d8b 100644 --- a/src/components/formatters/include/formatters/CSmartFactory.h +++ b/src/components/formatters/include/formatters/CSmartFactory.h @@ -300,7 +300,8 @@ bool CSmartFactory<FunctionIdEnum, MessageTypeEnum, StructIdEnum>::attachSchema( object.setSchema(schemaIterator->second); - utils::SemanticVersion msg_version; + // Initialize msg_version to 0.0.0, an invalid value until properly set. + utils::SemanticVersion msg_version(0, 0, 0); if (object[NsSmartDeviceLink::NsJSONHandler::strings::S_PARAMS].keyExists( NsSmartDeviceLink::NsJSONHandler::strings::S_RPC_MSG_VERSION)) { msg_version = diff --git a/src/components/hmi_message_handler/test/CMakeLists.txt b/src/components/hmi_message_handler/test/CMakeLists.txt index 9e855c563e..6d30d6ee51 100644 --- a/src/components/hmi_message_handler/test/CMakeLists.txt +++ b/src/components/hmi_message_handler/test/CMakeLists.txt @@ -56,7 +56,7 @@ collect_sources(SOURCES "${CMAKE_CURRENT_SOURCE_DIR}" "${EXCLUDE_PATHS}") if (HMIADAPTER STREQUAL "messagebroker") GET_PROPERTY(BOOST_LIBS_DIRECTORY GLOBAL PROPERTY GLOBAL_BOOST_LIBS) - list(APPEND LIBRARIES ${BOOST_LIBS_DIRECTORY}/libboost_system.so) + list(APPEND LIBRARIES boost_system -L${BOOST_LIBS_DIRECTORY}) endif() create_test(hmi_message_handler_test "${SOURCES}" "${LIBRARIES}") diff --git a/src/components/include/utils/semantic_version.h b/src/components/include/utils/semantic_version.h index 66cedc2bc5..a67cf6d2d1 100644 --- a/src/components/include/utils/semantic_version.h +++ b/src/components/include/utils/semantic_version.h @@ -60,13 +60,9 @@ struct SemanticVersion { } bool operator==(const SemanticVersion& version) const { - if (major_version == version.major_version && - minor_version == version.minor_version && - patch_version == version.patch_version) { - return true; - } else { - return false; - } + return (major_version == version.major_version && + minor_version == version.minor_version && + patch_version == version.patch_version); } bool operator<(const SemanticVersion& version) const { diff --git a/src/components/interfaces/MOBILE_API.xml b/src/components/interfaces/MOBILE_API.xml index 728905cf13..43330d0415 100644 --- a/src/components/interfaces/MOBILE_API.xml +++ b/src/components/interfaces/MOBILE_API.xml @@ -3410,9 +3410,11 @@ <param name="systemSoftwareVersion" type="String" maxlength="100" mandatory="false" platform="documentation"> <description>The software version of the system that implements the SmartDeviceLink core.</description> </param> - <param name="iconResumed" type="Boolean" mandatory="true"> - <description>Existence of apps icon at system. If true, apps icon - was resumed at system. If false, apps icon is not resumed at system</description> + <param name="iconResumed" type="Boolean" mandatory="false"> + <description> + Existence of apps icon at system. If true, apps icon + was resumed at system. If false, apps icon is not resumed at system + </description> </param> </function> @@ -6115,7 +6117,7 @@ <param name="systemContext" type="SystemContext" mandatory="true"> <description>See SystemContext</description> </param> - <param name="videoStreamingState" type="VideoStreamingState" mandatory="true"> + <param name="videoStreamingState" type="VideoStreamingState" mandatory="false" defvalue="STREAMABLE"> <description>See VideoStreamingState. If it is NOT_STREAMABLE, the app must stop streaming video to SDL.</description> </param> </function> diff --git a/src/components/smart_objects/src/object_schema_item.cc b/src/components/smart_objects/src/object_schema_item.cc index 1eea823013..def0c0aceb 100644 --- a/src/components/smart_objects/src/object_schema_item.cc +++ b/src/components/smart_objects/src/object_schema_item.cc @@ -33,8 +33,6 @@ #include <algorithm> -#include <boost/algorithm/string.hpp> - #include "smart_objects/always_false_schema_item.h" #include "smart_objects/smart_object.h" @@ -59,24 +57,14 @@ CObjectSchemaItem::SMember::SMember( const std::vector<CObjectSchemaItem::SMember>& history_vector) : mSchemaItem(SchemaItem), mIsMandatory(IsMandatory) { if (Since.size() > 0) { - utils::SemanticVersion since_struct; - std::vector<std::string> since_fields; - boost::split(since_fields, Since, boost::is_any_of(".")); - if (since_fields.size() == 3) { - since_struct.major_version = atoi(since_fields[0].c_str()); - since_struct.minor_version = atoi(since_fields[1].c_str()); - since_struct.patch_version = atoi(since_fields[2].c_str()); + utils::SemanticVersion since_struct(Since); + if (since_struct.isValid()) { mSince = since_struct; } } if (Until.size() > 0) { - utils::SemanticVersion until_struct; - std::vector<std::string> until_fields; - boost::split(until_fields, Until, boost::is_any_of(".")); - if (until_fields.size() == 3) { - until_struct.major_version = atoi(until_fields[0].c_str()); - until_struct.minor_version = atoi(until_fields[1].c_str()); - until_struct.patch_version = atoi(until_fields[2].c_str()); + utils::SemanticVersion until_struct(Until); + if (until_struct.isValid()) { mUntil = until_struct; } } diff --git a/src/components/smart_objects/test/CObjectSchemaItem_test.cc b/src/components/smart_objects/test/CObjectSchemaItem_test.cc index c49a1bb302..5a0dcefa10 100644 --- a/src/components/smart_objects/test/CObjectSchemaItem_test.cc +++ b/src/components/smart_objects/test/CObjectSchemaItem_test.cc @@ -140,12 +140,32 @@ class ObjectSchemaItemTest : public ::testing::Test { // Create fake param that has breaking history changes std::vector<CObjectSchemaItem::SMember> fake_param_history_vector; - std::shared_ptr<ISchemaItem> fake_param_SchemaItem = CArraySchemaItem::create(CStringSchemaItem::create(TSchemaItemParameter<size_t>(1), TSchemaItemParameter<size_t>(99), TSchemaItemParameter<std::string>()), TSchemaItemParameter<size_t>(1), TSchemaItemParameter<size_t>(100)); - - std::shared_ptr<ISchemaItem> fake_param_history_v1_SchemaItem = CArraySchemaItem::create(CStringSchemaItem::create(TSchemaItemParameter<size_t>(1), TSchemaItemParameter<size_t>(99), TSchemaItemParameter<std::string>()), TSchemaItemParameter<size_t>(1), TSchemaItemParameter<size_t>(100)); - - fake_param_history_vector.push_back(CObjectSchemaItem::SMember(fake_param_history_v1_SchemaItem, true, "", "4.5.0", false, false)); - schemaMembersMap["fakeParam"] = CObjectSchemaItem::SMember(fake_param_SchemaItem, false, "4.5.0", "", false, false, fake_param_history_vector); + std::shared_ptr<ISchemaItem> fake_param_SchemaItem = + CArraySchemaItem::create( + CStringSchemaItem::create(TSchemaItemParameter<size_t>(1), + TSchemaItemParameter<size_t>(99), + TSchemaItemParameter<std::string>()), + TSchemaItemParameter<size_t>(1), + TSchemaItemParameter<size_t>(100)); + + std::shared_ptr<ISchemaItem> fake_param_history_v1_SchemaItem = + CArraySchemaItem::create( + CStringSchemaItem::create(TSchemaItemParameter<size_t>(1), + TSchemaItemParameter<size_t>(99), + TSchemaItemParameter<std::string>()), + TSchemaItemParameter<size_t>(1), + TSchemaItemParameter<size_t>(100)); + + fake_param_history_vector.push_back(CObjectSchemaItem::SMember( + fake_param_history_v1_SchemaItem, true, "", "4.5.0", false, false)); + schemaMembersMap["fakeParam"] = + CObjectSchemaItem::SMember(fake_param_SchemaItem, + false, + "4.5.0", + "", + false, + false, + fake_param_history_vector); CObjectSchemaItem::Members rootMembersMap; rootMembersMap[S_PARAMS] = CObjectSchemaItem::SMember( @@ -180,7 +200,7 @@ TEST_F(ObjectSchemaItemTest, validation_correct_with_new_version) { obj[S_MSG_PARAMS][Keys::INFO] = "0123456789"; obj[S_MSG_PARAMS][Keys::SUCCESS] = true; - utils::SemanticVersion messageVersion(4,5,0); + utils::SemanticVersion messageVersion(4, 5, 0); rpc::ValidationReport report("RPC"); EXPECT_EQ(Errors::OK, schema_item->validate(obj, &report, messageVersion)); EXPECT_EQ(std::string(""), rpc::PrettyFormat(report)); @@ -195,9 +215,10 @@ TEST_F(ObjectSchemaItemTest, validation_invalid_data_with_old_version) { obj[S_MSG_PARAMS][Keys::INFO] = "0123456789"; obj[S_MSG_PARAMS][Keys::SUCCESS] = true; - utils::SemanticVersion messageVersion(3,0,0); + utils::SemanticVersion messageVersion(3, 0, 0); rpc::ValidationReport report("RPC"); - EXPECT_EQ(Errors::MISSING_MANDATORY_PARAMETER, schema_item->validate(obj, &report, messageVersion)); + EXPECT_EQ(Errors::MISSING_MANDATORY_PARAMETER, + schema_item->validate(obj, &report, messageVersion)); } TEST_F(ObjectSchemaItemTest, validation_correct_skip_not_mandatory) { diff --git a/src/components/utils/CMakeLists.txt b/src/components/utils/CMakeLists.txt index 0eb64ae8c2..ed90c6fb45 100644 --- a/src/components/utils/CMakeLists.txt +++ b/src/components/utils/CMakeLists.txt @@ -114,7 +114,9 @@ if(${CMAKE_SYSTEM_NAME} MATCHES "Linux") endif() add_library("Utils" ${SOURCES}) -list(APPEND LIBRARIES -lboost_system -lboost_thread) +GET_PROPERTY(BOOST_LIBS_DIRECTORY GLOBAL PROPERTY GLOBAL_BOOST_LIBS) +list(APPEND LIBRARIES boost_system -L${BOOST_LIBS_DIRECTORY}) +list(APPEND LIBRARIES boost_thread -L${BOOST_LIBS_DIRECTORY}) target_link_libraries("Utils" ${LIBRARIES}) add_dependencies("Utils" Boost) |