From d797997c7478b4b2b1ab8fe677123f9392f4b588 Mon Sep 17 00:00:00 2001 From: theresalech Date: Wed, 16 Sep 2020 16:08:19 -0400 Subject: Fix HMI API description typos Resolves issue 3504 --- src/components/interfaces/HMI_API.xml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/components/interfaces/HMI_API.xml b/src/components/interfaces/HMI_API.xml index 8e906a7bbb..a9ad0792ec 100644 --- a/src/components/interfaces/HMI_API.xml +++ b/src/components/interfaces/HMI_API.xml @@ -1855,7 +1855,7 @@ - Save current seat postions and settings to seat memory. + Save current seat positions and settings to seat memory. Restore / apply the seat memory settings to the current seat. @@ -2200,7 +2200,7 @@ - Availability of sirius XM radio. + Availability of Sirius XM radio. True: Available, False: Not Available, Not present: Not Available. @@ -3165,7 +3165,7 @@ - Allows an app to prepopulate the text field with a list of suggested or completed entries as the user types. + Allows an app to pre-populate the text field with a list of suggested or completed entries as the user types. If empty, the auto-complete list will be removed from the screen. @@ -3676,7 +3676,7 @@ Following cases will cause only affected windows to be included: 1. App creates a new window. After the window is created, a system capability notification will be sent related only to the created window. - 2. App sets a new layout to the window. The new layout changes window capabilties. + 2. App sets a new layout to the window. The new layout changes window capabilities. The notification will reflect those changes to the single window. -- cgit v1.2.1 From 68aa6ad1b2aa0419a73538de8717a23e41c0e1a7 Mon Sep 17 00:00:00 2001 From: jacobkeeler Date: Thu, 17 Sep 2020 14:41:27 -0400 Subject: Add fixes for new Coverity issues Fixes CID 214309, 214305, 214304 --- .../application_manager/resumption/resumption_data_processor.h | 5 +++++ .../src/resumption/resumption_data_processor_impl.cc | 4 ++-- src/components/include/utils/ilogger.h | 1 + 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/components/application_manager/include/application_manager/resumption/resumption_data_processor.h b/src/components/application_manager/include/application_manager/resumption/resumption_data_processor.h index 60e2e5d1a4..3f55b02ed3 100644 --- a/src/components/application_manager/include/application_manager/resumption/resumption_data_processor.h +++ b/src/components/application_manager/include/application_manager/resumption/resumption_data_processor.h @@ -73,6 +73,11 @@ struct ResumptionRequest { */ class ResumptionDataProcessor { public: + /** + * @brief ResumptionDataProcessor class destructor + */ + virtual ~ResumptionDataProcessor() {} + /** * @brief Running resumption data process from saved_app to application. * @param application application which will be resumed diff --git a/src/components/application_manager/src/resumption/resumption_data_processor_impl.cc b/src/components/application_manager/src/resumption/resumption_data_processor_impl.cc index c067167041..a490429197 100644 --- a/src/components/application_manager/src/resumption/resumption_data_processor_impl.cc +++ b/src/components/application_manager/src/resumption/resumption_data_processor_impl.cc @@ -1015,7 +1015,7 @@ void ResumptionDataProcessorImpl::DeletePluginsSubscriptions( if (!status.successful_module_subscriptions_.empty()) { extension_modules_subscriptions[message_params::kModuleData] = - new smart_objects::SmartObject(smart_objects::SmartType_Array); + smart_objects::SmartObject(smart_objects::SmartType_Array); auto& module_data_so = extension_modules_subscriptions[message_params::kModuleData]; @@ -1023,7 +1023,7 @@ void ResumptionDataProcessorImpl::DeletePluginsSubscriptions( uint32_t index = 0; for (const auto& module : status.successful_module_subscriptions_) { module_data_so[index] = - new smart_objects::SmartObject(smart_objects::SmartType_Map); + smart_objects::SmartObject(smart_objects::SmartType_Map); module_data_so[index][message_params::kModuleType] = module.first; module_data_so[index][message_params::kModuleId] = module.second; index++; diff --git a/src/components/include/utils/ilogger.h b/src/components/include/utils/ilogger.h index ba2f93df9b..3cf4777391 100644 --- a/src/components/include/utils/ilogger.h +++ b/src/components/include/utils/ilogger.h @@ -76,6 +76,7 @@ class Logger { class ThirdPartyLoggerInterface { public: + virtual ~ThirdPartyLoggerInterface() {} virtual void Init() = 0; virtual void DeInit() = 0; virtual bool IsEnabledFor(const std::string& component, -- cgit v1.2.1 From 93202c39ac25d6bd6ccd1c9df948106dab38acfa Mon Sep 17 00:00:00 2001 From: Shobhit Adlakha Date: Mon, 21 Sep 2020 13:56:27 -0400 Subject: Fix/Delay OnHMIStatus until RAI response is sent (#3506) * Add is_ready flag to apps and handle sending OnHMIStatus after RAI response * Add mock functions * Address review comments * Only send delayed onHMIStatus if RAI was a success * Prevent secondary hmi level none to cloud apps * Move enabled check to last when init new cloud app Co-authored-by: JackLivio --- .../include/application_manager/application.h | 2 + .../include/application_manager/application_impl.h | 3 + .../application_manager/state_controller_impl.h | 3 + .../mobile/register_app_interface_response.cc | 9 +++ .../application_manager/src/application_impl.cc | 10 +++ .../src/policies/policy_handler.cc | 14 ++-- .../src/state_controller_impl.cc | 83 +++++++++++++++++++--- .../test/application_manager_impl_test.cc | 2 + .../include/application_manager/mock_application.h | 2 + .../test/state_controller/state_controller_test.cc | 1 + 10 files changed, 113 insertions(+), 16 deletions(-) diff --git a/src/components/application_manager/include/application_manager/application.h b/src/components/application_manager/include/application_manager/application.h index 6280d83278..59c9d35320 100644 --- a/src/components/application_manager/include/application_manager/application.h +++ b/src/components/application_manager/include/application_manager/application.h @@ -671,6 +671,8 @@ class Application : public virtual InitialApplicationData, virtual bool app_allowed() const = 0; virtual bool has_been_activated() const = 0; virtual bool set_activated(bool is_active) = 0; + virtual bool is_ready() const = 0; + virtual bool set_is_ready(bool is_ready) = 0; virtual const Version& version() const = 0; virtual void set_hmi_application_id(uint32_t hmi_app_id) = 0; diff --git a/src/components/application_manager/include/application_manager/application_impl.h b/src/components/application_manager/include/application_manager/application_impl.h index 1e24addf4a..6c1a897054 100644 --- a/src/components/application_manager/include/application_manager/application_impl.h +++ b/src/components/application_manager/include/application_manager/application_impl.h @@ -150,6 +150,8 @@ class ApplicationImpl : public virtual Application, inline bool app_allowed() const; bool has_been_activated() const; bool set_activated(bool is_active); + bool is_ready() const; + bool set_is_ready(bool is_ready); const Version& version() const; void set_hmi_application_id(uint32_t hmi_app_id); @@ -582,6 +584,7 @@ class ApplicationImpl : public virtual Application, bool is_app_allowed_; bool is_app_data_resumption_allowed_; bool has_been_activated_; + bool is_ready_; bool tts_properties_in_none_; bool tts_properties_in_full_; bool keep_context_; diff --git a/src/components/application_manager/include/application_manager/state_controller_impl.h b/src/components/application_manager/include/application_manager/state_controller_impl.h index d74ed4e7fa..210ddf9720 100644 --- a/src/components/application_manager/include/application_manager/state_controller_impl.h +++ b/src/components/application_manager/include/application_manager/state_controller_impl.h @@ -35,6 +35,7 @@ #include #include +#include #include "application_manager/application.h" #include "application_manager/application_manager.h" #include "application_manager/hmi_state.h" @@ -430,6 +431,8 @@ class StateControllerImpl : public event_engine::EventObserver, typedef std::list WindowStatePairs; std::map postponed_app_widgets_; + std::unordered_set apps_with_pending_hmistatus_notification_; + mutable sync_primitives::Lock apps_with_pending_hmistatus_notification_lock_; ApplicationManager& app_mngr_; }; } // namespace application_manager diff --git a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/register_app_interface_response.cc b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/register_app_interface_response.cc index f0e885f54c..0c74105e56 100644 --- a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/register_app_interface_response.cc +++ b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/register_app_interface_response.cc @@ -96,6 +96,15 @@ void RegisterAppInterfaceResponse::Run() { } SendResponse(success, result_code, last_message); + if (success) { + app->set_is_ready(true); + } + event_engine::MobileEvent event( + mobile_apis::FunctionID::RegisterAppInterfaceID); + smart_objects::SmartObject event_msg(*message_); + event_msg[strings::params][strings::correlation_id] = 0; + event.set_smart_object(event_msg); + event.raise(application_manager_.event_dispatcher()); if (mobile_apis::Result::SUCCESS != result_code) { return; diff --git a/src/components/application_manager/src/application_impl.cc b/src/components/application_manager/src/application_impl.cc index 60070524a0..2edf3860d6 100644 --- a/src/components/application_manager/src/application_impl.cc +++ b/src/components/application_manager/src/application_impl.cc @@ -116,6 +116,7 @@ ApplicationImpl::ApplicationImpl( , is_app_allowed_(true) , is_app_data_resumption_allowed_(false) , has_been_activated_(false) + , is_ready_(false) , tts_properties_in_none_(false) , tts_properties_in_full_(false) , keep_context_(false) @@ -782,6 +783,15 @@ bool ApplicationImpl::set_activated(bool is_active) { return true; } +bool ApplicationImpl::is_ready() const { + return is_ready_; +} + +bool ApplicationImpl::set_is_ready(bool is_ready) { + is_ready_ = is_ready; + return true; +} + void ApplicationImpl::set_protocol_version( const protocol_handler::MajorProtocolVersion& protocol_version) { protocol_version_ = protocol_version; diff --git a/src/components/application_manager/src/policies/policy_handler.cc b/src/components/application_manager/src/policies/policy_handler.cc index 6a7c9abb33..8ec21660a8 100644 --- a/src/components/application_manager/src/policies/policy_handler.cc +++ b/src/components/application_manager/src/policies/policy_handler.cc @@ -2331,12 +2331,6 @@ void PolicyHandler::OnSetCloudAppProperties( policy_manager_->InitCloudApp(policy_app_id); bool auth_token_update = false; - if (properties.keyExists(strings::enabled)) { - bool enabled = properties[strings::enabled].asBool(); - policy_manager_->SetCloudAppEnabled(policy_app_id, enabled); - auth_token_update = enabled; - application_manager_.RefreshCloudAppInformation(); - } if (properties.keyExists(strings::auth_token)) { std::string auth_token = properties[strings::auth_token].asString(); policy_manager_->SetAppAuthToken(policy_app_id, auth_token); @@ -2370,6 +2364,14 @@ void PolicyHandler::OnSetCloudAppProperties( policy_manager_->SetHybridAppPreference(policy_app_id, hybrid_app_preference); } + if (properties.keyExists(strings::enabled)) { + bool enabled = properties[strings::enabled].asBool(); + policy_manager_->SetCloudAppEnabled(policy_app_id, enabled); + if (!auth_token_update) { + auth_token_update = enabled; + } + application_manager_.RefreshCloudAppInformation(); + } if (auth_token_update) { AppProperties app_properties; diff --git a/src/components/application_manager/src/state_controller_impl.cc b/src/components/application_manager/src/state_controller_impl.cc index ec77e30db7..2eb813e69f 100644 --- a/src/components/application_manager/src/state_controller_impl.cc +++ b/src/components/application_manager/src/state_controller_impl.cc @@ -714,7 +714,52 @@ void StateControllerImpl::UpdateAppWindowsStreamingState( } } -void StateControllerImpl::on_event(const event_engine::MobileEvent& event) {} +void StateControllerImpl::on_event(const event_engine::MobileEvent& event) { + using namespace mobile_apis; + + SDL_LOG_AUTO_TRACE(); + SDL_LOG_DEBUG("Received event for function" << event.id()); + switch (event.id()) { + case FunctionID::RegisterAppInterfaceID: { + auto message = event.smart_object(); + uint32_t connection_key = + message[strings::params][strings::connection_key].asUInt(); + ApplicationSharedPtr app = app_mngr_.application(connection_key); + + if (app.use_count() == 0) { + SDL_LOG_WARN("Application doesn't exist"); + return; + } + { + sync_primitives::AutoLock autolock( + apps_with_pending_hmistatus_notification_lock_); + + auto it = apps_with_pending_hmistatus_notification_.find(app->app_id()); + if (it == apps_with_pending_hmistatus_notification_.end()) { + SDL_LOG_WARN("Application does not have a pending OnHMIStatus"); + return; + } + + bool success = message[strings::msg_params][strings::success].asBool(); + if (success) { + // Only send notification if RAI was a success + auto notification = + MessageHelper::CreateHMIStatusNotification(app, 0); + app_mngr_.GetRPCService().ManageMobileCommand( + notification, commands::Command::SOURCE_SDL); + } + + apps_with_pending_hmistatus_notification_.erase(app->app_id()); + if (apps_with_pending_hmistatus_notification_.empty()) { + unsubscribe_from_event(FunctionID::RegisterAppInterfaceID); + } + } + } break; + + default: + break; + } +} void StateControllerImpl::on_event(const event_engine::Event& event) { using event_engine::Event; @@ -830,8 +875,8 @@ void StateControllerImpl::ActivateDefaultWindow(ApplicationSharedPtr app) { SetRegularState(app, window_id, hmi_level, audio_state, video_state, false); - // After main window activation, streaming state should be updated for another - // windows of the app + // After main window activation, streaming state should be updated for + // another windows of the app HmiStatePtr new_state = app->RegularHmiState(PredefinedWindows::DEFAULT_WINDOW); UpdateAppWindowsStreamingState(app, new_state); @@ -873,11 +918,24 @@ void StateControllerImpl::OnStateChanged(ApplicationSharedPtr app, return; } - auto notification = - MessageHelper::CreateHMIStatusNotification(app, window_id); - app_mngr_.GetRPCService().ManageMobileCommand(notification, - commands::Command::SOURCE_SDL); - + if (app->is_ready()) { + SDL_LOG_DEBUG("Sending OnHMIStatus to application " << app->app_id()); + auto notification = + MessageHelper::CreateHMIStatusNotification(app, window_id); + app_mngr_.GetRPCService().ManageMobileCommand( + notification, commands::Command::SOURCE_SDL); + } else { + SDL_LOG_DEBUG( + "Application " + << app->app_id() + << " not ready to receive OnHMIStatus. Delaying notification"); + { + sync_primitives::AutoLock autolock( + apps_with_pending_hmistatus_notification_lock_); + apps_with_pending_hmistatus_notification_.insert(app->app_id()); + } + subscribe_on_event(mobile_apis::FunctionID::RegisterAppInterfaceID); + } if (mobile_apis::PredefinedWindows::DEFAULT_WINDOW != window_id) { SDL_LOG_DEBUG( "State was changed not for a main application window. No " @@ -943,6 +1001,11 @@ void StateControllerImpl::OnApplicationRegistered( const mobile_apis::HMILevel::eType default_level) { SDL_LOG_AUTO_TRACE(); + if (app->is_cloud_app()) { + // Return here, there should already be an onHMIStatus=FULL being processed + // for when the cloud app was initially activated by the hmi + return; + } // After app registration HMI level should be set for DEFAULT_WINDOW only OnAppWindowAdded(app, mobile_apis::PredefinedWindows::DEFAULT_WINDOW, @@ -1220,8 +1283,8 @@ void StateControllerImpl::OnAppDeactivated( return; } - // TODO(AOleynik): Need to delete DeactivateReason and modify OnAppDeactivated - // when HMI will support that, otherwise won't be testable + // TODO(AOleynik): Need to delete DeactivateReason and modify + // OnAppDeactivated when HMI will support that, otherwise won't be testable DeactivateApp(app, window_id); } diff --git a/src/components/application_manager/test/application_manager_impl_test.cc b/src/components/application_manager/test/application_manager_impl_test.cc index 7ecf9515a6..493d4a18fc 100644 --- a/src/components/application_manager/test/application_manager_impl_test.cc +++ b/src/components/application_manager/test/application_manager_impl_test.cc @@ -2099,6 +2099,7 @@ TEST_F( app_manager_impl_->SetPluginManager(rpc_plugin_manager); auto wep_nonmedia_app = app_manager_impl_->RegisterApplication(rai_ptr); wep_nonmedia_app->set_is_media_application(false); + wep_nonmedia_app->set_is_ready(true); EXPECT_EQ(protocol_handler::MajorProtocolVersion::PROTOCOL_VERSION_2, wep_nonmedia_app->protocol_version()); @@ -2203,6 +2204,7 @@ TEST_F( app_manager_impl_->SetPluginManager(rpc_plugin_manager); auto wep_media_app = app_manager_impl_->RegisterApplication(rai_ptr); wep_media_app->set_is_media_application(true); + wep_media_app->set_is_ready(true); EXPECT_EQ(protocol_handler::MajorProtocolVersion::PROTOCOL_VERSION_2, wep_media_app->protocol_version()); 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 2aab8cf727..3c1ddca125 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 @@ -97,6 +97,8 @@ class MockApplication : public ::application_manager::Application { MOCK_CONST_METHOD0(app_allowed, bool()); MOCK_CONST_METHOD0(has_been_activated, bool()); MOCK_METHOD1(set_activated, bool(bool is_active)); + MOCK_CONST_METHOD0(is_ready, bool()); + MOCK_METHOD1(set_is_ready, bool(bool is_active)); MOCK_CONST_METHOD0(version, const ::application_manager::Version&()); MOCK_METHOD1(set_hmi_application_id, void(uint32_t hmi_app_id)); MOCK_CONST_METHOD0(hmi_app_id, uint32_t()); diff --git a/src/components/application_manager/test/state_controller/state_controller_test.cc b/src/components/application_manager/test/state_controller/state_controller_test.cc index a2de6f399c..374ad611ef 100644 --- a/src/components/application_manager/test/state_controller/state_controller_test.cc +++ b/src/components/application_manager/test/state_controller/state_controller_test.cc @@ -727,6 +727,7 @@ class StateControllerImplTest : public ::testing::Test { .WillByDefault(Return(vc)); ON_CALL(**app_mock, IsAudioApplication()) .WillByDefault(Return(media || navi || vc)); + ON_CALL(**app_mock, is_ready()).WillByDefault(Return(true)); EXPECT_CALL(**app_mock, usage_report()) .WillRepeatedly(ReturnRef(usage_stat)); -- cgit v1.2.1 From 1b092819ddcd23cd84f78fd30f60723bacf4750a Mon Sep 17 00:00:00 2001 From: "Yaroslav Mamykin (GitHub)" <33784535+YarikMamykin@users.noreply.github.com> Date: Mon, 21 Sep 2020 22:16:27 +0300 Subject: Update coverage reference (#3509) * Update README.md * fixup! Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index e0be6edb34..a7e64aa783 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ [![Slack Status](http://sdlslack.herokuapp.com/badge.svg)](http://slack.smartdevicelink.com) -[![Build Status](https://opensdl-jenkins.prjdmz.luxoft.com/job/develop_nightly_coverage/badge/icon?subject=UT%20coverage%20build)](https://opensdl-jenkins.prjdmz.luxoft.com/job/develop_nightly_coverage/) +[![Build Status](https://opensdl-jenkins.prjdmz.luxoft.com/job/develop_weekly_coverage/badge/icon?subject=UT%20coverage%20build)](https://opensdl-jenkins.prjdmz.luxoft.com/job/develop_weekly_coverage/) [![Build Status](https://opensdl-jenkins.prjdmz.luxoft.com/view/Smokes/job/Develop_TCP_ATF_Smoke_P/badge/icon?subject=Smoke%20tests)](https://opensdl-jenkins.prjdmz.luxoft.com/view/Smokes/job/Develop_TCP_ATF_Smoke_P/) [![Build Status](https://opensdl-jenkins.prjdmz.luxoft.com/job/Develop_SDL_Checkstyle/badge/icon?subject=Coding%20style)](https://opensdl-jenkins.prjdmz.luxoft.com/job/Develop_SDL_Checkstyle/) -- cgit v1.2.1 From cadede9c9e7d20ca4a7049ad51fc42e6f14f6498 Mon Sep 17 00:00:00 2001 From: "Yana Chernysheva (GitHub)" <59469418+ychernysheva@users.noreply.github.com> Date: Tue, 22 Sep 2020 16:23:41 +0300 Subject: Add check whether restoring of all required data was completed (#3508) --- .../src/vehicle_info_pending_resumption_handler.cc | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/components/application_manager/rpc_plugins/vehicle_info_plugin/src/vehicle_info_pending_resumption_handler.cc b/src/components/application_manager/rpc_plugins/vehicle_info_plugin/src/vehicle_info_pending_resumption_handler.cc index a6e6148793..d7b3f6ec8f 100644 --- a/src/components/application_manager/rpc_plugins/vehicle_info_plugin/src/vehicle_info_pending_resumption_handler.cc +++ b/src/components/application_manager/rpc_plugins/vehicle_info_plugin/src/vehicle_info_pending_resumption_handler.cc @@ -197,8 +197,10 @@ void VehicleInfoPendingResumptionHandler::TriggerPendingResumption() { << " is already waiting for HMI response"); return; } - SendHMIRequestForNotSubscribed(pending_resumption); - pending_resumption.waiting_for_hmi_response_ = true; + if (!pending_resumption.IsSuccessfullyDone()) { + SendHMIRequestForNotSubscribed(pending_resumption); + pending_resumption.waiting_for_hmi_response_ = true; + } } void VehicleInfoPendingResumptionHandler::on_event( -- cgit v1.2.1 From 69773f78504d4a2d64b09544726685e57dc4ee4a Mon Sep 17 00:00:00 2001 From: Andrii Kalinich Date: Tue, 22 Sep 2020 18:26:52 -0400 Subject: Fix enum conversion in HMI capabilities There were found a couple of hardcoded HMI capabity enum to string values and some of them were outdated. This legacy code can be easily replaced with the templated function supplied from generated API. By that reason, all hardcoded pairs and maps were removed and replaced with a common function. --- .../src/hmi_capabilities_impl.cc | 537 +++------------------ 1 file changed, 62 insertions(+), 475 deletions(-) diff --git a/src/components/application_manager/src/hmi_capabilities_impl.cc b/src/components/application_manager/src/hmi_capabilities_impl.cc index 924c603792..c19b70f2f5 100644 --- a/src/components/application_manager/src/hmi_capabilities_impl.cc +++ b/src/components/application_manager/src/hmi_capabilities_impl.cc @@ -53,410 +53,6 @@ namespace formatters = ns_smart_device_link::ns_json_handler::formatters; SDL_CREATE_LOG_VARIABLE("HMICapabilities") -namespace { -std::map - vr_enum_capabilities; -std::map - tts_enum_capabilities; -std::map - tts_enum_prerecorded_speech; -std::map button_enum_name; -std::map - text_fields_enum_name; -std::map - media_clock_enum_name; -std::map image_type_enum; -std::map sampling_rate_enum; -std::map - bit_per_sample_enum; -std::map audio_type_enum; -std::map - hmi_zone_enum; -std::map - image_field_name_enum; -std::map file_type_enum; -std::map display_type_enum; -std::map character_set_enum; -std::map - video_streaming_protocol_enum; -std::map - video_streaming_codec_enum; - -void InitCapabilities() { - vr_enum_capabilities.insert(std::make_pair( - std::string("TEXT"), hmi_apis::Common_VrCapabilities::VR_TEXT)); - - tts_enum_capabilities.insert(std::make_pair( - std::string("TEXT"), hmi_apis::Common_SpeechCapabilities::SC_TEXT)); - tts_enum_capabilities.insert( - std::make_pair(std::string("SAPI_PHONEMES"), - hmi_apis::Common_SpeechCapabilities::SAPI_PHONEMES)); - tts_enum_capabilities.insert( - std::make_pair(std::string("LHPLUS_PHONEMES"), - hmi_apis::Common_SpeechCapabilities::LHPLUS_PHONEMES)); - tts_enum_capabilities.insert( - std::make_pair(std::string("SAPI_PHONEMES"), - hmi_apis::Common_SpeechCapabilities::SAPI_PHONEMES)); - tts_enum_capabilities.insert( - std::make_pair(std::string("PRE_RECORDED"), - hmi_apis::Common_SpeechCapabilities::PRE_RECORDED)); - tts_enum_capabilities.insert(std::make_pair( - std::string("SILENCE"), hmi_apis::Common_SpeechCapabilities::SILENCE)); - tts_enum_capabilities.insert(std::make_pair( - std::string("FILE"), hmi_apis::Common_SpeechCapabilities::FILE)); - - tts_enum_prerecorded_speech.insert( - std::make_pair(std::string("HELP_JINGLE"), - hmi_apis::Common_PrerecordedSpeech::HELP_JINGLE)); - tts_enum_prerecorded_speech.insert( - std::make_pair(std::string("INITIAL_JINGLE"), - hmi_apis::Common_PrerecordedSpeech::INITIAL_JINGLE)); - tts_enum_prerecorded_speech.insert( - std::make_pair(std::string("LISTEN_JINGLE"), - hmi_apis::Common_PrerecordedSpeech::LISTEN_JINGLE)); - tts_enum_prerecorded_speech.insert( - std::make_pair(std::string("POSITIVE_JINGLE"), - hmi_apis::Common_PrerecordedSpeech::POSITIVE_JINGLE)); - tts_enum_prerecorded_speech.insert( - std::make_pair(std::string("NEGATIVE_JINGLE"), - hmi_apis::Common_PrerecordedSpeech::NEGATIVE_JINGLE)); - - button_enum_name.insert( - std::make_pair(std::string("OK"), hmi_apis::Common_ButtonName::OK)); - button_enum_name.insert(std::make_pair( - std::string("PLAY_PAUSE"), hmi_apis::Common_ButtonName::PLAY_PAUSE)); - button_enum_name.insert(std::make_pair( - std::string("SEEKLEFT"), hmi_apis::Common_ButtonName::SEEKLEFT)); - button_enum_name.insert(std::make_pair( - std::string("SEEKRIGHT"), hmi_apis::Common_ButtonName::SEEKRIGHT)); - button_enum_name.insert(std::make_pair(std::string("TUNEUP"), - hmi_apis::Common_ButtonName::TUNEUP)); - button_enum_name.insert(std::make_pair( - std::string("TUNEDOWN"), hmi_apis::Common_ButtonName::TUNEDOWN)); - button_enum_name.insert(std::make_pair( - std::string("PRESET_0"), hmi_apis::Common_ButtonName::PRESET_0)); - button_enum_name.insert(std::make_pair( - std::string("PRESET_1"), hmi_apis::Common_ButtonName::PRESET_1)); - button_enum_name.insert(std::make_pair( - std::string("PRESET_2"), hmi_apis::Common_ButtonName::PRESET_2)); - button_enum_name.insert(std::make_pair( - std::string("PRESET_3"), hmi_apis::Common_ButtonName::PRESET_3)); - button_enum_name.insert(std::make_pair( - std::string("PRESET_4"), hmi_apis::Common_ButtonName::PRESET_4)); - button_enum_name.insert(std::make_pair( - std::string("PRESET_5"), hmi_apis::Common_ButtonName::PRESET_5)); - button_enum_name.insert(std::make_pair( - std::string("PRESET_6"), hmi_apis::Common_ButtonName::PRESET_6)); - button_enum_name.insert(std::make_pair( - std::string("PRESET_7"), hmi_apis::Common_ButtonName::PRESET_7)); - button_enum_name.insert(std::make_pair( - std::string("PRESET_8"), hmi_apis::Common_ButtonName::PRESET_8)); - button_enum_name.insert(std::make_pair( - std::string("PRESET_9"), hmi_apis::Common_ButtonName::PRESET_9)); - button_enum_name.insert( - std::make_pair(std::string("CUSTOM_BUTTON"), - hmi_apis::Common_ButtonName::CUSTOM_BUTTON)); - button_enum_name.insert(std::make_pair(std::string("SEARCH"), - hmi_apis::Common_ButtonName::SEARCH)); - button_enum_name.insert( - std::make_pair(std::string("NAV_CENTER_LOCATION"), - hmi_apis::Common_ButtonName::NAV_CENTER_LOCATION)); - button_enum_name.insert(std::make_pair( - std::string("NAV_ZOOM_IN"), hmi_apis::Common_ButtonName::NAV_ZOOM_IN)); - button_enum_name.insert(std::make_pair( - std::string("NAV_ZOOM_OUT"), hmi_apis::Common_ButtonName::NAV_ZOOM_OUT)); - button_enum_name.insert(std::make_pair( - std::string("NAV_PAN_UP"), hmi_apis::Common_ButtonName::NAV_PAN_UP)); - button_enum_name.insert( - std::make_pair(std::string("NAV_PAN_UP_RIGHT"), - hmi_apis::Common_ButtonName::NAV_PAN_UP_RIGHT)); - button_enum_name.insert( - std::make_pair(std::string("NAV_PAN_RIGHT"), - hmi_apis::Common_ButtonName::NAV_PAN_RIGHT)); - button_enum_name.insert( - std::make_pair(std::string("NAV_PAN_DOWN_RIGHT"), - hmi_apis::Common_ButtonName::NAV_PAN_DOWN_RIGHT)); - button_enum_name.insert(std::make_pair( - std::string("NAV_PAN_DOWN"), hmi_apis::Common_ButtonName::NAV_PAN_DOWN)); - button_enum_name.insert( - std::make_pair(std::string("NAV_PAN_DOWN_LEFT"), - hmi_apis::Common_ButtonName::NAV_PAN_DOWN_LEFT)); - button_enum_name.insert(std::make_pair( - std::string("NAV_PAN_LEFT"), hmi_apis::Common_ButtonName::NAV_PAN_LEFT)); - button_enum_name.insert( - std::make_pair(std::string("NAV_PAN_UP_LEFT"), - hmi_apis::Common_ButtonName::NAV_PAN_UP_LEFT)); - button_enum_name.insert( - std::make_pair(std::string("NAV_TILT_TOGGLE"), - hmi_apis::Common_ButtonName::NAV_TILT_TOGGLE)); - button_enum_name.insert( - std::make_pair(std::string("NAV_ROTATE_CLOCKWISE"), - hmi_apis::Common_ButtonName::NAV_ROTATE_CLOCKWISE)); - button_enum_name.insert( - std::make_pair(std::string("NAV_ROTATE_COUNTERCLOCKWISE"), - hmi_apis::Common_ButtonName::NAV_ROTATE_COUNTERCLOCKWISE)); - button_enum_name.insert( - std::make_pair(std::string("NAV_HEADING_TOGGLE"), - hmi_apis::Common_ButtonName::NAV_HEADING_TOGGLE)); - - text_fields_enum_name.insert(std::make_pair( - std::string("mainField1"), hmi_apis::Common_TextFieldName::mainField1)); - text_fields_enum_name.insert(std::make_pair( - std::string("mainField2"), hmi_apis::Common_TextFieldName::mainField2)); - text_fields_enum_name.insert(std::make_pair( - std::string("mainField3"), hmi_apis::Common_TextFieldName::mainField3)); - text_fields_enum_name.insert(std::make_pair( - std::string("mainField4"), hmi_apis::Common_TextFieldName::mainField4)); - text_fields_enum_name.insert(std::make_pair( - std::string("statusBar"), hmi_apis::Common_TextFieldName::statusBar)); - text_fields_enum_name.insert(std::make_pair( - std::string("mediaClock"), hmi_apis::Common_TextFieldName::mediaClock)); - text_fields_enum_name.insert(std::make_pair( - std::string("mediaTrack"), hmi_apis::Common_TextFieldName::mediaTrack)); - text_fields_enum_name.insert(std::make_pair( - std::string("alertText1"), hmi_apis::Common_TextFieldName::alertText1)); - text_fields_enum_name.insert(std::make_pair( - std::string("alertText2"), hmi_apis::Common_TextFieldName::alertText2)); - text_fields_enum_name.insert(std::make_pair( - std::string("alertText3"), hmi_apis::Common_TextFieldName::alertText3)); - text_fields_enum_name.insert( - std::make_pair(std::string("scrollableMessageBody"), - hmi_apis::Common_TextFieldName::scrollableMessageBody)); - text_fields_enum_name.insert( - std::make_pair(std::string("initialInteractionText"), - hmi_apis::Common_TextFieldName::initialInteractionText)); - text_fields_enum_name.insert( - std::make_pair(std::string("navigationText1"), - hmi_apis::Common_TextFieldName::navigationText1)); - text_fields_enum_name.insert( - std::make_pair(std::string("navigationText2"), - hmi_apis::Common_TextFieldName::navigationText2)); - text_fields_enum_name.insert( - std::make_pair(std::string("ETA"), hmi_apis::Common_TextFieldName::ETA)); - text_fields_enum_name.insert( - std::make_pair(std::string("totalDistance"), - hmi_apis::Common_TextFieldName::totalDistance)); - text_fields_enum_name.insert(std::make_pair( - std::string("audioPassThruDisplayText1"), - hmi_apis::Common_TextFieldName::audioPassThruDisplayText1)); - text_fields_enum_name.insert(std::make_pair( - std::string("audioPassThruDisplayText2"), - hmi_apis::Common_TextFieldName::audioPassThruDisplayText2)); - text_fields_enum_name.insert( - std::make_pair(std::string("sliderHeader"), - hmi_apis::Common_TextFieldName::sliderHeader)); - text_fields_enum_name.insert( - std::make_pair(std::string("sliderFooter"), - hmi_apis::Common_TextFieldName::sliderFooter)); - text_fields_enum_name.insert( - std::make_pair(std::string("navigationText"), - hmi_apis::Common_TextFieldName::navigationText)); - text_fields_enum_name.insert( - std::make_pair(std::string("notificationText"), - hmi_apis::Common_TextFieldName::notificationText)); - text_fields_enum_name.insert(std::make_pair( - std::string("menuName"), hmi_apis::Common_TextFieldName::menuName)); - text_fields_enum_name.insert( - std::make_pair(std::string("secondaryText"), - hmi_apis::Common_TextFieldName::secondaryText)); - text_fields_enum_name.insert( - std::make_pair(std::string("tertiaryText"), - hmi_apis::Common_TextFieldName::tertiaryText)); - text_fields_enum_name.insert( - std::make_pair(std::string("timeToDestination"), - hmi_apis::Common_TextFieldName::timeToDestination)); - text_fields_enum_name.insert( - std::make_pair(std::string("locationName"), - hmi_apis::Common_TextFieldName::locationName)); - text_fields_enum_name.insert( - std::make_pair(std::string("locationDescription"), - hmi_apis::Common_TextFieldName::locationDescription)); - text_fields_enum_name.insert(std::make_pair( - std::string("turnText"), hmi_apis::Common_TextFieldName::turnText)); - text_fields_enum_name.insert( - std::make_pair(std::string("addressLines"), - hmi_apis::Common_TextFieldName::addressLines)); - text_fields_enum_name.insert(std::make_pair( - std::string("phoneNumber"), hmi_apis::Common_TextFieldName::phoneNumber)); - text_fields_enum_name.insert( - std::make_pair(std::string("subtleAlertText1"), - hmi_apis::Common_TextFieldName::subtleAlertText1)); - text_fields_enum_name.insert( - std::make_pair(std::string("subtleAlertText2"), - hmi_apis::Common_TextFieldName::subtleAlertText2)); - text_fields_enum_name.insert(std::make_pair( - std::string("subtleAlertSoftButtonText"), - hmi_apis::Common_TextFieldName::subtleAlertSoftButtonText)); - text_fields_enum_name.insert(std::make_pair( - std::string("turnText"), hmi_apis::Common_TextFieldName::turnText)); - text_fields_enum_name.insert(std::make_pair( - std::string("menuTitle"), hmi_apis::Common_TextFieldName::menuTitle)); - - media_clock_enum_name.insert(std::make_pair( - std::string("CLOCK1"), hmi_apis::Common_MediaClockFormat::CLOCK1)); - media_clock_enum_name.insert(std::make_pair( - std::string("CLOCK2"), hmi_apis::Common_MediaClockFormat::CLOCK2)); - media_clock_enum_name.insert(std::make_pair( - std::string("CLOCK3"), hmi_apis::Common_MediaClockFormat::CLOCK3)); - media_clock_enum_name.insert( - std::make_pair(std::string("CLOCKTEXT1"), - hmi_apis::Common_MediaClockFormat::CLOCKTEXT1)); - media_clock_enum_name.insert( - std::make_pair(std::string("CLOCKTEXT2"), - hmi_apis::Common_MediaClockFormat::CLOCKTEXT2)); - media_clock_enum_name.insert( - std::make_pair(std::string("CLOCKTEXT3"), - hmi_apis::Common_MediaClockFormat::CLOCKTEXT3)); - media_clock_enum_name.insert( - std::make_pair(std::string("CLOCKTEXT4"), - hmi_apis::Common_MediaClockFormat::CLOCKTEXT4)); - - image_type_enum.insert(std::make_pair(std::string("STATIC"), - hmi_apis::Common_ImageType::STATIC)); - image_type_enum.insert(std::make_pair(std::string("DYNAMIC"), - hmi_apis::Common_ImageType::DYNAMIC)); - - sampling_rate_enum.insert(std::make_pair( - std::string("8KHZ"), hmi_apis::Common_SamplingRate::RATE_8KHZ)); - sampling_rate_enum.insert(std::make_pair( - std::string("16KHZ"), hmi_apis::Common_SamplingRate::RATE_16KHZ)); - sampling_rate_enum.insert(std::make_pair( - std::string("22KHZ"), hmi_apis::Common_SamplingRate::RATE_22KHZ)); - sampling_rate_enum.insert(std::make_pair( - std::string("44KHZ"), hmi_apis::Common_SamplingRate::RATE_44KHZ)); - - bit_per_sample_enum.insert(std::make_pair( - std::string("RATE_8_BIT"), hmi_apis::Common_BitsPerSample::RATE_8_BIT)); - bit_per_sample_enum.insert(std::make_pair( - std::string("RATE_16_BIT"), hmi_apis::Common_BitsPerSample::RATE_16_BIT)); - - audio_type_enum.insert( - std::make_pair(std::string("PCM"), hmi_apis::Common_AudioType::PCM)); - - hmi_zone_enum.insert(std::make_pair( - std::string("FRONT"), hmi_apis::Common_HmiZoneCapabilities::FRONT)); - hmi_zone_enum.insert(std::make_pair( - std::string("BACK"), hmi_apis::Common_HmiZoneCapabilities::BACK)); - - image_field_name_enum.insert( - std::make_pair(std::string("softButtonImage"), - hmi_apis::Common_ImageFieldName::softButtonImage)); - image_field_name_enum.insert( - std::make_pair(std::string("choiceImage"), - hmi_apis::Common_ImageFieldName::choiceImage)); - image_field_name_enum.insert( - std::make_pair(std::string("choiceSecondaryImage"), - hmi_apis::Common_ImageFieldName::choiceSecondaryImage)); - image_field_name_enum.insert(std::make_pair( - std::string("vrHelpItem"), hmi_apis::Common_ImageFieldName::vrHelpItem)); - image_field_name_enum.insert(std::make_pair( - std::string("turnIcon"), hmi_apis::Common_ImageFieldName::turnIcon)); - image_field_name_enum.insert(std::make_pair( - std::string("menuIcon"), hmi_apis::Common_ImageFieldName::menuIcon)); - image_field_name_enum.insert(std::make_pair( - std::string("cmdIcon"), hmi_apis::Common_ImageFieldName::cmdIcon)); - image_field_name_enum.insert(std::make_pair( - std::string("appIcon"), hmi_apis::Common_ImageFieldName::appIcon)); - image_field_name_enum.insert(std::make_pair( - std::string("graphic"), hmi_apis::Common_ImageFieldName::graphic)); - image_field_name_enum.insert( - std::make_pair(std::string("secondaryGraphic"), - hmi_apis::Common_ImageFieldName::secondaryGraphic)); - image_field_name_enum.insert( - std::make_pair(std::string("showConstantTBTIcon"), - hmi_apis::Common_ImageFieldName::showConstantTBTIcon)); - image_field_name_enum.insert(std::make_pair( - std::string("showConstantTBTNextTurnIcon"), - hmi_apis::Common_ImageFieldName::showConstantTBTNextTurnIcon)); - image_field_name_enum.insert( - std::make_pair(std::string("locationImage"), - hmi_apis::Common_ImageFieldName::locationImage)); - image_field_name_enum.insert(std::make_pair( - std::string("alertIcon"), hmi_apis::Common_ImageFieldName::alertIcon)); - image_field_name_enum.insert( - std::make_pair(std::string("subtleAlertIcon"), - hmi_apis::Common_ImageFieldName::subtleAlertIcon)); - - file_type_enum.insert(std::make_pair(std::string("GRAPHIC_BMP"), - hmi_apis::Common_FileType::GRAPHIC_BMP)); - file_type_enum.insert(std::make_pair( - std::string("GRAPHIC_JPEG"), hmi_apis::Common_FileType::GRAPHIC_JPEG)); - file_type_enum.insert(std::make_pair(std::string("GRAPHIC_PNG"), - hmi_apis::Common_FileType::GRAPHIC_PNG)); - file_type_enum.insert(std::make_pair(std::string("AUDIO_WAVE"), - hmi_apis::Common_FileType::AUDIO_WAVE)); - file_type_enum.insert(std::make_pair(std::string("AUDIO_MP3"), - hmi_apis::Common_FileType::AUDIO_MP3)); - file_type_enum.insert(std::make_pair(std::string("AUDIO_AAC"), - hmi_apis::Common_FileType::AUDIO_AAC)); - file_type_enum.insert( - std::make_pair(std::string("BINARY"), hmi_apis::Common_FileType::BINARY)); - file_type_enum.insert( - std::make_pair(std::string("JSON"), hmi_apis::Common_FileType::JSON)); - - display_type_enum.insert( - std::make_pair(std::string("CID"), hmi_apis::Common_DisplayType::CID)); - display_type_enum.insert(std::make_pair(std::string("TYPE2"), - hmi_apis::Common_DisplayType::TYPE2)); - display_type_enum.insert(std::make_pair(std::string("TYPE5"), - hmi_apis::Common_DisplayType::TYPE5)); - display_type_enum.insert( - std::make_pair(std::string("NGN"), hmi_apis::Common_DisplayType::NGN)); - display_type_enum.insert(std::make_pair( - std::string("GEN2_8_DMA"), hmi_apis::Common_DisplayType::GEN2_8_DMA)); - display_type_enum.insert(std::make_pair( - std::string("GEN2_6_DMA"), hmi_apis::Common_DisplayType::GEN2_6_DMA)); - display_type_enum.insert( - std::make_pair(std::string("MFD3"), hmi_apis::Common_DisplayType::MFD3)); - display_type_enum.insert( - std::make_pair(std::string("MFD4"), hmi_apis::Common_DisplayType::MFD4)); - display_type_enum.insert( - std::make_pair(std::string("MFD5"), hmi_apis::Common_DisplayType::MFD5)); - display_type_enum.insert(std::make_pair( - std::string("GEN3_8_INCH"), hmi_apis::Common_DisplayType::GEN3_8_INCH)); - display_type_enum.insert(std::make_pair( - std::string("SDL_GENERIC"), hmi_apis::Common_DisplayType::SDL_GENERIC)); - - character_set_enum.insert(std::make_pair( - std::string("TYPE2SET"), hmi_apis::Common_CharacterSet::TYPE2SET)); - character_set_enum.insert(std::make_pair( - std::string("TYPE5SET"), hmi_apis::Common_CharacterSet::TYPE5SET)); - character_set_enum.insert(std::make_pair( - std::string("CID1SET"), hmi_apis::Common_CharacterSet::CID1SET)); - character_set_enum.insert(std::make_pair( - std::string("CID2SET"), hmi_apis::Common_CharacterSet::CID2SET)); - character_set_enum.insert(std::make_pair( - std::string("ASCII"), hmi_apis::Common_CharacterSet::ASCII)); - character_set_enum.insert(std::make_pair( - std::string("ISO_8859_1"), hmi_apis::Common_CharacterSet::ISO_8859_1)); - character_set_enum.insert(std::make_pair( - std::string("UTF_8"), hmi_apis::Common_CharacterSet::UTF_8)); - - video_streaming_protocol_enum.insert(std::make_pair( - std::string("RAW"), hmi_apis::Common_VideoStreamingProtocol::RAW)); - video_streaming_protocol_enum.insert(std::make_pair( - std::string("RTP"), hmi_apis::Common_VideoStreamingProtocol::RTP)); - video_streaming_protocol_enum.insert(std::make_pair( - std::string("RTSP"), hmi_apis::Common_VideoStreamingProtocol::RTSP)); - video_streaming_protocol_enum.insert(std::make_pair( - std::string("RTMP"), hmi_apis::Common_VideoStreamingProtocol::RTMP)); - video_streaming_protocol_enum.insert(std::make_pair( - std::string("WEBM"), hmi_apis::Common_VideoStreamingProtocol::WEBM)); - - video_streaming_codec_enum.insert(std::make_pair( - std::string("H264"), hmi_apis::Common_VideoStreamingCodec::H264)); - video_streaming_codec_enum.insert(std::make_pair( - std::string("H265"), hmi_apis::Common_VideoStreamingCodec::H265)); - video_streaming_codec_enum.insert(std::make_pair( - std::string("Theora"), hmi_apis::Common_VideoStreamingCodec::Theora)); - video_streaming_codec_enum.insert(std::make_pair( - std::string("VP8"), hmi_apis::Common_VideoStreamingCodec::VP8)); - video_streaming_codec_enum.insert(std::make_pair( - std::string("VP9"), hmi_apis::Common_VideoStreamingCodec::VP9)); -} - -} // namespace - namespace { /** * @brief Saves smart object content into the JSON node @@ -522,7 +118,6 @@ HMICapabilitiesImpl::HMICapabilitiesImpl(ApplicationManager& app_mngr) , seat_location_capability_(NULL) , app_mngr_(app_mngr) , hmi_language_handler_(app_mngr) { - InitCapabilities(); if (false == app_mngr_.get_settings().launch_hmi()) { is_vr_cooperating_ = true; is_tts_cooperating_ = true; @@ -1187,14 +782,12 @@ bool HMICapabilitiesImpl::LoadCapabilitiesFromFile() { ui_display_capabilities_node, display_capabilities_so); if (display_capabilities_so.keyExists(hmi_response::display_type)) { - std::map::const_iterator it = - display_type_enum.find( + auto enum_value = + ConvertStringToEnum( (display_capabilities_so[hmi_response::display_type]) .asString()); - display_capabilities_so.erase(hmi_response::display_type); - if (display_type_enum.end() != it) { - display_capabilities_so[hmi_response::display_type] = it->second; + if (hmi_apis::Common_DisplayType::INVALID_ENUM != enum_value) { + display_capabilities_so[hmi_response::display_type] = enum_value; } } @@ -1205,34 +798,34 @@ bool HMICapabilitiesImpl::LoadCapabilitiesFromFile() { for (uint32_t i = 0; i < kLen; ++i) { if ((display_capabilities_so[hmi_response::text_fields][i]) .keyExists(strings::name)) { - std::map::const_iterator - it_text_field_name = text_fields_enum_name.find( + auto enum_value = + ConvertStringToEnum( display_capabilities_so[hmi_response::text_fields][i] [strings::name] .asString()); + display_capabilities_so[hmi_response::text_fields][i].erase( strings::name); - if (text_fields_enum_name.end() != it_text_field_name) { + + if (hmi_apis::Common_TextFieldName::INVALID_ENUM != enum_value) { display_capabilities_so[hmi_response::text_fields][i] - [strings::name] = - it_text_field_name->second; + [strings::name] = enum_value; } } if ((display_capabilities_so[hmi_response::text_fields][i]) .keyExists(strings::character_set)) { - std::map::const_iterator - it_characte_set = character_set_enum.find( + auto enum_value = + ConvertStringToEnum( display_capabilities_so[hmi_response::text_fields][i] [strings::character_set] .asString()); + display_capabilities_so[hmi_response::text_fields][i].erase( strings::character_set); - if (character_set_enum.end() != it_characte_set) { + + if (hmi_apis::Common_CharacterSet::INVALID_ENUM != enum_value) { display_capabilities_so[hmi_response::text_fields][i] - [strings::character_set] = - it_characte_set->second; + [strings::character_set] = enum_value; } } } @@ -1243,13 +836,12 @@ bool HMICapabilitiesImpl::LoadCapabilitiesFromFile() { display_capabilities_so[hmi_response::image_fields]; for (uint32_t i = 0; i < array_image_fields.length(); ++i) { if (array_image_fields[i].keyExists(strings::name)) { - std::map::const_iterator - it = image_field_name_enum.find( + auto enum_value = + ConvertStringToEnum( (array_image_fields[i][strings::name]).asString()); array_image_fields[i].erase(strings::name); - if (image_field_name_enum.end() != it) { - array_image_fields[i][strings::name] = it->second; + if (hmi_apis::Common_ImageFieldName::INVALID_ENUM != enum_value) { + array_image_fields[i][strings::name] = enum_value; } } if (array_image_fields[i].keyExists( @@ -1261,12 +853,11 @@ bool HMICapabilitiesImpl::LoadCapabilitiesFromFile() { for (uint32_t k = 0, j = 0; k < image_type_supported_array.length(); ++k) { - std::map::const_iterator it = - file_type_enum.find( + auto enum_value = + ConvertStringToEnum( (image_type_supported_array[k]).asString()); - if (file_type_enum.end() != it) { - image_type_supported_enum[j++] = it->second; + if (hmi_apis::Common_FileType::INVALID_ENUM != enum_value) { + image_type_supported_enum[j++] = enum_value; } } array_image_fields[i].erase(strings::image_type_supported); @@ -1283,12 +874,11 @@ bool HMICapabilitiesImpl::LoadCapabilitiesFromFile() { smart_objects::SmartType_Array); for (uint32_t i = 0, j = 0; i < media_clock_formats_array.length(); ++i) { - std::map::const_iterator - it = media_clock_enum_name.find( + auto enum_value = + ConvertStringToEnum( (media_clock_formats_array[i]).asString()); - if (media_clock_enum_name.end() != it) { - media_clock_formats_enum[j++] = it->second; + if (hmi_apis::Common_MediaClockFormat::INVALID_ENUM != enum_value) { + media_clock_formats_enum[j++] = enum_value; } } display_capabilities_so.erase(hmi_response::media_clock_formats); @@ -1304,11 +894,11 @@ bool HMICapabilitiesImpl::LoadCapabilitiesFromFile() { smart_objects::SmartType_Array); for (uint32_t i = 0, j = 0; i < image_capabilities_array.length(); ++i) { - std::map::const_iterator it = - image_type_enum.find((image_capabilities_array[i]).asString()); - if (image_type_enum.end() != it) { - image_capabilities_enum[j++] = it->second; + auto enum_value = + ConvertStringToEnum( + (image_capabilities_array[i]).asString()); + if (hmi_apis::Common_ImageType::INVALID_ENUM != enum_value) { + image_capabilities_enum[j++] = enum_value; } } display_capabilities_so.erase(hmi_response::image_capabilities); @@ -1359,10 +949,13 @@ bool HMICapabilitiesImpl::LoadCapabilitiesFromFile() { if (!ui_hmi_zone_capabilities_node.isNull()) { smart_objects::SmartObject hmi_zone_capabilities_so = smart_objects::SmartObject(smart_objects::SmartType_Array); - hmi_zone_capabilities_so = - hmi_zone_enum.find(ui_hmi_zone_capabilities_node.asString()) - ->second; - set_hmi_zone_capabilities(hmi_zone_capabilities_so); + auto enum_value = + ConvertStringToEnum( + ui_hmi_zone_capabilities_node.asString()); + if (hmi_apis::Common_HmiZoneCapabilities::INVALID_ENUM != enum_value) { + hmi_zone_capabilities_so = enum_value; + set_hmi_zone_capabilities(hmi_zone_capabilities_so); + } } auto ui_soft_button_capabilities_node = @@ -1425,26 +1018,23 @@ bool HMICapabilitiesImpl::LoadCapabilitiesFromFile() { continue; } - std::map:: - const_iterator it_protocol = - video_streaming_protocol_enum.find( - supported_format_array[i][strings::protocol] - .asString()); - - std::map:: - const_iterator it_codec = video_streaming_codec_enum.find( - supported_format_array[i][strings::codec].asString()); + auto enum_value_protocol = ConvertStringToEnum< + hmi_apis::Common_VideoStreamingProtocol::eType>( + supported_format_array[i][strings::protocol].asString()); + auto enum_value_codec = ConvertStringToEnum< + hmi_apis::Common_VideoStreamingCodec::eType>( + supported_format_array[i][strings::codec].asString()); // format is valid only if both protocol and codec are converted // to enum values successfully - if (it_protocol != video_streaming_protocol_enum.end() && - it_codec != video_streaming_codec_enum.end()) { + if (hmi_apis::Common_VideoStreamingProtocol::INVALID_ENUM != + enum_value_protocol && + hmi_apis::Common_VideoStreamingCodec::INVALID_ENUM != + enum_value_codec) { smart_objects::SmartObject format_so = smart_objects::SmartObject(smart_objects::SmartType_Map); - format_so[strings::protocol] = it_protocol->second; - format_so[strings::codec] = it_codec->second; + format_so[strings::protocol] = enum_value_protocol; + format_so[strings::codec] = enum_value_codec; converted_array[j++] = format_so; } } @@ -1640,13 +1230,11 @@ bool HMICapabilitiesImpl::LoadCapabilitiesFromFile() { for (uint32_t i = 0; i < buttons_capabilities_so.length(); ++i) { if ((buttons_capabilities_so[i]).keyExists(strings::name)) { - std::map::const_iterator it = - button_enum_name.find( + auto enum_value = + ConvertStringToEnum( (buttons_capabilities_so[i][strings::name]).asString()); - buttons_capabilities_so[i].erase(strings::name); - if (button_enum_name.end() != it) { - buttons_capabilities_so[i][strings::name] = it->second; + if (hmi_apis::Common_ButtonName::INVALID_ENUM != enum_value) { + buttons_capabilities_so[i][strings::name] = enum_value; } } } @@ -2243,19 +1831,18 @@ void HMICapabilitiesImpl::convert_audio_capability_to_obj( smart_objects::SmartObject& output_so) const { if (JsonIsMemberSafe(capability, "samplingRate")) { output_so[strings::sampling_rate] = - sampling_rate_enum.find(capability.get("samplingRate", "").asString()) - ->second; + ConvertStringToEnum( + capability.get("samplingRate", "").asString()); } if (JsonIsMemberSafe(capability, "bitsPerSample")) { output_so[strings::bits_per_sample] = - bit_per_sample_enum - .find(capability.get("bitsPerSample", "").asString()) - ->second; + ConvertStringToEnum( + capability.get("bitsPerSample", "").asString()); } if (JsonIsMemberSafe(capability, "audioType")) { output_so[strings::audio_type] = - audio_type_enum.find(capability.get("audioType", "").asString()) - ->second; + ConvertStringToEnum( + capability.get("audioType", "").asString()); } } -- cgit v1.2.1 From 5770d55dc2cf06f72db38282b2cb6b33cc81314b Mon Sep 17 00:00:00 2001 From: Andrii Kalinich Date: Tue, 22 Sep 2020 18:28:51 -0400 Subject: Align HMI capabilities file with API --- src/appMain/hmi_capabilities.json | 4 ++-- src/components/application_manager/test/hmi_capabilities_old_apt.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/appMain/hmi_capabilities.json b/src/appMain/hmi_capabilities.json index 99a2e4c0cc..1e1c5aea79 100755 --- a/src/appMain/hmi_capabilities.json +++ b/src/appMain/hmi_capabilities.json @@ -287,12 +287,12 @@ }, "audioPassThruCapabilities": [{ "samplingRate": "44KHZ", - "bitsPerSample": "RATE_8_BIT", + "bitsPerSample": "8_BIT", "audioType": "PCM" }], "pcmStreamCapabilities": { "samplingRate": "16KHZ", - "bitsPerSample": "RATE_16_BIT", + "bitsPerSample": "16_BIT", "audioType": "PCM" }, "hmiZoneCapabilities": "FRONT", diff --git a/src/components/application_manager/test/hmi_capabilities_old_apt.json b/src/components/application_manager/test/hmi_capabilities_old_apt.json index 5a5af37e2f..56ae151caa 100644 --- a/src/components/application_manager/test/hmi_capabilities_old_apt.json +++ b/src/components/application_manager/test/hmi_capabilities_old_apt.json @@ -2,7 +2,7 @@ "UI": { "audioPassThruCapabilities": { "samplingRate": "22KHZ", - "bitsPerSample": "RATE_16_BIT", + "bitsPerSample": "16_BIT", "audioType": "PCM" } } -- cgit v1.2.1 From 620b9d7c19a5c2884f9f59eb9d876a44b10ba646 Mon Sep 17 00:00:00 2001 From: JackLivio Date: Mon, 28 Sep 2020 13:38:18 -0700 Subject: Parse PTU as array for http policies (#3521) --- .../policy/policy_regular/include/policy/policy_manager_impl.h | 2 +- src/components/policy/policy_regular/src/policy_manager_impl.cc | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/components/policy/policy_regular/include/policy/policy_manager_impl.h b/src/components/policy/policy_regular/include/policy/policy_manager_impl.h index 307697dd64..dff4802d82 100644 --- a/src/components/policy/policy_regular/include/policy/policy_manager_impl.h +++ b/src/components/policy/policy_regular/include/policy/policy_manager_impl.h @@ -869,7 +869,7 @@ class PolicyManagerImpl : public PolicyManager { void ResetTimeout() OVERRIDE; protected: -#ifdef USE_HMI_PTU_DECRYPTION +#if defined USE_HMI_PTU_DECRYPTION && defined PROPRIETARY_MODE /** * @brief Parse policy table content and convert to PT object * @param pt_content binary content of PT diff --git a/src/components/policy/policy_regular/src/policy_manager_impl.cc b/src/components/policy/policy_regular/src/policy_manager_impl.cc index 36beeeb07f..daf043f96b 100644 --- a/src/components/policy/policy_regular/src/policy_manager_impl.cc +++ b/src/components/policy/policy_regular/src/policy_manager_impl.cc @@ -87,7 +87,7 @@ void PolicyManagerImpl::set_listener(PolicyListener* listener) { update_status_manager_.set_listener(listener); } -#ifdef USE_HMI_PTU_DECRYPTION +#if defined USE_HMI_PTU_DECRYPTION && defined PROPRIETARY_MODE std::shared_ptr PolicyManagerImpl::Parse( const BinaryMessage& pt_content) { @@ -331,7 +331,7 @@ PolicyManager::PtProcessingResult PolicyManagerImpl::LoadPT( "PTU content is: " << std::string(pt_content.begin(), pt_content.end())); -#ifdef USE_HMI_PTU_DECRYPTION +#if defined USE_HMI_PTU_DECRYPTION && defined PROPRIETARY_MODE // Assuemes Policy Table was parsed, formatted, and/or decrypted by // the HMI after system request before calling OnReceivedPolicyUpdate // Parse message into table struct -- cgit v1.2.1 From 97e98cb6f617e75aab00281fca89bffa798f6da9 Mon Sep 17 00:00:00 2001 From: "Yana Chernysheva (GitHub)" <59469418+ychernysheva@users.noreply.github.com> Date: Tue, 29 Sep 2020 17:57:27 +0300 Subject: Add additional check to avoid duplicate subscriptions to Vehicle Data (#3512) * Replace check for already existed subscriptions * Delete unused enum * Update unit tests and add new unit test --- .../vehicle_info_plugin/vehicle_info_plugin.h | 4 +- .../src/vehicle_info_pending_resumption_handler.cc | 14 ++++- .../vehicle_info_plugin/src/vehicle_info_plugin.cc | 38 ++++++------- .../test/vehicle_info_pending_resumption_test.cc | 66 +++++++++++++++++++++- 4 files changed, 94 insertions(+), 28 deletions(-) diff --git a/src/components/application_manager/rpc_plugins/vehicle_info_plugin/include/vehicle_info_plugin/vehicle_info_plugin.h b/src/components/application_manager/rpc_plugins/vehicle_info_plugin/include/vehicle_info_plugin/vehicle_info_plugin.h index 5b597cfcab..1910a9efdf 100644 --- a/src/components/application_manager/rpc_plugins/vehicle_info_plugin/include/vehicle_info_plugin/vehicle_info_plugin.h +++ b/src/components/application_manager/rpc_plugins/vehicle_info_plugin/include/vehicle_info_plugin/vehicle_info_plugin.h @@ -42,7 +42,8 @@ class VehicleInfoAppExtension; namespace app_mngr = application_manager; namespace plugins = application_manager::plugin_manager; -enum SubscribeStatus { SUBSCRIBE, UNSUBSCRIBE }; +bool IsSubscribedAppExist(const std::string& ivi, + const app_mngr::ApplicationManager& app_manager); class VehicleInfoPlugin : public plugins::RPCPlugin { public: @@ -96,7 +97,6 @@ class VehicleInfoPlugin : public plugins::RPCPlugin { const std::set& list_of_subscriptions); private: - bool IsSubscribedAppExist(const std::string& ivi); bool IsAnyPendingSubscriptionExist(const std::string& ivi); void UnsubscribeFromRemovedVDItems(); smart_objects::SmartObjectSPtr GetUnsubscribeIVIRequest( diff --git a/src/components/application_manager/rpc_plugins/vehicle_info_plugin/src/vehicle_info_pending_resumption_handler.cc b/src/components/application_manager/rpc_plugins/vehicle_info_plugin/src/vehicle_info_pending_resumption_handler.cc index d7b3f6ec8f..efbb81952b 100644 --- a/src/components/application_manager/rpc_plugins/vehicle_info_plugin/src/vehicle_info_pending_resumption_handler.cc +++ b/src/components/application_manager/rpc_plugins/vehicle_info_plugin/src/vehicle_info_pending_resumption_handler.cc @@ -38,6 +38,7 @@ #include "application_manager/resumption/resumption_data_processor.h" #include "utils/helpers.h" #include "vehicle_info_plugin/custom_vehicle_data_manager.h" +#include "vehicle_info_plugin/vehicle_info_plugin.h" namespace vehicle_info_plugin { SDL_CREATE_LOG_VARIABLE("VehicleInfoPlugin") @@ -208,6 +209,7 @@ void VehicleInfoPendingResumptionHandler::on_event( SDL_LOG_AUTO_TRACE(); sync_primitives::AutoLock lock(pending_resumption_lock_); using namespace application_manager; + if (pending_requests_.empty()) { SDL_LOG_DEBUG("Not waiting for any response"); return; @@ -269,7 +271,17 @@ void VehicleInfoPendingResumptionHandler::HandleResumptionSubscriptionRequest( SDL_LOG_TRACE("app id " << app.app_id()); auto& ext = dynamic_cast(extension); - const auto subscriptions = ext.PendingSubscriptions().GetData(); + auto subscriptions = ext.PendingSubscriptions().GetData(); + for (auto ivi = subscriptions.begin(); ivi != subscriptions.end();) { + if (IsSubscribedAppExist(*ivi, application_manager_)) { + ext.RemovePendingSubscription(*ivi); + ext.subscribeToVehicleInfo(*ivi); + subscriptions.erase(ivi++); + } else { + ++ivi; + } + } + if (subscriptions.empty()) { SDL_LOG_DEBUG("Subscriptions is empty"); return; diff --git a/src/components/application_manager/rpc_plugins/vehicle_info_plugin/src/vehicle_info_plugin.cc b/src/components/application_manager/rpc_plugins/vehicle_info_plugin/src/vehicle_info_plugin.cc index 718814b201..1a357a86ee 100644 --- a/src/components/application_manager/rpc_plugins/vehicle_info_plugin/src/vehicle_info_plugin.cc +++ b/src/components/application_manager/rpc_plugins/vehicle_info_plugin/src/vehicle_info_plugin.cc @@ -48,6 +48,21 @@ namespace strings = application_manager::strings; namespace plugins = application_manager::plugin_manager; namespace commands = application_manager::commands; +bool IsSubscribedAppExist( + const std::string& ivi, + const application_manager::ApplicationManager& app_manager) { + SDL_LOG_AUTO_TRACE(); + auto apps_accessor = app_manager.applications(); + + for (auto& app : apps_accessor.GetData()) { + auto& ext = VehicleInfoAppExtension::ExtractVIExtension(*app); + if (ext.isSubscribedToVehicleInfo(ivi)) { + return true; + } + } + return false; +} + VehicleInfoPlugin::VehicleInfoPlugin() : application_manager_(nullptr), pending_resumption_handler_(nullptr) {} @@ -164,13 +179,6 @@ void VehicleInfoPlugin::ProcessResumptionSubscription( application_manager::Application& app, VehicleInfoAppExtension& ext) { SDL_LOG_AUTO_TRACE(); - auto pending = ext.PendingSubscriptions().GetData(); - for (const auto& ivi : pending) { - if (IsSubscribedAppExist(ivi)) { - ext.RemovePendingSubscription(ivi); - ext.subscribeToVehicleInfo(ivi); - } - } pending_resumption_handler_->HandleResumptionSubscriptionRequest(ext, app); } @@ -181,10 +189,9 @@ void VehicleInfoPlugin::RevertResumption( UNUSED(app); pending_resumption_handler_->OnResumptionRevert(); - std::set subscriptions_to_revert; for (auto& ivi_data : list_of_subscriptions) { - if (!IsSubscribedAppExist(ivi_data) && + if (!IsSubscribedAppExist(ivi_data, *application_manager_) && !IsAnyPendingSubscriptionExist(ivi_data)) { subscriptions_to_revert.insert(ivi_data); } @@ -230,19 +237,6 @@ smart_objects::SmartObjectSPtr VehicleInfoPlugin::CreateUnsubscriptionRequest( return request; } -bool VehicleInfoPlugin::IsSubscribedAppExist(const std::string& ivi) { - SDL_LOG_AUTO_TRACE(); - auto apps_accessor = application_manager_->applications(); - - for (auto& app : apps_accessor.GetData()) { - auto& ext = VehicleInfoAppExtension::ExtractVIExtension(*app); - if (ext.isSubscribedToVehicleInfo(ivi)) { - return true; - } - } - return false; -} - bool VehicleInfoPlugin::IsAnyPendingSubscriptionExist(const std::string& ivi) { SDL_LOG_AUTO_TRACE(); auto apps_accessor = application_manager_->applications(); diff --git a/src/components/application_manager/rpc_plugins/vehicle_info_plugin/test/vehicle_info_pending_resumption_test.cc b/src/components/application_manager/rpc_plugins/vehicle_info_plugin/test/vehicle_info_pending_resumption_test.cc index c2af7236f8..5b2f4d5e25 100644 --- a/src/components/application_manager/rpc_plugins/vehicle_info_plugin/test/vehicle_info_pending_resumption_test.cc +++ b/src/components/application_manager/rpc_plugins/vehicle_info_plugin/test/vehicle_info_pending_resumption_test.cc @@ -48,6 +48,7 @@ using namespace vehicle_info_plugin; using ::testing::_; using ::testing::DoAll; +using ::testing::Mock; using ::testing::NiceMock; using ::testing::Return; using ::testing::ReturnRef; @@ -226,8 +227,10 @@ class VehicleInfoPendingResumptionHandlerTest : public ::testing::Test { VehicleInfoPendingResumptionHandlerTest() : mock_message_helper_( *application_manager::MockMessageHelper::message_helper_mock()) - - {} + , applications_lock_(std::make_shared()) + , applications_(application_set_, applications_lock_) { + Mock::VerifyAndClearExpectations(&mock_message_helper_); + } void SetUp() OVERRIDE { ON_CALL(app_manager_mock_, event_dispatcher()) @@ -238,6 +241,8 @@ class VehicleInfoPendingResumptionHandlerTest : public ::testing::Test { .WillByDefault(ReturnRef(resume_ctrl_mock_)); ON_CALL(resume_ctrl_mock_, resumption_data_processor()) .WillByDefault(ReturnRef(resumption_data_processor_mock_)); + EXPECT_CALL(app_manager_mock_, applications()) + .WillRepeatedly(Return(applications_)); resumption_handler_.reset( new vehicle_info_plugin::VehicleInfoPendingResumptionHandler( @@ -245,6 +250,11 @@ class VehicleInfoPendingResumptionHandlerTest : public ::testing::Test { MessageHelperResponseCreateExpectation(); } + ~VehicleInfoPendingResumptionHandlerTest() { + Mock::VerifyAndClearExpectations(&mock_message_helper_); + Mock::VerifyAndClearExpectations(&app_manager_mock_); + } + void MessageHelperResponseCreateExpectation() { const int default_corr_id = 0; static auto response = CreateHMIResponseMessage( @@ -277,12 +287,15 @@ class VehicleInfoPendingResumptionHandlerTest : public ::testing::Test { MockMessageHelper& mock_message_helper_; MockApplicationManager app_manager_mock_; - MockResumeCtrl resume_ctrl_mock_; + NiceMock resume_ctrl_mock_; MockResumptionDataProcessor resumption_data_processor_mock_; MockEventDispatcher event_dispatcher_mock_; MockRPCService mock_rpc_service_; NiceMock custom_vehicle_data_manager_mock_; vehicle_info_plugin::VehicleInfoPlugin plugin_; + application_manager::ApplicationSet application_set_; + std::shared_ptr applications_lock_; + DataAccessor applications_; std::unique_ptr resumption_handler_; @@ -300,6 +313,8 @@ TEST_F(VehicleInfoPendingResumptionHandlerTest, NoSubscriptionNoAction) { TEST_F(VehicleInfoPendingResumptionHandlerTest, OneAppSeveralVehicleDataSuccess) { auto mock_app = CreateApp(1); + application_set_.insert(mock_app); + auto ext = CreateExtension(*mock_app); ext->AddPendingSubscription("gps"); ext->AddPendingSubscription("speed"); @@ -327,6 +342,8 @@ TEST_F(VehicleInfoPendingResumptionHandlerTest, TEST_F(VehicleInfoPendingResumptionHandlerTest, OneAppSeveralVehicleDataResponseSuccess) { auto mock_app = CreateApp(1); + application_set_.insert(mock_app); + auto ext = CreateExtension(*mock_app); ext->AddPendingSubscription("gps"); ext->AddPendingSubscription("speed"); @@ -372,6 +389,8 @@ TEST_F(VehicleInfoPendingResumptionHandlerTest, TEST_F(VehicleInfoPendingResumptionHandlerTest, OneAppSeveralVehicleDataResponseOneFailed) { auto mock_app = CreateApp(1); + application_set_.insert(mock_app); + auto ext = CreateExtension(*mock_app); ext->AddPendingSubscription("gps"); ext->AddPendingSubscription("speed"); @@ -417,6 +436,8 @@ TEST_F(VehicleInfoPendingResumptionHandlerTest, TEST_F(VehicleInfoPendingResumptionHandlerTest, OneAppSeveralVehicleDataResponseAllFailed) { auto mock_app = CreateApp(1); + application_set_.insert(mock_app); + auto ext = CreateExtension(*mock_app); ext->AddPendingSubscription("gps"); ext->AddPendingSubscription("speed"); @@ -457,6 +478,8 @@ TEST_F(VehicleInfoPendingResumptionHandlerTest, TEST_F(VehicleInfoPendingResumptionHandlerTest, OneAppSeveralVehicleDataResponseOveralResultFailed) { auto mock_app = CreateApp(1); + application_set_.insert(mock_app); + auto ext = CreateExtension(*mock_app); ext->AddPendingSubscription("gps"); ext->AddPendingSubscription("speed"); @@ -491,7 +514,11 @@ TEST_F(VehicleInfoPendingResumptionHandlerTest, TEST_F(VehicleInfoPendingResumptionHandlerTest, TwoAppsOneSharedDataSuccess) { auto mock_app = CreateApp(1); + application_set_.insert(mock_app); + auto mock_app2 = CreateApp(2); + application_set_.insert(mock_app2); + auto ext = CreateExtension(*mock_app); auto ext2 = CreateExtension(*mock_app2); ext->AddPendingSubscription("gps"); @@ -533,7 +560,11 @@ TEST_F(VehicleInfoPendingResumptionHandlerTest, TwoAppsOneSharedDataSuccess) { TEST_F(VehicleInfoPendingResumptionHandlerTest, TwoAppsMultipleSharedDataSuccessResumption) { auto mock_app = CreateApp(1); + application_set_.insert(mock_app); + auto mock_app2 = CreateApp(2); + application_set_.insert(mock_app2); + auto ext = CreateExtension(*mock_app); auto ext2 = CreateExtension(*mock_app2); ext->AddPendingSubscription("gps"); @@ -580,7 +611,11 @@ TEST_F(VehicleInfoPendingResumptionHandlerTest, TEST_F(VehicleInfoPendingResumptionHandlerTest, TwoAppsOneSharedDataFailRetryforSecondApp) { auto mock_app = CreateApp(1); + application_set_.insert(mock_app); + auto mock_app2 = CreateApp(2); + application_set_.insert(mock_app2); + auto ext = CreateExtension(*mock_app); auto ext2 = CreateExtension(*mock_app2); ext->AddPendingSubscription("gps"); @@ -633,4 +668,29 @@ TEST_F(VehicleInfoPendingResumptionHandlerTest, EXPECT_EQ(ext2->PendingSubscriptions().GetData().size(), 0u); } +TEST_F(VehicleInfoPendingResumptionHandlerTest, + TwoAppsOneSharedDataAlreadySubscribedByFirstAppNoRetryforSecondApp) { + auto mock_app = CreateApp(1); + application_set_.insert(mock_app); + + auto mock_app2 = CreateApp(2); + application_set_.insert(mock_app2); + + auto ext = CreateExtension(*mock_app); + auto ext2 = CreateExtension(*mock_app2); + + ext->subscribeToVehicleInfo("gps"); + ext2->AddPendingSubscription("gps"); + + EXPECT_CALL(resumption_data_processor_mock_, SubscribeToResponse(_, _)) + .Times(0); + EXPECT_CALL(event_dispatcher_mock_, raise_event(_)).Times(0); + EXPECT_CALL(mock_rpc_service_, ManageHMICommand(_, _)).Times(0); + + resumption_handler_->HandleResumptionSubscriptionRequest(*ext2, *mock_app2); + + EXPECT_TRUE(ext->isSubscribedToVehicleInfo("gps")); + EXPECT_TRUE(ext2->isSubscribedToVehicleInfo("gps")); + EXPECT_EQ(ext2->PendingSubscriptions().GetData().size(), 0u); +} } // namespace vehicle_info_plugin_test -- cgit v1.2.1 From 438a5c9173835ec0541f35cf5967229be630dea3 Mon Sep 17 00:00:00 2001 From: Collin Date: Tue, 29 Sep 2020 14:54:25 -0400 Subject: add webengine_websocket to TransportTypeProfileStringFromDeviceHandle (#3520) * add webengine_websocket to TransportTypeProfileStringFromDeviceHandle * differentiate transport name from cloud * add WEBSOCKET and WEBENGINE devices to ini file --- src/appMain/smartDeviceLink.ini | 3 ++- src/components/connection_handler/src/connection_handler_impl.cc | 2 ++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/appMain/smartDeviceLink.ini b/src/appMain/smartDeviceLink.ini index bd23e5b90c..0b27e6263a 100644 --- a/src/appMain/smartDeviceLink.ini +++ b/src/appMain/smartDeviceLink.ini @@ -316,7 +316,8 @@ OpenAttemptTimeoutMsResumptionDB = 500 ; Social, BackgroundProcess, Testing, System, Projection, RemoteControl, ; EmptyApp ; Possible transport types: TCP_WIFI, IAP_CARPLAY, IAP_USB_HOST_MODE, IAP_USB_DEVICE_MODE, -; IAP_USB, AOA_USB, IAP_BLUETOOTH, SPP_BLUETOOTH +; IAP_USB, AOA_USB, IAP_BLUETOOTH, SPP_BLUETOOTH, WEBSOCKET, +; WEBENGINE ; ; The default behavior is to always enable resumption. If an AppHMIType is not listed in this ; section, resumption is enabled for an app with the AppHMIType. diff --git a/src/components/connection_handler/src/connection_handler_impl.cc b/src/components/connection_handler/src/connection_handler_impl.cc index b9d1de8332..d4364af8df 100644 --- a/src/components/connection_handler/src/connection_handler_impl.cc +++ b/src/components/connection_handler/src/connection_handler_impl.cc @@ -944,6 +944,8 @@ ConnectionHandlerImpl::TransportTypeProfileStringFromDeviceHandle( return std::string("IAP_CARPLAY"); } else if (connection_type == "CLOUD_WEBSOCKET") { return std::string("WEBSOCKET"); + } else if (connection_type == "WEBENGINE_WEBSOCKET") { + return std::string("WEBENGINE"); #ifdef BUILD_TESTS } else if (connection_type == "BTMAC") { return std::string("BTMAC"); -- cgit v1.2.1 From 9f61819139ad4944b73257893936d1328eed15b0 Mon Sep 17 00:00:00 2001 From: "Yana Chernysheva (GitHub)" <59469418+ychernysheva@users.noreply.github.com> Date: Wed, 30 Sep 2020 16:29:48 +0300 Subject: Unsubscribe from event in VehicleInfoPendingResumptionHandler (#3515) --- .../src/commands/hmi/vi_subscribe_vehicle_data_request.cc | 1 + .../vehicle_info_plugin/src/vehicle_info_pending_resumption_handler.cc | 1 + 2 files changed, 2 insertions(+) diff --git a/src/components/application_manager/rpc_plugins/vehicle_info_plugin/src/commands/hmi/vi_subscribe_vehicle_data_request.cc b/src/components/application_manager/rpc_plugins/vehicle_info_plugin/src/commands/hmi/vi_subscribe_vehicle_data_request.cc index 0863dc875a..da925e68e7 100644 --- a/src/components/application_manager/rpc_plugins/vehicle_info_plugin/src/commands/hmi/vi_subscribe_vehicle_data_request.cc +++ b/src/components/application_manager/rpc_plugins/vehicle_info_plugin/src/commands/hmi/vi_subscribe_vehicle_data_request.cc @@ -80,6 +80,7 @@ void VISubscribeVehicleDataRequest::Run() { void VISubscribeVehicleDataRequest::onTimeOut() { event_engine::Event timeout_event( hmi_apis::FunctionID::VehicleInfo_SubscribeVehicleData); + SDL_LOG_AUTO_TRACE(); auto error_response = MessageHelper::CreateNegativeResponseFromHmi( function_id(), diff --git a/src/components/application_manager/rpc_plugins/vehicle_info_plugin/src/vehicle_info_pending_resumption_handler.cc b/src/components/application_manager/rpc_plugins/vehicle_info_plugin/src/vehicle_info_pending_resumption_handler.cc index d7b3f6ec8f..bb71ea26b1 100644 --- a/src/components/application_manager/rpc_plugins/vehicle_info_plugin/src/vehicle_info_pending_resumption_handler.cc +++ b/src/components/application_manager/rpc_plugins/vehicle_info_plugin/src/vehicle_info_pending_resumption_handler.cc @@ -138,6 +138,7 @@ void VehicleInfoPendingResumptionHandler::RaiseFinishedPendingResumption( ext.subscribeToVehicleInfo(subscription); } + unsubscribe_from_event(VehicleInfo_SubscribeVehicleData); auto fake_response = CreateFakeResponseFromHMI(pending_resumption.subscription_results_, pending_resumption.fake_corr_id_); -- cgit v1.2.1 From 3639085734ed6499db7f6e33025aa3ce3c9129ae Mon Sep 17 00:00:00 2001 From: "Andrii Kalinich (GitHub)" Date: Wed, 30 Sep 2020 14:29:42 -0400 Subject: Replace direct access with accessor for apps (#3487) There was found a few places inside of ApplicationManager where `applications_` and `apps_to_register_` members were used without locks however these members are commonly used and must be synchronized in all places. To avoid potential data races, direct usage of these elements were replaced with accessor for read-only operations. Also was added a missing lock. --- .../application_manager/application_manager_impl.h | 2 +- .../src/application_manager_impl.cc | 38 ++++++++++++---------- 2 files changed, 22 insertions(+), 18 deletions(-) diff --git a/src/components/application_manager/include/application_manager/application_manager_impl.h b/src/components/application_manager/include/application_manager/application_manager_impl.h index 4ec26b014e..ec39774423 100644 --- a/src/components/application_manager/include/application_manager/application_manager_impl.h +++ b/src/components/application_manager/include/application_manager/application_manager_impl.h @@ -1260,7 +1260,7 @@ class ApplicationManagerImpl const bool allow_unknown_parameters = false); template - void PrepareApplicationListSO(ApplicationList app_list, + void PrepareApplicationListSO(ApplicationList& app_list, smart_objects::SmartObject& applications, ApplicationManager& app_mngr) { smart_objects::SmartArray* app_array = applications.asArray(); diff --git a/src/components/application_manager/src/application_manager_impl.cc b/src/components/application_manager/src/application_manager_impl.cc index df58871c80..2b6a8bc5e9 100644 --- a/src/components/application_manager/src/application_manager_impl.cc +++ b/src/components/application_manager/src/application_manager_impl.cc @@ -1218,10 +1218,13 @@ void ApplicationManagerImpl::CreatePendingApplication( application->set_hybrid_app_preference(hybrid_app_preference_enum); application->set_cloud_app_certificate(app_properties.certificate); - sync_primitives::AutoLock lock(apps_to_register_list_lock_ptr_); - SDL_LOG_DEBUG("apps_to_register_ size before: " << apps_to_register_.size()); - apps_to_register_.insert(application); - SDL_LOG_DEBUG("apps_to_register_ size after: " << apps_to_register_.size()); + { + sync_primitives::AutoLock lock(apps_to_register_list_lock_ptr_); + SDL_LOG_DEBUG( + "apps_to_register_ size before: " << apps_to_register_.size()); + apps_to_register_.insert(application); + SDL_LOG_DEBUG("apps_to_register_ size after: " << apps_to_register_.size()); + } SendUpdateAppList(); } @@ -1345,10 +1348,8 @@ void ApplicationManagerImpl::SetPendingApplicationState( app->app_id(), mobile_apis::Result::INVALID_ENUM, true, true); app->MarkUnregistered(); - { - sync_primitives::AutoLock lock(apps_to_register_list_lock_ptr_); - apps_to_register_.insert(app); - } + sync_primitives::AutoLock lock(apps_to_register_list_lock_ptr_); + apps_to_register_.insert(app); } void ApplicationManagerImpl::OnConnectionStatusUpdated() { @@ -1639,11 +1640,14 @@ void ApplicationManagerImpl::SendUpdateAppList() { (*request)[strings::msg_params][strings::applications] = SmartObject(SmartType_Array); - SmartObject& applications = + SmartObject& applications_so = (*request)[strings::msg_params][strings::applications]; - PrepareApplicationListSO(applications_, applications, *this); - PrepareApplicationListSO(apps_to_register_, applications, *this); + const auto applications_list = applications().GetData(); + PrepareApplicationListSO(applications_list, applications_so, *this); + + const auto pending_apps_list = AppsWaitingForRegistration().GetData(); + PrepareApplicationListSO(pending_apps_list, applications_so, *this); rpc_service_->ManageHMICommand(request); } @@ -1891,8 +1895,8 @@ bool ApplicationManagerImpl::StartNaviService( /* Fix: For NaviApp1 Switch to NaviApp2, App1's Endcallback() arrives later than App2's Startcallback(). Cause streaming issue on HMI. */ - sync_primitives::AutoLock lock(applications_list_lock_ptr_); - for (auto app : applications_) { + auto accessor = applications(); + for (auto app : accessor.GetData()) { if (!app || (!app->is_navi() && !app->mobile_projection_enabled())) { SDL_LOG_DEBUG("Continue, Not Navi App Id: " << app->app_id()); continue; @@ -2862,6 +2866,7 @@ void ApplicationManagerImpl::ProcessQueryApp( CreateApplications(*obj_array, connection_key); SendUpdateAppList(); + sync_primitives::AutoLock lock(apps_to_register_list_lock_ptr_); AppsWaitRegistrationSet::const_iterator it = apps_to_register_.begin(); for (; it != apps_to_register_.end(); ++it) { const std::string full_icon_path((*it)->app_icon_path()); @@ -3298,7 +3303,8 @@ void ApplicationManagerImpl::UnregisterApplication( plugin_manager_->ForEachPlugin(on_app_unregistered); request_ctrl_.terminateAppRequests(app_id); - if (applications_.empty()) { + const bool is_applications_list_empty = applications().GetData().empty(); + if (is_applications_list_empty) { policy_handler_->StopRetrySequence(); } return; @@ -4104,9 +4110,7 @@ void ApplicationManagerImpl::OnApplicationListUpdateTimer() { const bool is_new_app_registered = registered_during_timer_execution_; registered_during_timer_execution_ = false; - apps_to_register_list_lock_ptr_->Acquire(); - const bool trigger_ptu = apps_size_ != applications_.size(); - apps_to_register_list_lock_ptr_->Release(); + const bool trigger_ptu = apps_size_ != applications().GetData().size(); if (is_new_app_registered) { SendUpdateAppList(); -- cgit v1.2.1 From efb3c1d5ecc3688db65110d3a3c10560d249f33e Mon Sep 17 00:00:00 2001 From: "Andrii Kalinich (GitHub)" Date: Wed, 30 Sep 2020 15:09:05 -0400 Subject: Use atomic bool in ApplicatinManager (#3491) Replace bool flag 'is_stopping_' in class ApplicationManagerImpl and remove mutex 'stopping_application_mng_lock_'. --- .../include/application_manager/application_manager_impl.h | 4 ++-- .../application_manager/src/application_manager_impl.cc | 11 +++-------- 2 files changed, 5 insertions(+), 10 deletions(-) diff --git a/src/components/application_manager/include/application_manager/application_manager_impl.h b/src/components/application_manager/include/application_manager/application_manager_impl.h index ec39774423..b3b396026c 100644 --- a/src/components/application_manager/include/application_manager/application_manager_impl.h +++ b/src/components/application_manager/include/application_manager/application_manager_impl.h @@ -35,6 +35,7 @@ #include #include +#include #include #include #include @@ -1666,7 +1667,6 @@ class ApplicationManagerImpl sync_primitives::Lock close_app_timer_pool_lock_; sync_primitives::Lock end_stream_timer_pool_lock_; - mutable sync_primitives::RecursiveLock stopping_application_mng_lock_; StateControllerImpl state_ctrl_; std::unique_ptr app_launch_dto_; std::unique_ptr app_launch_ctrl_; @@ -1700,7 +1700,7 @@ class ApplicationManagerImpl std::atomic registered_during_timer_execution_; - volatile bool is_stopping_; + std::atomic is_stopping_; std::unique_ptr commands_holder_; diff --git a/src/components/application_manager/src/application_manager_impl.cc b/src/components/application_manager/src/application_manager_impl.cc index 2b6a8bc5e9..1823458ce0 100644 --- a/src/components/application_manager/src/application_manager_impl.cc +++ b/src/components/application_manager/src/application_manager_impl.cc @@ -229,7 +229,7 @@ ApplicationManagerImpl::ApplicationManagerImpl( ApplicationManagerImpl::~ApplicationManagerImpl() { SDL_LOG_AUTO_TRACE(); - is_stopping_ = true; + is_stopping_.store(true); SendOnSDLClose(); media_manager_ = NULL; hmi_handler_ = NULL; @@ -2538,9 +2538,7 @@ bool ApplicationManagerImpl::Init( bool ApplicationManagerImpl::Stop() { SDL_LOG_AUTO_TRACE(); - stopping_application_mng_lock_.Acquire(); - is_stopping_ = true; - stopping_application_mng_lock_.Release(); + is_stopping_.store(true); application_list_update_timer_.Stop(); try { if (unregister_reason_ == @@ -2965,9 +2963,7 @@ void ApplicationManagerImpl::SetUnregisterAllApplicationsReason( void ApplicationManagerImpl::HeadUnitReset( mobile_api::AppInterfaceUnregisteredReason::eType reason) { SDL_LOG_AUTO_TRACE(); - stopping_application_mng_lock_.Acquire(); - is_stopping_ = true; - stopping_application_mng_lock_.Release(); + is_stopping_.store(true); switch (reason) { case mobile_api::AppInterfaceUnregisteredReason::MASTER_RESET: { SDL_LOG_TRACE("Performing MASTER_RESET"); @@ -3374,7 +3370,6 @@ mobile_apis::Result::eType ApplicationManagerImpl::CheckPolicyPermissions( } bool ApplicationManagerImpl::is_stopping() const { - sync_primitives::AutoLock lock(stopping_application_mng_lock_); return is_stopping_; } -- cgit v1.2.1 From 876856f1f2a6956bb6d14f32a26d484c0fd52499 Mon Sep 17 00:00:00 2001 From: "Igor Gapchuk (GitHub)" <41586842+IGapchuk@users.noreply.github.com> Date: Wed, 30 Sep 2020 22:27:24 +0300 Subject: Fix deadlock in connection_handler (#3496) --- .../src/connection_handler_impl.cc | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/src/components/connection_handler/src/connection_handler_impl.cc b/src/components/connection_handler/src/connection_handler_impl.cc index d4364af8df..827d6fa17e 100644 --- a/src/components/connection_handler/src/connection_handler_impl.cc +++ b/src/components/connection_handler/src/connection_handler_impl.cc @@ -465,10 +465,21 @@ void ConnectionHandlerImpl::OnSessionStartedCallback( return; } #endif // ENABLE_SECURITY - sync_primitives::AutoReadLock lock(connection_list_lock_); - ConnectionList::iterator it = - connection_list_.find(primary_connection_handle); - if (connection_list_.end() == it) { + + auto find_connection = + [this](const transport_manager::ConnectionUID& primary_connection_handle) + -> Connection* { + sync_primitives::AutoReadLock lock(connection_list_lock_); + auto it = connection_list_.find(primary_connection_handle); + if (it != connection_list_.end()) { + return it->second; + } + return nullptr; + }; + + Connection* connection = find_connection(primary_connection_handle); + + if (!connection) { SDL_LOG_ERROR("Unknown connection!"); protocol_handler_->NotifySessionStarted( context, @@ -477,7 +488,6 @@ void ConnectionHandlerImpl::OnSessionStartedCallback( return; } - Connection* connection = it->second; context.is_new_service_ = !connection->SessionServiceExists(session_id, service_type); -- cgit v1.2.1 From 7b03c2ec5e28a211bf7359e7700ca68ece3e8c21 Mon Sep 17 00:00:00 2001 From: jacobkeeler Date: Wed, 30 Sep 2020 16:45:02 -0400 Subject: Ignore playTone if provided without TTSChunks --- .../sdl_rpc_plugin/src/commands/mobile/alert_request.cc | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/alert_request.cc b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/alert_request.cc index 55783be4cd..ae94d2f1d4 100644 --- a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/alert_request.cc +++ b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/alert_request.cc @@ -111,10 +111,11 @@ void AlertRequest::Run() { (*message_)[strings::msg_params][strings::tts_chunks].length(); } - if ((tts_chunks_exists && length_tts_chunks) || - ((*message_)[strings::msg_params].keyExists(strings::play_tone) && - (*message_)[strings::msg_params][strings::play_tone].asBool())) { + if (tts_chunks_exists && length_tts_chunks) { awaiting_tts_speak_response_ = true; + } else if ((*message_)[strings::msg_params].keyExists(strings::play_tone) && + (*message_)[strings::msg_params][strings::play_tone].asBool()) { + set_warning_info("playTone ignored since TTS Chunks were not provided"); } SendAlertRequest(app_id); -- cgit v1.2.1 From 46f3bfa03c7eeb63499fd6a8c6430cd693646247 Mon Sep 17 00:00:00 2001 From: "Andrii Kalinich (GitHub)" Date: Thu, 1 Oct 2020 09:09:36 -0400 Subject: Fix data races in TcpClientListener (#3495) Regarding of Helgrind report. Changed type of TcpClientListener::thread_stop_requested_ from bool to std::atomic_bool. The same for remove_devices_on_terminate_ --- .../include/transport_manager/tcp/tcp_client_listener.h | 7 +++++-- .../transport_manager/src/tcp/tcp_client_listener.cc | 10 +++++----- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/src/components/transport_manager/include/transport_manager/tcp/tcp_client_listener.h b/src/components/transport_manager/include/transport_manager/tcp/tcp_client_listener.h index 9eea8389e6..30ecf1a277 100644 --- a/src/components/transport_manager/include/transport_manager/tcp/tcp_client_listener.h +++ b/src/components/transport_manager/include/transport_manager/tcp/tcp_client_listener.h @@ -37,6 +37,9 @@ #define SRC_COMPONENTS_TRANSPORT_MANAGER_INCLUDE_TRANSPORT_MANAGER_TCP_TCP_CLIENT_LISTENER_H_ #include "transport_manager/transport_adapter/client_connection_listener.h" + +#include + #include "utils/lock.h" #include "utils/threads/thread_delegate.h" @@ -149,8 +152,8 @@ class TcpClientListener : public ClientConnectionListener { bool started_; threads::Thread* thread_; int socket_; - bool thread_stop_requested_; - bool remove_devices_on_terminate_; + std::atomic_bool thread_stop_requested_; + std::atomic_bool remove_devices_on_terminate_; int pipe_fds_[2]; NetworkInterfaceListener* interface_listener_; const std::string designated_interface_; diff --git a/src/components/transport_manager/src/tcp/tcp_client_listener.cc b/src/components/transport_manager/src/tcp/tcp_client_listener.cc index 0812cd39c9..2683ce02c4 100644 --- a/src/components/transport_manager/src/tcp/tcp_client_listener.cc +++ b/src/components/transport_manager/src/tcp/tcp_client_listener.cc @@ -97,7 +97,7 @@ TcpClientListener::TcpClientListener(TransportAdapterController* controller, TransportAdapter::Error TcpClientListener::Init() { SDL_LOG_AUTO_TRACE(); - thread_stop_requested_ = false; + thread_stop_requested_.store(false); if (!IsListeningOnSpecificInterface()) { // Network interface is not specified. We will listen on all interfaces @@ -343,7 +343,7 @@ void TcpClientListener::StopLoop() { return; } - thread_stop_requested_ = true; + thread_stop_requested_.store(true); char dummy[1] = {0}; int ret = write(pipe_fds_[1], dummy, sizeof(dummy)); @@ -459,7 +459,7 @@ TransportAdapter::Error TcpClientListener::StartListeningThread() { } } - thread_stop_requested_ = false; + thread_stop_requested_.store(false); if (!thread_->Start()) { return TransportAdapter::FAIL; @@ -538,7 +538,7 @@ bool TcpClientListener::StartOnNetworkInterface() { } } - remove_devices_on_terminate_ = true; + remove_devices_on_terminate_.store(true); if (TransportAdapter::OK != StartListeningThread()) { SDL_LOG_WARN("Failed to start TCP client listener"); @@ -564,7 +564,7 @@ bool TcpClientListener::StopOnNetworkInterface() { socket_ = -1; } - remove_devices_on_terminate_ = false; + remove_devices_on_terminate_.store(false); SDL_LOG_INFO("TCP server socket on " << designated_interface_ << " stopped"); -- cgit v1.2.1 From 01c9705cf408e010bd9f98c5230347975da69c4a Mon Sep 17 00:00:00 2001 From: "Yana Chernysheva (GitHub)" <59469418+ychernysheva@users.noreply.github.com> Date: Thu, 1 Oct 2020 18:24:00 +0300 Subject: Fix Cppcheck issues (#3453) * Fix noExplicitConstructor issue * Fix functionConst issues * Fix unusedFunction and unusedField issues * Fix redundantInitialization * Fix unreadVariable and unusedVariable issues * Fix postfixOperator issue * Fix variableScope issue * Fix invalidPrintfArgType_sint and unsignedLessThanZero issues * Fix other errors * Add changes, related to functions marked as unused * Fix new issues * Fixe review comment * Fix codestyle * Fix constParameter errors * Fix functionConst errors * Fix noExplicitConstructor, redundantInitialization errors * Fix unreadVariable errors * Fix shadowVariable error * Fix useStlAlgorithm errors * Fixe variableScope error, add FIXME comment * Fix code style * Fix compile error * Remove unsued function * Fix compile error Co-authored-by: Vladislav Semenyuk --- cppcheck.xml | 0 .../src/app_service_rpc_plugin.cc | 11 +- .../rc_on_remote_control_settings_notification.cc | 9 - ...release_interior_vehicle_data_module_request.cc | 4 +- .../mobile/set_interior_vehicle_data_request.cc | 3 +- .../src/commands/rc_command_request.cc | 2 +- .../src/interior_data_manager_impl.cc | 9 +- .../rc_rpc_plugin/src/rc_command_factory.cc | 8 +- .../rpc_plugins/rc_rpc_plugin/src/rc_helpers.cc | 35 +- .../rpc_plugins/rc_rpc_plugin/src/rc_rpc_plugin.cc | 13 +- .../hmi/on_app_permission_consent_notification.cc | 4 +- .../src/commands/hmi/sdl_activate_app_request.cc | 2 +- .../src/commands/mobile/add_sub_menu_request.cc | 4 +- .../src/commands/mobile/alert_request.cc | 2 - .../commands/mobile/change_registration_request.cc | 4 +- .../create_interaction_choice_set_request.cc | 5 +- .../src/commands/mobile/delete_command_request.cc | 9 - .../src/commands/mobile/get_way_points_request.cc | 4 +- .../mobile/on_system_request_notification.cc | 2 +- .../commands/mobile/perform_interaction_request.cc | 15 +- .../src/commands/mobile/put_file_request.cc | 2 +- .../mobile/register_app_interface_request.cc | 8 +- .../src/commands/mobile/send_location_request.cc | 7 +- .../mobile/set_global_properties_request.cc | 24 +- .../mobile/set_media_clock_timer_request.cc | 4 +- .../commands/mobile/show_constant_tbt_request.cc | 4 +- .../src/commands/mobile/slider_request.cc | 8 +- .../src/commands/mobile/subtle_alert_request.cc | 3 - .../src/commands/mobile/system_request.cc | 188 +++---- .../commands/mobile/update_turn_list_request.cc | 4 +- .../mobile/subscribe_vehicle_data_request.cc | 3 +- .../src/custom_vehicle_data_manager_impl.cc | 14 +- .../src/vehicle_info_hmi_command_factory.cc | 8 +- .../src/vehicle_info_mobile_command_factory.cc | 7 +- .../src/app_launch/app_launch_data_db.cc | 3 +- .../src/app_launch/apps_launcher.cc | 3 +- .../src/app_launch/device_apps_launcher.cc | 9 - .../application_manager/src/app_service_manager.cc | 8 +- .../application_manager/src/application_impl.cc | 21 +- .../src/application_manager_impl.cc | 21 +- .../application_manager/src/application_state.cc | 6 +- .../src/commands/command_request_impl.cc | 3 +- .../src/event_engine/event_dispatcher_impl.cc | 2 +- .../src/hmi_capabilities_impl.cc | 7 +- .../application_manager/src/hmi_state.cc | 2 + .../src/message_helper/message_helper.cc | 43 +- .../src/policies/policy_handler.cc | 2 - .../application_manager/src/request_controller.cc | 2 +- .../application_manager/src/request_info.cc | 2 +- .../src/resumption/resume_ctrl_impl.cc | 7 +- .../src/resumption/resumption_data.cc | 2 +- .../src/resumption/resumption_data_db.cc | 6 +- .../src/state_controller_impl.cc | 6 +- .../test/resumption/resumption_data_test.cc | 16 +- src/components/config_profile/src/ini_file.cc | 14 +- src/components/config_profile/src/profile.cc | 13 +- .../connection_handler/src/connection.cc | 4 +- .../src/connection_handler_impl.cc | 4 +- .../formatters/src/CFormatterJsonBase.cc | 2 +- .../include/formatters/SmartFactoryTestHelper.h | 4 - .../formatters/test/src/SmartFactoryTestHelper.cc | 27 - .../formatters/test/src/create_smartSchema.cc | 13 +- .../test/src/meta_formatter_test_helper.cc | 2 +- .../hmi_message_handler/src/mb_controller.cc | 7 +- src/components/include/protocol/rpc_type.h | 1 - src/components/include/protocol/service_type.h | 1 - .../policy_external/include/policy/policy_helper.h | 16 - .../policy/policy_external/src/cache_manager.cc | 26 +- .../policy/policy_external/src/policy_helper.cc | 49 +- .../policy_external/src/policy_manager_impl.cc | 18 +- .../policy_external/src/policy_table/types.cc | 1 - .../policy_external/src/sql_pt_representation.cc | 4 +- .../policy_regular/include/policy/policy_helper.h | 16 - .../policy/policy_regular/src/cache_manager.cc | 18 +- .../policy/policy_regular/src/policy_helper.cc | 51 +- .../policy_regular/src/policy_manager_impl.cc | 2 +- .../policy_regular/src/sql_pt_representation.cc | 4 +- src/components/protocol/src/rpc_type.cc | 5 - src/components/protocol/src/service_type.cc | 5 - .../protocol_handler/src/incoming_data_handler.cc | 2 +- .../protocol_handler/src/protocol_handler_impl.cc | 6 +- .../protocol_handler/src/protocol_payload.cc | 3 + .../security_manager/src/crypto_manager_impl.cc | 12 +- .../test/security_query_matcher.cc | 14 +- .../smart_objects/src/object_schema_item.cc | 2 +- .../test/SmartObjectConvertionTime_test.cc | 590 +++++++++------------ .../src/cloud/websocket_client_connection.cc | 1 - .../src/tcp/tcp_client_listener.cc | 4 + .../transport_adapter/transport_adapter_impl.cc | 8 +- .../src/transport_manager_impl.cc | 3 +- .../transport_manager/src/usb/qnx/usb_handler.cc | 5 - .../src/usb/usb_device_scanner.cc | 2 +- .../transport_manager/raw_message_matcher.h | 3 +- .../test/network_interface_listener_test.cc | 14 - .../transport_manager/test/raw_message_matcher.cc | 1 + .../websocket_sample_client.cc | 4 - src/components/utils/src/date_time.cc | 13 +- src/components/utils/src/file_system.cc | 6 +- 98 files changed, 639 insertions(+), 961 deletions(-) create mode 100644 cppcheck.xml diff --git a/cppcheck.xml b/cppcheck.xml new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/components/application_manager/rpc_plugins/app_service_rpc_plugin/src/app_service_rpc_plugin.cc b/src/components/application_manager/rpc_plugins/app_service_rpc_plugin/src/app_service_rpc_plugin.cc index fd7b03fabc..e03973614d 100644 --- a/src/components/application_manager/rpc_plugins/app_service_rpc_plugin/src/app_service_rpc_plugin.cc +++ b/src/components/application_manager/rpc_plugins/app_service_rpc_plugin/src/app_service_rpc_plugin.cc @@ -107,14 +107,15 @@ void AppServiceRpcPlugin::DeleteSubscriptions( } // namespace app_service_rpc_plugin -extern "C" __attribute__((visibility("default"))) -application_manager::plugin_manager::RPCPlugin* -Create(logger::Logger* logger_instance) { +using RPCPlugin = application_manager::plugin_manager::RPCPlugin; +// cppcheck-suppress unusedFunction +extern "C" __attribute__((visibility("default"))) RPCPlugin* Create( + logger::Logger* logger_instance) { logger::Logger::instance(logger_instance); return new app_service_rpc_plugin::AppServiceRpcPlugin(); } -extern "C" __attribute__((visibility("default"))) void Delete( - application_manager::plugin_manager::RPCPlugin* data) { +// cppcheck-suppress unusedFunction +extern "C" __attribute__((visibility("default"))) void Delete(RPCPlugin* data) { delete data; } diff --git a/src/components/application_manager/rpc_plugins/rc_rpc_plugin/src/commands/hmi/rc_on_remote_control_settings_notification.cc b/src/components/application_manager/rpc_plugins/rc_rpc_plugin/src/commands/hmi/rc_on_remote_control_settings_notification.cc index b7a343a907..217258b086 100644 --- a/src/components/application_manager/rpc_plugins/rc_rpc_plugin/src/commands/hmi/rc_on_remote_control_settings_notification.cc +++ b/src/components/application_manager/rpc_plugins/rc_rpc_plugin/src/commands/hmi/rc_on_remote_control_settings_notification.cc @@ -65,15 +65,6 @@ RCOnRemoteControlSettingsNotification::RCOnRemoteControlSettingsNotification( RCOnRemoteControlSettingsNotification:: ~RCOnRemoteControlSettingsNotification() {} -hmi_apis::Common_RCAccessMode::eType AccessModeFromString( - const std::string& access_mode) { - std::map::const_iterator - mode = access_modes.find(access_mode); - return access_modes.end() != mode - ? mode->second - : hmi_apis::Common_RCAccessMode::INVALID_ENUM; -} - std::string AccessModeToString( const hmi_apis::Common_RCAccessMode::eType access_mode) { std::map::const_iterator diff --git a/src/components/application_manager/rpc_plugins/rc_rpc_plugin/src/commands/mobile/release_interior_vehicle_data_module_request.cc b/src/components/application_manager/rpc_plugins/rc_rpc_plugin/src/commands/mobile/release_interior_vehicle_data_module_request.cc index e7532636b2..47430c2487 100644 --- a/src/components/application_manager/rpc_plugins/rc_rpc_plugin/src/commands/mobile/release_interior_vehicle_data_module_request.cc +++ b/src/components/application_manager/rpc_plugins/rc_rpc_plugin/src/commands/mobile/release_interior_vehicle_data_module_request.cc @@ -55,9 +55,9 @@ struct ResponseParams { void PrepareResponseResult( ResponseParams& response_params_out, - rc_rpc_plugin::ResourceReleasedState::eType& released_result) { + const rc_rpc_plugin::ResourceReleasedState::eType& released_result) { std::stringstream ss; - auto info_inserter = [&ss, response_params_out](std::string info) { + auto info_inserter = [&ss, response_params_out](const std::string& info) { ss << "Module [" << response_params_out.module_type << ":" << response_params_out.module_id << "] " << info; }; diff --git a/src/components/application_manager/rpc_plugins/rc_rpc_plugin/src/commands/mobile/set_interior_vehicle_data_request.cc b/src/components/application_manager/rpc_plugins/rc_rpc_plugin/src/commands/mobile/set_interior_vehicle_data_request.cc index 8dd4eab306..dea660b780 100644 --- a/src/components/application_manager/rpc_plugins/rc_rpc_plugin/src/commands/mobile/set_interior_vehicle_data_request.cc +++ b/src/components/application_manager/rpc_plugins/rc_rpc_plugin/src/commands/mobile/set_interior_vehicle_data_request.cc @@ -105,8 +105,9 @@ mobile_apis::Result::eType PrepareResultCodeAndInfo( } else { info = "Accessing not supported module data."; } - return result_code; + SDL_LOG_WARN(info); + return result_code; } void SetInteriorVehicleDataRequest::Execute() { diff --git a/src/components/application_manager/rpc_plugins/rc_rpc_plugin/src/commands/rc_command_request.cc b/src/components/application_manager/rpc_plugins/rc_rpc_plugin/src/commands/rc_command_request.cc index 53222e0d04..12608d64c1 100644 --- a/src/components/application_manager/rpc_plugins/rc_rpc_plugin/src/commands/rc_command_request.cc +++ b/src/components/application_manager/rpc_plugins/rc_rpc_plugin/src/commands/rc_command_request.cc @@ -247,8 +247,8 @@ void RCCommandRequest::ProcessAccessResponse( mobile_apis::Result::SUCCESS, mobile_apis::Result::WARNINGS); - bool is_allowed = false; if (result) { + bool is_allowed = false; if (message[app_mngr::strings::msg_params].keyExists( message_params::kAllowed)) { is_allowed = diff --git a/src/components/application_manager/rpc_plugins/rc_rpc_plugin/src/interior_data_manager_impl.cc b/src/components/application_manager/rpc_plugins/rc_rpc_plugin/src/interior_data_manager_impl.cc index 1db25265e7..c295ad4f11 100644 --- a/src/components/application_manager/rpc_plugins/rc_rpc_plugin/src/interior_data_manager_impl.cc +++ b/src/components/application_manager/rpc_plugins/rc_rpc_plugin/src/interior_data_manager_impl.cc @@ -197,9 +197,12 @@ InteriorDataManagerImpl::AppsSubscribedModuleTypes() { auto app_subscriptions = rc_extension->InteriorVehicleDataSubscriptions(); std::vector app_module_types; - for (auto& app_subscription : app_subscriptions) { - app_module_types.push_back(app_subscription.first); - } + std::transform(app_subscriptions.begin(), + app_subscriptions.end(), + std::back_inserter(app_module_types), + [](const ModuleUid& app_subscription) { + return app_subscription.first; + }); std::sort(app_module_types.begin(), app_module_types.end()); result[app_ptr] = app_module_types; diff --git a/src/components/application_manager/rpc_plugins/rc_rpc_plugin/src/rc_command_factory.cc b/src/components/application_manager/rpc_plugins/rc_rpc_plugin/src/rc_command_factory.cc index e2b67effee..c1743c8540 100644 --- a/src/components/application_manager/rpc_plugins/rc_rpc_plugin/src/rc_command_factory.cc +++ b/src/components/application_manager/rpc_plugins/rc_rpc_plugin/src/rc_command_factory.cc @@ -71,7 +71,7 @@ using rc_rpc_plugin::ResourceAllocationManager; template class RCCommandCreator : public CommandCreator { public: - RCCommandCreator(const RCCommandParams& params) : params_(params) {} + explicit RCCommandCreator(const RCCommandParams& params) : params_(params) {} private: bool CanBeCreated() const override { @@ -92,7 +92,8 @@ struct RCInvalidCommand {}; template <> class RCCommandCreator : public CommandCreator { public: - RCCommandCreator(const RCCommandParams& params) { + // cppcheck-suppress unusedFunction //Used in RCCommandCreatorFactory + explicit RCCommandCreator(const RCCommandParams& params) { UNUSED(params); } @@ -109,7 +110,8 @@ class RCCommandCreator : public CommandCreator { }; struct RCCommandCreatorFactory { - RCCommandCreatorFactory(const RCCommandParams& params) : params_(params) {} + explicit RCCommandCreatorFactory(const RCCommandParams& params) + : params_(params) {} template CommandCreator& GetCreator() { diff --git a/src/components/application_manager/rpc_plugins/rc_rpc_plugin/src/rc_helpers.cc b/src/components/application_manager/rpc_plugins/rc_rpc_plugin/src/rc_helpers.cc index 61524546a8..b2d1f1513b 100644 --- a/src/components/application_manager/rpc_plugins/rc_rpc_plugin/src/rc_helpers.cc +++ b/src/components/application_manager/rpc_plugins/rc_rpc_plugin/src/rc_helpers.cc @@ -111,18 +111,28 @@ rc_rpc_types::ModuleIdConsentVector RCHelpers::FillModuleConsents( std::vector RCHelpers::RetrieveModuleIds( const ns_smart_device_link::ns_smart_objects::SmartObject& moduleIds) { std::vector module_ids; - for (const auto& module_id : (*moduleIds.asArray())) { - module_ids.push_back(module_id.asString()); - } + + std::transform((*moduleIds.asArray()).begin(), + (*moduleIds.asArray()).end(), + std::back_inserter(module_ids), + [](const smart_objects::SmartObject& module_id) { + return module_id.asString(); + }); + return module_ids; } std::vector RCHelpers::RetrieveModuleConsents( const ns_smart_device_link::ns_smart_objects::SmartObject& consents) { std::vector module_consents; - for (const auto& allowed_item : (*consents.asArray())) { - module_consents.push_back(allowed_item.asBool()); - } + + std::transform((*consents.asArray()).begin(), + (*consents.asArray()).end(), + std::back_inserter(module_consents), + [](const smart_objects::SmartObject& allowed_item) { + return allowed_item.asBool(); + }); + return module_consents; } @@ -333,11 +343,14 @@ smart_objects::SmartObject RCHelpers::MergeArray( } auto& data2_array = *data2.asArray(); - for (const auto& data_item : data2_array) { - if (data_item.getType() != smart_objects::SmartType_Map || - !data_item.keyExists(application_manager::strings::id)) { - return data2; - } + + auto compare = [](const smart_objects::SmartObject& data_item) { + return (data_item.getType() != smart_objects::SmartType_Map || + !data_item.keyExists(application_manager::strings::id)); + }; + + if (std::any_of(data2_array.begin(), data2_array.end(), compare)) { + return data2; } smart_objects::SmartObject result = data1; diff --git a/src/components/application_manager/rpc_plugins/rc_rpc_plugin/src/rc_rpc_plugin.cc b/src/components/application_manager/rpc_plugins/rc_rpc_plugin/src/rc_rpc_plugin.cc index 4345aa044a..87090405e7 100644 --- a/src/components/application_manager/rpc_plugins/rc_rpc_plugin/src/rc_rpc_plugin.cc +++ b/src/components/application_manager/rpc_plugins/rc_rpc_plugin/src/rc_rpc_plugin.cc @@ -212,11 +212,14 @@ RCRPCPlugin::Apps RCRPCPlugin::GetRCApplications( ApplicationSet accessor = app_mngr.applications().GetData(); std::vector result; - for (const auto& it : accessor) { - if (it->is_remote_control_supported()) { - result.push_back(it); - } - } + + std::copy_if(accessor.begin(), + accessor.end(), + std::back_inserter(result), + [](const ApplicationSharedPtr& app) { + return app->is_remote_control_supported(); + }); + return result; } diff --git a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/on_app_permission_consent_notification.cc b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/on_app_permission_consent_notification.cc index 37552e003a..e9e0c65424 100644 --- a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/on_app_permission_consent_notification.cc +++ b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/on_app_permission_consent_notification.cc @@ -50,7 +50,7 @@ namespace { struct PermissionsAppender : public std::unary_function { - PermissionsAppender(policy::PermissionConsent& consents) + explicit PermissionsAppender(policy::PermissionConsent& consents) : allowed_key_(application_manager::hmi_response::allowed) , consents_(consents) {} void operator()(const smart_objects::SmartArray::value_type& item) const { @@ -82,7 +82,7 @@ struct PermissionsAppender */ struct ExternalConsentStatusAppender : std::unary_function { - ExternalConsentStatusAppender( + explicit ExternalConsentStatusAppender( policy::ExternalConsentStatus& external_consent_status) : external_consent_status_(external_consent_status) {} void operator()(const smart_objects::SmartArray::value_type& item) const { diff --git a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/sdl_activate_app_request.cc b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/sdl_activate_app_request.cc index 527cf911b9..372f83e4fd 100644 --- a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/sdl_activate_app_request.cc +++ b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/sdl_activate_app_request.cc @@ -43,7 +43,7 @@ namespace commands { namespace { struct ProtoV4AppsOnDevice : std::unary_function { connection_handler::DeviceHandle handle_; - ProtoV4AppsOnDevice(const connection_handler::DeviceHandle handle) + explicit ProtoV4AppsOnDevice(const connection_handler::DeviceHandle handle) : handle_(handle) {} bool operator()(const ApplicationSharedPtr app) const { return app ? handle_ == app->device() && diff --git a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/add_sub_menu_request.cc b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/add_sub_menu_request.cc index 288cafb94e..c83538c023 100644 --- a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/add_sub_menu_request.cc +++ b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/add_sub_menu_request.cc @@ -209,9 +209,9 @@ bool AddSubMenuRequest::Init() { bool AddSubMenuRequest::CheckSubMenuName() { SDL_LOG_AUTO_TRACE(); - const char* str = NULL; - str = (*message_)[strings::msg_params][strings::menu_name].asCharArray(); + const char* str = + (*message_)[strings::msg_params][strings::menu_name].asCharArray(); if (!CheckSyntax(str)) { SDL_LOG_INFO("Invalid subMenu name."); return false; diff --git a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/alert_request.cc b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/alert_request.cc index 55783be4cd..5312491035 100644 --- a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/alert_request.cc +++ b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/alert_request.cc @@ -408,8 +408,6 @@ void AlertRequest::SendSpeakRequest(int32_t app_id, // crate HMI speak request SmartObject msg_params = smart_objects::SmartObject(SmartType_Map); if (tts_chunks_exists && length_tts_chunks) { - msg_params[hmi_request::tts_chunks] = - smart_objects::SmartObject(SmartType_Array); msg_params[hmi_request::tts_chunks] = (*message_)[strings::msg_params][strings::tts_chunks]; } diff --git a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/change_registration_request.cc b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/change_registration_request.cc index 8e13110515..13a57cf9a8 100644 --- a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/change_registration_request.cc +++ b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/change_registration_request.cc @@ -44,7 +44,8 @@ namespace { namespace custom_str = utils::custom_string; struct IsSameNickname { - IsSameNickname(const custom_str::CustomString& app_id) : app_id_(app_id) {} + explicit IsSameNickname(const custom_str::CustomString& app_id) + : app_id_(app_id) {} bool operator()(const policy::StringArray::value_type& nickname) const { return app_id_.CompareIgnoreCase(nickname.c_str()); } @@ -512,7 +513,6 @@ bool ChangeRegistrationRequest::IsLanguageSupportedByTTS( for (size_t i = 0; i < tts_languages->length(); ++i) { if (hmi_display_lang == tts_languages->getElement(i).asInt()) { return true; - break; } } diff --git a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/create_interaction_choice_set_request.cc b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/create_interaction_choice_set_request.cc index d43e8e0710..345a6a8497 100644 --- a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/create_interaction_choice_set_request.cc +++ b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/create_interaction_choice_set_request.cc @@ -239,9 +239,8 @@ bool CreateInteractionChoiceSetRequest::compareStr( bool CreateInteractionChoiceSetRequest::IsWhiteSpaceExist( const smart_objects::SmartObject& choice_set) { SDL_LOG_AUTO_TRACE(); - const char* str = NULL; - str = choice_set[strings::menu_name].asCharArray(); + const char* str = choice_set[strings::menu_name].asCharArray(); if (!CheckSyntax(str)) { SDL_LOG_ERROR("Invalid menu_name syntax check failed"); return true; @@ -321,8 +320,6 @@ void CreateInteractionChoiceSetRequest::SendVRAddCommandRequests( msg_params[strings::cmd_id] = choice_set[strings::choice_set][chs_num][strings::choice_id]; - msg_params[strings::vr_commands] = - smart_objects::SmartObject(smart_objects::SmartType_Array); msg_params[strings::vr_commands] = choice_set[strings::choice_set][chs_num][strings::vr_commands]; diff --git a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/delete_command_request.cc b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/delete_command_request.cc index 0c731a027b..e6bdd50350 100644 --- a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/delete_command_request.cc +++ b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/delete_command_request.cc @@ -96,15 +96,6 @@ void DeleteCommandRequest::Run() { (*message_)[strings::msg_params][strings::cmd_id]; msg_params[strings::app_id] = application->app_id(); - // we should specify amount of required responses in the 1st request - uint32_t chaining_counter = 0; - if (command.keyExists(strings::menu_params)) { - ++chaining_counter; - } - - if (command.keyExists(strings::vr_commands)) { - ++chaining_counter; - } /* Need to set all flags before sending request to HMI * for correct processing this flags in method on_event */ if (command.keyExists(strings::menu_params)) { diff --git a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/get_way_points_request.cc b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/get_way_points_request.cc index 33d3479941..54b542d245 100644 --- a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/get_way_points_request.cc +++ b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/get_way_points_request.cc @@ -68,10 +68,8 @@ void GetWayPointsRequest::Run() { SendResponse(false, mobile_apis::Result::APPLICATION_NOT_REGISTERED); return; } - smart_objects::SmartObject msg_params = - smart_objects::SmartObject(smart_objects::SmartType_Map); - msg_params = (*message_)[strings::msg_params]; + smart_objects::SmartObject msg_params = (*message_)[strings::msg_params]; msg_params[strings::app_id] = app->app_id(); StartAwaitForInterface(HmiInterfaces::HMI_INTERFACE_Navigation); SendHMIRequest(hmi_apis::FunctionID::Navigation_GetWayPoints, diff --git a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/on_system_request_notification.cc b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/on_system_request_notification.cc index 90ed038b89..4a97d5b970 100644 --- a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/on_system_request_notification.cc +++ b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/on_system_request_notification.cc @@ -173,7 +173,7 @@ void OnSystemRequestNotification::AddHeader(BinaryMessage& message) const { } char timeout_str[24]; - if (0 > sprintf(timeout_str, "%d", timeout)) { + if (0 > sprintf(timeout_str, "%u", timeout)) { memset(timeout_str, 0, sizeof(timeout_str)); } diff --git a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/perform_interaction_request.cc b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/perform_interaction_request.cc index 9c218e0e99..7b29f33d24 100644 --- a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/perform_interaction_request.cc +++ b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/perform_interaction_request.cc @@ -34,12 +34,12 @@ #include "sdl_rpc_plugin/commands/mobile/perform_interaction_request.h" #include + #include #include #include "application_manager/application_impl.h" #include "application_manager/message_helper.h" - #include "interfaces/HMI_API.h" #include "interfaces/MOBILE_API.h" #include "utils/custom_string.h" @@ -871,9 +871,9 @@ void PerformInteractionRequest::DisablePerformInteraction() { bool PerformInteractionRequest::IsWhiteSpaceExist() { SDL_LOG_AUTO_TRACE(); - const char* str = NULL; - str = (*message_)[strings::msg_params][strings::initial_text].asCharArray(); + const char* str = + (*message_)[strings::msg_params][strings::initial_text].asCharArray(); if (!CheckSyntax(str)) { SDL_LOG_ERROR("Invalid initial_text syntax check failed"); return true; @@ -1038,7 +1038,6 @@ bool PerformInteractionRequest::CheckChoiceIDFromRequest( const smart_objects::SmartObject& choice_set_id_list) const { SDL_LOG_AUTO_TRACE(); - size_t choice_list_length = 0; std::set choice_id_set; std::pair::iterator, bool> ins_res; @@ -1046,12 +1045,11 @@ bool PerformInteractionRequest::CheckChoiceIDFromRequest( auto choice_set = app->FindChoiceSet(choice_set_id_list[i].asInt()); if (smart_objects::SmartType_Null == choice_set.getType()) { SDL_LOG_ERROR( - "Couldn't find choiceset_id = " << choice_set_id_list[i].asInt()); return false; } - choice_list_length = choice_set[strings::choice_set].length(); + size_t choice_list_length = choice_set[strings::choice_set].length(); const smart_objects::SmartObject& choices_list = choice_set[strings::choice_set]; for (size_t k = 0; k < choice_list_length; ++k) { @@ -1076,15 +1074,14 @@ const bool PerformInteractionRequest::HasHMIResponsesToWait() const { void PerformInteractionRequest::SendBothModeResponse( const smart_objects::SmartObject& msg_param) { SDL_LOG_AUTO_TRACE(); - mobile_apis::Result::eType perform_interaction_result_code = - mobile_apis::Result::INVALID_ENUM; + app_mngr::commands::ResponseInfo ui_perform_info( ui_result_code_, HmiInterfaces::HMI_INTERFACE_UI, application_manager_); app_mngr::commands::ResponseInfo vr_perform_info( vr_result_code_, HmiInterfaces::HMI_INTERFACE_VR, application_manager_); const bool result = PrepareResultForMobileResponse(ui_perform_info, vr_perform_info); - perform_interaction_result_code = + mobile_apis::Result::eType perform_interaction_result_code = PrepareResultCodeForResponse(ui_perform_info, vr_perform_info); const smart_objects::SmartObject* response_params = msg_param.empty() ? NULL : &msg_param; diff --git a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/put_file_request.cc b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/put_file_request.cc index 50ff392e33..5263991716 100644 --- a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/put_file_request.cc +++ b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/put_file_request.cc @@ -165,7 +165,6 @@ void PutFileRequest::Run() { is_persistent_file_ = false; bool is_system_file = false; length_ = binary_data.size(); - bool is_download_complete = true; bool offset_exist = (*message_)[strings::msg_params].keyExists(strings::offset); @@ -252,6 +251,7 @@ void PutFileRequest::Run() { case mobile_apis::Result::SUCCESS: { SDL_LOG_INFO("PutFile is successful"); if (!is_system_file) { + bool is_download_complete = true; AppFile file(sync_file_name_, is_persistent_file_, is_download_complete, 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 c30f83bc00..72faad8668 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 @@ -111,7 +111,7 @@ std::string AppHMITypeToString(mobile_apis::AppHMIType::eType type) { } struct AppHMITypeInserter { - AppHMITypeInserter(smart_objects::SmartObject& so_array) + explicit AppHMITypeInserter(smart_objects::SmartObject& so_array) : index_(0), so_array_(so_array) {} bool operator()(const std::string& app_hmi_type) { @@ -162,7 +162,7 @@ class SmartArrayValueExtractor { }; struct IsSameNickname { - IsSameNickname(const custom_str::CustomString app_name) + explicit IsSameNickname(const custom_str::CustomString app_name) : app_name_(app_name) {} bool operator()(const policy::StringArray::value_type& nickname) const { return app_name_.CompareIgnoreCase(nickname.c_str()); @@ -1369,9 +1369,9 @@ bool RegisterAppInterfaceRequest::IsApplicationWithSameAppIdRegistered() { bool RegisterAppInterfaceRequest::IsWhiteSpaceExist() { SDL_LOG_AUTO_TRACE(); - const char* str = NULL; - str = (*message_)[strings::msg_params][strings::app_name].asCharArray(); + const char* str = + (*message_)[strings::msg_params][strings::app_name].asCharArray(); if (!CheckSyntax(str)) { SDL_LOG_ERROR("Invalid app_name syntax check failed"); return true; diff --git a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/send_location_request.cc b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/send_location_request.cc index 37d43a354b..fcc898b348 100644 --- a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/send_location_request.cc +++ b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/send_location_request.cc @@ -119,9 +119,7 @@ void SendLocationRequest::Run() { } if (msg_params.keyExists(strings::location_image)) { - mobile_apis::Result::eType verification_result = - mobile_apis::Result::SUCCESS; - verification_result = MessageHelper::VerifyImage( + mobile_apis::Result::eType verification_result = MessageHelper::VerifyImage( (*message_)[strings::msg_params][strings::location_image], app, application_manager_); @@ -132,8 +130,7 @@ void SendLocationRequest::Run() { } } - SmartObject request_msg_params = SmartObject(smart_objects::SmartType_Map); - request_msg_params = msg_params; + SmartObject request_msg_params = msg_params; request_msg_params[strings::app_id] = app->hmi_app_id(); StartAwaitForInterface(HmiInterfaces::HMI_INTERFACE_Navigation); SendHMIRequest( diff --git a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/set_global_properties_request.cc b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/set_global_properties_request.cc index 922a45ebdb..396763ff98 100644 --- a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/set_global_properties_request.cc +++ b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/set_global_properties_request.cc @@ -111,10 +111,8 @@ void SetGlobalPropertiesRequest::Run() { return; } - mobile_apis::Result::eType verification_result = mobile_apis::Result::SUCCESS; - if (msg_params.keyExists(strings::menu_icon)) { - verification_result = MessageHelper::VerifyImage( + mobile_apis::Result::eType verification_result = MessageHelper::VerifyImage( msg_params[strings::menu_icon], app, application_manager_); if (mobile_apis::Result::INVALID_DATA == verification_result) { SDL_LOG_ERROR("MessageHelper::VerifyImage return " @@ -241,11 +239,11 @@ void SetGlobalPropertiesRequest::Run() { application_manager_.GetPluginManager().ForEachPlugin( on_global_properties_updated); - smart_objects::SmartObject params = + smart_objects::SmartObject rc_request_params = smart_objects::SmartObject(smart_objects::SmartType_Map); - params[strings::app_id] = app->app_id(); - params[strings::user_location] = user_location; - SendRCRequest(params, true); + rc_request_params[strings::app_id] = app->app_id(); + rc_request_params[strings::user_location] = user_location; + SendRCRequest(rc_request_params, true); } // check TTS params @@ -257,7 +255,7 @@ void SetGlobalPropertiesRequest::Run() { if (is_help_prompt_present) { smart_objects::SmartObject& help_prompt = (*message_)[strings::msg_params][strings::help_prompt]; - verification_result = + mobile_apis::Result::eType verification_result = MessageHelper::VerifyTtsFiles(help_prompt, app, application_manager_); if (mobile_apis::Result::FILE_NOT_FOUND == verification_result) { @@ -273,8 +271,9 @@ void SetGlobalPropertiesRequest::Run() { if (is_timeout_prompt_present) { smart_objects::SmartObject& timeout_prompt = (*message_)[strings::msg_params][strings::timeout_prompt]; - verification_result = MessageHelper::VerifyTtsFiles( - timeout_prompt, app, application_manager_); + mobile_apis::Result::eType verification_result = + MessageHelper::VerifyTtsFiles( + timeout_prompt, app, application_manager_); if (mobile_apis::Result::FILE_NOT_FOUND == verification_result) { SDL_LOG_ERROR("MessageHelper::VerifyTtsFiles return " @@ -291,7 +290,7 @@ void SetGlobalPropertiesRequest::Run() { std::begin(invalid_params), std::end(invalid_params), std::string(""), - [](std::string& first, std::string& second) { + [](std::string& first, const std::string& second) { return first.empty() ? second : first + ", " + second; }); const std::string info = @@ -518,7 +517,6 @@ SetGlobalPropertiesRequest::PrepareResultCodeForResponse( const app_mngr::commands::ResponseInfo& second, const app_mngr::commands::ResponseInfo& third) { SDL_LOG_AUTO_TRACE(); - mobile_apis::Result::eType result_code = mobile_apis::Result::INVALID_ENUM; if (IsResultCodeUnsupported(first, second, third) || IsResultCodeUnsupported(second, third, first) || IsResultCodeUnsupported(third, first, second)) { @@ -547,7 +545,7 @@ SetGlobalPropertiesRequest::PrepareResultCodeForResponse( hmi_apis::Common_Result::eType intermediate_result = std::max(first_result, second_result); - result_code = MessageHelper::HMIToMobileResult( + mobile_apis::Result::eType result_code = MessageHelper::HMIToMobileResult( std::max(intermediate_result, third_result)); return result_code; diff --git a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/set_media_clock_timer_request.cc b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/set_media_clock_timer_request.cc index b7b8fc27ad..cf5d80ecc0 100644 --- a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/set_media_clock_timer_request.cc +++ b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/set_media_clock_timer_request.cc @@ -77,10 +77,8 @@ void SetMediaClockRequest::Run() { } if (isDataValid()) { - smart_objects::SmartObject msg_params = - smart_objects::SmartObject(smart_objects::SmartType_Map); // copy entirely msg - msg_params = (*message_)[strings::msg_params]; + smart_objects::SmartObject msg_params = (*message_)[strings::msg_params]; msg_params[strings::app_id] = app->app_id(); StartAwaitForInterface(HmiInterfaces::HMI_INTERFACE_UI); diff --git a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/show_constant_tbt_request.cc b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/show_constant_tbt_request.cc index 04310bcd58..cfb9d5896e 100644 --- a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/show_constant_tbt_request.cc +++ b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/show_constant_tbt_request.cc @@ -80,9 +80,7 @@ void ShowConstantTBTRequest::Run() { return; } - smart_objects::SmartObject msg_params = - smart_objects::SmartObject(smart_objects::SmartType_Map); - msg_params = (*message_)[strings::msg_params]; + smart_objects::SmartObject msg_params = (*message_)[strings::msg_params]; if (IsWhiteSpaceExist()) { SDL_LOG_ERROR("Incoming show constant TBT has contains \t\n \\t \\n"); diff --git a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/slider_request.cc b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/slider_request.cc index 15ced6d5a1..e46d3fd7f0 100644 --- a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/slider_request.cc +++ b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/slider_request.cc @@ -109,9 +109,7 @@ void SliderRequest::Run() { return; } - smart_objects::SmartObject msg_params = - smart_objects::SmartObject(smart_objects::SmartType_Map); - msg_params = (*message_)[strings::msg_params]; + smart_objects::SmartObject msg_params = (*message_)[strings::msg_params]; msg_params[strings::app_id] = application->app_id(); if (!(*message_)[strings::msg_params].keyExists(strings::timeout)) { @@ -183,9 +181,9 @@ void SliderRequest::on_event(const event_engine::Event& event) { bool SliderRequest::IsWhiteSpaceExist() { SDL_LOG_AUTO_TRACE(); - const char* str = NULL; - str = (*message_)[strings::msg_params][strings::slider_header].asCharArray(); + const char* str = + (*message_)[strings::msg_params][strings::slider_header].asCharArray(); if (!CheckSyntax(str)) { SDL_LOG_ERROR("Invalid slider_header value syntax check failed"); return true; diff --git a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/subtle_alert_request.cc b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/subtle_alert_request.cc index 502290328a..327315b372 100644 --- a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/subtle_alert_request.cc +++ b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/subtle_alert_request.cc @@ -349,7 +349,6 @@ void SubtleAlertRequest::SendSubtleAlertRequest(int32_t app_id) { hmi_apis::Common_TextFieldName::subtleAlertText2; msg_params[hmi_request::alert_strings][index][hmi_request::field_text] = (*message_)[strings::msg_params][strings::alert_text2]; - index++; } // softButtons @@ -407,8 +406,6 @@ void SubtleAlertRequest::SendSpeakRequest(int32_t app_id, // crate HMI speak request SmartObject msg_params = smart_objects::SmartObject(SmartType_Map); if (tts_chunks_exists && length_tts_chunks) { - msg_params[hmi_request::tts_chunks] = - smart_objects::SmartObject(SmartType_Array); msg_params[hmi_request::tts_chunks] = (*message_)[strings::msg_params][strings::tts_chunks]; } diff --git a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/system_request.cc b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/system_request.cc index 17e295304c..cca088ed2d 100644 --- a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/system_request.cc +++ b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/system_request.cc @@ -34,10 +34,12 @@ Copyright (c) 2018, Ford Motor Company #include "sdl_rpc_plugin/commands/mobile/system_request.h" #include + #include #include #include #include + #include "application_manager/policies/policy_handler_interface.h" #include "formatters/CFormatterJsonBase.h" #include "interfaces/MOBILE_API.h" @@ -70,11 +72,99 @@ const unsigned int kAppIdLengthMax = 40U; const unsigned int kAppNameLengthMax = 100U; const unsigned int kLanguageArraySizeMax = 100U; +typedef std::set SynonymsSet; +typedef std::map SynonymsMap; + +bool ValidateSynonymsAtLanguage(const smart_objects::SmartObject& language, + const std::string& language_name, + SynonymsMap& synonyms_map) { + if (!language[language_name].keyExists(json::vrSynonyms)) { + SDL_LOG_WARN(kQueryAppsValidationFailedPrefix + << "'languages.vrSynonyms' doesn't exist"); + return false; + } + const smart_objects::SmartArray* synonyms_array = + language[language_name][json::vrSynonyms].asArray(); + if (!synonyms_array) { + SDL_LOG_WARN(kQueryAppsValidationFailedPrefix + << "vrSynonyms is not array."); + return false; + } + const size_t synonyms_array_size = synonyms_array->size(); + if (synonyms_array_size < kVrArraySizeMin) { + SDL_LOG_WARN(kQueryAppsValidationFailedPrefix + << "vrSynomyms array has [" << synonyms_array_size + << "] size < allowed min size [" << kVrArraySizeMin << "]"); + return false; + } + if (synonyms_array_size > kVrArraySizeMax) { + SDL_LOG_WARN(kQueryAppsValidationFailedPrefix + << "vrSynomyms array size [" << synonyms_array_size + << "] exceeds maximum allowed size [" << kVrArraySizeMax + << "]"); + return false; + } + + for (std::size_t idx = 0; idx < synonyms_array_size; ++idx) { + const smart_objects::SmartObject& synonym = (*synonyms_array)[idx]; + const std::string vrSynonym = synonym.asString(); + if (vrSynonym.length() > kVrSynonymLengthMax) { + SDL_LOG_WARN(kQueryAppsValidationFailedPrefix + << "vrSYnomym item [" << idx << "] exceeds max length [" + << vrSynonym.length() << "]>[" << kVrSynonymLengthMax + << "]"); + return false; + } + if (vrSynonym.length() < kVrSynonymLengthMin) { + SDL_LOG_WARN(kQueryAppsValidationFailedPrefix + << "vrSYnomym item [" << idx << "] length [" + << vrSynonym.length() << "] is less then min length [" + << kVrSynonymLengthMin << "] allowed."); + return false; + } + // Verify duplicates + SynonymsMap::iterator synonyms_map_iter = synonyms_map.find(language_name); + if (synonyms_map_iter != synonyms_map.end()) { + if (!(*synonyms_map_iter).second.insert(vrSynonym).second) { + SDL_LOG_WARN(kQueryAppsValidationFailedPrefix + << "vrSYnomym item already defined [" << vrSynonym.c_str() + << "] for language [" << language_name << "]"); + return false; + } + } + } + return true; +} + +bool CheckMandatoryParametersPresent( + const smart_objects::SmartObject& app_data) { + if (!app_data.keyExists(json::android) && !app_data.keyExists(json::ios)) { + return false; + } + + if (app_data.keyExists(json::android) && + !app_data[json::android].keyExists(json::packageName)) { + return false; + } + + if (app_data.keyExists(json::ios) && + !app_data[json::ios].keyExists(json::urlScheme)) { + return false; + } + + if (!app_data.keyExists(json::appId)) { + return false; + } + + if (!app_data.keyExists(json::name)) { + return false; + } + + return true; +} + class QueryAppsDataValidator { public: - typedef std::set SynonymsSet; - typedef std::map SynonymsMap; - QueryAppsDataValidator(smart_objects::SmartObject& object, const ApplicationManager& manager) : data_(object), manager_(manager) {} @@ -298,96 +388,6 @@ class QueryAppsDataValidator { return true; } - bool ValidateSynonymsAtLanguage(const smart_objects::SmartObject& language, - const std::string& language_name, - SynonymsMap& synonyms_map) const { - if (!language[language_name].keyExists(json::vrSynonyms)) { - SDL_LOG_WARN(kQueryAppsValidationFailedPrefix - << "'languages.vrSynonyms' doesn't exist"); - return false; - } - const smart_objects::SmartArray* synonyms_array = - language[language_name][json::vrSynonyms].asArray(); - if (!synonyms_array) { - SDL_LOG_WARN(kQueryAppsValidationFailedPrefix - << "vrSynonyms is not array."); - return false; - } - const size_t synonyms_array_size = synonyms_array->size(); - if (synonyms_array_size < kVrArraySizeMin) { - SDL_LOG_WARN(kQueryAppsValidationFailedPrefix - << "vrSynomyms array has [" << synonyms_array_size - << "] size < allowed min size [" << kVrArraySizeMin << "]"); - return false; - } - if (synonyms_array_size > kVrArraySizeMax) { - SDL_LOG_WARN(kQueryAppsValidationFailedPrefix - << "vrSynomyms array size [" << synonyms_array_size - << "] exceeds maximum allowed size [" << kVrArraySizeMax - << "]"); - return false; - } - - for (std::size_t idx = 0; idx < synonyms_array_size; ++idx) { - const smart_objects::SmartObject& synonym = (*synonyms_array)[idx]; - const std::string vrSynonym = synonym.asString(); - if (vrSynonym.length() > kVrSynonymLengthMax) { - SDL_LOG_WARN(kQueryAppsValidationFailedPrefix - << "vrSYnomym item [" << idx << "] exceeds max length [" - << vrSynonym.length() << "]>[" << kVrSynonymLengthMax - << "]"); - return false; - } - if (vrSynonym.length() < kVrSynonymLengthMin) { - SDL_LOG_WARN(kQueryAppsValidationFailedPrefix - << "vrSYnomym item [" << idx << "] length [" - << vrSynonym.length() << "] is less then min length [" - << kVrSynonymLengthMin << "] allowed."); - return false; - } - // Verify duplicates - SynonymsMap::iterator synonyms_map_iter = - synonyms_map.find(language_name); - if (synonyms_map_iter != synonyms_map.end()) { - if (!(*synonyms_map_iter).second.insert(vrSynonym).second) { - SDL_LOG_WARN(kQueryAppsValidationFailedPrefix - << "vrSYnomym item already defined [" - << vrSynonym.c_str() << "] for language [" - << language_name << "]"); - return false; - } - } - } - return true; - } - - bool CheckMandatoryParametersPresent( - const smart_objects::SmartObject& app_data) const { - if (!app_data.keyExists(json::android) && !app_data.keyExists(json::ios)) { - return false; - } - - if (app_data.keyExists(json::android) && - !app_data[json::android].keyExists(json::packageName)) { - return false; - } - - if (app_data.keyExists(json::ios) && - !app_data[json::ios].keyExists(json::urlScheme)) { - return false; - } - - if (!app_data.keyExists(json::appId)) { - return false; - } - - if (!app_data.keyExists(json::name)) { - return false; - } - - return true; - } - smart_objects::SmartObject& data_; std::set applications_id_set_; const ApplicationManager& manager_; @@ -466,7 +466,7 @@ void SystemRequest::Run() { SDL_LOG_TRACE("Request subtype: " << request_subtype << " is ALLOWED"); } - std::string file_name = kSYNC; + std::string file_name; if ((*message_)[strings::msg_params].keyExists(strings::file_name)) { file_name = (*message_)[strings::msg_params][strings::file_name].asString(); } else { diff --git a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/update_turn_list_request.cc b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/update_turn_list_request.cc index 824d1150b3..3da9206184 100644 --- a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/update_turn_list_request.cc +++ b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/update_turn_list_request.cc @@ -112,9 +112,7 @@ void UpdateTurnListRequest::Run() { } } - smart_objects::SmartObject msg_params = - smart_objects::SmartObject(smart_objects::SmartType_Map); - msg_params = (*message_)[strings::msg_params]; + smart_objects::SmartObject msg_params = (*message_)[strings::msg_params]; if ((*message_)[strings::msg_params].keyExists(strings::turn_list)) { if (!CheckTurnListArray()) { diff --git a/src/components/application_manager/rpc_plugins/vehicle_info_plugin/src/commands/mobile/subscribe_vehicle_data_request.cc b/src/components/application_manager/rpc_plugins/vehicle_info_plugin/src/commands/mobile/subscribe_vehicle_data_request.cc index d51790ea55..9e35e96ce3 100644 --- a/src/components/application_manager/rpc_plugins/vehicle_info_plugin/src/commands/mobile/subscribe_vehicle_data_request.cc +++ b/src/components/application_manager/rpc_plugins/vehicle_info_plugin/src/commands/mobile/subscribe_vehicle_data_request.cc @@ -261,7 +261,7 @@ void SubscribeVehicleDataRequest::AddAlreadySubscribedVI( struct SubscribedToIVIPredicate { std::string vehicle_info_; - SubscribedToIVIPredicate(std::string vehicle_info) + explicit SubscribedToIVIPredicate(const std::string& vehicle_info) : vehicle_info_(vehicle_info) {} bool operator()(const ApplicationSharedPtr app) const { DCHECK_OR_RETURN(app, false); @@ -393,6 +393,7 @@ void SubscribeVehicleDataRequest::CheckVISubscriptions( return; } + // cppcheck-suppress knownConditionTrueFalse if (0 == subscribed_items && is_interface_available) { out_result_code = mobile_apis::Result::IGNORED; out_info = "Already subscribed on provided VehicleData."; 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 b85fd5aaaf..af9d605ff0 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 @@ -161,7 +161,7 @@ smart_objects::SmartObject CustomVehicleDataManagerImpl::CreateHMIMessageParams( const policy_table::VehicleDataItem&)> ParamsConstructor; - auto fill_param = [](ParamsConstructor& constructor, + auto fill_param = [](const ParamsConstructor& constructor, const policy_table::VehicleDataItem& param, smart_objects::SmartObject* out_params) { DCHECK_OR_RETURN_VOID(out_params) @@ -354,12 +354,14 @@ void CustomVehicleDataManagerImpl::UpdateVehicleDataItems() { }; auto get_vehicle_data_history = - [&vehicle_data_items](std::string name) -> std::vector { + [&vehicle_data_items]( + const std::string& name) -> std::vector { std::vector result; - std::copy_if(vehicle_data_items.begin(), - vehicle_data_items.end(), - std::back_inserter(result), - [&name](VehicleDataItem& item) { return item.name == name; }); + std::copy_if( + vehicle_data_items.begin(), + vehicle_data_items.end(), + std::back_inserter(result), + [&name](const VehicleDataItem& item) { return item.name == name; }); std::sort(result.begin(), result.end(), diff --git a/src/components/application_manager/rpc_plugins/vehicle_info_plugin/src/vehicle_info_hmi_command_factory.cc b/src/components/application_manager/rpc_plugins/vehicle_info_plugin/src/vehicle_info_hmi_command_factory.cc index 3687245066..131b5304c4 100644 --- a/src/components/application_manager/rpc_plugins/vehicle_info_plugin/src/vehicle_info_hmi_command_factory.cc +++ b/src/components/application_manager/rpc_plugins/vehicle_info_plugin/src/vehicle_info_hmi_command_factory.cc @@ -60,7 +60,7 @@ namespace strings = app_mngr::strings; template class VehicleInfoCommandCreator : public application_manager::CommandCreator { public: - VehicleInfoCommandCreator(const VehicleInfoCommandParams& params) + explicit VehicleInfoCommandCreator(const VehicleInfoCommandParams& params) : params_(params) {} private: @@ -85,7 +85,8 @@ template <> class VehicleInfoCommandCreator : public application_manager::CommandCreator { public: - VehicleInfoCommandCreator(const VehicleInfoCommandParams& params) { + // cppcheck-suppress unusedFunction //Used in VehicleInfoCommandCreatorFactory + explicit VehicleInfoCommandCreator(const VehicleInfoCommandParams& params) { UNUSED(params); } @@ -103,7 +104,8 @@ class VehicleInfoCommandCreator }; struct VehicleInfoCommandCreatorFactory { - VehicleInfoCommandCreatorFactory(const VehicleInfoCommandParams& params) + explicit VehicleInfoCommandCreatorFactory( + const VehicleInfoCommandParams& params) : params_(params) {} template diff --git a/src/components/application_manager/rpc_plugins/vehicle_info_plugin/src/vehicle_info_mobile_command_factory.cc b/src/components/application_manager/rpc_plugins/vehicle_info_plugin/src/vehicle_info_mobile_command_factory.cc index b2d7df5d28..77cb5e71d7 100644 --- a/src/components/application_manager/rpc_plugins/vehicle_info_plugin/src/vehicle_info_mobile_command_factory.cc +++ b/src/components/application_manager/rpc_plugins/vehicle_info_plugin/src/vehicle_info_mobile_command_factory.cc @@ -60,7 +60,7 @@ namespace strings = app_mngr::strings; template class VehicleInfoCommandCreator : public application_manager::CommandCreator { public: - VehicleInfoCommandCreator(const VehicleInfoCommandParams& params) + explicit VehicleInfoCommandCreator(const VehicleInfoCommandParams& params) : params_(params) {} private: @@ -85,7 +85,7 @@ template <> class VehicleInfoCommandCreator : public application_manager::CommandCreator { public: - VehicleInfoCommandCreator(const VehicleInfoCommandParams& params) { + explicit VehicleInfoCommandCreator(const VehicleInfoCommandParams& params) { UNUSED(params); } @@ -103,7 +103,8 @@ class VehicleInfoCommandCreator }; struct VehicleInfoCommandCreatorFactory { - VehicleInfoCommandCreatorFactory(const VehicleInfoCommandParams& params) + explicit VehicleInfoCommandCreatorFactory( + const VehicleInfoCommandParams& params) : params_(params) {} template diff --git a/src/components/application_manager/src/app_launch/app_launch_data_db.cc b/src/components/application_manager/src/app_launch/app_launch_data_db.cc index 7c015b0707..c9357a0ec5 100644 --- a/src/components/application_manager/src/app_launch/app_launch_data_db.cc +++ b/src/components/application_manager/src/app_launch/app_launch_data_db.cc @@ -278,10 +278,9 @@ std::vector AppLaunchDataDB::GetAppDataByDevMac( bool AppLaunchDataDB::Clear() { SDL_LOG_AUTO_TRACE(); - bool retVal = false; utils::dbms::SQLQuery query(db()); - retVal = query.Exec(kDropSchema); + bool retVal = query.Exec(kDropSchema); if (retVal) { SDL_LOG_INFO("App_Launch table had been cleared successfully"); diff --git a/src/components/application_manager/src/app_launch/apps_launcher.cc b/src/components/application_manager/src/app_launch/apps_launcher.cc index bf1fa2fb5d..1ee7bffb2a 100644 --- a/src/components/application_manager/src/app_launch/apps_launcher.cc +++ b/src/components/application_manager/src/app_launch/apps_launcher.cc @@ -56,7 +56,8 @@ void AppsLauncher::StartLaunching(ApplicationDataPtr app_data) { } struct AppLauncherFinder { - AppLauncherFinder(const ApplicationDataPtr& app_data) : app_data_(app_data) {} + explicit AppLauncherFinder(const ApplicationDataPtr& app_data) + : app_data_(app_data) {} bool operator()(const AppsLauncher::LauncherPtr& launcher) const { DCHECK_OR_RETURN(launcher->app_data_ && app_data_, false) return *launcher->app_data_ == *app_data_; diff --git a/src/components/application_manager/src/app_launch/device_apps_launcher.cc b/src/components/application_manager/src/app_launch/device_apps_launcher.cc index 0a1bea3714..5f36e41efb 100644 --- a/src/components/application_manager/src/app_launch/device_apps_launcher.cc +++ b/src/components/application_manager/src/app_launch/device_apps_launcher.cc @@ -68,15 +68,6 @@ class Launcher { LaunchNext(); } - void OnAppRegistered(const ApplicationDataPtr& app_data) { - std::vector& apps = apps_on_device_->second; - std::vector::iterator it = - std::find(apps.begin(), apps.end(), app_data); - if (it != apps.end()) { - apps.erase(it); - } - } - void Clear() { gap_between_app_timer_.Stop(); wait_before_launch_timer_.Stop(); diff --git a/src/components/application_manager/src/app_service_manager.cc b/src/components/application_manager/src/app_service_manager.cc index 6bc970c8a3..9b31d57ca0 100644 --- a/src/components/application_manager/src/app_service_manager.cc +++ b/src/components/application_manager/src/app_service_manager.cc @@ -67,7 +67,7 @@ smart_objects::SmartObject AppServiceManager::PublishAppService( const bool mobile_service, const uint32_t connection_key) { SDL_LOG_AUTO_TRACE(); - std::string str_to_hash = ""; + std::string str_to_hash; std::string service_id = ""; std::string service_type = manifest[strings::service_type].asString(); @@ -413,10 +413,10 @@ bool AppServiceManager::ActivateAppService(const std::string service_id) { EnumConversionHelper::EnumToString( mobile_apis::AppServiceType::NAVIGATION, &navi_service_type); if (service_type == navi_service_type) { - smart_objects::SmartObject msg_params; - msg_params[strings::system_capability][strings::system_capability_type] = + smart_objects::SmartObject params; + params[strings::system_capability][strings::system_capability_type] = mobile_apis::SystemCapabilityType::NAVIGATION; - MessageHelper::BroadcastCapabilityUpdate(msg_params, app_manager_); + MessageHelper::BroadcastCapabilityUpdate(params, app_manager_); } return true; } diff --git a/src/components/application_manager/src/application_impl.cc b/src/components/application_manager/src/application_impl.cc index 2edf3860d6..cbfb87023d 100644 --- a/src/components/application_manager/src/application_impl.cc +++ b/src/components/application_manager/src/application_impl.cc @@ -311,8 +311,9 @@ bool ApplicationImpl::webengine_projection_enabled() const { struct StateIDComparator { HmiState::StateID state_id_; - StateIDComparator(HmiState::StateID state_id) : state_id_(state_id) {} - bool operator()(const HmiStatePtr cur) { + explicit StateIDComparator(HmiState::StateID state_id) + : state_id_(state_id) {} + bool operator()(const HmiStatePtr cur) const { return cur->state_id() == state_id_; } }; @@ -475,10 +476,6 @@ void ApplicationImpl::set_is_media_application(bool option) { is_media_ = option; } -bool IsTTSState(const HmiStatePtr state) { - return state->state_id() == HmiState::STATE_ID_TTS_SESSION; -} - void ApplicationImpl::set_tts_properties_in_none(bool active) { tts_properties_in_none_ = active; } @@ -660,7 +657,7 @@ void ApplicationImpl::WakeUpStreaming( if (ServiceType::kMobileNav == service_type) { { // reduce the range of video_streaming_suspended_lock_ - sync_primitives::AutoLock lock(video_streaming_suspended_lock_); + sync_primitives::AutoLock auto_lock(video_streaming_suspended_lock_); if (video_streaming_suspended_) { application_manager_.OnAppStreaming(app_id(), service_type, true); application_manager_.ProcessOnDataStreamingNotification( @@ -673,7 +670,7 @@ void ApplicationImpl::WakeUpStreaming( timer::kPeriodic); } else if (ServiceType::kAudio == service_type) { { // reduce the range of audio_streaming_suspended_lock_ - sync_primitives::AutoLock lock(audio_streaming_suspended_lock_); + sync_primitives::AutoLock auto_lock(audio_streaming_suspended_lock_); if (audio_streaming_suspended_) { application_manager_.OnAppStreaming(app_id(), service_type, true); application_manager_.ProcessOnDataStreamingNotification( @@ -940,10 +937,7 @@ bool ApplicationImpl::AreCommandLimitsExceeded( limit.first = current; limit.second = 1; - return false; - - break; } // In case of policy table values, there is EVEN limitation for number of // commands per minute, e.g. 10 command per minute i.e. 1 command per 6 sec @@ -984,7 +978,6 @@ bool ApplicationImpl::AreCommandLimitsExceeded( cmd_number_to_time_limits_[cmd_id] = {current, dummy_limit}; return false; - break; } default: { SDL_LOG_WARN("Limit source is not implemented."); @@ -1163,10 +1156,10 @@ void ApplicationImpl::SubscribeToSoftButtons( struct FindSoftButtonId { uint32_t soft_button_id_; - FindSoftButtonId(const uint32_t soft_button_id) + explicit FindSoftButtonId(const uint32_t soft_button_id) : soft_button_id_(soft_button_id) {} - bool operator()(const std::pair& element) { + bool operator()(const std::pair& element) const { return soft_button_id_ == element.first; } }; diff --git a/src/components/application_manager/src/application_manager_impl.cc b/src/components/application_manager/src/application_manager_impl.cc index 1823458ce0..90855fa9ee 100644 --- a/src/components/application_manager/src/application_manager_impl.cc +++ b/src/components/application_manager/src/application_manager_impl.cc @@ -693,9 +693,9 @@ ApplicationSharedPtr ApplicationManagerImpl::RegisterApplication( bool is_mismatched_cloud_app = false; if (apps_to_register_.end() == it) { - DevicePredicate finder(application->device()); + DevicePredicate device_finder(application->device()); it = std::find_if( - apps_to_register_.begin(), apps_to_register_.end(), finder); + apps_to_register_.begin(), apps_to_register_.end(), device_finder); bool found = apps_to_register_.end() != it; is_mismatched_cloud_app = found && (*it)->is_cloud_app() && @@ -3083,11 +3083,11 @@ void ApplicationManagerImpl::UnregisterAllApplications() { SDL_LOG_DEBUG("Unregister reason " << unregister_reason_); SetHMICooperating(false); - bool is_ignition_off = false; + using namespace mobile_api::AppInterfaceUnregisteredReason; using namespace helpers; - is_ignition_off = + bool is_ignition_off = Compare(unregister_reason_, IGNITION_OFF, INVALID_ENUM); bool is_unexpected_disconnect = Compare( @@ -3846,9 +3846,7 @@ bool ApplicationManagerImpl::ResetVrHelpTitleItems( } const std::string& vr_help_title = get_settings().vr_help_title(); - smart_objects::SmartObject so_vr_help_title = - smart_objects::SmartObject(smart_objects::SmartType_String); - so_vr_help_title = vr_help_title; + smart_objects::SmartObject so_vr_help_title(vr_help_title); app->reset_vr_help_title(); app->reset_vr_help(); @@ -4380,7 +4378,7 @@ void ApplicationManagerImpl::OnUpdateHMIAppType( std::vector hmi_types_from_policy; smart_objects::SmartObject transform_app_hmi_types( smart_objects::SmartType_Array); - bool flag_diffirence_app_hmi_type = false; + bool flag_diffirence_app_hmi_type; DataAccessor accessor(applications()); for (ApplicationSetIt it = accessor.GetData().begin(); it != accessor.GetData().end(); @@ -4389,7 +4387,6 @@ void ApplicationManagerImpl::OnUpdateHMIAppType( if (it_app_hmi_types_from_policy != app_hmi_types.end() && ((it_app_hmi_types_from_policy->second).size())) { - flag_diffirence_app_hmi_type = false; hmi_types_from_policy = (it_app_hmi_types_from_policy->second); if (transform_app_hmi_types.length()) { @@ -4611,7 +4608,6 @@ void ApplicationManagerImpl::SendGetIconUrlNotifications( continue; } - std::string endpoint = app_icon_it->second.endpoint; bool pending_request = app_icon_it->second.pending_request; if (pending_request) { @@ -4942,7 +4938,7 @@ void ApplicationManagerImpl::SetMockMediaManager( #endif // BUILD_TESTS struct MobileAppIdPredicate { std::string policy_app_id_; - MobileAppIdPredicate(const std::string& policy_app_id) + explicit MobileAppIdPredicate(const std::string& policy_app_id) : policy_app_id_(policy_app_id) {} bool operator()(const ApplicationSharedPtr app) const { return app ? policy_app_id_ == app->policy_app_id() : false; @@ -4951,7 +4947,8 @@ struct MobileAppIdPredicate { struct TakeDeviceHandle { public: - TakeDeviceHandle(const ApplicationManager& app_mngr) : app_mngr_(app_mngr) {} + explicit TakeDeviceHandle(const ApplicationManager& app_mngr) + : app_mngr_(app_mngr) {} std::string operator()(ApplicationSharedPtr& app) { DCHECK_OR_RETURN(app, ""); return MessageHelper::GetDeviceMacAddressForHandle(app->device(), diff --git a/src/components/application_manager/src/application_state.cc b/src/components/application_manager/src/application_state.cc index 2fb583ab3e..1ec4abaed7 100644 --- a/src/components/application_manager/src/application_state.cc +++ b/src/components/application_manager/src/application_state.cc @@ -42,7 +42,7 @@ namespace { struct StateIDComparator { application_manager::HmiState::StateID state_id_; - StateIDComparator(application_manager::HmiState::StateID state_id) + explicit StateIDComparator(application_manager::HmiState::StateID state_id) : state_id_(state_id) {} bool operator()(const application_manager::HmiStatePtr cur) const { return cur->state_id() == state_id_; @@ -209,8 +209,8 @@ void ApplicationState::EraseHMIState(HmiStates& hmi_states, } else { HmiStates::iterator next = it; HmiStates::iterator prev = it; - next++; - prev--; + ++next; + --prev; if (hmi_states.end() != next) { HmiStatePtr next_state = *next; diff --git a/src/components/application_manager/src/commands/command_request_impl.cc b/src/components/application_manager/src/commands/command_request_impl.cc index 938b7afc99..08bf25de54 100644 --- a/src/components/application_manager/src/commands/command_request_impl.cc +++ b/src/components/application_manager/src/commands/command_request_impl.cc @@ -846,7 +846,6 @@ void CommandRequestImpl::GetInfo( mobile_apis::Result::eType CommandRequestImpl::PrepareResultCodeForResponse( const ResponseInfo& first, const ResponseInfo& second) { SDL_LOG_AUTO_TRACE(); - mobile_apis::Result::eType result_code = mobile_apis::Result::INVALID_ENUM; if (IsResultCodeUnsupported(first, second) || IsResultCodeUnsupported(second, first)) { return mobile_apis::Result::UNSUPPORTED_RESOURCE; @@ -867,7 +866,7 @@ mobile_apis::Result::eType CommandRequestImpl::PrepareResultCodeForResponse( if (!second.is_unsupported_resource) { second_result = second.result_code; } - result_code = + mobile_apis::Result::eType result_code = MessageHelper::HMIToMobileResult(std::max(first_result, second_result)); return result_code; } diff --git a/src/components/application_manager/src/event_engine/event_dispatcher_impl.cc b/src/components/application_manager/src/event_engine/event_dispatcher_impl.cc index 3d294f0035..7392731d70 100644 --- a/src/components/application_manager/src/event_engine/event_dispatcher_impl.cc +++ b/src/components/application_manager/src/event_engine/event_dispatcher_impl.cc @@ -78,7 +78,7 @@ void EventDispatcherImpl::add_observer(const Event::EventID& event_id, } struct IdCheckFunctor { - IdCheckFunctor(const unsigned long id) : target_id(id) {} + explicit IdCheckFunctor(const unsigned long id) : target_id(id) {} bool operator()(const EventObserver* obs) const { return (obs->id() == target_id); diff --git a/src/components/application_manager/src/hmi_capabilities_impl.cc b/src/components/application_manager/src/hmi_capabilities_impl.cc index c19b70f2f5..c207f7fa00 100644 --- a/src/components/application_manager/src/hmi_capabilities_impl.cc +++ b/src/components/application_manager/src/hmi_capabilities_impl.cc @@ -610,7 +610,7 @@ struct JsonCapabilitiesGetter { * @param json_cache_node reference to cached JSON capabilities node */ JsonCapabilitiesGetter(Json::Value& json_default_node, - Json::Value& json_cache_node) + const Json::Value& json_cache_node) : json_default_node_(json_default_node) , json_cache_node_(json_cache_node) {} @@ -941,18 +941,17 @@ bool HMICapabilitiesImpl::LoadCapabilitiesFromFile() { pcm_capabilities_so); set_pcm_stream_capabilities(pcm_capabilities_so); } - auto ui_hmi_zone_capabilities_node = json_ui_getter.GetJsonMember(hmi_response::hmi_zone_capabilities, hmi_apis::FunctionID::UI_GetCapabilities, requests_required_for_capabilities_); if (!ui_hmi_zone_capabilities_node.isNull()) { - smart_objects::SmartObject hmi_zone_capabilities_so = - smart_objects::SmartObject(smart_objects::SmartType_Array); auto enum_value = ConvertStringToEnum( ui_hmi_zone_capabilities_node.asString()); if (hmi_apis::Common_HmiZoneCapabilities::INVALID_ENUM != enum_value) { + smart_objects::SmartObject hmi_zone_capabilities_so( + smart_objects::SmartType_Array); hmi_zone_capabilities_so = enum_value; set_hmi_zone_capabilities(hmi_zone_capabilities_so); } diff --git a/src/components/application_manager/src/hmi_state.cc b/src/components/application_manager/src/hmi_state.cc index 3dadd8c193..fde2022364 100644 --- a/src/components/application_manager/src/hmi_state.cc +++ b/src/components/application_manager/src/hmi_state.cc @@ -426,6 +426,8 @@ const StateID2StrMap kStateID2StrMap = HmiState::StateID::STATE_ID_EMBEDDED_NAVI, "EMBEDDED_NAVI"); } // anonymous namespace +// cppcheck-suppress unusedFunction //Used in the next +// overload of operator<< std::ostream& operator<<(std::ostream& os, const HmiState::StateID src) { try { os << kStateID2StrMap.left.at(src); diff --git a/src/components/application_manager/src/message_helper/message_helper.cc b/src/components/application_manager/src/message_helper/message_helper.cc index c5cc11bbe5..ed8b801377 100644 --- a/src/components/application_manager/src/message_helper/message_helper.cc +++ b/src/components/application_manager/src/message_helper/message_helper.cc @@ -107,7 +107,7 @@ bool ValidateSoftButtons(smart_objects::SmartObject& soft_buttons) { struct GroupsAppender : std::unary_function { - GroupsAppender(smart_objects::SmartObject& groups) + explicit GroupsAppender(smart_objects::SmartObject& groups) : groups_(groups), index_(0) {} void operator()(const PermissionsList::value_type& item) { @@ -135,7 +135,7 @@ struct GroupsAppender struct ExternalConsentStatusAppender : std::unary_function { - ExternalConsentStatusAppender(smart_objects::SmartObject& status) + explicit ExternalConsentStatusAppender(smart_objects::SmartObject& status) : status_(status), index_(0) {} void operator()(const policy::ExternalConsentStatus::value_type& item) { @@ -710,23 +710,23 @@ void MessageHelper::SendDeleteSubmenuRequest(smart_objects::SmartObject* cmd, if ((*cmd)[strings::menu_id].asInt() == (*it->second)[strings::menu_params][hmi_request::parent_id].asInt()) { - SmartObject msg_params = SmartObject(smart_objects::SmartType_Map); - msg_params[strings::cmd_id] = (*it->second)[strings::cmd_id].asInt(); - msg_params[strings::app_id] = application->app_id(); - msg_params[strings::grammar_id] = application->get_grammar_id(); - msg_params[strings::type] = hmi_apis::Common_VRCommandType::Command; + SmartObject params = SmartObject(smart_objects::SmartType_Map); + params[strings::cmd_id] = (*it->second)[strings::cmd_id].asInt(); + params[strings::app_id] = application->app_id(); + params[strings::grammar_id] = application->get_grammar_id(); + params[strings::type] = hmi_apis::Common_VRCommandType::Command; - SmartObjectSPtr message = CreateMessageForHMI( + SmartObjectSPtr hmi_message = CreateMessageForHMI( hmi_apis::messageType::request, app_mngr.GetNextHMICorrelationID()); - DCHECK(message); + DCHECK(hmi_message); - SmartObject& object = *message; - object[strings::params][strings::function_id] = + SmartObject& smart_object = *hmi_message; + smart_object[strings::params][strings::function_id] = hmi_apis::FunctionID::VR_DeleteCommand; - object[strings::msg_params] = msg_params; + smart_object[strings::msg_params] = params; - app_mngr.GetRPCService().ManageHMICommand(message); + app_mngr.GetRPCService().ManageHMICommand(hmi_message); } } } @@ -767,9 +767,7 @@ void MessageHelper::SendResetPropertiesRequest(ApplicationSharedPtr application, using namespace smart_objects; { - SmartObject msg_params = SmartObject(smart_objects::SmartType_Map); - - msg_params = *MessageHelper::CreateAppVrHelp(application); + SmartObject msg_params = *MessageHelper::CreateAppVrHelp(application); msg_params[hmi_request::menu_title] = ""; smart_objects::SmartObject keyboard_properties = @@ -1060,7 +1058,7 @@ void MessageHelper::CreateGetVehicleDataRequest( smart_objects::SmartObject(smart_objects::SmartType_Map); for (std::vector::const_iterator it = params.begin(); it != params.end(); - it++) { + ++it) { (*request)[strings::msg_params][*it] = true; } app_mngr.GetRPCService().ManageHMICommand(request); @@ -1337,8 +1335,6 @@ MessageHelper::CreateGlobalPropertiesRequestsToHMI( ApplicationConstSharedPtr app, ApplicationManager& app_mngr) { SDL_LOG_AUTO_TRACE(); - uint32_t correlation_id = app_mngr.GetNextHMICorrelationID(); - smart_objects::SmartObjectList requests; if (app.use_count() == 0) { SDL_LOG_ERROR("Invalid application"); @@ -1398,7 +1394,7 @@ MessageHelper::CreateGlobalPropertiesRequestsToHMI( // TTS global properties if (can_send_vr && (app->help_prompt() || app->timeout_prompt())) { - correlation_id = app_mngr.GetNextHMICorrelationID(); + uint32_t correlation_id = app_mngr.GetNextHMICorrelationID(); smart_objects::SmartObjectSPtr tts_global_properties = CreateMessageForHMI(hmi_apis::messageType::request, correlation_id); if (!tts_global_properties) { @@ -1656,8 +1652,6 @@ MessageHelper::CreateAddVRCommandRequestFromChoiceToHMI( msg_params[strings::app_id] = app->app_id(); msg_params[strings::cmd_id] = (*(it->second))[strings::choice_set][j][strings::choice_id]; - msg_params[strings::vr_commands] = - smart_objects::SmartObject(smart_objects::SmartType_Array); msg_params[strings::vr_commands] = (*(it->second))[strings::choice_set][j][strings::vr_commands]; msg_params[strings::type] = hmi_apis::Common_VRCommandType::Choice; @@ -3460,10 +3454,7 @@ mobile_apis::Result::eType MessageHelper::ProcessSoftButtons( } break; } - default: { - continue; - break; - } + default: { continue; } } soft_buttons[j++] = request_soft_buttons[i]; diff --git a/src/components/application_manager/src/policies/policy_handler.cc b/src/components/application_manager/src/policies/policy_handler.cc index 8ec21660a8..280e1cace5 100644 --- a/src/components/application_manager/src/policies/policy_handler.cc +++ b/src/components/application_manager/src/policies/policy_handler.cc @@ -2394,8 +2394,6 @@ bool PolicyHandler::CheckAppServiceParameters( const std::string& requested_service_name, const std::string& requested_service_type, smart_objects::SmartArray* requested_handled_rpcs) const { - std::string service_name = std::string(); - std::string service_type = std::string(); std::vector handled_rpcs = {}; policy_table::AppServiceParameters app_service_parameters = diff --git a/src/components/application_manager/src/request_controller.cc b/src/components/application_manager/src/request_controller.cc index d2db9fced2..a34457ff66 100644 --- a/src/components/application_manager/src/request_controller.cc +++ b/src/components/application_manager/src/request_controller.cc @@ -81,7 +81,7 @@ void RequestController::InitializeThreadpool() { pool_state_ = TPoolState::STARTED; char name[50]; for (uint32_t i = 0; i < pool_size_; i++) { - snprintf(name, sizeof(name) / sizeof(name[0]), "AM Pool %d", i); + snprintf(name, sizeof(name) / sizeof(name[0]), "AM Pool %u", i); pool_.push_back(threads::CreateThread(name, new Worker(this))); pool_[i]->Start(); SDL_LOG_DEBUG("Request thread initialized: " << name); diff --git a/src/components/application_manager/src/request_info.cc b/src/components/application_manager/src/request_info.cc index 1149c9aaf9..e1fffdf6fe 100644 --- a/src/components/application_manager/src/request_info.cc +++ b/src/components/application_manager/src/request_info.cc @@ -219,7 +219,7 @@ bool RequestInfoSet::Erase(const RequestInfoPtr request_info) { DCHECK(request_info == found); time_sorted_pending_requests_.erase(it); CheckSetSizes(); - return 1 == erased_count; + return true; } CheckSetSizes(); return false; diff --git a/src/components/application_manager/src/resumption/resume_ctrl_impl.cc b/src/components/application_manager/src/resumption/resume_ctrl_impl.cc index 8295ddd1f9..545560c132 100644 --- a/src/components/application_manager/src/resumption/resume_ctrl_impl.cc +++ b/src/components/application_manager/src/resumption/resume_ctrl_impl.cc @@ -60,7 +60,8 @@ static mobile_api::HMILevel::eType PickHigherHmiLevel( mobile_api::HMILevel::eType val1, mobile_api::HMILevel::eType val2); static mobile_api::HMILevel::eType PickLowerHmiLevel( mobile_api::HMILevel::eType val1, mobile_api::HMILevel::eType val2); -static mobile_api::HMILevel::eType ConvertHmiLevelString(const std::string str); +static mobile_api::HMILevel::eType ConvertHmiLevelString( + const std::string& str); SDL_CREATE_LOG_VARIABLE("Resumption") @@ -1037,7 +1038,7 @@ static mobile_api::HMILevel::eType PickLowerHmiLevel( } static mobile_api::HMILevel::eType ConvertHmiLevelString( - const std::string str) { + const std::string& str) { using namespace mobile_apis; if ("BACKGROUND" == str) { @@ -1046,8 +1047,6 @@ static mobile_api::HMILevel::eType ConvertHmiLevelString( return HMILevel::HMI_FULL; } else if ("LIMITED" == str) { return HMILevel::HMI_LIMITED; - } else if ("NONE" == str) { - return HMILevel::HMI_NONE; } else { return HMILevel::HMI_NONE; } diff --git a/src/components/application_manager/src/resumption/resumption_data.cc b/src/components/application_manager/src/resumption/resumption_data.cc index 558724ecdc..95dd331b88 100644 --- a/src/components/application_manager/src/resumption/resumption_data.cc +++ b/src/components/application_manager/src/resumption/resumption_data.cc @@ -186,7 +186,7 @@ smart_objects::SmartObject ResumptionData::GetApplicationFiles( int i = 0; for (AppFilesMap::const_iterator file_it = app_files.begin(); file_it != app_files.end(); - file_it++) { + ++file_it) { const AppFile& file = file_it->second; if (file.is_persistent) { smart_objects::SmartObject file_data = diff --git a/src/components/application_manager/src/resumption/resumption_data_db.cc b/src/components/application_manager/src/resumption/resumption_data_db.cc index 88f28a41a3..f00b100913 100644 --- a/src/components/application_manager/src/resumption/resumption_data_db.cc +++ b/src/components/application_manager/src/resumption/resumption_data_db.cc @@ -1756,7 +1756,6 @@ bool ResumptionDataDB::ExecInsertChoice( field "idimage" from table "choice" = 4 field "idsecondaryImage" from table "choice" = 5*/ int64_t image_primary_key = 0; - int64_t choice_primary_key = 0; size_t length_choice_array = choice_array.length(); for (size_t i = 0; i < length_choice_array; ++i) { insert_choice.Bind(0, (choice_array[i][strings::choice_id]).asInt()); @@ -1789,7 +1788,7 @@ bool ResumptionDataDB::ExecInsertChoice( SDL_LOG_WARN("Problem with execution insert_choice query"); return false; } - choice_primary_key = insert_choice.LastInsertId(); + int64_t choice_primary_key = insert_choice.LastInsertId(); if ((!ExecInsertVrCommands(choice_primary_key, choice_array[i][strings::vr_commands], @@ -2082,7 +2081,6 @@ bool ResumptionDataDB::InsertCommandsData( } utils::dbms::SQLQuery query_insert_command(db()); int64_t image_primary_key = 0; - int64_t command_primary_key = 0; if (!query_insert_command.Prepare(kInsertToCommand)) { SDL_LOG_WARN("Problem with verification queries for insertion commands"); @@ -2121,7 +2119,7 @@ bool ResumptionDataDB::InsertCommandsData( SDL_LOG_WARN("Incorrect insertion of command data to DB"); return false; } - command_primary_key = query_insert_command.LastInsertId(); + int64_t command_primary_key = query_insert_command.LastInsertId(); if (commands[i].keyExists(strings::vr_commands)) { if (!ExecInsertVrCommands(command_primary_key, commands[i][strings::vr_commands], diff --git a/src/components/application_manager/src/state_controller_impl.cc b/src/components/application_manager/src/state_controller_impl.cc index 2eb813e69f..e7ec998a2f 100644 --- a/src/components/application_manager/src/state_controller_impl.cc +++ b/src/components/application_manager/src/state_controller_impl.cc @@ -394,7 +394,7 @@ void StateControllerImpl::HmiLevelConflictResolver::operator()( result_video_state = mobile_apis::VideoStreamingState::STREAMABLE; } - mobile_apis::HMILevel::eType result_hmi_level = state_to_resolve->hmi_level(); + mobile_apis::HMILevel::eType result_hmi_level; using namespace helpers; if (mobile_apis::VideoStreamingState::STREAMABLE == result_video_state || @@ -803,11 +803,11 @@ void StateControllerImpl::on_event(const event_engine::Event& event) { case FunctionID::BasicCommunication_OnEventChanged: { bool is_active = message[strings::msg_params][hmi_notification::is_active].asBool(); - const uint32_t id = + const uint32_t event_id = message[strings::msg_params][hmi_notification::event_name].asUInt(); // TODO(AOleynik): Add verification/conversion check here const Common_EventTypes::eType state_id = - static_cast(id); + static_cast(event_id); if (is_active) { if (Common_EventTypes::AUDIO_SOURCE == state_id) { ApplyTempState(); diff --git a/src/components/application_manager/test/resumption/resumption_data_test.cc b/src/components/application_manager/test/resumption/resumption_data_test.cc index 12a38e1bc4..d5228934db 100644 --- a/src/components/application_manager/test/resumption/resumption_data_test.cc +++ b/src/components/application_manager/test/resumption/resumption_data_test.cc @@ -176,7 +176,7 @@ void ResumptionDataTest::CheckChoiceSet(sm::SmartObject& res_list) { sm::SmartObject command = res_list[i][am::strings::choice_set][j]; EXPECT_EQ(i + j, command[am::strings::choice_id].asUInt()); char numb[12]; - std::snprintf(numb, 12, "%d", i + j); + std::snprintf(numb, 12, "%u", i + j); std::string test_choice = (*test_choiceset_map[i])[am::strings::choice_set][j] [am::strings::vr_commands][0] @@ -340,11 +340,10 @@ void ResumptionDataTest::CheckTimeoutPrompt( void ResumptionDataTest::CheckVRHelp(sm::SmartObject& res_list) { std::string text; - int position; for (uint i = 0; i < kCountOfVrhelptitle_; ++i) { text = (*vr_help_)[i][am::strings::text].asString(); EXPECT_EQ(text, res_list[i][am::strings::text].asString()); - position = (*vr_help_)[i][am::strings::position].asInt(); + int position = (*vr_help_)[i][am::strings::position].asInt(); EXPECT_EQ(position, res_list[i][am::strings::position].asInt()); } } @@ -517,7 +516,7 @@ void ResumptionDataTest::SetCommands() { sm::SmartObject sm_icon; for (uint32_t i = 0; i < kCountOfCommands_; ++i) { char numb[12]; - std::snprintf(numb, 12, "%d", i); + std::snprintf(numb, 12, "%u", i); sm_comm[am::strings::cmd_id] = i; sm_comm[am::strings::menu_params][am::strings::position] = i; sm_comm[am::strings::menu_params][am::hmi_request::parent_id] = i; @@ -526,7 +525,7 @@ void ResumptionDataTest::SetCommands() { for (uint32_t j = 0; j < kCountOfChoice_; ++j) { char vr[12]; - std::snprintf(vr, 12, "%d", i + j); + std::snprintf(vr, 12, "%u", i + j); vr_commandsvector[j] = "VrCommand " + std::string(vr); } sm_comm[am::strings::vr_commands] = vr_commandsvector; @@ -544,7 +543,7 @@ void ResumptionDataTest::SetSubmenues() { sm::SmartObject sm_comm; for (uint32_t i = 10; i < kCountOfSubmenues_ + 10; ++i) { char numb[12]; - std::snprintf(numb, 12, "%d", i); + std::snprintf(numb, 12, "%u", i); sm_comm[am::strings::menu_id] = i; sm_comm[am::strings::position] = i; sm_comm[am::strings::menu_name] = "SubMenu" + std::string(numb); @@ -563,7 +562,7 @@ void ResumptionDataTest::SetChoiceSet() { for (uint32_t i = 0; i < kCountOfChoiceSets_; ++i) { for (uint32_t j = 0; j < kCountOfChoice_; ++j) { char numb[12]; - std::snprintf(numb, 12, "%d", i + j); + std::snprintf(numb, 12, "%u", i + j); choice[am::strings::choice_id] = i + j; vr_commandsvector[0] = "ChoiceSet VrCommand " + std::string(numb); @@ -596,11 +595,10 @@ void ResumptionDataTest::SetChoiceSet() { void ResumptionDataTest::SetAppFiles() { am::AppFile test_file; - int file_types; for (uint i = 0; i < kCountOfFiles_; ++i) { char numb[12]; std::snprintf(numb, 12, "%d", i); - file_types = i; + int file_types = i; test_file.is_persistent = true; test_file.is_download_complete = true; test_file.file_type = static_cast(file_types); diff --git a/src/components/config_profile/src/ini_file.cc b/src/components/config_profile/src/ini_file.cc index f549f4b915..dd64f48afa 100644 --- a/src/components/config_profile/src/ini_file.cc +++ b/src/components/config_profile/src/ini_file.cc @@ -152,13 +152,15 @@ char* ini_read_value(const char* fname, return NULL; } +#ifdef BUILD_TESTS +// cppcheck-suppress unusedFunction //Used in unit tests char ini_write_value(const char* fname, const char* chapter, const char* item, const char* value, uint8_t flag) { FILE *rd_fp, *wr_fp = 0; - uint16_t i, cr_count; + uint16_t cr_count; int32_t wr_result; bool chapter_found = false; bool value_written = false; @@ -186,11 +188,9 @@ char ini_write_value(const char* fname, #if USE_MKSTEMP { const char* temp_str = "./"; - int32_t fd = -1; if (temp_str) { snprintf(temp_fname, PATH_MAX, "%s/ini.XXXXXX", temp_str); - - fd = mkstemp(temp_fname); + int32_t fd = mkstemp(temp_fname); if (-1 == fd) { fclose(rd_fp); return FALSE; @@ -244,7 +244,7 @@ char ini_write_value(const char* fname, first chapter is significant */ value_written = true; } else if (result == INI_RIGHT_ITEM) { - for (i = 0; i < cr_count; i++) + for (uint16_t i = 0; i < cr_count; i++) fprintf(wr_fp, "\n"); cr_count = 0; wr_result = fprintf(wr_fp, "%s=%s\n", item, value); @@ -286,10 +286,10 @@ char ini_write_value(const char* fname, return (value_written); } +#endif // BUILD_TESTS Ini_search_id ini_parse_line(const char* line, const char* tag, char* value) { const char* line_ptr; - char* temp_ptr; char temp_str[INI_LINE_LEN] = ""; *temp_str = '\0'; @@ -332,7 +332,7 @@ Ini_search_id ini_parse_line(const char* line, const char* tag, char* value) { return INI_NOTHING; snprintf(temp_str, INI_LINE_LEN, "%s", line_ptr); - temp_ptr = strrchr(temp_str, ']'); + char* temp_ptr = strrchr(temp_str, ']'); if (NULL == temp_ptr) { return INI_NOTHING; } else { diff --git a/src/components/config_profile/src/profile.cc b/src/components/config_profile/src/profile.cc index a86d09da94..d9204acf90 100644 --- a/src/components/config_profile/src/profile.cc +++ b/src/components/config_profile/src/profile.cc @@ -1739,8 +1739,7 @@ void Profile::UpdateValues() { help_prompt_.clear(); std::string help_prompt_value; if (ReadValue(&help_prompt_value, kGlobalPropertiesSection, kHelpPromptKey)) { - char* str = NULL; - str = strtok(const_cast(help_prompt_value.c_str()), ","); + char* str = strtok(const_cast(help_prompt_value.c_str()), ","); while (str != NULL) { // Default prompt should have delimiter included for each item const std::string prompt_item = std::string(str) + tts_delimiter_; @@ -1759,8 +1758,7 @@ void Profile::UpdateValues() { std::string timeout_prompt_value; if (ReadValue( &timeout_prompt_value, kGlobalPropertiesSection, kTimeoutPromptKey)) { - char* str = NULL; - str = strtok(const_cast(timeout_prompt_value.c_str()), ","); + char* str = strtok(const_cast(timeout_prompt_value.c_str()), ","); while (str != NULL) { // Default prompt should have delimiter included for each item const std::string prompt_item = std::string(str) + tts_delimiter_; @@ -1784,8 +1782,7 @@ void Profile::UpdateValues() { vr_commands_.clear(); std::string vr_help_command_value; if (ReadValue(&vr_help_command_value, kVrCommandsSection, kHelpCommandKey)) { - char* str = NULL; - str = strtok(const_cast(vr_help_command_value.c_str()), ","); + char* str = strtok(const_cast(vr_help_command_value.c_str()), ","); while (str != NULL) { const std::string vr_item = str; vr_commands_.push_back(vr_item); @@ -1867,8 +1864,8 @@ void Profile::UpdateValues() { "", kMainSection, kSupportedDiagModesKey)) { - char* str = NULL; - str = strtok(const_cast(supported_diag_modes_value.c_str()), ","); + char* str = + strtok(const_cast(supported_diag_modes_value.c_str()), ","); while (str != NULL) { errno = 0; uint32_t user_value = strtol(str, NULL, 16); diff --git a/src/components/connection_handler/src/connection.cc b/src/components/connection_handler/src/connection.cc index 14e2b83848..03915516c3 100644 --- a/src/components/connection_handler/src/connection.cc +++ b/src/components/connection_handler/src/connection.cc @@ -110,7 +110,7 @@ Connection::~Connection() { << static_cast(session_it->first) << " from Session/Connection Map in Connection Destructor"); connection_handler_->RemoveSession(session_it->first); - session_it++; + ++session_it; } session_map_.clear(); @@ -324,7 +324,7 @@ uint8_t Connection::RemoveSecondaryServices( removed_services_list.push_back(service_it->service_type); service_it = service_list.erase(service_it); } else { - service_it++; + ++service_it; } } diff --git a/src/components/connection_handler/src/connection_handler_impl.cc b/src/components/connection_handler/src/connection_handler_impl.cc index 827d6fa17e..8cefa390e8 100644 --- a/src/components/connection_handler/src/connection_handler_impl.cc +++ b/src/components/connection_handler/src/connection_handler_impl.cc @@ -215,7 +215,7 @@ namespace { struct DeviceFinder { explicit DeviceFinder(const std::string& device_uid) : device_uid_(device_uid) {} - bool operator()(const DeviceMap::value_type& device) { + bool operator()(const DeviceMap::value_type& device) const { return device_uid_ == device.second.mac_address(); } @@ -1169,7 +1169,7 @@ const uint8_t ConnectionHandlerImpl::GetSessionIdFromSecondaryTransport( transport_manager::ConnectionUID secondary_transport_id) const { sync_primitives::AutoLock auto_lock(session_connection_map_lock_ptr_); SessionConnectionMap::const_iterator it = session_connection_map_.begin(); - for (; session_connection_map_.end() != it; it++) { + for (; session_connection_map_.end() != it; ++it) { SessionTransports st = it->second; if (st.secondary_transport == secondary_transport_id) { return it->first; diff --git a/src/components/formatters/src/CFormatterJsonBase.cc b/src/components/formatters/src/CFormatterJsonBase.cc index e5354d5326..d88ffc7158 100644 --- a/src/components/formatters/src/CFormatterJsonBase.cc +++ b/src/components/formatters/src/CFormatterJsonBase.cc @@ -95,7 +95,7 @@ void ns_smart_device_link::ns_json_handler::formatters::CFormatterJsonBase:: for (std::set::const_iterator key = keys.begin(); key != keys.end(); - key++) { + ++key) { Json::Value value(Json::nullValue); objToJsonValue(obj.getElement(*key), value); diff --git a/src/components/formatters/test/include/formatters/SmartFactoryTestHelper.h b/src/components/formatters/test/include/formatters/SmartFactoryTestHelper.h index 08962db120..d937849b5d 100644 --- a/src/components/formatters/test/include/formatters/SmartFactoryTestHelper.h +++ b/src/components/formatters/test/include/formatters/SmartFactoryTestHelper.h @@ -110,10 +110,6 @@ class CSmartFactoryTest : public CSmartFactory > TStructsSchemaItems; - static std::shared_ptr ProvideObjectSchemaItemForStruct( - TStructsSchemaItems& struct_schema_items, - const StructIdentifiersTest::eType struct_id); - void InitStructSchemes(TStructsSchemaItems& struct_schema_items); void InitFunctionSchemes( diff --git a/src/components/formatters/test/src/SmartFactoryTestHelper.cc b/src/components/formatters/test/src/SmartFactoryTestHelper.cc index 4d089ff9b1..dd4dbe5910 100644 --- a/src/components/formatters/test/src/SmartFactoryTestHelper.cc +++ b/src/components/formatters/test/src/SmartFactoryTestHelper.cc @@ -432,13 +432,6 @@ std::shared_ptr CSmartFactoryTest::InitStructSchemaItem_Common_1( TSchemaItemParameter(500), TSchemaItemParameter()); - // Struct member image. - // - // Image struct - std::shared_ptr image_SchemaItem = - ProvideObjectSchemaItemForStruct(struct_schema_items, - StructIdentifiersTest::Common_2); - // Struct member position. // // Position to display item @@ -446,19 +439,12 @@ std::shared_ptr CSmartFactoryTest::InitStructSchemaItem_Common_1( TNumberSchemaItem::create(TSchemaItemParameter(1), TSchemaItemParameter(500), TSchemaItemParameter()); - Members struct_members; - struct_members["image"] = SMember(image_SchemaItem, false); Members schema_members; schema_members["text"] = SMember(text_SchemaItem, true); schema_members["position"] = SMember(position_SchemaItem, true); - Members root_members_map; - root_members_map[""] = - SMember(CObjectSchemaItem::create(struct_members), true); - root_members_map[""] = - SMember(CObjectSchemaItem::create(schema_members), true); return CObjectSchemaItem::create(schema_members); } @@ -485,16 +471,3 @@ CSmartFactoryTest::InitStructSchemaItem_Common_2() { return CObjectSchemaItem::create(schema_members); } - -std::shared_ptr -CSmartFactoryTest::ProvideObjectSchemaItemForStruct( - TStructsSchemaItems& struct_schema_items, - const StructIdentifiersTest::eType struct_id) { - const TStructsSchemaItems::const_iterator it = - struct_schema_items.find(struct_id); - if (it != struct_schema_items.end()) { - return it->second; - } - return ns_smart_device_link::ns_smart_objects::CAlwaysFalseSchemaItem:: - create(); -} diff --git a/src/components/formatters/test/src/create_smartSchema.cc b/src/components/formatters/test/src/create_smartSchema.cc index c852c65ea1..23459e2eac 100644 --- a/src/components/formatters/test/src/create_smartSchema.cc +++ b/src/components/formatters/test/src/create_smartSchema.cc @@ -139,6 +139,8 @@ const AppTypeTest::eType test::components::formatters::AppTypeTest::MEDIA, }; +#ifdef BUILD_TESTS +// cppcheck-suppress unusedFunction //Used in unit tests CSmartSchema initObjectSchema() { std::set resultCode_allowedEnumSubsetValues; resultCode_allowedEnumSubsetValues.insert( @@ -222,6 +224,7 @@ CSmartSchema initObjectSchema() { return CSmartSchema(CObjectSchemaItem::create(rootMembersMap)); }; +// cppcheck-suppress unusedFunction //Used in unit tests CSmartSchema initSchemaForMetaFormatter() { std::set resultCode_allowedEnumSubsetValues; resultCode_allowedEnumSubsetValues.insert( @@ -336,15 +339,6 @@ CSmartSchema initSchemaForMetaFormatter() { ISchemaItemPtr majorVersion_SchemaItem = TNumberSchemaItem::create(); ISchemaItemPtr minorVersion_SchemaItem = TNumberSchemaItem::create(); ISchemaItemPtr patchVersion_SchemaItem = TNumberSchemaItem::create(); - ISchemaItemPtr syncMsg_SchemaItem = - CStringSchemaItem::create(TSchemaItemParameter(0), - TSchemaItemParameter(1000), - TSchemaItemParameter()); - - ISchemaItemPtr syncMsgVersion_SchemaItem = - CArraySchemaItem::create(syncMsg_SchemaItem, - TSchemaItemParameter(0), - TSchemaItemParameter(1000)); // Creation map for syncMsgVersion std::map schemaSyncMsgVersionMap; @@ -400,6 +394,7 @@ CSmartSchema initSchemaForMetaFormatter() { SMember(CObjectSchemaItem::create(paramsMembersMap), true); return CSmartSchema(CObjectSchemaItem::create(rootMembersMap)); }; +#endif // BUILD_TESTS } // namespace formatters } // namespace components diff --git a/src/components/formatters/test/src/meta_formatter_test_helper.cc b/src/components/formatters/test/src/meta_formatter_test_helper.cc index 4f8975fe53..0c396d4dc7 100644 --- a/src/components/formatters/test/src/meta_formatter_test_helper.cc +++ b/src/components/formatters/test/src/meta_formatter_test_helper.cc @@ -148,7 +148,7 @@ void CMetaFormatterTestHelper::CompareObjects(const SmartObject& first, for (std::set::const_iterator key = keys.begin(); key != keys.end(); - key++) { + ++key) { CompareObjects(first.getElement(*key), second.getElement(*key)); } } else if (SmartType_Boolean == first.getType()) { diff --git a/src/components/hmi_message_handler/src/mb_controller.cc b/src/components/hmi_message_handler/src/mb_controller.cc index 681e57906a..b0388a5bf2 100644 --- a/src/components/hmi_message_handler/src/mb_controller.cc +++ b/src/components/hmi_message_handler/src/mb_controller.cc @@ -159,14 +159,13 @@ bool CMessageBrokerController::isResponse(Json::Value& message) { } void CMessageBrokerController::sendResponse(Json::Value& message) { - WebsocketSession* ws; std::map::iterator it; sync_primitives::AutoLock request_lock(mRequestListLock); std::string id = message["id"].asString(); it = mRequestList.find(id); if (it != mRequestList.end()) { - ws = it->second; + WebsocketSession* ws = it->second; ws->sendJsonMessage(message); mRequestList.erase(it); } @@ -182,7 +181,6 @@ void CMessageBrokerController::sendJsonMessage(Json::Value& message) { } // Send request - WebsocketSession* ws; std::map::iterator it; std::string method = message["method"].asString(); std::string component_name = GetComponentName(method); @@ -190,7 +188,7 @@ void CMessageBrokerController::sendJsonMessage(Json::Value& message) { sync_primitives::AutoLock lock(mControllersListLock); it = mControllersList.find(component_name); if (it != mControllersList.end()) { - ws = it->second; + WebsocketSession* ws = it->second; ws->sendJsonMessage(message); } } @@ -359,7 +357,6 @@ void CMessageBrokerController::deleteSubscriber(WebsocketSession* ws, int CMessageBrokerController::getSubscribersFd( std::string name, std::vector& result) { int res = 0; - std::map::iterator it; sync_primitives::AutoLock lock(mSubscribersListLock); std::pair::iterator, diff --git a/src/components/include/protocol/rpc_type.h b/src/components/include/protocol/rpc_type.h index db4a808cfd..fde8fe7885 100644 --- a/src/components/include/protocol/rpc_type.h +++ b/src/components/include/protocol/rpc_type.h @@ -49,7 +49,6 @@ enum RpcType { // Validate and map byte value to RPC type RpcType RpcTypeFromByte(uint8_t byte); // Check and convert RpcType to byte value ready to be transmitted -uint8_t RpcTypeToByte(RpcType type); const char* RpcTypeToString(RpcType type); diff --git a/src/components/include/protocol/service_type.h b/src/components/include/protocol/service_type.h index 803b8106b8..77a095f7e9 100644 --- a/src/components/include/protocol/service_type.h +++ b/src/components/include/protocol/service_type.h @@ -79,7 +79,6 @@ enum ServiceType { * Service types to binary stream */ ServiceType ServiceTypeFromByte(uint8_t type); -uint8_t ServiceTypeToByte(ServiceType type); } // namespace protocol_handler #endif // SRC_COMPONENTS_INCLUDE_PROTOCOL_SERVICE_TYPE_H_ diff --git a/src/components/policy/policy_external/include/policy/policy_helper.h b/src/components/policy/policy_external/include/policy/policy_helper.h index 69ba8806d4..87a9228c12 100644 --- a/src/components/policy/policy_external/include/policy/policy_helper.h +++ b/src/components/policy/policy_external/include/policy/policy_helper.h @@ -68,13 +68,6 @@ struct CompareGroupName { const StringsValueType& group_name_; }; -/* - * @brief Used for compare of policies parameters mapped with specific - * application ids - */ -bool operator!=(const policy_table::ApplicationParams& first, - const policy_table::ApplicationParams& second); - /** * @brief Helper struct for checking changes of application policies, which * come with update along with current data snapshot @@ -392,15 +385,6 @@ FunctionalGroupIDs ExcludeSame(const FunctionalGroupIDs& from, FunctionalGroupIDs Merge(const FunctionalGroupIDs& first, const FunctionalGroupIDs& second); -/** - * @brief Finds same values - * @param first First source of values - * @param second Second source of values - * @return Same values set, if any found - */ -FunctionalGroupIDs FindSame(const FunctionalGroupIDs& first, - const FunctionalGroupIDs& second); - /** * @brief Unwrap application policies from predefined values to specific policy * values, i.e. if application has "default", it will be assigned default diff --git a/src/components/policy/policy_external/src/cache_manager.cc b/src/components/policy/policy_external/src/cache_manager.cc index 67d8bdb2d1..570246adb7 100644 --- a/src/components/policy/policy_external/src/cache_manager.cc +++ b/src/components/policy/policy_external/src/cache_manager.cc @@ -166,7 +166,8 @@ struct LinkCollector typedef std::vector ApplicationsIds; - LinkCollector(std::map& links) : links_(links) {} + explicit LinkCollector(std::map& links) + : links_(links) {} void operator()(const policy_table::DeviceData::value_type& value) { using namespace policy_table; @@ -208,10 +209,12 @@ struct ExternalConsentConsentGroupAppender }; struct DefaultPolicyUpdater { - DefaultPolicyUpdater(const policy_table::ApplicationParams& default_params) + explicit DefaultPolicyUpdater( + const policy_table::ApplicationParams& default_params) : default_params_(default_params) {} - void operator()(policy_table::ApplicationPolicies::value_type& pt_value) { + void operator()( + policy_table::ApplicationPolicies::value_type& pt_value) const { if (policy::kDefaultId == pt_value.second.get_string()) { pt_value.second = default_params_; pt_value.second.set_to_string(policy::kDefaultId); @@ -1704,6 +1707,8 @@ std::vector CacheManager::GetUserFriendlyMsg( SDL_LOG_ERROR("No fallback language found for message code: " << *it); continue; } + // FIXME (VSemenyuk): message_string will always be overwritten by + // active_hmi_language_message_string message_string = fallback_message_string; } message_string = active_hmi_language_message_string; @@ -1827,10 +1832,6 @@ bool CacheManager::GetPriority(const std::string& policy_app_id, void CacheManager::CheckSnapshotInitialization() { CACHE_MANAGER_CHECK_VOID(); - if (!snapshot_) { - SDL_LOG_ERROR("Snapshot pointer is not initialized"); - return; - } *(snapshot_->policy_table.module_config.preloaded_pt) = false; @@ -2182,9 +2183,9 @@ int CacheManager::CountUnconsentedGroups(const std::string& policy_app_id, pt_->policy_table.app_policies_section; policy_table::Strings::iterator app_groups; - policy_table::Strings::iterator app_groups_end = app_groups; + policy_table::Strings::iterator app_groups_end; policy_table::Strings::iterator app_pre_groups; - policy_table::Strings::iterator app_pre_groups_end = app_pre_groups; + policy_table::Strings::iterator app_pre_groups_end; if (kDeviceId == policy_app_id) { app_groups = app_policies_section.device.groups.begin(); @@ -2294,11 +2295,10 @@ std::string CacheManager::GetCCPUVersionFromPT() const { bool CacheManager::IsMetaInfoPresent() const { CACHE_MANAGER_CHECK(false); - bool result = true; sync_primitives::AutoLock lock(cache_lock_); - result = NULL != pt_->policy_table.module_meta->ccpu_version && - NULL != pt_->policy_table.module_meta->wers_country_code && - NULL != pt_->policy_table.module_meta->language; + bool result = NULL != pt_->policy_table.module_meta->ccpu_version && + NULL != pt_->policy_table.module_meta->wers_country_code && + NULL != pt_->policy_table.module_meta->language; return result; } diff --git a/src/components/policy/policy_external/src/policy_helper.cc b/src/components/policy/policy_external/src/policy_helper.cc index 4607c3ca5f..e6605aed3a 100644 --- a/src/components/policy/policy_external/src/policy_helper.cc +++ b/src/components/policy/policy_external/src/policy_helper.cc @@ -102,25 +102,6 @@ bool CompareGroupName::operator()( return !(strcasecmp(gn_.c_str(), gn_compare.c_str())); } -bool operator!=(const policy_table::ApplicationParams& first, - const policy_table::ApplicationParams& second) { - if (first.groups.size() != second.groups.size()) { - return true; - } - StringsConstItr it_first = first.groups.begin(); - StringsConstItr it_first_end = first.groups.end(); - StringsConstItr it_second = second.groups.begin(); - StringsConstItr it_second_end = second.groups.end(); - for (; it_first != it_first_end; ++it_first) { - CompareGroupName gp(*it_first); - StringsConstItr it = std::find_if(it_second, it_second_end, gp); - if (it_second_end == it) { - return true; - } - } - return false; -} - CheckAppPolicy::CheckAppPolicy( PolicyManagerImpl* pm, const std::shared_ptr update, @@ -607,7 +588,6 @@ bool CheckAppPolicy::IsConsentRequired(const std::string& app_id, return false; } - bool is_preconsented = false; policy_table::Strings::value_type str(group_name); policy_table::Strings::iterator pre_begin = update_->policy_table.app_policies_section.apps[app_id] @@ -618,7 +598,7 @@ bool CheckAppPolicy::IsConsentRequired(const std::string& app_id, policy_table::Strings::iterator it2 = std::find(pre_begin, pre_end, str); - is_preconsented = pre_end != it2; + bool is_preconsented = pre_end != it2; return it->second.user_consent_prompt.is_initialized() && !is_preconsented; } @@ -768,7 +748,7 @@ bool CheckAppPolicy::IsEncryptionRequiredFlagChanged( return result; }; - auto get_app_rpcs = [](const std::string group_name, + auto get_app_rpcs = [](const std::string& group_name, const FunctionalGroupings& groups) -> rpc::Optional { auto it = groups.find(group_name); @@ -953,8 +933,7 @@ void FillNotificationData::UpdateParameters( // If 'parameters' section is omitted if (!in_parameters.is_initialized()) { - if (!does_require_user_consent_ || - (does_require_user_consent_ && kAllowedKey == current_key_)) { + if (!does_require_user_consent_ || kAllowedKey == current_key_) { out_parameter.any_parameter_allowed = true; } } @@ -1251,28 +1230,6 @@ FunctionalGroupIDs Merge(const FunctionalGroupIDs& first, return merged; } -FunctionalGroupIDs FindSame(const FunctionalGroupIDs& first, - const FunctionalGroupIDs& second) { - SDL_LOG_INFO("Find same groups"); - FunctionalGroupIDs first_copy(first); - FunctionalGroupIDs second_copy(second); - - std::sort(first_copy.begin(), first_copy.end()); - std::sort(second_copy.begin(), second_copy.end()); - - FunctionalGroupIDs same; - std::set_intersection(first_copy.begin(), - first_copy.end(), - second_copy.begin(), - second_copy.end(), - std::back_inserter(same)); - - same.resize( - std::distance(same.begin(), std::unique(same.begin(), same.end()))); - - return same; -} - bool UnwrapAppPolicies(policy_table::ApplicationPolicies& app_policies) { policy_table::ApplicationPolicies::iterator it_default = app_policies.find(kDefaultId); diff --git a/src/components/policy/policy_external/src/policy_manager_impl.cc b/src/components/policy/policy_external/src/policy_manager_impl.cc index 773c689409..fc7fc0f171 100644 --- a/src/components/policy/policy_external/src/policy_manager_impl.cc +++ b/src/components/policy/policy_external/src/policy_manager_impl.cc @@ -62,7 +62,7 @@ namespace { struct GroupNamesAppender : public std::unary_function { - GroupNamesAppender(policy_table::Strings& names) : names_(names) {} + explicit GroupNamesAppender(policy_table::Strings& names) : names_(names) {} void operator()(const policy::FunctionalGroupPermission& value) { names_.push_back(value.group_name); @@ -1827,13 +1827,12 @@ bool PolicyManagerImpl::IsNeedToUpdateExternalConsentStatus( ItemV difference_v; difference_v.resize(new_status_v.size() + existing_status_v.size()); - ItemV::iterator ci = difference_v.begin(); - ci = std::set_difference(new_status_v.begin(), - new_status_v.end(), - existing_status_v.begin(), - existing_status_v.end(), - difference_v.begin(), - ConsentStatusComparatorFunc); + ItemV::iterator ci = std::set_difference(new_status_v.begin(), + new_status_v.end(), + existing_status_v.begin(), + existing_status_v.end(), + difference_v.begin(), + ConsentStatusComparatorFunc); difference_v.resize(ci - difference_v.begin()); return !difference_v.empty(); @@ -2386,7 +2385,7 @@ void PolicyManagerImpl::SetDefaultHmiTypes( } struct HMITypeToInt { - int operator()(const policy_table::AppHMITypes::value_type item) { + int operator()(const policy_table::AppHMITypes::value_type item) const { return policy_table::AppHMIType(item); } }; @@ -2587,6 +2586,7 @@ __attribute__((visibility("default"))) policy::PolicyManager* CreateManager( return new policy::PolicyManagerImpl(); } +// cppcheck-suppress unusedFunction __attribute__((visibility("default"))) void DeleteManager( policy::PolicyManager* pm) { delete pm; diff --git a/src/components/policy/policy_external/src/policy_table/types.cc b/src/components/policy/policy_external/src/policy_table/types.cc index 1f344f5263..0194ac68a3 100644 --- a/src/components/policy/policy_external/src/policy_table/types.cc +++ b/src/components/policy/policy_external/src/policy_table/types.cc @@ -872,7 +872,6 @@ ModuleConfig::ModuleConfig(const Json::Value* value__) impl::ValueMember(value__, "lock_screen_dismissal_enabled")) {} void ModuleConfig::SafeCopyFrom(const ModuleConfig& from) { - exchange_after_x_days = from.exchange_after_x_days; exchange_after_x_kilometers = from.exchange_after_x_kilometers; exchange_after_x_days = from.exchange_after_x_days; exchange_after_x_ignition_cycles = from.exchange_after_x_ignition_cycles; diff --git a/src/components/policy/policy_external/src/sql_pt_representation.cc b/src/components/policy/policy_external/src/sql_pt_representation.cc index 36e363d922..fc9ebd96a9 100644 --- a/src/components/policy/policy_external/src/sql_pt_representation.cc +++ b/src/components/policy/policy_external/src/sql_pt_representation.cc @@ -1750,9 +1750,7 @@ SQLPTRepresentation::SelectCompositeVehicleDataItems() const { if (!vdi.is_initialized()) { return policy_table::VehicleDataItems(); } - for (const auto& item : vdi) { - result.push_back(item); - } + std::copy(vdi.begin(), vdi.end(), std::back_inserter(result)); } return result; diff --git a/src/components/policy/policy_regular/include/policy/policy_helper.h b/src/components/policy/policy_regular/include/policy/policy_helper.h index d5155cf91b..f01d132049 100644 --- a/src/components/policy/policy_regular/include/policy/policy_helper.h +++ b/src/components/policy/policy_regular/include/policy/policy_helper.h @@ -67,13 +67,6 @@ struct CompareGroupName { const StringsValueType& group_name_; }; -/* - * @brief Used for compare of policies parameters mapped with specific - * application ids - */ -bool operator!=(const policy_table::ApplicationParams& first, - const policy_table::ApplicationParams& second); - /* * @brief Helper struct for checking changes of application policies, which * come with update along with current data snapshot @@ -256,15 +249,6 @@ FunctionalGroupIDs ExcludeSame(const FunctionalGroupIDs& from, FunctionalGroupIDs Merge(const FunctionalGroupIDs& first, const FunctionalGroupIDs& second); -/** - * @brief Finds same values - * @param first First source of values - * @param second Second source of values - * @return Same values set, if any found - */ -FunctionalGroupIDs FindSame(const FunctionalGroupIDs& first, - const FunctionalGroupIDs& second); - /** * @brief Unwrap application policies from predefined values to specific policy * values, i.e. if application has "default", it will be assigned default diff --git a/src/components/policy/policy_regular/src/cache_manager.cc b/src/components/policy/policy_regular/src/cache_manager.cc index 5a75c47725..d031b5f027 100644 --- a/src/components/policy/policy_regular/src/cache_manager.cc +++ b/src/components/policy/policy_regular/src/cache_manager.cc @@ -79,7 +79,7 @@ SDL_CREATE_LOG_VARIABLE("Policy") } struct LanguageFinder { - LanguageFinder(const std::string& language) : language_(language) {} + explicit LanguageFinder(const std::string& language) : language_(language) {} bool operator()(const policy_table::Languages::value_type& lang) const { return !strcasecmp(language_.c_str(), lang.first.c_str()); } @@ -89,10 +89,12 @@ struct LanguageFinder { }; struct PolicyTableUpdater { - PolicyTableUpdater(const policy_table::ApplicationParams& default_params) + explicit PolicyTableUpdater( + const policy_table::ApplicationParams& default_params) : default_params_(default_params) {} - void operator()(policy_table::ApplicationPolicies::value_type& pt_value) { + void operator()( + policy_table::ApplicationPolicies::value_type& pt_value) const { if (policy::kDefaultId == pt_value.second.get_string()) { pt_value.second = default_params_; pt_value.second.set_to_string(policy::kDefaultId); @@ -1138,10 +1140,6 @@ bool CacheManager::GetPriority(const std::string& policy_app_id, void CacheManager::CheckSnapshotInitialization() { CACHE_MANAGER_CHECK_VOID(); - if (!snapshot_) { - SDL_LOG_ERROR("Snapshot pointer is not initialized"); - return; - } *(snapshot_->policy_table.module_config.preloaded_pt) = false; @@ -1309,8 +1307,6 @@ void CacheManager::PersistData() { copy_pt.policy_table.app_policies_section.apps.end(); bool is_revoked = false; - bool is_default_policy; - bool is_predata_policy; for (; app_policy_iter != app_policy_iter_end; ++app_policy_iter) { const std::string app_id = (*app_policy_iter).first; @@ -1321,7 +1317,7 @@ void CacheManager::PersistData() { copy_pt.policy_table.app_policies_section.apps[app_id].is_null(); } - is_default_policy = + bool is_default_policy = copy_pt.policy_table.app_policies_section.apps.end() != copy_pt.policy_table.app_policies_section.apps.find(app_id) && policy::kDefaultId == @@ -1329,7 +1325,7 @@ void CacheManager::PersistData() { .get_string(); // TODO(AOleynik): Remove this field from DB - is_predata_policy = + bool is_predata_policy = copy_pt.policy_table.app_policies_section.apps.end() != copy_pt.policy_table.app_policies_section.apps.find(app_id) && policy::kPreDataConsentId == diff --git a/src/components/policy/policy_regular/src/policy_helper.cc b/src/components/policy/policy_regular/src/policy_helper.cc index 7d99ff51c0..ec84486ea6 100644 --- a/src/components/policy/policy_regular/src/policy_helper.cc +++ b/src/components/policy/policy_regular/src/policy_helper.cc @@ -54,9 +54,10 @@ bool CompareStrings(const StringsValueType& first, } struct CheckGroupName { - CheckGroupName(const policy::StringsValueType& value) : value_(value) {} + explicit CheckGroupName(const policy::StringsValueType& value) + : value_(value) {} - bool operator()(const FunctionalGroupNames::value_type& value) { + bool operator()(const FunctionalGroupNames::value_type& value) const { return value.second.second == std::string(value_); } @@ -101,25 +102,6 @@ bool CompareGroupName::operator()( return !(strcasecmp(gn_.c_str(), gn_compare.c_str())); } -bool operator!=(const policy_table::ApplicationParams& first, - const policy_table::ApplicationParams& second) { - if (first.groups.size() != second.groups.size()) { - return true; - } - StringsConstItr it_first = first.groups.begin(); - StringsConstItr it_first_end = first.groups.end(); - StringsConstItr it_second = second.groups.begin(); - StringsConstItr it_second_end = second.groups.end(); - for (; it_first != it_first_end; ++it_first) { - CompareGroupName gp(*it_first); - StringsConstItr it = std::find_if(it_second, it_second_end, gp); - if (it_second_end == it) { - return true; - } - } - return false; -} - CheckAppPolicy::CheckAppPolicy( PolicyManagerImpl* pm, const std::shared_ptr update, @@ -559,8 +541,7 @@ bool CheckAppPolicy::IsConsentRequired(const std::string& app_id, return false; } - bool is_preconsented = false; - return it->second.user_consent_prompt.is_initialized() && !is_preconsented; + return it->second.user_consent_prompt.is_initialized(); } bool CheckAppPolicy::IsRequestTypeChanged( @@ -707,7 +688,7 @@ bool CheckAppPolicy::IsEncryptionRequiredFlagChanged( return result; }; - auto get_app_rpcs = [](const std::string group_name, + auto get_app_rpcs = [](const std::string& group_name, const FunctionalGroupings& groups) -> rpc::Optional { auto it = groups.find(group_name); @@ -1106,28 +1087,6 @@ FunctionalGroupIDs Merge(const FunctionalGroupIDs& first, return merged; } -FunctionalGroupIDs FindSame(const FunctionalGroupIDs& first, - const FunctionalGroupIDs& second) { - SDL_LOG_INFO("Find same groups"); - FunctionalGroupIDs first_copy(first); - FunctionalGroupIDs second_copy(second); - - std::sort(first_copy.begin(), first_copy.end()); - std::sort(second_copy.begin(), second_copy.end()); - - FunctionalGroupIDs same; - std::set_intersection(first_copy.begin(), - first_copy.end(), - second_copy.begin(), - second_copy.end(), - std::back_inserter(same)); - - same.resize( - std::distance(same.begin(), std::unique(same.begin(), same.end()))); - - return same; -} - bool UnwrapAppPolicies(policy_table::ApplicationPolicies& app_policies) { policy_table::ApplicationPolicies::iterator it = app_policies.begin(); policy_table::ApplicationPolicies::iterator it_default = diff --git a/src/components/policy/policy_regular/src/policy_manager_impl.cc b/src/components/policy/policy_regular/src/policy_manager_impl.cc index daf043f96b..6fbc4e798f 100644 --- a/src/components/policy/policy_regular/src/policy_manager_impl.cc +++ b/src/components/policy/policy_regular/src/policy_manager_impl.cc @@ -1708,7 +1708,7 @@ void PolicyManagerImpl::SetDefaultHmiTypes( } struct HMITypeToInt { - int operator()(const policy_table::AppHMITypes::value_type item) { + int operator()(const policy_table::AppHMITypes::value_type item) const { return policy_table::AppHMIType(item); } }; diff --git a/src/components/policy/policy_regular/src/sql_pt_representation.cc b/src/components/policy/policy_regular/src/sql_pt_representation.cc index 49b7f2e7be..bf578aebe5 100644 --- a/src/components/policy/policy_regular/src/sql_pt_representation.cc +++ b/src/components/policy/policy_regular/src/sql_pt_representation.cc @@ -2770,9 +2770,7 @@ SQLPTRepresentation::SelectCompositeVehicleDataItems() const { if (!vdi.is_initialized()) { return policy_table::VehicleDataItems(); } - for (const auto& item : vdi) { - result.push_back(item); - } + std::copy(vdi.begin(), vdi.end(), std::back_inserter(result)); } return result; diff --git a/src/components/protocol/src/rpc_type.cc b/src/components/protocol/src/rpc_type.cc index fb9845d148..0e2edb34e8 100644 --- a/src/components/protocol/src/rpc_type.cc +++ b/src/components/protocol/src/rpc_type.cc @@ -62,11 +62,6 @@ RpcType RpcTypeFromByte(uint8_t byte) { return supported_type ? type : kRpcTypeReserved; } -uint8_t RpcTypeToByte(RpcType type) { - DCHECK(IsSupported(type)); - return uint8_t(type); -} - const char* RpcTypeToString(RpcType type) { switch (type) { case kRpcTypeRequest: diff --git a/src/components/protocol/src/service_type.cc b/src/components/protocol/src/service_type.cc index e6417b07d0..b1674e10d8 100644 --- a/src/components/protocol/src/service_type.cc +++ b/src/components/protocol/src/service_type.cc @@ -63,9 +63,4 @@ ServiceType ServiceTypeFromByte(uint8_t byte) { return valid_type ? type : kInvalidServiceType; } -uint8_t ServiceTypeToByte(ServiceType type) { - DCHECK(IsValid(type)); - return uint8_t(type); -} - } // namespace protocol_handler diff --git a/src/components/protocol_handler/src/incoming_data_handler.cc b/src/components/protocol_handler/src/incoming_data_handler.cc index f0692b3304..08997acaac 100644 --- a/src/components/protocol_handler/src/incoming_data_handler.cc +++ b/src/components/protocol_handler/src/incoming_data_handler.cc @@ -158,7 +158,7 @@ RESULT_CODE IncomingDataHandler::CreateFrame( } SDL_LOG_DEBUG("Payload size " << header_.dataSize); const uint32_t packet_size = GetPacketSize(header_); - if (packet_size <= 0) { + if (packet_size == 0) { SDL_LOG_WARN("Null packet size"); ++data_it; --data_size; diff --git a/src/components/protocol_handler/src/protocol_handler_impl.cc b/src/components/protocol_handler/src/protocol_handler_impl.cc index f1179e7107..dc710549cd 100644 --- a/src/components/protocol_handler/src/protocol_handler_impl.cc +++ b/src/components/protocol_handler/src/protocol_handler_impl.cc @@ -1243,7 +1243,7 @@ void ProtocolHandlerImpl::OnTransportConfigUpdated( if (st.secondary_transport != kDisabledSecondary) { SendTransportUpdateEvent(st.primary_transport, itr->first); } - itr++; + ++itr; } } @@ -2573,7 +2573,7 @@ void ProtocolHandlerImpl::GenerateSecondaryTransportsForStartSessionAck( secondaryTransports.push_back("TCP_WIFI"); } - it++; + ++it; } } @@ -2600,7 +2600,7 @@ void ProtocolHandlerImpl::GenerateServiceTransportsForStartSessionAck( bool fPrimaryAdded = false; bool fSecondaryAdded = false; std::vector::const_iterator it = service_transports.begin(); - for (; it != service_transports.end(); it++) { + for (; it != service_transports.end(); ++it) { const utils::custom_string::CustomString transport(*it); SDL_LOG_TRACE( diff --git a/src/components/protocol_handler/src/protocol_payload.cc b/src/components/protocol_handler/src/protocol_payload.cc index 8916fe91b0..a18f04f8a1 100644 --- a/src/components/protocol_handler/src/protocol_payload.cc +++ b/src/components/protocol_handler/src/protocol_payload.cc @@ -93,8 +93,11 @@ std::ostream& operator<<(std::ostream& os, const ProtocolPayloadV2& payload) { << ", data (bytes): " << payload.data.size() << ")"; } +#ifdef BUILD_TESTS +// cppcheck-suppress unusedFunction //Used in unit tests size_t ProtocolPayloadV2SizeBits() { return PayloadHeaderBits; } +#endif // BUILD_TESTS } // namespace protocol_handler diff --git a/src/components/security_manager/src/crypto_manager_impl.cc b/src/components/security_manager/src/crypto_manager_impl.cc index 9ee820b19d..845485a6c3 100644 --- a/src/components/security_manager/src/crypto_manager_impl.cc +++ b/src/components/security_manager/src/crypto_manager_impl.cc @@ -338,10 +338,16 @@ bool CryptoManagerImpl::IsCertificateUpdateRequired( const double seconds = difftime(certificates_time, system_time); - SDL_LOG_DEBUG( - "Certificate UTC time: " << asctime(gmtime(&certificates_time))); + const size_t maxsize = 40; + char certificate_utc_time[maxsize]; + std::strftime( + certificate_utc_time, maxsize, "%c", gmtime(&certificates_time)); + SDL_LOG_DEBUG("Certificate UTC time: " << certificate_utc_time); + + char host_utc_time[maxsize]; + std::strftime(host_utc_time, maxsize, "%c", gmtime(&system_time)); + SDL_LOG_DEBUG("Host UTC time: " << host_utc_time); - SDL_LOG_DEBUG("Host UTC time: " << asctime(gmtime(&system_time))); SDL_LOG_DEBUG("Seconds before expiration: " << seconds); if (seconds < 0) { SDL_LOG_WARN("Certificate is already expired."); diff --git a/src/components/security_manager/test/security_query_matcher.cc b/src/components/security_manager/test/security_query_matcher.cc index 1bf22bf8cd..b9a4f83b10 100644 --- a/src/components/security_manager/test/security_query_matcher.cc +++ b/src/components/security_manager/test/security_query_matcher.cc @@ -90,15 +90,12 @@ MATCHER_P(InternalErrorWithErrId, } // namespace security_manager_test } // namespace components } // namespace test - /* - * Matcher for checking QueryHeader equal in GTests - */ -::testing::AssertionResult QueryHeader_EQ( - const char* m_expr, - const char* n_expr, - const ::security_manager::SecurityQuery::QueryHeader& q1, - const ::security_manager::SecurityQuery::QueryHeader& q2); +#ifdef BUILD_TESTS +/* + * Matcher for checking QueryHeader equal in GTests + */ +// cppcheck-suppress unusedFunction //Used in unit tests ::testing::AssertionResult QueryHeader_EQ( const char* m_expr, const char* n_expr, @@ -121,3 +118,4 @@ MATCHER_P(InternalErrorWithErrId, << ", seq_number_2=" << q2.seq_number; return ::testing::AssertionSuccess(); } +#endif // BUILD_TESTS diff --git a/src/components/smart_objects/src/object_schema_item.cc b/src/components/smart_objects/src/object_schema_item.cc index 7e5c49bae0..920d548c48 100644 --- a/src/components/smart_objects/src/object_schema_item.cc +++ b/src/components/smart_objects/src/object_schema_item.cc @@ -146,7 +146,7 @@ errors::eType CObjectSchemaItem::validate( } const SmartObject& field = object.getElement(key); - errors::eType result = errors::OK; + errors::eType result; // Check if MessageVersion matches schema version if (correct_member) { result = diff --git a/src/components/smart_objects/test/SmartObjectConvertionTime_test.cc b/src/components/smart_objects/test/SmartObjectConvertionTime_test.cc index 555239c489..1ce383e44d 100644 --- a/src/components/smart_objects/test/SmartObjectConvertionTime_test.cc +++ b/src/components/smart_objects/test/SmartObjectConvertionTime_test.cc @@ -270,367 +270,279 @@ class SmartObjectConvertionTimeTest : public ::testing::Test { return CSmartSchema(CObjectSchemaItem::create(rootMembersMap)); } - // Create SmartObjectSchema for test object - CSmartSchema initObjectSchema() { - std::set resultCode_allowedEnumSubsetValues; - resultCode_allowedEnumSubsetValues.insert( - TestType::APPLICATION_NOT_REGISTERED); - resultCode_allowedEnumSubsetValues.insert(TestType::SUCCESS); - resultCode_allowedEnumSubsetValues.insert( - TestType::TOO_MANY_PENDING_REQUESTS); - resultCode_allowedEnumSubsetValues.insert(TestType::REJECTED); - resultCode_allowedEnumSubsetValues.insert(TestType::INVALID_DATA); - resultCode_allowedEnumSubsetValues.insert(TestType::OUT_OF_MEMORY); - resultCode_allowedEnumSubsetValues.insert(TestType::ABORTED); - resultCode_allowedEnumSubsetValues.insert(TestType::USER_DISALLOWED); - resultCode_allowedEnumSubsetValues.insert(TestType::GENERIC_ERROR); - resultCode_allowedEnumSubsetValues.insert(TestType::DISALLOWED); - - std::set functionId_allowedEnumSubsetValues; - functionId_allowedEnumSubsetValues.insert( - FunctionIdTest::RegisterAppInterface); - functionId_allowedEnumSubsetValues.insert( - FunctionIdTest::UnregisterAppInterface); - functionId_allowedEnumSubsetValues.insert( - FunctionIdTest::SetGlobalProperties); - - std::set messageType_allowedEnumSubsetValues; - messageType_allowedEnumSubsetValues.insert(MessageTypeTest::request); - messageType_allowedEnumSubsetValues.insert(MessageTypeTest::response); - messageType_allowedEnumSubsetValues.insert(MessageTypeTest::notification); - - ISchemaItemPtr success_SchemaItem = - CBoolSchemaItem::create(TSchemaItemParameter()); - - ISchemaItemPtr resultCode_SchemaItem = - TEnumSchemaItem::create( - resultCode_allowedEnumSubsetValues, - TSchemaItemParameter()); - - ISchemaItemPtr info_SchemaItem = - CStringSchemaItem::create(TSchemaItemParameter(0), - TSchemaItemParameter(1000), - TSchemaItemParameter()); - - ISchemaItemPtr tryAgainTime_SchemaItem = - TNumberSchemaItem::create(TSchemaItemParameter(0), - TSchemaItemParameter(2000000000), - TSchemaItemParameter()); - - std::map schemaMembersMap; - - schemaMembersMap["success"] = SMember(success_SchemaItem, true); - schemaMembersMap["resultCode"] = SMember(resultCode_SchemaItem, true); - schemaMembersMap["info"] = SMember(info_SchemaItem, false); - schemaMembersMap["tryAgainTime"] = SMember(tryAgainTime_SchemaItem, true); - - std::map paramsMembersMap; - paramsMembersMap - [ns_smart_device_link::ns_json_handler::strings::S_FUNCTION_ID] = - SMember(TEnumSchemaItem::create( - functionId_allowedEnumSubsetValues), - true); - paramsMembersMap - [ns_smart_device_link::ns_json_handler::strings::S_MESSAGE_TYPE] = - SMember(TEnumSchemaItem::create( - messageType_allowedEnumSubsetValues), - true); - paramsMembersMap - [ns_smart_device_link::ns_json_handler::strings::S_CORRELATION_ID] = - SMember(TNumberSchemaItem::create(), true); - paramsMembersMap - [ns_smart_device_link::ns_json_handler::strings::S_PROTOCOL_VERSION] = - SMember( - TNumberSchemaItem::create(TSchemaItemParameter(1), - TSchemaItemParameter(2)), - true); - paramsMembersMap - [ns_smart_device_link::ns_json_handler::strings::S_PROTOCOL_TYPE] = - SMember(TNumberSchemaItem::create(), true); - - std::map rootMembersMap; - rootMembersMap - [ns_smart_device_link::ns_json_handler::strings::S_MSG_PARAMS] = - SMember(CObjectSchemaItem::create(schemaMembersMap), true); - rootMembersMap[ns_smart_device_link::ns_json_handler::strings::S_PARAMS] = - SMember(CObjectSchemaItem::create(paramsMembersMap), true); - return CSmartSchema(CObjectSchemaItem::create(rootMembersMap)); + TEST_F(SmartObjectConvertionTimeTest, test_int_object_convertion) { + SmartObject srcObj, dstObj; + CSmartSchema schema = initObjectSchema(); + + srcObj.setSchema(schema); + dstObj.setSchema(schema); + + srcObj[S_PARAMS][S_MESSAGE_TYPE] = MessageTypeTest::request; + srcObj[S_PARAMS][S_FUNCTION_ID] = FunctionIdTest::RegisterAppInterface; + srcObj[S_PARAMS][S_CORRELATION_ID] = 13; + srcObj[S_PARAMS][S_PROTOCOL_TYPE] = 0; + srcObj[S_PARAMS][S_PROTOCOL_VERSION] = 1; + srcObj[S_MSG_PARAMS]["value"] = 5; + + printf("\n INT value.\n"); + calculateConvertionTime(srcObj, dstObj); } -}; -TEST_F(SmartObjectConvertionTimeTest, test_int_object_convertion) { - SmartObject srcObj, dstObj; - CSmartSchema schema = initObjectSchema(); + TEST_F(SmartObjectConvertionTimeTest, test_double_object_convertion) { + SmartObject srcObj, dstObj; + CSmartSchema schema = initObjectSchema(); + + srcObj.setSchema(schema); + dstObj.setSchema(schema); + + srcObj[S_PARAMS][S_MESSAGE_TYPE] = MessageTypeTest::request; + srcObj[S_PARAMS][S_FUNCTION_ID] = FunctionIdTest::RegisterAppInterface; + srcObj[S_PARAMS][S_CORRELATION_ID] = 13; + srcObj[S_PARAMS][S_PROTOCOL_TYPE] = 0; + srcObj[S_PARAMS][S_PROTOCOL_VERSION] = 2; + srcObj[S_MSG_PARAMS]["value1"] = 3.1415926; + srcObj[S_MSG_PARAMS]["value2"] = 32.6; + srcObj[S_MSG_PARAMS]["value3"] = 33.945; + srcObj[S_MSG_PARAMS]["value4"] = -12.5487698; + srcObj[S_MSG_PARAMS]["value5"] = 0.61287346; + + printf("\n Double value.\n"); + calculateConvertionTime(srcObj, dstObj); + } - srcObj.setSchema(schema); - dstObj.setSchema(schema); + TEST_F(SmartObjectConvertionTimeTest, test_some_object_convertion) { + SmartObject srcObj, dstObj; + CSmartSchema schema = initObjectSchema(); + + srcObj.setSchema(schema); + dstObj.setSchema(schema); + + srcObj[S_PARAMS][S_MESSAGE_TYPE] = MessageTypeTest::request; + srcObj[S_PARAMS][S_FUNCTION_ID] = FunctionIdTest::RegisterAppInterface; + srcObj[S_PARAMS][S_CORRELATION_ID] = 13; + srcObj[S_PARAMS][S_PROTOCOL_TYPE] = 0; + srcObj[S_PARAMS][S_PROTOCOL_VERSION] = 2; + srcObj[S_MSG_PARAMS]["appId"] = "APP ID"; + srcObj[S_MSG_PARAMS]["appName"] = "APP NAME"; + srcObj[S_MSG_PARAMS]["appType"][0] = "SYSTEM"; + srcObj[S_MSG_PARAMS]["appType"][1] = "COMMUNICATION"; + srcObj[S_MSG_PARAMS]["hmiDisplayLanguageDesired"] = "RU-RU"; + srcObj[S_MSG_PARAMS]["isMediaApplication"] = true; + srcObj[S_MSG_PARAMS]["languageDesired"] = "EN-US"; + srcObj[S_MSG_PARAMS]["ngnMediaScreenAppName"] = "SCREEN NAME"; + srcObj[S_MSG_PARAMS]["syncMsgVersion"]["majorVersion"] = 2; + srcObj[S_MSG_PARAMS]["syncMsgVersion"]["minorVersion"] = 10; + srcObj[S_MSG_PARAMS]["syncMsgVersion"]["patchVersion"] = 5; + + srcObj[S_MSG_PARAMS]["ttsName"][0]["text"] = "ABC"; + srcObj[S_MSG_PARAMS]["ttsName"][0]["type"] = "TEXT"; + srcObj[S_MSG_PARAMS]["vrSynonyms"][0] = "Synonym1"; + srcObj[S_MSG_PARAMS]["vrSynonyms"][1] = "Synonym2"; + srcObj[S_MSG_PARAMS]["null"] = SmartObject(); + srcObj[S_MSG_PARAMS]["double"] = -0.1234; + + printf("\n Random object.\n"); + calculateConvertionTime(srcObj, dstObj); + } - srcObj[S_PARAMS][S_MESSAGE_TYPE] = MessageTypeTest::request; - srcObj[S_PARAMS][S_FUNCTION_ID] = FunctionIdTest::RegisterAppInterface; - srcObj[S_PARAMS][S_CORRELATION_ID] = 13; - srcObj[S_PARAMS][S_PROTOCOL_TYPE] = 0; - srcObj[S_PARAMS][S_PROTOCOL_VERSION] = 1; - srcObj[S_MSG_PARAMS]["value"] = 5; + TEST_F(SmartObjectConvertionTimeTest, test_map_object_convertion) { + SmartObject srcObj, dstObj, mapObj, innerObj; + CSmartSchema schema = initObjectSchema(); + + srcObj.setSchema(schema); + dstObj.setSchema(schema); + + // First iteration + mapObj["request"]["name"] = "My Request"; + mapObj["request"]["id"] = 123; + mapObj["response"]["name"] = "My Response"; + mapObj["response"]["id"] = 456; + mapObj["we"]["need"]["to"]["go"]["deeper"] = true; + + srcObj[S_PARAMS][S_MESSAGE_TYPE] = MessageTypeTest::request; + srcObj[S_PARAMS][S_FUNCTION_ID] = FunctionIdTest::RegisterAppInterface; + srcObj[S_PARAMS][S_CORRELATION_ID] = 13; + srcObj[S_PARAMS][S_PROTOCOL_TYPE] = 0; + srcObj[S_PARAMS][S_PROTOCOL_VERSION] = 2; + srcObj[S_MSG_PARAMS]["value"] = mapObj; + + printf("\n MAP object.\n"); + calculateConvertionTime(srcObj, dstObj); + + // Second iteration + innerObj = mapObj; + mapObj["request"]["value"] = innerObj; + mapObj["response"]["value"] = innerObj; + mapObj["we"]["need"]["to"]["go"]["deeper"]["value"] = innerObj; + srcObj[S_MSG_PARAMS]["value"] = mapObj; + + printf("\n Complex MAP object.\n"); + calculateConvertionTime(srcObj, dstObj); + + // Third iteration + innerObj = mapObj; + mapObj["request"]["value"] = innerObj; + mapObj["response"]["value"] = innerObj; + mapObj["we"]["need"]["to"]["go"]["deeper"]["value"] = innerObj; + srcObj[S_MSG_PARAMS]["value"] = mapObj; + + printf("\n Very Complex MAP object.\n"); + calculateConvertionTime(srcObj, dstObj); + + // Last iteration + innerObj = mapObj; + mapObj["request"]["value"] = innerObj; + mapObj["response"]["value"] = innerObj; + mapObj["we"]["need"]["to"]["go"]["deeper"]["value"] = innerObj; + srcObj[S_MSG_PARAMS]["value"] = mapObj; + + printf("\n Very Very Complex MAP object.\n"); + calculateConvertionTime(srcObj, dstObj); + } - printf("\n INT value.\n"); - calculateConvertionTime(srcObj, dstObj); -} + TEST_F(SmartObjectConvertionTimeTest, test_array_convertion) { + SmartObject srcObj, dstObj, arrayObj, innerObj; + CSmartSchema schema = initObjectSchema(); + int arraySize = 10; -TEST_F(SmartObjectConvertionTimeTest, test_double_object_convertion) { - SmartObject srcObj, dstObj; - CSmartSchema schema = initObjectSchema(); - - srcObj.setSchema(schema); - dstObj.setSchema(schema); - - srcObj[S_PARAMS][S_MESSAGE_TYPE] = MessageTypeTest::request; - srcObj[S_PARAMS][S_FUNCTION_ID] = FunctionIdTest::RegisterAppInterface; - srcObj[S_PARAMS][S_CORRELATION_ID] = 13; - srcObj[S_PARAMS][S_PROTOCOL_TYPE] = 0; - srcObj[S_PARAMS][S_PROTOCOL_VERSION] = 2; - srcObj[S_MSG_PARAMS]["value1"] = 3.1415926; - srcObj[S_MSG_PARAMS]["value2"] = 32.6; - srcObj[S_MSG_PARAMS]["value3"] = 33.945; - srcObj[S_MSG_PARAMS]["value4"] = -12.5487698; - srcObj[S_MSG_PARAMS]["value5"] = 0.61287346; - - printf("\n Double value.\n"); - calculateConvertionTime(srcObj, dstObj); -} + srcObj.setSchema(schema); + dstObj.setSchema(schema); -TEST_F(SmartObjectConvertionTimeTest, test_some_object_convertion) { - SmartObject srcObj, dstObj; - CSmartSchema schema = initObjectSchema(); - - srcObj.setSchema(schema); - dstObj.setSchema(schema); - - srcObj[S_PARAMS][S_MESSAGE_TYPE] = MessageTypeTest::request; - srcObj[S_PARAMS][S_FUNCTION_ID] = FunctionIdTest::RegisterAppInterface; - srcObj[S_PARAMS][S_CORRELATION_ID] = 13; - srcObj[S_PARAMS][S_PROTOCOL_TYPE] = 0; - srcObj[S_PARAMS][S_PROTOCOL_VERSION] = 2; - srcObj[S_MSG_PARAMS]["appId"] = "APP ID"; - srcObj[S_MSG_PARAMS]["appName"] = "APP NAME"; - srcObj[S_MSG_PARAMS]["appType"][0] = "SYSTEM"; - srcObj[S_MSG_PARAMS]["appType"][1] = "COMMUNICATION"; - srcObj[S_MSG_PARAMS]["hmiDisplayLanguageDesired"] = "RU-RU"; - srcObj[S_MSG_PARAMS]["isMediaApplication"] = true; - srcObj[S_MSG_PARAMS]["languageDesired"] = "EN-US"; - srcObj[S_MSG_PARAMS]["ngnMediaScreenAppName"] = "SCREEN NAME"; - srcObj[S_MSG_PARAMS]["syncMsgVersion"]["majorVersion"] = 2; - srcObj[S_MSG_PARAMS]["syncMsgVersion"]["minorVersion"] = 10; - srcObj[S_MSG_PARAMS]["syncMsgVersion"]["patchVersion"] = 5; - - srcObj[S_MSG_PARAMS]["ttsName"][0]["text"] = "ABC"; - srcObj[S_MSG_PARAMS]["ttsName"][0]["type"] = "TEXT"; - srcObj[S_MSG_PARAMS]["vrSynonyms"][0] = "Synonym1"; - srcObj[S_MSG_PARAMS]["vrSynonyms"][1] = "Synonym2"; - srcObj[S_MSG_PARAMS]["null"] = SmartObject(); - srcObj[S_MSG_PARAMS]["double"] = -0.1234; - - printf("\n Random object.\n"); - calculateConvertionTime(srcObj, dstObj); -} + // First iteration + for (int i = 0; i < arraySize; i++) { + arrayObj[i] = rand(); + } -TEST_F(SmartObjectConvertionTimeTest, test_map_object_convertion) { - SmartObject srcObj, dstObj, mapObj, innerObj; - CSmartSchema schema = initObjectSchema(); - - srcObj.setSchema(schema); - dstObj.setSchema(schema); - - // First iteration - mapObj["request"]["name"] = "My Request"; - mapObj["request"]["id"] = 123; - mapObj["response"]["name"] = "My Response"; - mapObj["response"]["id"] = 456; - mapObj["we"]["need"]["to"]["go"]["deeper"] = true; - - srcObj[S_PARAMS][S_MESSAGE_TYPE] = MessageTypeTest::request; - srcObj[S_PARAMS][S_FUNCTION_ID] = FunctionIdTest::RegisterAppInterface; - srcObj[S_PARAMS][S_CORRELATION_ID] = 13; - srcObj[S_PARAMS][S_PROTOCOL_TYPE] = 0; - srcObj[S_PARAMS][S_PROTOCOL_VERSION] = 2; - srcObj[S_MSG_PARAMS]["value"] = mapObj; - - printf("\n MAP object.\n"); - calculateConvertionTime(srcObj, dstObj); - - // Second iteration - innerObj = mapObj; - mapObj["request"]["value"] = innerObj; - mapObj["response"]["value"] = innerObj; - mapObj["we"]["need"]["to"]["go"]["deeper"]["value"] = innerObj; - srcObj[S_MSG_PARAMS]["value"] = mapObj; - - printf("\n Complex MAP object.\n"); - calculateConvertionTime(srcObj, dstObj); - - // Third iteration - innerObj = mapObj; - mapObj["request"]["value"] = innerObj; - mapObj["response"]["value"] = innerObj; - mapObj["we"]["need"]["to"]["go"]["deeper"]["value"] = innerObj; - srcObj[S_MSG_PARAMS]["value"] = mapObj; - - printf("\n Very Complex MAP object.\n"); - calculateConvertionTime(srcObj, dstObj); - - // Last iteration - innerObj = mapObj; - mapObj["request"]["value"] = innerObj; - mapObj["response"]["value"] = innerObj; - mapObj["we"]["need"]["to"]["go"]["deeper"]["value"] = innerObj; - srcObj[S_MSG_PARAMS]["value"] = mapObj; - - printf("\n Very Very Complex MAP object.\n"); - calculateConvertionTime(srcObj, dstObj); -} + srcObj[S_PARAMS][S_MESSAGE_TYPE] = MessageTypeTest::request; + srcObj[S_PARAMS][S_FUNCTION_ID] = FunctionIdTest::RegisterAppInterface; + srcObj[S_PARAMS][S_CORRELATION_ID] = 13; + srcObj[S_PARAMS][S_PROTOCOL_TYPE] = 0; + srcObj[S_PARAMS][S_PROTOCOL_VERSION] = 2; + srcObj[S_MSG_PARAMS]["array"] = arrayObj; + + printf("\n Array object [%d].\n", arraySize); + calculateConvertionTime(srcObj, dstObj); + + // Second iteration + printf("\n Array object [%d x %d].\n", arraySize, arraySize); + innerObj = arrayObj; + for (int i = 0; i < arraySize; i++) { + arrayObj[i] = innerObj; + } -TEST_F(SmartObjectConvertionTimeTest, test_array_convertion) { - SmartObject srcObj, dstObj, arrayObj, innerObj; - CSmartSchema schema = initObjectSchema(); - int arraySize = 10; + srcObj[S_PARAMS][S_MESSAGE_TYPE] = MessageTypeTest::request; + srcObj[S_PARAMS][S_FUNCTION_ID] = FunctionIdTest::RegisterAppInterface; + srcObj[S_PARAMS][S_CORRELATION_ID] = 13; + srcObj[S_PARAMS][S_PROTOCOL_TYPE] = 0; + srcObj[S_PARAMS][S_PROTOCOL_VERSION] = 2; + srcObj[S_MSG_PARAMS]["array"] = arrayObj; - srcObj.setSchema(schema); - dstObj.setSchema(schema); + calculateConvertionTime(srcObj, dstObj); - // First iteration - for (int i = 0; i < arraySize; i++) { - arrayObj[i] = rand(); - } + // Third iteration + printf( + "\n Array object [%d x %d x %d].\n", arraySize, arraySize, arraySize); + innerObj = arrayObj; + for (int i = 0; i < arraySize; i++) { + arrayObj[i] = innerObj; + } - srcObj[S_PARAMS][S_MESSAGE_TYPE] = MessageTypeTest::request; - srcObj[S_PARAMS][S_FUNCTION_ID] = FunctionIdTest::RegisterAppInterface; - srcObj[S_PARAMS][S_CORRELATION_ID] = 13; - srcObj[S_PARAMS][S_PROTOCOL_TYPE] = 0; - srcObj[S_PARAMS][S_PROTOCOL_VERSION] = 2; - srcObj[S_MSG_PARAMS]["array"] = arrayObj; - - printf("\n Array object [%d].\n", arraySize); - calculateConvertionTime(srcObj, dstObj); - - // Second iteration - printf("\n Array object [%d x %d].\n", arraySize, arraySize); - innerObj = arrayObj; - for (int i = 0; i < arraySize; i++) { - arrayObj[i] = innerObj; - } + srcObj[S_PARAMS][S_MESSAGE_TYPE] = MessageTypeTest::request; + srcObj[S_PARAMS][S_FUNCTION_ID] = FunctionIdTest::RegisterAppInterface; + srcObj[S_PARAMS][S_CORRELATION_ID] = 13; + srcObj[S_PARAMS][S_PROTOCOL_TYPE] = 0; + srcObj[S_PARAMS][S_PROTOCOL_VERSION] = 2; + srcObj[S_MSG_PARAMS]["array"] = arrayObj; + + calculateConvertionTime(srcObj, dstObj); + + // Fourth iteration + printf("\n Array object [%d x %d x %d x %d].\n", + arraySize, + arraySize, + arraySize, + arraySize); + innerObj = arrayObj; + for (int i = 0; i < arraySize; i++) { + arrayObj[i] = innerObj; + } - srcObj[S_PARAMS][S_MESSAGE_TYPE] = MessageTypeTest::request; - srcObj[S_PARAMS][S_FUNCTION_ID] = FunctionIdTest::RegisterAppInterface; - srcObj[S_PARAMS][S_CORRELATION_ID] = 13; - srcObj[S_PARAMS][S_PROTOCOL_TYPE] = 0; - srcObj[S_PARAMS][S_PROTOCOL_VERSION] = 2; - srcObj[S_MSG_PARAMS]["array"] = arrayObj; + srcObj[S_PARAMS][S_MESSAGE_TYPE] = MessageTypeTest::request; + srcObj[S_PARAMS][S_FUNCTION_ID] = FunctionIdTest::RegisterAppInterface; + srcObj[S_PARAMS][S_CORRELATION_ID] = 13; + srcObj[S_PARAMS][S_PROTOCOL_TYPE] = 0; + srcObj[S_PARAMS][S_PROTOCOL_VERSION] = 2; + srcObj[S_MSG_PARAMS]["array"] = arrayObj; + + calculateConvertionTime(srcObj, dstObj); + + // Last iteration + printf("\n Array object [%d x %d x %d x %d x %d].\n", + arraySize, + arraySize, + arraySize, + arraySize, + arraySize); + innerObj = arrayObj; + for (int i = 0; i < arraySize; i++) { + arrayObj[i] = innerObj; + } - calculateConvertionTime(srcObj, dstObj); + srcObj[S_PARAMS][S_MESSAGE_TYPE] = MessageTypeTest::request; + srcObj[S_PARAMS][S_FUNCTION_ID] = FunctionIdTest::RegisterAppInterface; + srcObj[S_PARAMS][S_CORRELATION_ID] = 13; + srcObj[S_PARAMS][S_PROTOCOL_TYPE] = 0; + srcObj[S_PARAMS][S_PROTOCOL_VERSION] = 2; + srcObj[S_MSG_PARAMS]["array"] = arrayObj; - // Third iteration - printf("\n Array object [%d x %d x %d].\n", arraySize, arraySize, arraySize); - innerObj = arrayObj; - for (int i = 0; i < arraySize; i++) { - arrayObj[i] = innerObj; + calculateConvertionTime(srcObj, dstObj); } - srcObj[S_PARAMS][S_MESSAGE_TYPE] = MessageTypeTest::request; - srcObj[S_PARAMS][S_FUNCTION_ID] = FunctionIdTest::RegisterAppInterface; - srcObj[S_PARAMS][S_CORRELATION_ID] = 13; - srcObj[S_PARAMS][S_PROTOCOL_TYPE] = 0; - srcObj[S_PARAMS][S_PROTOCOL_VERSION] = 2; - srcObj[S_MSG_PARAMS]["array"] = arrayObj; - - calculateConvertionTime(srcObj, dstObj); - - // Fourth iteration - printf("\n Array object [%d x %d x %d x %d].\n", - arraySize, - arraySize, - arraySize, - arraySize); - innerObj = arrayObj; - for (int i = 0; i < arraySize; i++) { - arrayObj[i] = innerObj; + TEST_F(SmartObjectConvertionTimeTest, test_object_with_enum_convertion) { + SmartObject srcObj, dstObj; + CSmartSchema schema = initObjectSchema(); + + srcObj.setSchema(schema); + dstObj.setSchema(schema); + + srcObj[S_PARAMS][S_MESSAGE_TYPE] = MessageTypeTest::request; + srcObj[S_PARAMS][S_FUNCTION_ID] = FunctionIdTest::RegisterAppInterface; + srcObj[S_PARAMS][S_CORRELATION_ID] = 13; + srcObj[S_PARAMS][S_PROTOCOL_TYPE] = 0; + srcObj[S_PARAMS][S_PROTOCOL_VERSION] = 2; + srcObj[S_MSG_PARAMS]["success"] = true; + srcObj[S_MSG_PARAMS]["resultCode"] = 2; + srcObj[S_MSG_PARAMS]["info"] = "Some string"; + srcObj[S_MSG_PARAMS]["tryAgainTime"] = 322; + srcObj.setSchema(schema); + + printf("\n Object with enum.\n"); + calculateConvertionTime(srcObj, dstObj); } - srcObj[S_PARAMS][S_MESSAGE_TYPE] = MessageTypeTest::request; - srcObj[S_PARAMS][S_FUNCTION_ID] = FunctionIdTest::RegisterAppInterface; - srcObj[S_PARAMS][S_CORRELATION_ID] = 13; - srcObj[S_PARAMS][S_PROTOCOL_TYPE] = 0; - srcObj[S_PARAMS][S_PROTOCOL_VERSION] = 2; - srcObj[S_MSG_PARAMS]["array"] = arrayObj; - - calculateConvertionTime(srcObj, dstObj); - - // Last iteration - printf("\n Array object [%d x %d x %d x %d x %d].\n", - arraySize, - arraySize, - arraySize, - arraySize, - arraySize); - innerObj = arrayObj; - for (int i = 0; i < arraySize; i++) { - arrayObj[i] = innerObj; + TEST_F(SmartObjectConvertionTimeTest, test_object_without_enum_convertion) { + SmartObject srcObj, dstObj; + CSmartSchema schema = initObjectSchema(); + + srcObj.setSchema(schema); + dstObj.setSchema(schema); + + srcObj[S_PARAMS][S_MESSAGE_TYPE] = MessageTypeTest::request; + srcObj[S_PARAMS][S_FUNCTION_ID] = FunctionIdTest::RegisterAppInterface; + srcObj[S_PARAMS][S_CORRELATION_ID] = 13; + srcObj[S_PARAMS][S_PROTOCOL_TYPE] = 0; + srcObj[S_PARAMS][S_PROTOCOL_VERSION] = 2; + srcObj[S_MSG_PARAMS]["success"] = true; + srcObj[S_MSG_PARAMS]["resultCode"] = 2; + srcObj[S_MSG_PARAMS]["info"] = "Some string"; + srcObj[S_MSG_PARAMS]["tryAgainTime"] = 322; + + printf("\n Object without enum.\n"); + calculateConvertionTime(srcObj, dstObj); } - - srcObj[S_PARAMS][S_MESSAGE_TYPE] = MessageTypeTest::request; - srcObj[S_PARAMS][S_FUNCTION_ID] = FunctionIdTest::RegisterAppInterface; - srcObj[S_PARAMS][S_CORRELATION_ID] = 13; - srcObj[S_PARAMS][S_PROTOCOL_TYPE] = 0; - srcObj[S_PARAMS][S_PROTOCOL_VERSION] = 2; - srcObj[S_MSG_PARAMS]["array"] = arrayObj; - - calculateConvertionTime(srcObj, dstObj); -} - -TEST_F(SmartObjectConvertionTimeTest, test_object_with_enum_convertion) { - SmartObject srcObj, dstObj; - CSmartSchema schema = initObjectSchema(); - - srcObj.setSchema(schema); - dstObj.setSchema(schema); - - srcObj[S_PARAMS][S_MESSAGE_TYPE] = MessageTypeTest::request; - srcObj[S_PARAMS][S_FUNCTION_ID] = FunctionIdTest::RegisterAppInterface; - srcObj[S_PARAMS][S_CORRELATION_ID] = 13; - srcObj[S_PARAMS][S_PROTOCOL_TYPE] = 0; - srcObj[S_PARAMS][S_PROTOCOL_VERSION] = 2; - srcObj[S_MSG_PARAMS]["success"] = true; - srcObj[S_MSG_PARAMS]["resultCode"] = 2; - srcObj[S_MSG_PARAMS]["info"] = "Some string"; - srcObj[S_MSG_PARAMS]["tryAgainTime"] = 322; - srcObj.setSchema(schema); - - printf("\n Object with enum.\n"); - calculateConvertionTime(srcObj, dstObj); -} - -TEST_F(SmartObjectConvertionTimeTest, test_object_without_enum_convertion) { - SmartObject srcObj, dstObj; - CSmartSchema schema = initObjectSchema(); - - srcObj.setSchema(schema); - dstObj.setSchema(schema); - - srcObj[S_PARAMS][S_MESSAGE_TYPE] = MessageTypeTest::request; - srcObj[S_PARAMS][S_FUNCTION_ID] = FunctionIdTest::RegisterAppInterface; - srcObj[S_PARAMS][S_CORRELATION_ID] = 13; - srcObj[S_PARAMS][S_PROTOCOL_TYPE] = 0; - srcObj[S_PARAMS][S_PROTOCOL_VERSION] = 2; - srcObj[S_MSG_PARAMS]["success"] = true; - srcObj[S_MSG_PARAMS]["resultCode"] = 2; - srcObj[S_MSG_PARAMS]["info"] = "Some string"; - srcObj[S_MSG_PARAMS]["tryAgainTime"] = 322; - - printf("\n Object without enum.\n"); - calculateConvertionTime(srcObj, dstObj); -} - +}; } // namespace smart_object_test } // namespace components -} // namespace test namespace ns_smart_device_link { namespace ns_smart_objects { diff --git a/src/components/transport_manager/src/cloud/websocket_client_connection.cc b/src/components/transport_manager/src/cloud/websocket_client_connection.cc index f6b791f886..c3eba1d905 100644 --- a/src/components/transport_manager/src/cloud/websocket_client_connection.cc +++ b/src/components/transport_manager/src/cloud/websocket_client_connection.cc @@ -248,7 +248,6 @@ void WebsocketClientConnection::OnRead(boost::system::error_code ec, Shutdown(); return; } - std::string data_str = boost::beast::buffers_to_string(buffer_.data()); ssize_t size = (ssize_t)buffer_.size(); const uint8_t* data = boost::asio::buffer_cast( diff --git a/src/components/transport_manager/src/tcp/tcp_client_listener.cc b/src/components/transport_manager/src/tcp/tcp_client_listener.cc index 2683ce02c4..4010b2b628 100644 --- a/src/components/transport_manager/src/tcp/tcp_client_listener.cc +++ b/src/components/transport_manager/src/tcp/tcp_client_listener.cc @@ -163,9 +163,13 @@ TcpClientListener::~TcpClientListener() { void SetKeepaliveOptions(const int fd) { SDL_LOG_AUTO_TRACE(); SDL_LOG_DEBUG("fd: " << fd); + // cppcheck-suppress unreadVariable int yes = 1; + // cppcheck-suppress unreadVariable int keepidle = 3; // 3 seconds to disconnection detecting + // cppcheck-suppress unreadVariable int keepcnt = 5; + // cppcheck-suppress unreadVariable int keepintvl = 1; #ifdef __linux__ int user_timeout = 7000; // milliseconds diff --git a/src/components/transport_manager/src/transport_adapter/transport_adapter_impl.cc b/src/components/transport_manager/src/transport_adapter/transport_adapter_impl.cc index 7d0eda9773..6a16e81d18 100644 --- a/src/components/transport_manager/src/transport_adapter/transport_adapter_impl.cc +++ b/src/components/transport_manager/src/transport_adapter/transport_adapter_impl.cc @@ -558,13 +558,13 @@ void TransportAdapterImpl::SearchDeviceDone(const DeviceVector& devices) { bool device_found = false; devices_mutex_.Acquire(); - for (DeviceMap::iterator it = devices_.begin(); it != devices_.end(); - ++it) { - DeviceSptr existing_device = it->second; + for (DeviceMap::iterator iter = devices_.begin(); iter != devices_.end(); + ++iter) { + DeviceSptr existing_device = iter->second; if (device->IsSameAs(existing_device.get())) { existing_device->set_keep_on_disconnect(true); device_found = true; - SDL_LOG_DEBUG("device found. DeviceSptr" << it->second); + SDL_LOG_DEBUG("device found. DeviceSptr" << iter->second); break; } } diff --git a/src/components/transport_manager/src/transport_manager_impl.cc b/src/components/transport_manager/src/transport_manager_impl.cc index a0d019cd69..eb1b63fb96 100644 --- a/src/components/transport_manager/src/transport_manager_impl.cc +++ b/src/components/transport_manager/src/transport_manager_impl.cc @@ -1386,7 +1386,8 @@ void TransportManagerImpl::Handle(::protocol_handler::RawMessagePtr msg) { } TransportAdapter* transport_adapter = connection->transport_adapter; - if (NULL == transport_adapter) { + + if (nullptr == transport_adapter) { std::string error_text = "Transport adapter is not found"; SDL_LOG_ERROR(error_text); RaiseEvent(&TransportManagerListener::OnTMMessageSendFailed, diff --git a/src/components/transport_manager/src/usb/qnx/usb_handler.cc b/src/components/transport_manager/src/usb/qnx/usb_handler.cc index 441fc8b664..2381daa15a 100644 --- a/src/components/transport_manager/src/usb/qnx/usb_handler.cc +++ b/src/components/transport_manager/src/usb/qnx/usb_handler.cc @@ -76,11 +76,6 @@ UsbHandler::~UsbHandler() { } } -bool operator==(const usbd_device_instance_t& a, - const usbd_device_instance_t& b) { - return a.path == b.path && a.devno == b.devno; -} - void UsbHandler::DeviceArrived(usbd_connection* connection, usbd_device_instance_t* instance) { for (Devices::const_iterator it = devices_.begin(); it != devices_.end(); diff --git a/src/components/transport_manager/src/usb/usb_device_scanner.cc b/src/components/transport_manager/src/usb/usb_device_scanner.cc index b0749728a6..e2e2fecd6e 100644 --- a/src/components/transport_manager/src/usb/usb_device_scanner.cc +++ b/src/components/transport_manager/src/usb/usb_device_scanner.cc @@ -47,7 +47,7 @@ SDL_CREATE_LOG_VARIABLE("TransportManager") class AoaInitSequence : public UsbControlTransferSequence { public: AoaInitSequence(); - AoaInitSequence(const TransportManagerSettings& settings); + explicit AoaInitSequence(const TransportManagerSettings& settings); virtual ~AoaInitSequence() {} private: diff --git a/src/components/transport_manager/test/include/transport_manager/raw_message_matcher.h b/src/components/transport_manager/test/include/transport_manager/raw_message_matcher.h index 2ee699096f..5aedfd58aa 100644 --- a/src/components/transport_manager/test/include/transport_manager/raw_message_matcher.h +++ b/src/components/transport_manager/test/include/transport_manager/raw_message_matcher.h @@ -55,7 +55,8 @@ class RawMessageMatcher : public MatcherInterface { public: explicit RawMessageMatcher(RawMessagePtr ptr); - virtual bool MatchAndExplain(const RawMessagePtr ptr, + DEPRECATED + virtual bool MatchAndExplain(const RawMessagePtr msg, MatchResultListener* listener) const; virtual void DescribeTo(std::ostream* os) const; virtual void DescribeNegationTo(std::ostream* os) const; diff --git a/src/components/transport_manager/test/network_interface_listener_test.cc b/src/components/transport_manager/test/network_interface_listener_test.cc index c6e007b62a..b2d9cbb51e 100644 --- a/src/components/transport_manager/test/network_interface_listener_test.cc +++ b/src/components/transport_manager/test/network_interface_listener_test.cc @@ -30,24 +30,10 @@ class NetworkInterfaceListenerTest : public ::testing::Test { virtual ~NetworkInterfaceListenerTest() {} protected: - struct InterfaceEntry { - const char* name; - const char* ipv4_address; - const char* ipv6_address; - unsigned int flags; - }; - void Deinit() { delete interface_listener_impl_; } - void SleepFor(long msec) const { - if (msec > 0) { - struct timespec ts = {0, msec * 1000 * 1000}; - nanosleep(&ts, NULL); - } - } - NetworkInterfaceListenerImpl* interface_listener_impl_; MockTcpClientListener mock_tcp_client_listener_; }; diff --git a/src/components/transport_manager/test/raw_message_matcher.cc b/src/components/transport_manager/test/raw_message_matcher.cc index 61d73a9253..48e0908f9a 100644 --- a/src/components/transport_manager/test/raw_message_matcher.cc +++ b/src/components/transport_manager/test/raw_message_matcher.cc @@ -38,6 +38,7 @@ namespace transport_manager_test { RawMessageMatcher::RawMessageMatcher(RawMessagePtr ptr) : ptr_(ptr) {} +// cppcheck-suppress unusedFunction bool RawMessageMatcher::MatchAndExplain(const RawMessagePtr msg, MatchResultListener* listener) const { if (msg->data_size() != ptr_->data_size()) { diff --git a/src/components/transport_manager/test/websocket_sample_client/websocket_sample_client.cc b/src/components/transport_manager/test/websocket_sample_client/websocket_sample_client.cc index 88525ad29d..6c2ff12bfd 100644 --- a/src/components/transport_manager/test/websocket_sample_client/websocket_sample_client.cc +++ b/src/components/transport_manager/test/websocket_sample_client/websocket_sample_client.cc @@ -105,7 +105,6 @@ bool WSSampleClient::Connect(tcp::resolver::results_type& results) { boost::system::error_code ec; boost::asio::connect(ws_->next_layer(), results.begin(), results.end(), ec); if (ec) { - std::string str_err = "ErrorMessage: " + ec.message(); return false; } return true; @@ -116,7 +115,6 @@ bool WSSampleClient::Connect(tcp::resolver::results_type& results) { boost::system::error_code ec; boost::asio::connect(ws_->lowest_layer(), results.begin(), results.end(), ec); if (ec) { - std::string str_err = "ErrorMessage: " + ec.message(); return false; } return true; @@ -128,7 +126,6 @@ bool WSSampleClient::Handshake(const std::string& host, boost::system::error_code ec; ws_->handshake(host, target, ec); if (ec) { - std::string str_err = "ErrorMessage: " + ec.message(); return false; } return true; @@ -156,7 +153,6 @@ bool WSSampleClient::Handshake(const std::string& host, ws_->handshake(host, target, ec); if (ec) { - std::string str_err = "ErrorMessage: " + ec.message(); return false; } diff --git a/src/components/utils/src/date_time.cc b/src/components/utils/src/date_time.cc index cea35a977e..389f973837 100644 --- a/src/components/utils/src/date_time.cc +++ b/src/components/utils/src/date_time.cc @@ -46,9 +46,7 @@ namespace date_time { TimeDuration getCurrentTime() { return bpt::microsec_clock::local_time() - bpt::from_time_t(0); } -TimeDuration TimeDurationZero() { - return TimeDuration(0, 0, 0, 0); -} + int64_t getSecs(const TimeDuration& t) { return t.total_seconds(); } @@ -61,13 +59,22 @@ int64_t getuSecs(const TimeDuration& t) { return t.total_microseconds(); } +#ifdef BUILD_TESTS +// cppcheck-suppress unusedFunction //Used in unit tests +TimeDuration TimeDurationZero() { + return TimeDuration(0, 0, 0, 0); +} + +// cppcheck-suppress unusedFunction //Used in unit tests int64_t get_just_mSecs(const TimeDuration& t) { return t.total_milliseconds() % MILLISECONDS_IN_SECOND; } +// cppcheck-suppress unusedFunction //Used in unit tests int64_t get_just_uSecs(const TimeDuration& t) { return t.total_microseconds() % MICROSECONDS_IN_SECOND; } +#endif // BUILD_TESTS int64_t calculateTimeSpan(const TimeDuration& sinceTime) { return calculateTimeDiff(getCurrentTime(), sinceTime); diff --git a/src/components/utils/src/file_system.cc b/src/components/utils/src/file_system.cc index e5c98183ac..5985475983 100644 --- a/src/components/utils/src/file_system.cc +++ b/src/components/utils/src/file_system.cc @@ -56,8 +56,7 @@ using boost::system::error_code; uint64_t file_system::GetAvailableDiskSpace(const std::string& path) { SDL_LOG_AUTO_TRACE(); error_code ec; - fs::space_info si = {0, 0, 0}; - si = fs::space(path, ec); + fs::space_info si = fs::space(path, ec); if (ec) { // If something went wrong, assume no free space @@ -466,11 +465,10 @@ bool file_system::ReadFile(const std::string& name, std::string& result) { const std::string file_system::ConvertPathForURL(const std::string& path) { SDL_LOG_AUTO_TRACE(); const std::string reserved_symbols = "!#$&'()*+,:;=?@[] "; - size_t pos = std::string::npos; std::string converted_path; for (const auto symbol : path) { - pos = reserved_symbols.find_first_of(symbol); + size_t pos = reserved_symbols.find_first_of(symbol); if (pos != std::string::npos) { const size_t size = 100; char percent_value[size]; -- cgit v1.2.1 From 18bd4d7ee7d50ff006287b88eb851c8119f1b1fa Mon Sep 17 00:00:00 2001 From: "Yana Chernysheva (GitHub)" <59469418+ychernysheva@users.noreply.github.com> Date: Thu, 1 Oct 2020 20:35:14 +0300 Subject: Remove ManageMobileCommand call from UnregisterAppInterfaceRequest and corresponding unit test (#3389) --- .../src/commands/mobile/unregister_app_interface_request.cc | 5 ----- .../commands/mobile/unregister_app_interface_request_test.cc | 11 ----------- 2 files changed, 16 deletions(-) diff --git a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/unregister_app_interface_request.cc b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/unregister_app_interface_request.cc index 10f808b771..14b316f374 100644 --- a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/unregister_app_interface_request.cc +++ b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/unregister_app_interface_request.cc @@ -51,11 +51,6 @@ void UnregisterAppInterfaceRequest::Run() { return; } - rpc_service_.ManageMobileCommand( - MessageHelper::GetOnAppInterfaceUnregisteredNotificationToMobile( - connection_key(), - mobile_api::AppInterfaceUnregisteredReason::INVALID_ENUM), - SOURCE_SDL); application_manager_.EndNaviServices(connection_key()); application_manager_.UnregisterApplication(connection_key(), mobile_apis::Result::SUCCESS); diff --git a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/test/commands/mobile/unregister_app_interface_request_test.cc b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/test/commands/mobile/unregister_app_interface_request_test.cc index f244acb8d6..d7dcbdfa9d 100644 --- a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/test/commands/mobile/unregister_app_interface_request_test.cc +++ b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/test/commands/mobile/unregister_app_interface_request_test.cc @@ -85,20 +85,9 @@ TEST_F(UnregisterAppInterfaceRequestTest, Run_SUCCESS) { MockAppPtr mock_app(CreateMockApp()); EXPECT_CALL(app_mngr_, application(kConnectionKey)) .WillRepeatedly(Return(mock_app)); - - const mobile_apis::AppInterfaceUnregisteredReason::eType kUnregisterReason = - mobile_apis::AppInterfaceUnregisteredReason::INVALID_ENUM; - - MessageSharedPtr dummy_msg(CreateMessage()); - EXPECT_CALL(mock_message_helper_, - GetOnAppInterfaceUnregisteredNotificationToMobile( - kConnectionKey, kUnregisterReason)) - .WillOnce(Return(dummy_msg)); { ::testing::InSequence sequence; - EXPECT_CALL(mock_rpc_service_, ManageMobileCommand(dummy_msg, _)); - EXPECT_CALL(app_mngr_, UnregisterApplication( kConnectionKey, mobile_apis::Result::SUCCESS, _, _)); -- cgit v1.2.1