summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/components/application_manager/rpc_plugins/rc_rpc_plugin/test/include/rc_rpc_plugin/mock/mock_rc_helpers.h4
-rw-r--r--src/components/application_manager/rpc_plugins/rc_rpc_plugin/test/mock_rc_helpers.cc6
-rw-r--r--src/components/application_manager/rpc_plugins/rc_rpc_plugin/test/resource_allocation_manager/CMakeLists.txt6
-rw-r--r--src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/ui_alert_request.cc6
-rw-r--r--src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/ui_perform_interaction_request.cc6
-rw-r--r--src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/ui_scrollable_message_request.cc6
-rw-r--r--src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/ui_slider_request.cc6
-rw-r--r--src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/vr_perform_interaction_request.cc6
-rw-r--r--src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/alert_request.cc20
-rw-r--r--src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/create_window_request.cc10
-rw-r--r--src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/perform_interaction_request.cc45
-rw-r--r--src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/scrollable_message_request.cc13
-rw-r--r--src/components/application_manager/rpc_plugins/sdl_rpc_plugin/test/commands/mobile/create_window_request_test.cc3
-rw-r--r--src/components/application_manager/rpc_plugins/sdl_rpc_plugin/test/commands/mobile/scrollable_message_test.cc4
-rw-r--r--src/components/interfaces/HMI_API.xml14
-rw-r--r--src/components/interfaces/MOBILE_API.xml161
-rw-r--r--src/components/media_manager/src/pipe_streamer_adapter.cc57
-rwxr-xr-xtools/InterfaceGenerator/generator/parsers/RPCBase.py2
18 files changed, 218 insertions, 157 deletions
diff --git a/src/components/application_manager/rpc_plugins/rc_rpc_plugin/test/include/rc_rpc_plugin/mock/mock_rc_helpers.h b/src/components/application_manager/rpc_plugins/rc_rpc_plugin/test/include/rc_rpc_plugin/mock/mock_rc_helpers.h
index 2473909ce5..c73472d2a8 100644
--- a/src/components/application_manager/rpc_plugins/rc_rpc_plugin/test/include/rc_rpc_plugin/mock/mock_rc_helpers.h
+++ b/src/components/application_manager/rpc_plugins/rc_rpc_plugin/test/include/rc_rpc_plugin/mock/mock_rc_helpers.h
@@ -84,6 +84,10 @@ class MockRCHelpers {
std::vector<bool>(const smart_objects::SmartObject& consents));
MOCK_METHOD1(RemoveRedundantGPSDataFromIVDataMsg,
void(smart_objects::SmartObject& msg_params));
+ MOCK_METHOD2(
+ MergeModuleData,
+ smart_objects::SmartObject(const smart_objects::SmartObject& data1,
+ const smart_objects::SmartObject& data2));
static MockRCHelpers* rc_helpers_mock();
};
diff --git a/src/components/application_manager/rpc_plugins/rc_rpc_plugin/test/mock_rc_helpers.cc b/src/components/application_manager/rpc_plugins/rc_rpc_plugin/test/mock_rc_helpers.cc
index d5c8d09ae9..3e60591c6b 100644
--- a/src/components/application_manager/rpc_plugins/rc_rpc_plugin/test/mock_rc_helpers.cc
+++ b/src/components/application_manager/rpc_plugins/rc_rpc_plugin/test/mock_rc_helpers.cc
@@ -34,6 +34,12 @@
namespace rc_rpc_plugin {
+smart_objects::SmartObject RCHelpers::MergeModuleData(
+ const smart_objects::SmartObject& data1,
+ const smart_objects::SmartObject& data2) {
+ return MockRCHelpers::rc_helpers_mock()->MergeModuleData(data1, data2);
+}
+
const std::function<std::string(const std::string&)>
rc_rpc_plugin::RCHelpers::GetModuleTypeToDataMapping() {
return MockRCHelpers::rc_helpers_mock()->GetModuleTypeToDataMapping();
diff --git a/src/components/application_manager/rpc_plugins/rc_rpc_plugin/test/resource_allocation_manager/CMakeLists.txt b/src/components/application_manager/rpc_plugins/rc_rpc_plugin/test/resource_allocation_manager/CMakeLists.txt
index c665e98448..4b10d34643 100644
--- a/src/components/application_manager/rpc_plugins/rc_rpc_plugin/test/resource_allocation_manager/CMakeLists.txt
+++ b/src/components/application_manager/rpc_plugins/rc_rpc_plugin/test/resource_allocation_manager/CMakeLists.txt
@@ -54,7 +54,7 @@ ${CMAKE_CURRENT_SOURCE_DIR}/resource_allocation_manager_impl_test.cc
set(RC_COMMANDS_TEST_SOURCE_DIR ${COMPONENTS_DIR}/application_manager/rpc_plugins/rc_rpc_plugin/test/commands)
set(RC_COMMANDS_SOURCE_DIR ${COMPONENTS_DIR}/application_manager/rpc_plugins/rc_rpc_plugin/src/commands)
-collect_sources(COMMANDS_SOURCES "${RC_COMMANDS_TEST_DIR}" "${RC_COMMANDS_TEST_SOURCE_DIR}")
+collect_sources(COMMANDS_SOURCES "${RC_COMMANDS_SOURCE_DIR}" "${RC_COMMANDS_TEST_SOURCE_DIR}")
set(LIBRARIES
ApplicationManager
@@ -77,5 +77,7 @@ if(ENABLE_LOG)
list(APPEND LIBRARIES expat -L${EXPAT_LIBS_DIRECTORY})
endif()
-create_test("resource_allocation_manager_test" "${COMMANDS_SOURCES}" "${LIBRARIES}" "${RESOURCE_ALLOC_MANAGER_TEST_SOURCES}")
+list(APPEND COMMANDS_SOURCES ${RESOURCE_ALLOC_MANAGER_TEST_SOURCES})
+
+create_test("resource_allocation_manager_test" "${COMMANDS_SOURCES}" "${LIBRARIES}")
diff --git a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/ui_alert_request.cc b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/ui_alert_request.cc
index bf449db808..793e70d9e1 100644
--- a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/ui_alert_request.cc
+++ b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/ui_alert_request.cc
@@ -47,7 +47,11 @@ UIAlertRequest::UIAlertRequest(
application_manager,
rpc_service,
hmi_capabilities,
- policy_handle) {}
+ policy_handle) {
+ const auto& msg_params = (*message_)[strings::msg_params];
+ uint32_t request_timeout = msg_params[strings::duration].asUInt();
+ default_timeout_ += request_timeout;
+}
UIAlertRequest::~UIAlertRequest() {}
diff --git a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/ui_perform_interaction_request.cc b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/ui_perform_interaction_request.cc
index aa5878590b..a07c72cbf4 100644
--- a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/ui_perform_interaction_request.cc
+++ b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/ui_perform_interaction_request.cc
@@ -47,7 +47,11 @@ UIPerformInteractionRequest::UIPerformInteractionRequest(
application_manager,
rpc_service,
hmi_capabilities,
- policy_handle) {}
+ policy_handle) {
+ const auto& msg_params = (*message_)[strings::msg_params];
+ uint32_t request_timeout = msg_params[strings::timeout].asUInt();
+ default_timeout_ += request_timeout;
+}
UIPerformInteractionRequest::~UIPerformInteractionRequest() {}
diff --git a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/ui_scrollable_message_request.cc b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/ui_scrollable_message_request.cc
index de639420fb..cad68e23aa 100644
--- a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/ui_scrollable_message_request.cc
+++ b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/ui_scrollable_message_request.cc
@@ -47,7 +47,11 @@ UIScrollableMessageRequest::UIScrollableMessageRequest(
application_manager,
rpc_service,
hmi_capabilities,
- policy_handle) {}
+ policy_handle) {
+ const auto& msg_params = (*message_)[strings::msg_params];
+ uint32_t request_timeout = msg_params[strings::timeout].asUInt();
+ default_timeout_ += request_timeout;
+}
UIScrollableMessageRequest::~UIScrollableMessageRequest() {}
diff --git a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/ui_slider_request.cc b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/ui_slider_request.cc
index 56fca3d062..eae8cc523c 100644
--- a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/ui_slider_request.cc
+++ b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/ui_slider_request.cc
@@ -47,7 +47,11 @@ UISliderRequest::UISliderRequest(
application_manager,
rpc_service,
hmi_capabilities,
- policy_handle) {}
+ policy_handle) {
+ const auto& msg_params = (*message_)[strings::msg_params];
+ uint32_t request_timeout = msg_params[strings::timeout].asUInt();
+ default_timeout_ += request_timeout;
+}
UISliderRequest::~UISliderRequest() {}
diff --git a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/vr_perform_interaction_request.cc b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/vr_perform_interaction_request.cc
index ae94019b25..4257158f6a 100644
--- a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/vr_perform_interaction_request.cc
+++ b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/vr_perform_interaction_request.cc
@@ -47,7 +47,11 @@ VRPerformInteractionRequest::VRPerformInteractionRequest(
application_manager,
rpc_service,
hmi_capabilities,
- policy_handle) {}
+ policy_handle) {
+ const auto& msg_params = (*message_)[strings::msg_params];
+ uint32_t request_timeout = msg_params[strings::timeout].asUInt();
+ default_timeout_ += request_timeout;
+}
VRPerformInteractionRequest::~VRPerformInteractionRequest() {}
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 7a0fd79b08..57912e7087 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
@@ -73,18 +73,15 @@ AlertRequest::~AlertRequest() {}
bool AlertRequest::Init() {
/* Timeout in milliseconds.
- If omitted a standard value of 10000 milliseconds is used.*/
- if ((*message_)[strings::msg_params].keyExists(strings::duration)) {
- default_timeout_ =
- (*message_)[strings::msg_params][strings::duration].asUInt();
- } else {
- const int32_t def_value = 5000;
- default_timeout_ = def_value;
- }
+ If omitted a standard value of 10000 milliseconds is used.*/
+ auto& msg_params = (*message_)[strings::msg_params];
+ uint32_t duration_timeout = msg_params[strings::duration].asUInt();
+
+ default_timeout_ += duration_timeout;
// If soft buttons are present, SDL will not use initiate timeout tracking for
// response.
- if ((*message_)[strings::msg_params].keyExists(strings::soft_buttons)) {
+ if (msg_params.keyExists(strings::soft_buttons)) {
LOG4CXX_INFO(logger_,
"Request contains soft buttons - request timeout "
"will be set to 0.");
@@ -355,6 +352,10 @@ void AlertRequest::SendAlertRequest(int32_t app_id) {
(*message_)[strings::msg_params][strings::soft_buttons];
MessageHelper::SubscribeApplicationToSoftButton(
(*message_)[strings::msg_params], app, function_id());
+ msg_params[strings::duration] = 0;
+ } else {
+ msg_params[strings::duration] =
+ (*message_)[strings::msg_params][strings::duration].asUInt();
}
if ((*message_)[strings::msg_params].keyExists(strings::alert_icon)) {
@@ -375,7 +376,6 @@ void AlertRequest::SendAlertRequest(int32_t app_id) {
// app_id
msg_params[strings::app_id] = app_id;
- msg_params[strings::duration] = default_timeout_;
// NAVI platform progressIndicator
if ((*message_)[strings::msg_params].keyExists(strings::progress_indicator)) {
diff --git a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/create_window_request.cc b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/create_window_request.cc
index 21b54b4e9f..b69b0ee801 100644
--- a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/create_window_request.cc
+++ b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/create_window_request.cc
@@ -307,7 +307,10 @@ bool CreateWindowRequest::DoesExceedMaxAllowedWindows(
const auto window_type = static_cast<mobile_apis::WindowType::eType>(
(*message_)[strings::msg_params][strings::window_type].asInt());
- const auto display_capabilities = app->display_capabilities();
+ auto display_capabilities = hmi_capabilities_.system_display_capabilities();
+ if (app->display_capabilities()) {
+ display_capabilities = app->display_capabilities();
+ }
if (!display_capabilities) {
LOG4CXX_WARN(logger_, "Application has no capabilities");
@@ -333,7 +336,10 @@ bool CreateWindowRequest::DoesExceedMaxAllowedWindows(
return false;
});
- DCHECK(find_res != windowTypeSupported->end());
+ if (find_res == windowTypeSupported->end()) {
+ LOG4CXX_WARN(logger_, "Requested Window Type is not supported by the HMI");
+ return true;
+ }
if (get_current_number_of_windows(window_type) + 1 >
(*find_res)[strings::maximum_number_of_windows].asUInt()) {
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 cc109afcf0..622f64f792 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
@@ -82,17 +82,18 @@ PerformInteractionRequest::~PerformInteractionRequest() {}
bool PerformInteractionRequest::Init() {
/* Timeout in milliseconds.
If omitted a standard value of 10000 milliseconds is used.*/
- if ((*message_)[strings::msg_params].keyExists(strings::timeout)) {
- default_timeout_ =
- (*message_)[strings::msg_params][strings::timeout].asUInt();
- }
+ const auto& msg_params = (*message_)[strings::msg_params];
+ uint32_t request_timeout = msg_params[strings::timeout].asUInt();
interaction_mode_ = static_cast<mobile_apis::InteractionMode::eType>(
- (*message_)[strings::msg_params][strings::interaction_mode].asInt());
+ msg_params[strings::interaction_mode].asInt());
if (mobile_apis::InteractionMode::BOTH == interaction_mode_ ||
mobile_apis::InteractionMode::MANUAL_ONLY == interaction_mode_) {
- default_timeout_ *= 2;
+ const uint32_t increase_value = 2;
+ default_timeout_ += request_timeout * increase_value;
+ } else {
+ default_timeout_ += request_timeout;
}
return true;
}
@@ -284,7 +285,7 @@ void PerformInteractionRequest::onTimeOut() {
CommandRequestImpl::onTimeOut();
} else {
application_manager_.updateRequestTimeout(
- connection_key(), correlation_id(), default_timeout());
+ connection_key(), correlation_id(), default_timeout_);
}
break;
}
@@ -341,7 +342,7 @@ bool PerformInteractionRequest::ProcessVRResponse(
}
LOG4CXX_DEBUG(logger_, "Update timeout for UI");
application_manager_.updateRequestTimeout(
- connection_key(), correlation_id(), default_timeout());
+ connection_key(), correlation_id(), default_timeout_);
return false;
}
@@ -358,6 +359,13 @@ bool PerformInteractionRequest::ProcessVRResponse(
msg_params[strings::choice_id] = choice_id;
}
+ if (mobile_apis::InteractionMode::BOTH == interaction_mode_ ||
+ mobile_apis::InteractionMode::MANUAL_ONLY == interaction_mode_) {
+ LOG4CXX_DEBUG(logger_, "Update timeout for UI");
+ application_manager_.updateRequestTimeout(
+ connection_key(), correlation_id(), default_timeout_);
+ }
+
const bool is_vr_result_success = Compare<Common_Result::eType, EQ, ONE>(
vr_result_code_, Common_Result::SUCCESS, Common_Result::WARNINGS);
@@ -476,12 +484,8 @@ void PerformInteractionRequest::SendUIPerformInteractionRequest(
}
}
- if (mobile_apis::InteractionMode::BOTH == mode ||
- mobile_apis::InteractionMode::MANUAL_ONLY == mode) {
- msg_params[strings::timeout] = default_timeout_ / 2;
- } else {
- msg_params[strings::timeout] = default_timeout_;
- }
+ msg_params[strings::timeout] =
+ (*message_)[strings::msg_params][strings::timeout].asUInt();
msg_params[strings::app_id] = app->app_id();
if (mobile_apis::InteractionMode::VR_ONLY != mode) {
msg_params[strings::choice_set] =
@@ -662,16 +666,9 @@ void PerformInteractionRequest::SendVRPerformInteractionRequest(
return;
}
- mobile_apis::InteractionMode::eType mode =
- static_cast<mobile_apis::InteractionMode::eType>(
- (*message_)[strings::msg_params][strings::interaction_mode].asInt());
-
- if (mobile_apis::InteractionMode::BOTH == mode ||
- mobile_apis::InteractionMode::MANUAL_ONLY == mode) {
- msg_params[strings::timeout] = default_timeout_ / 2;
- } else {
- msg_params[strings::timeout] = default_timeout_;
- }
+ msg_params[strings::timeout] =
+ (*message_)[strings::msg_params][strings::timeout].asUInt();
+ ;
msg_params[strings::app_id] = app->app_id();
StartAwaitForInterface(HmiInterfaces::HMI_INTERFACE_VR);
SendHMIRequest(
diff --git a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/scrollable_message_request.cc b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/scrollable_message_request.cc
index 5bef1d56fc..90dbb91b5f 100644
--- a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/scrollable_message_request.cc
+++ b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/scrollable_message_request.cc
@@ -65,13 +65,9 @@ ScrollableMessageRequest::~ScrollableMessageRequest() {}
bool ScrollableMessageRequest::Init() {
/* Timeout in milliseconds.
If omitted a standard value of 10000 milliseconds is used.*/
- if ((*message_)[strings::msg_params].keyExists(strings::timeout)) {
- default_timeout_ =
- (*message_)[strings::msg_params][strings::timeout].asUInt();
- } else {
- const int32_t def_value = 30000;
- default_timeout_ = def_value;
- }
+ uint32_t request_timeout =
+ (*message_)[strings::msg_params][strings::timeout].asUInt();
+ default_timeout_ += request_timeout;
return true;
}
@@ -110,7 +106,8 @@ void ScrollableMessageRequest::Run() {
msg_params[hmi_request::message_text][hmi_request::field_text] =
(*message_)[strings::msg_params][strings::scroll_message_body];
msg_params[strings::app_id] = app->app_id();
- msg_params[strings::timeout] = default_timeout_;
+ msg_params[strings::timeout] =
+ (*message_)[strings::msg_params][strings::timeout].asUInt();
if ((*message_)[strings::msg_params].keyExists(strings::cancel_id)) {
msg_params[strings::cancel_id] =
diff --git a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/test/commands/mobile/create_window_request_test.cc b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/test/commands/mobile/create_window_request_test.cc
index 02a6591a2d..905c6ceb72 100644
--- a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/test/commands/mobile/create_window_request_test.cc
+++ b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/test/commands/mobile/create_window_request_test.cc
@@ -164,6 +164,9 @@ class CreateWindowRequestTest
ON_CALL(*mock_app_, display_capabilities())
.WillByDefault(Return(display_capabilities_));
+ ON_CALL(mock_hmi_capabilities_, system_display_capabilities())
+ .WillByDefault(Return(display_capabilities_));
+
window_params_map_lock_ptr_ = std::make_shared<sync_primitives::Lock>();
DataAccessor<am::WindowParamsMap> window_params_map(
diff --git a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/test/commands/mobile/scrollable_message_test.cc b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/test/commands/mobile/scrollable_message_test.cc
index 3820112ea5..6b17aa238d 100644
--- a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/test/commands/mobile/scrollable_message_test.cc
+++ b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/test/commands/mobile/scrollable_message_test.cc
@@ -175,7 +175,7 @@ TEST_F(ScrollableMessageRequestTest, Init_CorrectTimeout_SUCCESS) {
mobile_apis::InteractionMode::MANUAL_ONLY;
EXPECT_EQ(kDefaultTimeout_, command_->default_timeout());
command_->Init();
- EXPECT_EQ(kTimeOut, command_->default_timeout());
+ EXPECT_EQ(kTimeOut + kDefaultTimeout_, command_->default_timeout());
}
TEST_F(ScrollableMessageRequestTest, Init_CorrectTimeout_UNSUCCESS) {
@@ -183,7 +183,7 @@ TEST_F(ScrollableMessageRequestTest, Init_CorrectTimeout_UNSUCCESS) {
mobile_apis::InteractionMode::MANUAL_ONLY;
EXPECT_EQ(kDefaultTimeout_, command_->default_timeout());
command_->Init();
- EXPECT_EQ(kTimeOut, command_->default_timeout());
+ EXPECT_EQ(kDefaultTimeout_, command_->default_timeout());
}
TEST_F(ScrollableMessageRequestTest, Run_ApplicationIsNotRegistered_UNSUCCESS) {
diff --git a/src/components/interfaces/HMI_API.xml b/src/components/interfaces/HMI_API.xml
index 8407d4aea4..9b385c97cd 100644
--- a/src/components/interfaces/HMI_API.xml
+++ b/src/components/interfaces/HMI_API.xml
@@ -611,12 +611,6 @@
<element name="menuTitle">
<description> Optional text to label an app menu button (for certain touchscreen platforms).</description>
</element>
- <element name="navigationText">
- <description>Navigation text for UpdateTurnList.</description>
- </element>
- <element name="notificationText">
- <description>Text of notification to be displayed on screen.</description>
- </element>
<element name="locationName">
<description> Optional name / title of intended location for SendLocation.</description>
</element>
@@ -632,6 +626,12 @@
<element name="timeToDestination"/>
<!-- TO DO to be removed -->
<element name="turnText"/>
+ <element name="navigationText">
+ <description>Navigation text for UpdateTurnList.</description>
+ </element>
+ <element name="notificationText">
+ <description>Text of notification to be displayed on screen.</description>
+ </element>
</enum>
<enum name="MetadataType">
@@ -4086,8 +4086,8 @@
<element name="VIDEO_STREAMING"/>
<element name="REMOTE_CONTROL"/>
<element name="APP_SERVICES" />
- <element name="DISPLAYS"/>
<element name="SEAT_LOCATION"/>
+ <element name="DISPLAYS"/>
</enum>
<struct name="SystemCapability">
diff --git a/src/components/interfaces/MOBILE_API.xml b/src/components/interfaces/MOBILE_API.xml
index 8927a46ffc..3ab704ddb0 100644
--- a/src/components/interfaces/MOBILE_API.xml
+++ b/src/components/interfaces/MOBILE_API.xml
@@ -139,7 +139,7 @@
<description>The data sent failed to pass CRC check in receiver end</description>
</element>
<element name="ENCRYPTION_NEEDED" since="6.0">
- <description>SDL receives an un-encrypted PRC request that needs protection. </description>
+ <description>SDL receives an un-encrypted RPC request that needs protection. </description>
</element>
</enum>
@@ -923,7 +923,7 @@
</element>
<element name="alertIcon" since="6.0">
- <description>The image field for Alert</description>>
+ <description>The image field for Alert</description>
</element>
</enum>
@@ -1699,9 +1699,6 @@
</param>
</struct>
- <!-- ~~~~~~~~~~~~~~~~~~~~~~~~ -->
- <!-- Ford Specific Data Items -->
- <!-- ~~~~~~~~~~~~~~~~~~~~~~~~ -->
<enum name="FileType" since="2.0">
<description>Enumeration listing possible file types.</description>
<element name="GRAPHIC_BMP" />
@@ -1890,10 +1887,6 @@
</param>
</struct>
- <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
- <!-- / Ford Specific Data Items -->
- <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
-
<enum name="VehicleDataResultCode" since="2.0">
<description>Enumeration that describes possible result codes of a vehicle data entry request.</description>
<element name="SUCCESS" internal_name="VDRC_SUCCESS">
@@ -1903,7 +1896,7 @@
<description>DTC / DID request successful, however, not all active DTCs or full contents of DID location available</description>
</element>
<element name="DISALLOWED" internal_name="VDRC_DISALLOWED">
- <description>This vehicle data item is not allowed for this app by Ford.</description>
+ <description>This vehicle data item is not allowed for this app by the OEM/Manufactorer of the connected module.</description>
</element>
<element name="USER_DISALLOWED" internal_name="VDRC_USER_DISALLOWED">
<description>The user has not granted access to this type of vehicle data item at this time.</description>
@@ -2253,7 +2246,7 @@
<history>
<struct name="DisplayCapabilities" since="1.0" until="6.0"/>
</history>
- <description>Contains information about the display capabilities.</description>
+ <description>Contains information about the display capabilities. This struct is deprecated; please see the new SystemCapability DISPLAYS and corresponding struct DisplayCapability </description>
<param name="displayType" type="DisplayType" mandatory="true" deprecated="true" since="5.0">
<description>The type of the display. See DisplayType</description>
<history>
@@ -2286,7 +2279,7 @@
</param>
<!-- TODO: Add pixel density? -->
</struct>
-
+
<struct name="Grid" since="6.0">
<description>Describes a location (origin coordinates and span) of a vehicle component.</description>
<param name="col" type="Integer" mandatory="true" minvalue="-1" maxvalue="100">
@@ -2302,7 +2295,7 @@
<param name="levelspan" type="Integer" mandatory="false" defvalue="1" minvalue="1" maxvalue="100">
</param>
</struct>
-
+
<struct name="ModuleInfo" since="6.0">
<description>Information about a RC module</description>
<param name="moduleId" type="String" maxlength="100" mandatory="true">
@@ -2318,7 +2311,7 @@
<description>allow multiple users/apps to access the module or not </description>
</param>
</struct>
-
+
<struct name="ButtonCapabilities" since="1.0">
<description>Contains information about a button's capabilities.</description>
<param name="name" type="ButtonName" mandatory="true">
@@ -2390,8 +2383,9 @@
<struct name="WindowCapability" since="6.0">
<param name="windowID" type="Integer" mandatory="false">
<description>
- The specified ID of the window. Can be set to a predefined window,
- or omitted for the main window on the main display.
+ The specified ID of the window. This ID is either one used when sending the CreateWindow request,
+ or one of the predefined window ID values from the enum PredefinedWindows. If ommited, value is
+ assumed to be the main window on the main display.
</description>
</param>
<param name="textFields" type="TextField" minsize="1" maxsize="100" array="true" mandatory="false">
@@ -3030,8 +3024,8 @@
<element name="VIDEO_STREAMING"/>
<element name="REMOTE_CONTROL"/>
<element name="APP_SERVICES" since="5.1"/>
- <element name="DISPLAYS" since="6.0"/>
<element name="SEAT_LOCATION" since="6.0"/>
+ <element name="DISPLAYS" since="6.0"/>
</enum>
<struct name="NavigationCapability" since="4.5">
@@ -3076,13 +3070,13 @@
<description>True if the system can utilize the haptic spatial data from the source being streamed. If not included, it can be assumed the module doesn't support haptic spatial data'. </description>
</param>
<param name="diagonalScreenSize" type="Float" minvalue="0" mandatory="false" since="6.0">
- <description>The diagonal screen size in inches.</description>
+ <description>The diagonal screen size in inches.</description>
</param>
<param name="pixelPerInch" type="Float" minvalue="0" mandatory="false" since="6.0">
- <description>PPI is the diagonal resolution in pixels divided by the diagonal screen size in inches.</description>
+ <description>PPI is the diagonal resolution in pixels divided by the diagonal screen size in inches.</description>
</param>
<param name="scale" type="Float" minvalue="1" maxvalue="10" mandatory="false" since="6.0">
- <description>The scaling factor the app should use to change the size of the projecting view.</description>
+ <description>The scaling factor the app should use to change the size of the projecting view.</description>
</param>
</struct>
@@ -3209,6 +3203,7 @@
<param name="id" type="SupportedSeat" mandatory="true" since="5.0" until="6.0"/>
</history>
</param>
+
<param name="heatingEnabled" type="Boolean" mandatory="false"></param>
<param name="coolingEnabled" type="Boolean" mandatory="false"></param>
<param name="heatingLevel" type="Integer" minvalue="0" maxvalue="100" mandatory="false"></param>
@@ -3415,6 +3410,7 @@
<description>value false means disabled, value true means enabled.</description>
</param>
<param name="climateEnable" type="Boolean" mandatory="false" since="6.0">
+ <description>True if the climate module is on, false if the climate module is off</description>
</param>
</struct>
@@ -4435,10 +4431,10 @@
<param name="appServicesCapabilities" type="AppServicesCapabilities" mandatory="false" since="5.1">
<description>An array of currently available services. If this is an update to the capability the affected services will include an update reason in that item</description>
</param>
- <param name="displayCapabilities" type="DisplayCapability" array="true" minsize="1" maxsize="1000" mandatory="false" since="6.0"/>
<param name="seatLocationCapability" type="SeatLocationCapability" mandatory="false" since="6.0">
<description>Contains information about the locations of each seat</description>
</param>
+ <param name="displayCapabilities" type="DisplayCapability" array="true" minsize="1" maxsize="1000" mandatory="false" since="6.0"/>
</struct>
<!-- Requests/Responses -->
@@ -4455,7 +4451,7 @@
<param name="appName" type="String" maxlength="100" mandatory="true" since="1.0">
<description>
- The mobile application name, e.g. "Ford Drive Green".
+ The mobile application name, e.g. "My SDL App".
Needs to be unique over all applications from the same device.
May not be empty.
May not start with a new line character.
@@ -4467,7 +4463,7 @@
<param name="ttsName" type="TTSChunk" minsize="1" maxsize="100" array="true" mandatory="false" since="2.0">
<description>
- TTS string for VR recognition of the mobile application name, e.g. "Ford Drive Green".
+ TTS string for VR recognition of the mobile application name, e.g. "My S D L App".
Meant to overcome any failing on speech engine in properly pronouncing / understanding app name.
Needs to be unique over all applications from the same device.
May not be empty.
@@ -4619,7 +4615,7 @@
<param name="presetBankCapabilities" type="PresetBankCapabilities" mandatory="false" deprecated="true" since="6.0">
<description>
If returned, the platform supports custom on-screen Presets; see PresetBankCapabilities.
- This parameter is deprecated and replaced by SystemCapability using DISPLAYS.
+ This parameter is deprecated and replaced by SystemCapability using DISPLAYS.
</description>
<history>
<param name="presetBankCapabilities" type="PresetBankCapabilities" mandatory="false" since="2.0" until="6.0"/>
@@ -4661,7 +4657,7 @@
</param>
<param name="hmiCapabilities" type="HMICapabilities" mandatory="false" since="3.0">
- <description>Specifies the HMI’s capabilities. See HMICapabilities.</description>
+ <description>Specifies the HMI's capabilities. See HMICapabilities.</description>
</param>
<param name="sdlVersion" type="String" maxlength="100" mandatory="false" platform="documentation" since="3.0">
@@ -4817,7 +4813,6 @@
<param name="userLocation" type="SeatLocation" mandatory="false" since="6.0">
<description>Location of the user's seat. Default is driver's seat location if it is not set yet.</description>
</param>
-
<param name="helpPrompt" type="TTSChunk" minsize="1" maxsize="100" array="true" mandatory="false" since="1.0">
<description>
The help prompt.
@@ -5105,18 +5100,22 @@
<function name="ShowAppMenu" functionID="ShowAppMenuID" messagetype="request" since="6.0">
<description>Shows the built in menu view</description>
+
<param name="menuID" type="Integer" minvalue="1" maxvalue="2000000000" mandatory="false">
<description>
If omitted the HMI opens the app's menu.
If set to a sub-menu ID the HMI opens the corresponding sub-menu previously added using `AddSubMenu`.
</description>
</param>
+
</function>
<function name="ShowAppMenu" functionID="ShowAppMenuID" messagetype="response" since="6.0">
+
<param name="success" type="Boolean" platform="documentation" mandatory="true">
<description> true if successful; false, if failed </description>
</param>
+
<param name="resultCode" type="Result" platform="documentation" mandatory="true">
<description>See Result</description>
<element name="SUCCESS"/>
@@ -5129,9 +5128,11 @@
<element name="INVALID_ID"/>
<element name="IN_USE"/>
</param>
+
<param name="info" type="String" maxlength="1000" mandatory="false" platform="documentation">
<description>Provides additional human readable info regarding the result.</description>
</param>
+
</function>
<function name="CreateInteractionChoiceSet" functionID="CreateInteractionChoiceSetID" messagetype="request" since="1.0">
@@ -5230,10 +5231,10 @@
<param name="cancelID" type="Integer" mandatory="false" since="6.0">
<description>
- An ID for this specific alert to allow cancellation through the `CancelInteraction` RPC.
+ An ID for this specific PerformInteraction to allow cancellation through the `CancelInteraction` RPC.
</description>
</param>
-
+
</function>
<function name="PerformInteraction" functionID="PerformInteractionID" messagetype="response" since="1.0">
@@ -5373,7 +5374,7 @@
If omitted on supported displays, no (or the default if applicable) icon should be displayed.
</description>
</param>
-
+
<param name="cancelID" type="Integer" mandatory="false" since="6.0">
<description>
An ID for this specific alert to allow cancellation through the `CancelInteraction` RPC.
@@ -5508,9 +5509,11 @@
</param>
<param name="metadataTags" type="MetadataTags" mandatory="false" since="4.5">
- <description>App defined metadata information. See MetadataStruct. Uses mainField1, mainField2, mainField3, mainField4.
+ <description>
+ App defined metadata information. See MetadataStruct. Uses mainField1, mainField2, mainField3, mainField4.
If omitted on supported displays, the currently set metadata tags will not change.
- If any text field contains no tags or the none tag, the metadata tag for that textfield should be removed.</description>
+ If any text field contains no tags or the none tag, the metadata tag for that textfield should be removed.
+ </description>
</param>
<param name="templateTitle" type="String" minlength="0" maxlength="100" mandatory="false" since="6.0">
@@ -5519,7 +5522,6 @@
How this will be displayed is dependent on the OEM design and implementation of the template.
</description>
</param>
-
<param name="windowID" type="Integer" mandatory="false" since="6.0" >
<description>
This is the unique ID assigned to the window that this RPC is intended. If this param is not included,
@@ -5890,8 +5892,6 @@
<param name="cloudAppVehicleID" type="Boolean" mandatory="false" since="5.1">
<description>Parameter used by cloud apps to identify a head unit</description>
</param>
-
- <!-- Ford Specific Data Items -->
<param name="eCallInfo" type="Boolean" mandatory="false">
<description>Emergency Call notification and confirmation data</description>
</param>
@@ -5907,9 +5907,6 @@
<param name="myKey" type="Boolean" mandatory="false">
<description>Information related to the MyKey feature</description>
</param>
-
- <!-- / Ford Specific Data Items -->
-
</function>
<function name="SubscribeVehicleData" functionID="SubscribeVehicleDataID" messagetype="response" since="2.0">
@@ -6008,8 +6005,6 @@
<param name="cloudAppVehicleID" type="VehicleDataResult" mandatory="false" since="5.1">
<description>Parameter used by cloud apps to identify a head unit</description>
</param>
-
- <!-- Ford Specific Data Items -->
<param name="eCallInfo" type="VehicleDataResult" mandatory="false">
<description>Emergency Call notification and confirmation data</description>
</param>
@@ -6025,8 +6020,6 @@
<param name="myKey" type="VehicleDataResult" mandatory="false">
<description>Information related to the MyKey feature</description>
</param>
- <!-- / Ford Specific Data Items -->
-
</function>
<function name="UnsubscribeVehicleData" functionID="UnsubscribeVehicleDataID" messagetype="request" since="2.0">
@@ -6104,8 +6097,6 @@
<param name="cloudAppVehicleID" type="Boolean" mandatory="false" since="5.1">
<description>Parameter used by cloud apps to identify a head unit</description>
</param>
-
- <!-- Ford Specific Data Items -->
<param name="eCallInfo" type="Boolean" mandatory="false">
<description>Emergency Call notification and confirmation data</description>
</param>
@@ -6121,8 +6112,6 @@
<param name="myKey" type="Boolean" mandatory="false">
<description>Information related to the MyKey feature</description>
</param>
- <!-- / Ford Specific Data Items -->
-
</function>
<function name="UnsubscribeVehicleData" functionID="UnsubscribeVehicleDataID" messagetype="response" since="2.0">
@@ -6220,8 +6209,6 @@
<param name="cloudAppVehicleID" type="VehicleDataResult" mandatory="false" since="5.1">
<description>Parameter used by cloud apps to identify a head unit</description>
</param>
-
- <!-- Ford Specific Data Items -->
<param name="eCallInfo" type="VehicleDataResult" mandatory="false">
<description>Emergency Call notification and confirmation data</description>
</param>
@@ -6237,8 +6224,6 @@
<param name="myKey" type="VehicleDataResult" mandatory="false">
<description>Information related to the MyKey feature</description>
</param>
- <!-- / Ford Specific Data Items -->
-
</function>
<function name="GetVehicleData" functionID="GetVehicleDataID" messagetype="request" since="2.0">
@@ -6319,8 +6304,6 @@
<param name="cloudAppVehicleID" type="Boolean" mandatory="false" since="5.1">
<description>Parameter used by cloud apps to identify a head unit</description>
</param>
-
- <!-- Ford Specific Data Items -->
<param name="eCallInfo" type="Boolean" mandatory="false">
<description>Emergency Call notification and confirmation data</description>
</param>
@@ -6336,8 +6319,6 @@
<param name="myKey" type="Boolean" mandatory="false">
<description>Information related to the MyKey feature</description>
</param>
- <!-- / Ford Specific Data Items -->
-
</function>
<function name="GetVehicleData" functionID="GetVehicleDataID" messagetype="response" since="2.0">
@@ -6439,8 +6420,6 @@
<param name="cloudAppVehicleID" type="String" mandatory="false" since="5.1">
<description>Parameter used by cloud apps to identify a head unit</description>
</param>
-
- <!-- Ford Specific Data Items -->
<param name="eCallInfo" type="ECallInfo" mandatory="false">
<description>Emergency Call notification and confirmation data</description>
</param>
@@ -6456,8 +6435,6 @@
<param name="myKey" type="MyKey" mandatory="false">
<description>Information related to the MyKey feature</description>
</param>
- <!-- / Ford Specific Data Items -->
-
</function>
<function name="ReadDID" functionID="ReadDIDID" messagetype="request" since="2.0">
@@ -6615,13 +6592,11 @@
If omitted on supported displays, only the system defined "Close" SoftButton will be displayed.
</description>
</param>
-
<param name="cancelID" type="Integer" mandatory="false" since="6.0">
<description>
- An ID for this specific alert to allow cancellation through the `CancelInteraction` RPC.
+ An ID for this specific ScrollableMessage to allow cancellation through the `CancelInteraction` RPC.
</description>
</param>
-
</function>
<function name="ScrollableMessage" functionID="ScrollableMessageID" messagetype="response" since="2.0">
@@ -6678,7 +6653,7 @@
</param>
<param name="cancelID" type="Integer" mandatory="false" since="6.0">
<description>
- An ID for this specific alert to allow cancellation through the `CancelInteraction` RPC.
+ An ID for this specific Slider to allow cancellation through the `CancelInteraction` RPC.
</description>
</param>
</function>
@@ -7186,6 +7161,9 @@
</function>
<function name="SetDisplayLayout" functionID="SetDisplayLayoutID" messagetype="request" deprecated="true" since="6.0">
+ <history>
+ <function name="SetDisplayLayout" functionID="SetDisplayLayoutID" messagetype="request" since="3.0" until="6.0"/>
+ </history>
<description>This RPC is deprecated. Use Show RPC to change layout.</description>
<param name="displayLayout" type="String" maxlength="500" mandatory="true">
<description>
@@ -7200,6 +7178,9 @@
</function>
<function name="SetDisplayLayout" functionID="SetDisplayLayoutID" messagetype="response" deprecated="true" since="6.0">
+ <history>
+ <function name="SetDisplayLayout" functionID="SetDisplayLayoutID" messagetype="response" since="3.0" until="6.0"/>
+ </history>
<description>This RPC is deprecated. Use Show RPC to change layout.</description>
<param name="success" type="Boolean" platform="documentation" mandatory="true">
<description> true, if successful; false, if failed </description>
@@ -7285,6 +7266,10 @@
<element name="TIMED_OUT"/>
<element name="IGNORED"/>
</param>
+
+ <param name="info" type="String" maxlength="1000" mandatory="false" platform="documentation">
+ <description>Provides additional human readable info regarding the result.</description>
+ </param>
</function>
<function name="SendLocation" functionID="SendLocationID" messagetype="request" since="3.0">
@@ -7476,20 +7461,19 @@
</description>
</param>
</function>
+
<function name="GetInteriorVehicleDataConsent" functionID="GetInteriorVehicleDataConsentID" messagetype="request" since="6.0">
<param name="moduleType" type="ModuleType" mandatory="true">
- <description>The module type that the app requests to control.</description>
+ <description>The module type that the app requests to control.</description>
</param>
<param name="moduleIds" type="String" maxlength="100" array="true" mandatory="true">
- <description>Ids of a module of same type, published by System Capability. </description>
+ <description>Ids of a module of same type, published by System Capability. </description>
</param>
</function>
-
+
<function name="GetInteriorVehicleDataConsent" functionID="GetInteriorVehicleDataConsentID" messagetype="response" since="6.0">
- <param name="allowed" type="Boolean" array="true" mandatory="false">
- <description>This array has the same size as "moduleIds" in the request; each element corresponding to one moduleId
- "true" - if SDL grants the permission for the requested module;
- "false" - SDL denies the permission for the requested module.</description>
+ <param name="success" type="Boolean" platform="documentation" mandatory="true">
+ <description> true if successful; false, if failed </description>
</param>
<param name="resultCode" type="Result" platform="documentation" mandatory="true">
<description>See Result</description>
@@ -7507,11 +7491,15 @@
</param>
<param name="info" type="String" maxlength="1000" mandatory="false">
</param>
- <param name="success" type="Boolean" platform="documentation" mandatory="true">
- <description> true if successful; false, if failed </description>
+ <param name="allowed" type="Boolean" array="true" mandatory="false">
+ <description>
+ This array has the same size as "moduleIds" in the request and each element corresponds to one moduleId
+ If true, SDL grants the permission for the requested module
+ If false, SDL denies the permission for the requested module.
+ </description>
</param>
</function>
-
+
<function name="ReleaseInteriorVehicleDataModule" functionID="ReleaseInteriorVehicleDataModuleID" messagetype="request" since="6.0">
<param name="moduleType" type="ModuleType" mandatory="true">
</param>
@@ -7519,8 +7507,11 @@
<description>Id of a module, published by System Capability. </description>
</param>
</function>
-
+
<function name="ReleaseInteriorVehicleDataModule" functionID="ReleaseInteriorVehicleDataModuleID" messagetype="response" since="6.0">
+ <param name="success" type="Boolean" platform="documentation" mandatory="true">
+ <description> true if successful; false, if failed </description>
+ </param>
<param name="resultCode" type="Result" platform="documentation" mandatory="true">
<description>See Result</description>
<element name="SUCCESS"/>
@@ -7536,9 +7527,6 @@
</param>
<param name="info" type="String" maxlength="1000" mandatory="false">
</param>
- <param name="success" type="Boolean" platform="documentation" mandatory="true">
- <description> true if successful; false, if failed </description>
- </param>
</function>
<function name="SetInteriorVehicleData" functionID="SetInteriorVehicleDataID" messagetype="request" since="4.5">
@@ -7825,13 +7813,13 @@
<description> The ID of the service to be unpublished. </description>
</param>
</function>
-
+
<function name="UnpublishAppService" functionID="UnpublishAppServiceID" messagetype="response" since="6.0">
<description> The response to UnpublishAppService </description>
<param name="success" type="Boolean" platform="documentation" mandatory="true">
<description> true, if successful; false, if failed </description>
</param>
-
+
<param name="resultCode" type="Result" platform="documentation" mandatory="true">
<description>See Result</description>
<element name="SUCCESS"/>
@@ -7955,10 +7943,17 @@
<param name="resultCode" type="Result" platform="documentation" mandatory="true">
<description>See Result</description>
<element name="SUCCESS"/>
- <element name="DISALLOWED"/>
+ <element name="IGNORED"/>
+ <element name="INVALID_DATA"/>
+ <element name="OUT_OF_MEMORY"/>
+ <element name="TOO_MANY_PENDING_REQUESTS"/>
<element name="APPLICATION_NOT_REGISTERED"/>
<element name="GENERIC_ERROR"/>
- <element name="IGNORED"/>
+ <element name="REJECTED"/>
+ <element name="DISALLOWED"/>
+ <element name="UNSUPPORTED_RESOURCE"/>
+ <element name="WARNINGS"/>
+ <element name="ABORTED"/>
</param>
<param name="info" type="String" maxlength="1000" mandatory="false" platform="documentation">
@@ -7974,7 +7969,7 @@
<param name="success" type="Boolean" platform="documentation" mandatory="true">
<description> true if successful; false, if failed </description>
</param>
-
+
<param name="resultCode" type="Result" platform="documentation" mandatory="true">
<description>See Result</description>
<element name="SUCCESS"/>
@@ -7983,7 +7978,7 @@
<element name="GENERIC_ERROR"/>
<element name="IGNORED"/>
</param>
-
+
<param name="info" type="String" maxlength="1000" mandatory="false" platform="documentation">
<description>Provides additional human readable info regarding the result.</description>
</param>
@@ -8122,8 +8117,6 @@
<param name="cloudAppVehicleID" type="String" mandatory="false" since="5.1">
<description>Parameter used by cloud apps to identify a head unit</description>
</param>
-
- <!-- Ford Specific Vehicle Data -->
<param name="eCallInfo" type="ECallInfo" mandatory="false">
<description>Emergency Call notification and confirmation data</description>
</param>
@@ -8139,8 +8132,6 @@
<param name="myKey" type="MyKey" mandatory="false">
<description>Information related to the MyKey feature</description>
</param>
- <!-- / Ford Specific Vehicle Data -->
-
</function>
<function name="OnCommand" functionID="OnCommandID" messagetype="notification" since="1.0">
diff --git a/src/components/media_manager/src/pipe_streamer_adapter.cc b/src/components/media_manager/src/pipe_streamer_adapter.cc
index c692a0e266..bda106721f 100644
--- a/src/components/media_manager/src/pipe_streamer_adapter.cc
+++ b/src/components/media_manager/src/pipe_streamer_adapter.cc
@@ -82,7 +82,7 @@ PipeStreamerAdapter::PipeStreamer::~PipeStreamer() {
bool PipeStreamerAdapter::PipeStreamer::Connect() {
LOG4CXX_AUTO_TRACE(logger_);
- pipe_fd_ = open(named_pipe_path_.c_str(), O_RDWR, 0);
+ pipe_fd_ = open(named_pipe_path_.c_str(), O_RDWR | O_NONBLOCK, 0);
if (-1 == pipe_fd_) {
LOG4CXX_ERROR(logger_, "Cannot open pipe for writing " << named_pipe_path_);
return false;
@@ -106,16 +106,51 @@ void PipeStreamerAdapter::PipeStreamer::Disconnect() {
bool PipeStreamerAdapter::PipeStreamer::Send(
protocol_handler::RawMessagePtr msg) {
LOG4CXX_AUTO_TRACE(logger_);
- ssize_t ret = write(pipe_fd_, msg->data(), msg->data_size());
- if (-1 == ret) {
- LOG4CXX_ERROR(logger_, "Failed writing data to pipe " << named_pipe_path_);
- return false;
- }
-
- if (static_cast<uint32_t>(ret) != msg->data_size()) {
- LOG4CXX_WARN(logger_,
- "Couldn't write all the data to pipe " << named_pipe_path_);
- }
+ fd_set wfds;
+ FD_ZERO(&wfds);
+ FD_SET(pipe_fd_, &wfds);
+ struct timeval tv;
+ tv.tv_sec = 10;
+ tv.tv_usec = 0;
+ ssize_t write_ret = 0;
+ bool data_remaining = false;
+ do {
+ int select_ret = select(pipe_fd_ + 1, NULL, &wfds, NULL, &tv);
+ // Most likely pipe closed, fail stream
+ if (select_ret == -1) {
+ LOG4CXX_ERROR(logger_,
+ "Failed writing data to pipe "
+ << named_pipe_path_ << ". Errno: " << strerror(errno));
+ return false;
+ // Select success, attempt to write
+ } else if (select_ret) {
+ ssize_t temp_ret = write(
+ pipe_fd_, msg->data() + write_ret, msg->data_size() - write_ret);
+ if (-1 == temp_ret) {
+ LOG4CXX_ERROR(logger_,
+ "Failed writing data to pipe "
+ << named_pipe_path_
+ << ". Errno: " << strerror(errno));
+ return false;
+ }
+ write_ret += temp_ret;
+ // Select timed out, fail stream.
+ } else {
+ LOG4CXX_ERROR(logger_,
+ "Failed writing data to pipe " << named_pipe_path_
+ << ". Error: TIMEOUT");
+ return false;
+ }
+ // Check that all data was written to the pipe.
+ data_remaining = static_cast<uint32_t>(write_ret) != msg->data_size();
+ if (data_remaining) {
+ LOG4CXX_WARN(logger_,
+ "Couldn't write all the data to pipe "
+ << named_pipe_path_ << ". "
+ << msg->data_size() - write_ret << " bytes remaining");
+ }
+ // Loop to send remaining data if there is any.
+ } while (data_remaining);
LOG4CXX_INFO(logger_, "Streamer::sent " << msg->data_size());
return true;
diff --git a/tools/InterfaceGenerator/generator/parsers/RPCBase.py b/tools/InterfaceGenerator/generator/parsers/RPCBase.py
index d11b9e8d0d..ac5bb4c858 100755
--- a/tools/InterfaceGenerator/generator/parsers/RPCBase.py
+++ b/tools/InterfaceGenerator/generator/parsers/RPCBase.py
@@ -904,7 +904,7 @@ class Parser(object):
elif subelement.tag == "param" and parent.tag == "param":
items.append(self._parse_function_param(subelement, prefix))
elif subelement.tag == "function" and parent.tag == "function":
- items.append(self.__parse_function(subelement, prefix))
+ items.append(self._parse_function(subelement, prefix))
else:
raise ParseError("A history tag must be nested within the element it notes the history for. Fix item: '" +
parent.attrib["name"] + "'")