summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJackLivio <jack@livio.io>2019-01-24 09:56:12 -0500
committerJackLivio <jack@livio.io>2019-01-24 09:56:12 -0500
commit55a14219ced574948a44ffa30f1c76acab7eafa3 (patch)
treece5597f3c15128b7a956201aee63d40498e06293
parentd861c8f7097e331e82c86b926d2db104caade052 (diff)
parent512f736856ad28572a0470d6ca5afe38d1977af3 (diff)
downloadsdl_core-55a14219ced574948a44ffa30f1c76acab7eafa3.tar.gz
Merge remote-tracking branch 'origin/feature/base_app_services_implementation' into feature/app_service_policies
-rw-r--r--src/components/application_manager/include/application_manager/app_service_manager.h83
-rw-r--r--src/components/application_manager/include/application_manager/application_manager_impl.h7
-rw-r--r--src/components/application_manager/rpc_plugins/CMakeLists.txt2
-rw-r--r--src/components/application_manager/rpc_plugins/app_service_rpc_plugin/include/app_service_rpc_plugin/commands/hmi/as_publish_app_service_request.h2
-rw-r--r--src/components/application_manager/rpc_plugins/app_service_rpc_plugin/include/app_service_rpc_plugin/commands/mobile/publish_app_service_request.h2
-rw-r--r--src/components/application_manager/rpc_plugins/app_service_rpc_plugin/src/commands/hmi/as_publish_app_service_request.cc23
-rw-r--r--src/components/application_manager/rpc_plugins/app_service_rpc_plugin/src/commands/mobile/publish_app_service_request.cc22
-rw-r--r--src/components/application_manager/src/app_service_manager.cc85
-rw-r--r--src/components/application_manager/src/application_manager_impl.cc2
-rw-r--r--src/components/include/application_manager/application_manager.h3
-rw-r--r--src/components/include/test/application_manager/mock_application_manager.h3
-rw-r--r--src/components/interfaces/HMI_API.xml211
-rw-r--r--src/components/interfaces/MOBILE_API.xml239
13 files changed, 542 insertions, 142 deletions
diff --git a/src/components/application_manager/include/application_manager/app_service_manager.h b/src/components/application_manager/include/application_manager/app_service_manager.h
new file mode 100644
index 0000000000..afbf9b8dcd
--- /dev/null
+++ b/src/components/application_manager/include/application_manager/app_service_manager.h
@@ -0,0 +1,83 @@
+/*
+ * Copyright (c) 2018, Ford Motor Company
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ *
+ * Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following
+ * disclaimer in the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * Neither the name of the Ford Motor Company nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef SRC_COMPONENTS_APPLICATION_MANAGER_INCLUDE_APPLICATION_MANAGER_APP_SERVICE_MANAGER_H_
+#define SRC_COMPONENTS_APPLICATION_MANAGER_INCLUDE_APPLICATION_MANAGER_APP_SERVICE_MANAGER_H_
+
+#include "smart_objects/smart_object.h"
+
+namespace application_manager {
+
+class ApplicationManager;
+
+/**
+ * @brief The AppServiceManager is TODO.
+ */
+class AppServiceManager {
+ public:
+ /**
+ * @brief Class constructor
+ * @param app_manager
+ */
+ AppServiceManager(ApplicationManager& app_manager);
+
+ /**
+ * @brief Class destructor
+ */
+ ~AppServiceManager();
+
+ /**
+ * @brief TODO
+ * @param manifest
+ */
+ bool PublishAppService(const smart_objects::SmartObject& manifest);
+
+ /**
+ * @brief TODO
+ * @param manifest
+ */
+ bool UnpublishAppService(const std::string service_id);
+
+ /**
+ * @brief TODO
+ * @param manifest
+ */
+ std::vector<smart_objects::SmartObject> GetAllServices();
+
+ private:
+ ApplicationManager& app_manager_;
+ std::map<std::string, smart_objects::SmartObject> published_services_;
+};
+
+} // namespace application_manager
+
+#endif // SRC_COMPONENTS_APPLICATION_MANAGER_INCLUDE_APPLICATION_MANAGER_APP_SERVICE_MANAGER_H_
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 8c062f9016..418161b0ff 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
@@ -213,6 +213,12 @@ class ApplicationManagerImpl
return *plugin_manager_;
}
+ virtual application_manager::AppServiceManager& GetAppServiceManager()
+ OVERRIDE {
+ DCHECK(app_service_manager_);
+ return *app_service_manager_;
+ }
+
std::vector<std::string> devices(
const std::string& policy_app_id) const OVERRIDE;
@@ -1401,6 +1407,7 @@ class ApplicationManagerImpl
protocol_handler::ProtocolHandler* protocol_handler_;
request_controller::RequestController request_ctrl_;
std::unique_ptr<plugin_manager::RPCPluginManager> plugin_manager_;
+ std::unique_ptr<application_manager::AppServiceManager> app_service_manager_;
/**
* @brief Map contains apps with HMI state before incoming call
diff --git a/src/components/application_manager/rpc_plugins/CMakeLists.txt b/src/components/application_manager/rpc_plugins/CMakeLists.txt
index e4f0051738..8884b30532 100644
--- a/src/components/application_manager/rpc_plugins/CMakeLists.txt
+++ b/src/components/application_manager/rpc_plugins/CMakeLists.txt
@@ -32,4 +32,4 @@
add_subdirectory(vehicle_info_plugin)
add_subdirectory(sdl_rpc_plugin)
add_subdirectory(rc_rpc_plugin)
-add_subdirectory(app_service_rpc_plugin) \ No newline at end of file
+add_subdirectory(app_service_rpc_plugin)
diff --git a/src/components/application_manager/rpc_plugins/app_service_rpc_plugin/include/app_service_rpc_plugin/commands/hmi/as_publish_app_service_request.h b/src/components/application_manager/rpc_plugins/app_service_rpc_plugin/include/app_service_rpc_plugin/commands/hmi/as_publish_app_service_request.h
index b21f99885a..0c7f222c1d 100644
--- a/src/components/application_manager/rpc_plugins/app_service_rpc_plugin/include/app_service_rpc_plugin/commands/hmi/as_publish_app_service_request.h
+++ b/src/components/application_manager/rpc_plugins/app_service_rpc_plugin/include/app_service_rpc_plugin/commands/hmi/as_publish_app_service_request.h
@@ -69,6 +69,8 @@ class ASPublishAppServiceRequest : public app_mngr::commands::RequestFromHMI {
virtual void Run();
private:
+ bool ValidateManifest(smart_objects::SmartObject& manifest);
+
AppServiceRpcPlugin* plugin_;
DISALLOW_COPY_AND_ASSIGN(ASPublishAppServiceRequest);
};
diff --git a/src/components/application_manager/rpc_plugins/app_service_rpc_plugin/include/app_service_rpc_plugin/commands/mobile/publish_app_service_request.h b/src/components/application_manager/rpc_plugins/app_service_rpc_plugin/include/app_service_rpc_plugin/commands/mobile/publish_app_service_request.h
index ede7afbc73..459fa0457e 100644
--- a/src/components/application_manager/rpc_plugins/app_service_rpc_plugin/include/app_service_rpc_plugin/commands/mobile/publish_app_service_request.h
+++ b/src/components/application_manager/rpc_plugins/app_service_rpc_plugin/include/app_service_rpc_plugin/commands/mobile/publish_app_service_request.h
@@ -68,6 +68,8 @@ class PublishAppServiceRequest : public app_mngr::commands::CommandRequestImpl {
virtual void Run();
private:
+ bool ValidateManifest(smart_objects::SmartObject& manifest);
+
AppServiceRpcPlugin* plugin_;
DISALLOW_COPY_AND_ASSIGN(PublishAppServiceRequest);
};
diff --git a/src/components/application_manager/rpc_plugins/app_service_rpc_plugin/src/commands/hmi/as_publish_app_service_request.cc b/src/components/application_manager/rpc_plugins/app_service_rpc_plugin/src/commands/hmi/as_publish_app_service_request.cc
index 9acc8c3146..835762f78a 100644
--- a/src/components/application_manager/rpc_plugins/app_service_rpc_plugin/src/commands/hmi/as_publish_app_service_request.cc
+++ b/src/components/application_manager/rpc_plugins/app_service_rpc_plugin/src/commands/hmi/as_publish_app_service_request.cc
@@ -59,14 +59,35 @@ ASPublishAppServiceRequest::ASPublishAppServiceRequest(
ASPublishAppServiceRequest::~ASPublishAppServiceRequest() {}
+bool ASPublishAppServiceRequest::ValidateManifest(
+ smart_objects::SmartObject& manifest) {
+ if (manifest.keyExists(strings::uri_scheme)) {
+ Json::Value value;
+ Json::Reader reader;
+ if (!reader.parse(manifest[strings::uri_scheme].asString(), value)) {
+ SendResponse(
+ false,
+ (*message_)[strings::params][strings::correlation_id].asUInt(),
+ hmi_apis::FunctionID::AppService_PublishAppService,
+ hmi_apis::Common_Result::INVALID_DATA);
+ return false;
+ }
+ }
+ return true;
+}
+
void ASPublishAppServiceRequest::Run() {
LOG4CXX_AUTO_TRACE(logger_);
smart_objects::SmartObject response_params =
smart_objects::SmartObject(smart_objects::SmartType_Map);
smart_objects::SmartObject service_record =
smart_objects::SmartObject(smart_objects::SmartType_Map);
- service_record[strings::service_manifest] =
+ smart_objects::SmartObject manifest =
(*message_)[strings::msg_params][strings::app_service_manifest];
+ if (!ValidateManifest(manifest)) {
+ return;
+ }
+ service_record[strings::service_manifest] = manifest;
service_record[strings::service_id] = "This is a service ID";
service_record[strings::service_published] = true;
service_record[strings::service_active] = true;
diff --git a/src/components/application_manager/rpc_plugins/app_service_rpc_plugin/src/commands/mobile/publish_app_service_request.cc b/src/components/application_manager/rpc_plugins/app_service_rpc_plugin/src/commands/mobile/publish_app_service_request.cc
index da91930509..c19cd22859 100644
--- a/src/components/application_manager/rpc_plugins/app_service_rpc_plugin/src/commands/mobile/publish_app_service_request.cc
+++ b/src/components/application_manager/rpc_plugins/app_service_rpc_plugin/src/commands/mobile/publish_app_service_request.cc
@@ -62,6 +62,21 @@ PublishAppServiceRequest::PublishAppServiceRequest(
PublishAppServiceRequest::~PublishAppServiceRequest() {}
+bool PublishAppServiceRequest::ValidateManifest(
+ smart_objects::SmartObject& manifest) {
+ if (manifest.keyExists(strings::uri_scheme)) {
+ Json::Value value;
+ Json::Reader reader;
+ if (!reader.parse(manifest[strings::uri_scheme].asString(), value)) {
+ SendResponse(false,
+ mobile_apis::Result::INVALID_DATA,
+ "Provided uriScheme was not valid JSON");
+ return false;
+ }
+ }
+ return true;
+}
+
void PublishAppServiceRequest::Run() {
LOG4CXX_AUTO_TRACE(logger_);
LOG4CXX_DEBUG(logger_, "Received a PublishAppService");
@@ -69,11 +84,14 @@ void PublishAppServiceRequest::Run() {
smart_objects::SmartObject response_params =
smart_objects::SmartObject(smart_objects::SmartType_Map);
-
smart_objects::SmartObject service_record =
smart_objects::SmartObject(smart_objects::SmartType_Map);
- service_record[strings::service_manifest] =
+ smart_objects::SmartObject manifest =
(*message_)[strings::msg_params][strings::app_service_manifest];
+ if (!ValidateManifest(manifest)) {
+ return;
+ }
+ service_record[strings::service_manifest] = manifest;
service_record[strings::service_id] = "This is a service ID";
service_record[strings::service_published] = true;
service_record[strings::service_active] = true;
diff --git a/src/components/application_manager/src/app_service_manager.cc b/src/components/application_manager/src/app_service_manager.cc
new file mode 100644
index 0000000000..2c5a31e86e
--- /dev/null
+++ b/src/components/application_manager/src/app_service_manager.cc
@@ -0,0 +1,85 @@
+/*
+ * Copyright (c) 2018, Ford Motor Company
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ *
+ * Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following
+ * disclaimer in the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * Neither the name of the Ford Motor Company nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "application_manager/help_prompt_manager_impl.h"
+
+#include <algorithm>
+#include <iterator>
+
+#include "application_manager/application.h"
+#include "application_manager/application_manager.h"
+#include "application_manager/commands/command_impl.h"
+#include "application_manager/message_helper.h"
+#include "application_manager/smart_object_keys.h"
+#include "smart_objects/smart_object.h"
+#include "utils/logger.h"
+
+CREATE_LOGGERPTR_GLOBAL(logger_, "AppServiceManager")
+
+namespace {
+const size_t kLimitCommand = 30;
+}
+
+namespace application_manager {
+
+AppServiceManager::AppServiceManager(ApplicationManager& app_manager)
+ : app_manager_(app_manager) {}
+
+AppServiceManager::~AppServiceManager() {
+ LOG4CXX_AUTO_TRACE(logger_);
+}
+
+bool AppServiceManager::PublishAppService(
+ const smart_objects::SmartObject& manifest) {
+ std::string service_id = "SERVICE_UUID"; // TODO: Generate UUID
+ published_services_.insert(
+ std::pair<std::string, smart_objects::SmartObject>(service_id, manifest));
+ return true;
+}
+
+bool AppServiceManager::UnpublishAppService(const std::string service_id) {
+ LOG4CXX_AUTO_TRACE(logger_);
+ // TODO
+ return false;
+}
+
+std::vector<smart_objects::SmartObject> AppServiceManager::GetAllServices() {
+ LOG4CXX_AUTO_TRACE(logger_);
+ std::vector<smart_objects::SmartObject> services;
+ for (auto it = published_services_.begin(); it != published_services_.end();
+ ++it) {
+ services.push_back(it->second);
+ }
+ return services;
+}
+
+} // namespace application_manager
diff --git a/src/components/application_manager/src/application_manager_impl.cc b/src/components/application_manager/src/application_manager_impl.cc
index edf4be561b..d82eeb776c 100644
--- a/src/components/application_manager/src/application_manager_impl.cc
+++ b/src/components/application_manager/src/application_manager_impl.cc
@@ -2009,6 +2009,8 @@ bool ApplicationManagerImpl::Init(resumption::LastState& last_state,
}
app_launch_ctrl_.reset(new app_launch::AppLaunchCtrlImpl(
*app_launch_dto_.get(), *this, settings_));
+
+ app_service_manager_.reset(new application_manager::AppServiceManager(*this));
return true;
}
diff --git a/src/components/include/application_manager/application_manager.h b/src/components/include/application_manager/application_manager.h
index 47b6bcbc9d..adb47c8a99 100644
--- a/src/components/include/application_manager/application_manager.h
+++ b/src/components/include/application_manager/application_manager.h
@@ -51,6 +51,7 @@
#include "application_manager/hmi_interfaces.h"
#include "policy/policy_types.h"
#include "application_manager/plugin_manager/rpc_plugin_manager.h"
+#include "application_manager/app_service_manager.h"
namespace resumption {
class LastState;
}
@@ -188,6 +189,8 @@ class ApplicationManager {
virtual plugin_manager::RPCPluginManager& GetPluginManager() = 0;
+ virtual application_manager::AppServiceManager& GetAppServiceManager() = 0;
+
#ifdef BUILD_TESTS
virtual void SetPluginManager(
std::unique_ptr<plugin_manager::RPCPluginManager>& plugin_manager) = 0;
diff --git a/src/components/include/test/application_manager/mock_application_manager.h b/src/components/include/test/application_manager/mock_application_manager.h
index 30a24ad9ce..582884e1e7 100644
--- a/src/components/include/test/application_manager/mock_application_manager.h
+++ b/src/components/include/test/application_manager/mock_application_manager.h
@@ -59,6 +59,7 @@ namespace test {
namespace components {
namespace application_manager_test {
using application_manager::plugin_manager::RPCPluginManager;
+using application_manager::AppServiceManager;
class MockApplicationManager : public application_manager::ApplicationManager {
public:
@@ -91,6 +92,8 @@ class MockApplicationManager : public application_manager::ApplicationManager {
MOCK_METHOD1(SetPluginManager,
void(std::unique_ptr<RPCPluginManager>& plugin_manager));
+ MOCK_METHOD0(GetAppServiceManager, AppServiceManager&());
+
MOCK_CONST_METHOD1(
application_by_hmi_app,
application_manager::ApplicationSharedPtr(uint32_t hmi_app_id));
diff --git a/src/components/interfaces/HMI_API.xml b/src/components/interfaces/HMI_API.xml
index 9ebb7d3239..2a9be1954b 100644
--- a/src/components/interfaces/HMI_API.xml
+++ b/src/components/interfaces/HMI_API.xml
@@ -3375,7 +3375,8 @@
<!-- App Services -->
<enum name="AppServiceType">
- <element name="MEDIA"/>
+ <element name="MEDIA"/>
+ <element name="WEATHER"/>
</enum>
<struct name="MediaServiceManifest">
@@ -3383,15 +3384,15 @@
<enum name="MediaType">
<element name="MUSIC"/>
- <element name="PODCAST"/>
- <element name="AUDIOBOOK"/>
- <element name="OTHER"/>
+ <element name="PODCAST"/>
+ <element name="AUDIOBOOK"/>
+ <element name="OTHER"/>
</enum>
<struct name="MediaServiceData">
<description>This data is related to what a media service should provide</description>
- <param name="mediaType" type="MediaType" mandatory="false">
+ <param name="mediaType" type="Common.MediaType" mandatory="false">
<description>The type of the currently playing or paused track.</description>
</param>
@@ -3449,9 +3450,9 @@
<param name="queuePlaybackProgess" type="Integer" mandatory="false">
<description>
- Music: The current progress of the playback queue in seconds
- Podcast: The current progress of the playback queue in seconds
- Audiobook: The current progress of the playback queue (e.g. the book) in seconds
+ Music: The current progress of the playback queue in seconds
+ Podcast: The current progress of the playback queue in seconds
+ Audiobook: The current progress of the playback queue (e.g. the book) in seconds
</description>
</param>
@@ -3480,71 +3481,157 @@
</param>
</struct>
+ <struct name="WeatherServiceManifest" since="5.1">
+ <param name="currentForecastSupported" type="Boolean" mandatory="false"/>
+ <param name="maxMultidayForecastAmount" type="Integer" mandatory="false"/>
+ <param name="maxHourlyForecastAmount" type="Integer" mandatory="false"/>
+ <param name="maxMinutelyForecastAmount" type="Integer" mandatory="false"/>
+ <param name="weatherForLocationSupported" type="Boolean" mandatory="false"/>
+ </struct>
+
+ <struct name="WeatherAlert" since="5.1">
+ <param name="title" type="String" mandatory="false"/>
+ <param name="summary" type="String" mandatory="false"/>
+ <param name="expires" type="Common.DateTime" mandatory="false"/>
+ <param name="regions" type="String" array="true" minsize="1" maxsize="99" mandatory="false"/>
+ <param name="severity" type="String" mandatory="false"/>
+ <param name="timeIssued" type="Common.DateTime" mandatory="false"/>
+ </struct>
+
+ <struct name="WeatherData" since="5.1">
+ <param name="currentTemperature" type="Common.Temperature" mandatory="false"/>
+ <param name="temperatureHigh" type="Common.Temperature" mandatory="false"/>
+ <param name="temperatureLow" type="Common.Temperature" mandatory="false"/>
+ <param name="apparentTemperature" type="Common.Temperature" mandatory="false"/>
+ <param name="apparentTemperatureHigh" type="Common.Temperature" mandatory="false"/>
+ <param name="apparentTemperatureLow" type="Common.Temperature" mandatory="false"/>
+
+ <param name="weatherSummary" type="String" mandatory="false"/>
+ <param name="time" type="Common.DateTime" mandatory="false"/>
+ <param name="humidity" type="Float" minvalue="0" maxvalue="1" mandatory="false">
+ <description> 0 to 1, percentage humidity </description>
+ </param>
+ <param name="cloudCover" type="Float" minvalue="0" maxvalue="1" mandatory="false">
+ <description> 0 to 1, percentage cloud cover </description>
+ </param>
+ <param name="moonPhase" type="Float" minvalue="0" maxvalue="1" mandatory="false">
+ <description> 0 to 1, percentage of the moon seen, e.g. 0 = no moon, 0.25 = quarter moon </description>
+ </param>
+
+ <param name="windBearing" type="Integer" mandatory="false">
+ <description> In degrees, true north at 0 degrees </description>
+ </param>
+ <param name="windGust" type="Float" mandatory="false">
+ <description> km/hr </description>
+ </param>
+ <param name="windSpeed" type="Float" mandatory="false">
+ <description> km/hr </description>
+ </param>
+
+ <param name="nearestStormBearing" type="Integer" mandatory="false">
+ <description> In degrees, true north at 0 degrees </description>
+ </param>
+ <param name="nearestStormDistance" type="Integer" mandatory="false">
+ <description> In km </description>
+ </param>
+ <param name="precipAccumulation" type="Float" mandatory="false">
+ <description> cm </description>
+ </param>
+ <param name="precipIntensity" type="Float" mandatory="false">
+ <description> cm of water per hour </description>
+ </param>
+ <param name="precipProbability" type="Float" minvalue="0" maxvalue="1" mandatory="false">
+ <description> 0 to 1, percentage chance </description>
+ </param>
+ <param name="precipType" type="String" mandatory="false">
+ <description> e.g. "rain", "snow", "sleet", "hail" </description>
+ </param>
+ <param name="visibility" type="Float" mandatory="false">
+ <description> In km </description>
+ </param>
+
+ <param name="weatherIconImageName" type="String" mandatory="false"/>
+ </struct>
+
+ <struct name="WeatherServiceData" since="5.1">
+ <description> This data is related to what a weather service would provide</description>
+ <param name="location" type="Common.LocationDetails" mandatory="true"/>
+ <param name="currentForecast" type="Common.WeatherData" mandatory="false"/>
+ <param name="minuteForecast" type="Common.WeatherData" array="true" minsize="15" maxsize="60" mandatory="false"/>
+ <param name="hourlyForecast" type="Common.WeatherData" array="true" minsize="1" maxsize="96" mandatory="false"/>
+ <param name="multidayForecast" type="Common.WeatherData" array="true" minsize="1" maxsize="30" mandatory="false"/>
+ <param name="alerts" type="Common.WeatherAlert" array="true" minsize="1" maxsize="10" mandatory="false">
+ <description> This array should be ordered with the first object being the current day</description>
+ </param>
+ </struct>
+
<struct name="AppServiceManifest">
- <description> This manfifest contains all the information necessary for the service to be published, activated, and consumers able to interact with it</description>
+ <description> This manifest contains all the information necessary for the service to be published, activated, and consumers able to interact with it </description>
- <param name="serviceName" type="String" mandatory="false">
- <description> Unique name of this service</description>
- </param>
+ <param name="serviceName" type="String" mandatory="false">
+ <description> Unique name of this service </description>
+ </param>
- <param name="serviceType" type="AppServiceType" mandatory="true">
- <description>The type of service that is to be offered by this app</description>
- </param>
+ <param name="serviceType" type="Common.AppServiceType" mandatory="true">
+ <description> The type of service that is to be offered by this app </description>
+ </param>
- <param name="serviceIcon" type="String" mandatory="false">
- <description> The file name of the icon to be associated with this service. Most likely the same as the appIcon.</description>
- </param>
+ <param name="serviceIcon" type="String" mandatory="false">
+ <description> The file name of the icon to be associated with this service. Most likely the same as the appIcon. </description>
+ </param>
- <param name="allowAppConsumers" type="Boolean" mandatory="false" defvalue="false">
- <description> If true, app service consumers beyond the IVI system will be able to access this service. If false, only the IVI system will be able consume the service. If not provided, it is assumed to be false. </description>
- </param>
+ <param name="allowAppConsumers" type="Boolean" mandatory="false" defvalue="false">
+ <description> If true, app service consumers beyond the IVI system will be able to access this service. If false, only the IVI system will be able consume the service. If not provided, it is assumed to be false. </description>
+ </param>
- <param name="uriPrefix" type="String" mandatory="false">
- <description> The URI prefix for this service. If provided, all PerformAppServiceInteraction requests must start with it.</description>
- </param>
+ <param name="uriPrefix" type="String" mandatory="false">
+ <description> The URI prefix for this service. If provided, all PerformAppServiceInteraction requests must start with it. </description>
+ </param>
- <param name="uriScheme" type="String" mandatory="false">
- <description> This is a custom schema for this service. SDL will not do any verification on this param past that it has a correctly formated JSON Object as its base. The uriScheme should contain all available actions to be taken through a PerformAppServiceInteraction request from an app service consumer. </description>
- </param>
+ <param name="uriScheme" type="String" mandatory="false">
+ <description> This is a custom schema for this service. SDL will not do any verification on this param past that it has a correctly formated JSON Object as its base. The uriScheme should contain all available actions to be taken through a PerformAppServiceInteraction request from an app service consumer. </description>
+ </param>
- <param name="rpcSpecVersion" type="SyncMsgVersion" mandatory="false">
- <description> This is the max RPC Spec version the app service understands. This is important during the RPC passthrough functionality. If not included, it is assumed the max version of the module is acceptable. </description>
- </param>
+ <param name="rpcSpecVersion" type="Common.SyncMsgVersion" mandatory="false">
+ <description> This is the max RPC Spec version the app service understands. This is important during the RPC passthrough functionality. If not included, it is assumed the max version of the module is acceptable. </description>
+ </param>
- <param name="handledRPCs" type="Integer" array="true" mandatory="false">
- <description> This field contains the Function IDs for the RPCs that this service intends to handle correctly. This means the service will provide meaningful responses. </description>
- </param>
+ <param name="handledRPCs" type="Integer" array="true" mandatory="false">
+ <description> This field contains the Function IDs for the RPCs that this service intends to handle correctly. This means the service will provide meaningful responses. </description>
+ </param>
- <param name="mediaServiceManifest" type="MediaServiceManifest" mandatory="false"/>
- </struct>
+ <param name="mediaServiceManifest" type="Common.MediaServiceManifest" mandatory="false"/>
+ <param name="weatherServiceManifest" type="Common.WeatherServiceManifest" mandatory="false"/>
+ </struct>
<struct name="AppServiceRecord">
- <description> This is the record of an app service publisher that the module has. It should contain the most up to date information including the service's active state</description>
+ <description> This is the record of an app service publisher that the module has. It should contain the most up to date information including the service's active state</description>
- <param name="serviceID" type="String" mandatory="true">
- <description> A unique ID tied to this specific service record. The ID is supplied by the module that services publish themselves. </description>
- </param>
+ <param name="serviceID" type="String" mandatory="true">
+ <description> A unique ID tied to this specific service record. The ID is supplied by the module that services publish themselves. </description>
+ </param>
- <param name="serviceManifest" type="AppServiceManifest" mandatory="true">
- <description> Manifest for the service that this record is for.</description>
- </param>
+ <param name="serviceManifest" type="Common.AppServiceManifest" mandatory="true">
+ <description> Manifest for the service that this record is for.</description>
+ </param>
- <param name="servicePublished" type="Boolean" mandatory="true">
- <description> If true, the service is published and available. If false, the service has likely just been unpublished, and should be considered unavailable.</description>
- </param>
+ <param name="servicePublished" type="Boolean" mandatory="true">
+ <description> If true, the service is published and available. If false, the service has likely just been unpublished, and should be considered unavailable.</description>
+ </param>
- <param name="serviceActive" type="Boolean" mandatory="true">
- <description> If true, the service is the active primary service of the supplied service type. It will receive all potential RPCs that are passed through to that service type. If false, it is not the primary service of the supplied type. See servicePublished for its availability. </description>
- </param>
+ <param name="serviceActive" type="Boolean" mandatory="true">
+ <description> If true, the service is the active primary service of the supplied service type. It will receive all potential RPCs that are passed through to that service type. If false, it is not the primary service of the supplied type. See servicePublished for its availability. </description>
+ </param>
</struct>
<struct name="AppServiceData">
- <description> Contains all the current data of the app service. The serviceType will link to which of the service data objects are included in this object. (eg if service type equals MEDIA, the mediaServiceData param should be included.</description>
+ <description> Contains all the current data of the app service. The serviceType will link to which of the service data objects are included in this object. (eg if service type equals MEDIA, the mediaServiceData param should be included.</description>
- <param name="serviceType" type="AppServiceType" mandatory="true"/>
- <param name="serviceID" type="String" mandatory="true"/>
+ <param name="serviceType" type="Common.AppServiceType" mandatory="true"/>
+ <param name="serviceID" type="String" mandatory="true"/>
- <param name="mediaServiceData" type="Common.MediaServiceData" mandatory="false"/>
+ <param name="mediaServiceData" type="Common.MediaServiceData" mandatory="false"/>
+ <param name="weatherServiceData" type="Common.WeatherServiceData" mandatory="false"/>
</struct>
<!-- End App Services -->
@@ -6032,25 +6119,25 @@
<interface name="AppService" version="1.0.0" date="2019-01-20">
<description>Interface used for interacting with app services as a producer or consumer</description>
<function name="PublishAppService" messagetype="request">
- <description>Registers a service offered by this app on the module</description>
+ <description>Registers a service offered by this app on the module</description>
- <param name="appServiceManifest" type="Common.AppServiceManifest" mandatory="true">
- <description> The manifest of the service that wishes to be published.</description>
- </param>
+ <param name="appServiceManifest" type="Common.AppServiceManifest" mandatory="true">
+ <description> The manifest of the service that wishes to be published.</description>
+ </param>
</function>
<function name="PublishAppService" messagetype="response">
- <description>Response to the request to register a service offered by this app on the module</description>
+ <description>Response to the request to register a service offered by this app on the module</description>
- <param name="appServiceRecord" type="Common.AppServiceRecord" mandatory="false">
- <description> If the request was successful, this object will be the current status of the service record for the published service. This will include the Core supplied service ID.</description>
- </param>
+ <param name="appServiceRecord" type="Common.AppServiceRecord" mandatory="false">
+ <description> If the request was successful, this object will be the current status of the service record for the published service. This will include the Core supplied service ID.</description>
+ </param>
</function>
<function name="OnAppServiceData" messagetype="notification">
- <description>This notification includes the data that is updated from the specific service. HMI->SDL if the HMI is a producer, SDL->HMI if the HMI is a consumer</description>
+ <description>This notification includes the data that is updated from the specific service. HMI->SDL if the HMI is a producer, SDL->HMI if the HMI is a consumer</description>
- <param name="serviceData" type="Common.AppServiceData" mandatory="true"/>
+ <param name="serviceData" type="Common.AppServiceData" mandatory="true"/>
</function>
</interface>
</interfaces>
diff --git a/src/components/interfaces/MOBILE_API.xml b/src/components/interfaces/MOBILE_API.xml
index 6605a01b48..65a88ac22a 100644
--- a/src/components/interfaces/MOBILE_API.xml
+++ b/src/components/interfaces/MOBILE_API.xml
@@ -945,7 +945,7 @@
<description>Similar to VP8, but VP9 is customized for video resolutions beyond high-definition video (UHD) and also enables lossless compression.</description>
</element>
</enum>
-
+
<enum name="AudioStreamingIndicator" since="5.0">
<element name="PLAY_PAUSE">
<description>
@@ -3714,7 +3714,8 @@
<!-- App Services -->
<enum name="AppServiceType" since="5.1">
- <element name="MEDIA"/>
+ <element name="MEDIA"/>
+ <element name="WEATHER"/>
</enum>
<struct name="MediaServiceManifest" since="5.1">
@@ -3722,9 +3723,9 @@
<enum name="MediaType" since="5.1">
<element name="MUSIC"/>
- <element name="PODCAST"/>
- <element name="AUDIOBOOK"/>
- <element name="OTHER"/>
+ <element name="PODCAST"/>
+ <element name="AUDIOBOOK"/>
+ <element name="OTHER"/>
</enum>
<struct name="MediaServiceData" since="5.1">
@@ -3819,71 +3820,157 @@
</param>
</struct>
+ <struct name="WeatherServiceManifest" since="5.1">
+ <param name="currentForecastSupported" type="Boolean" mandatory="false"/>
+ <param name="maxMultidayForecastAmount" type="Integer" mandatory="false"/>
+ <param name="maxHourlyForecastAmount" type="Integer" mandatory="false"/>
+ <param name="maxMinutelyForecastAmount" type="Integer" mandatory="false"/>
+ <param name="weatherForLocationSupported" type="Boolean" mandatory="false"/>
+ </struct>
+
+ <struct name="WeatherAlert" since="5.1">
+ <param name="title" type="String" mandatory="false"/>
+ <param name="summary" type="String" mandatory="false"/>
+ <param name="expires" type="DateTime" mandatory="false"/>
+ <param name="regions" type="String" array="true" minsize="1" maxsize="99" mandatory="false"/>
+ <param name="severity" type="String" mandatory="false"/>
+ <param name="timeIssued" type="DateTime" mandatory="false"/>
+ </struct>
+
+ <struct name="WeatherData" since="5.1">
+ <param name="currentTemperature" type="Temperature" mandatory="false"/>
+ <param name="temperatureHigh" type="Temperature" mandatory="false"/>
+ <param name="temperatureLow" type="Temperature" mandatory="false"/>
+ <param name="apparentTemperature" type="Temperature" mandatory="false"/>
+ <param name="apparentTemperatureHigh" type="Temperature" mandatory="false"/>
+ <param name="apparentTemperatureLow" type="Temperature" mandatory="false"/>
+
+ <param name="weatherSummary" type="String" mandatory="false"/>
+ <param name="time" type="DateTime" mandatory="false"/>
+ <param name="humidity" type="Float" minvalue="0" maxvalue="1" mandatory="false">
+ <description> 0 to 1, percentage humidity </description>
+ </param>
+ <param name="cloudCover" type="Float" minvalue="0" maxvalue="1" mandatory="false">
+ <description> 0 to 1, percentage cloud cover </description>
+ </param>
+ <param name="moonPhase" type="Float" minvalue="0" maxvalue="1" mandatory="false">
+ <description> 0 to 1, percentage of the moon seen, e.g. 0 = no moon, 0.25 = quarter moon </description>
+ </param>
+
+ <param name="windBearing" type="Integer" mandatory="false">
+ <description> In degrees, true north at 0 degrees </description>
+ </param>
+ <param name="windGust" type="Float" mandatory="false">
+ <description> km/hr </description>
+ </param>
+ <param name="windSpeed" type="Float" mandatory="false">
+ <description> km/hr </description>
+ </param>
+
+ <param name="nearestStormBearing" type="Integer" mandatory="false">
+ <description> In degrees, true north at 0 degrees </description>
+ </param>
+ <param name="nearestStormDistance" type="Integer" mandatory="false">
+ <description> In km </description>
+ </param>
+ <param name="precipAccumulation" type="Float" mandatory="false">
+ <description> cm </description>
+ </param>
+ <param name="precipIntensity" type="Float" mandatory="false">
+ <description> cm of water per hour </description>
+ </param>
+ <param name="precipProbability" type="Float" minvalue="0" maxvalue="1" mandatory="false">
+ <description> 0 to 1, percentage chance </description>
+ </param>
+ <param name="precipType" type="String" mandatory="false">
+ <description> e.g. "rain", "snow", "sleet", "hail" </description>
+ </param>
+ <param name="visibility" type="Float" mandatory="false">
+ <description> In km </description>
+ </param>
+
+ <param name="weatherIconImageName" type="String" mandatory="false"/>
+ </struct>
+
+ <struct name="WeatherServiceData" since="5.1">
+ <description> This data is related to what a weather service would provide</description>
+ <param name="location" type="LocationDetails" mandatory="true"/>
+ <param name="currentForecast" type="WeatherData" mandatory="false"/>
+ <param name="minuteForecast" type="WeatherData" array="true" minsize="15" maxsize="60" mandatory="false"/>
+ <param name="hourlyForecast" type="WeatherData" array="true" minsize="1" maxsize="96" mandatory="false"/>
+ <param name="multidayForecast" type="WeatherData" array="true" minsize="1" maxsize="30" mandatory="false"/>
+ <param name="alerts" type="WeatherAlert" array="true" minsize="1" maxsize="10" mandatory="false">
+ <description> This array should be ordered with the first object being the current day</description>
+ </param>
+ </struct>
+
<struct name="AppServiceManifest" since="5.1">
- <description> This manfifest contains all the information necessary for the service to be published, activated, and consumers able to interact with it</description>
+ <description> This manifest contains all the information necessary for the service to be published, activated, and consumers able to interact with it</description>
- <param name="serviceName" type="String" mandatory="false">
- <description> Unique name of this service</description>
- </param>
+ <param name="serviceName" type="String" mandatory="false">
+ <description> Unique name of this service</description>
+ </param>
- <param name="serviceType" type="AppServiceType" mandatory="true">
- <description>The type of service that is to be offered by this app</description>
- </param>
+ <param name="serviceType" type="AppServiceType" mandatory="true">
+ <description>The type of service that is to be offered by this app</description>
+ </param>
- <param name="serviceIcon" type="String" mandatory="false">
- <description> The file name of the icon to be associated with this service. Most likely the same as the appIcon.</description>
- </param>
+ <param name="serviceIcon" type="String" mandatory="false">
+ <description> The file name of the icon to be associated with this service. Most likely the same as the appIcon.</description>
+ </param>
- <param name="allowAppConsumers" type="Boolean" mandatory="false" defvalue="false">
- <description>If true, app service consumers beyond the IVI system will be able to access this service. If false, only the IVI system will be able consume the service. If not provided, it is assumed to be false. </description>
- </param>
+ <param name="allowAppConsumers" type="Boolean" mandatory="false" defvalue="false">
+ <description>If true, app service consumers beyond the IVI system will be able to access this service. If false, only the IVI system will be able consume the service. If not provided, it is assumed to be false. </description>
+ </param>
- <param name="uriPrefix" type="String" mandatory="false">
- <description> The URI prefix for this service. If provided, all PerformAppServiceInteraction requests must start with it.</description>
- </param>
+ <param name="uriPrefix" type="String" mandatory="false">
+ <description> The URI prefix for this service. If provided, all PerformAppServiceInteraction requests must start with it.</description>
+ </param>
- <param name="uriScheme" type="String" mandatory="false">
- <description> This is a custom schema for this service. SDL will not do any verification on this param past that it has a correctly formated JSON Object as its base. The uriScheme should contain all available actions to be taken through a PerformAppServiceInteraction request from an app service consumer. </description>
- </param>
+ <param name="uriScheme" type="String" mandatory="false">
+ <description> This is a custom schema for this service. SDL will not do any verification on this param past that it has a correctly formated JSON Object as its base. The uriScheme should contain all available actions to be taken through a PerformAppServiceInteraction request from an app service consumer. </description>
+ </param>
- <param name="rpcSpecVersion" type="SyncMsgVersion" mandatory="false">
- <description> This is the max RPC Spec version the app service understands. This is important during the RPC passthrough functionality. If not included, it is assumed the max version of the module is acceptable. </description>
- </param>
+ <param name="rpcSpecVersion" type="SyncMsgVersion" mandatory="false">
+ <description> This is the max RPC Spec version the app service understands. This is important during the RPC passthrough functionality. If not included, it is assumed the max version of the module is acceptable. </description>
+ </param>
- <param name="handledRPCs" type="Integer" array="true" mandatory="false">
- <description> This field contains the Function IDs for the RPCs that this service intends to handle correctly. This means the service will provide meaningful responses. </description>
- </param>
+ <param name="handledRPCs" type="Integer" array="true" mandatory="false">
+ <description> This field contains the Function IDs for the RPCs that this service intends to handle correctly. This means the service will provide meaningful responses. </description>
+ </param>
- <param name="mediaServiceManifest" type="MediaServiceManifest" mandatory="false"/>
- </struct>
+ <param name="mediaServiceManifest" type="MediaServiceManifest" mandatory="false"/>
+ <param name="weatherServiceManifest" type="WeatherServiceManifest" mandatory="false"/>
+ </struct>
<struct name="AppServiceRecord" since="5.1">
- <description> This is the record of an app service publisher that the module has. It should contain the most up to date information including the service's active state</description>
+ <description> This is the record of an app service publisher that the module has. It should contain the most up to date information including the service's active state</description>
- <param name="serviceID" type="String" mandatory="true">
- <description> A unique ID tied to this specific service record. The ID is supplied by the module that services publish themselves. </description>
- </param>
+ <param name="serviceID" type="String" mandatory="true">
+ <description> A unique ID tied to this specific service record. The ID is supplied by the module that services publish themselves. </description>
+ </param>
- <param name="serviceManifest" type="AppServiceManifest" mandatory="true">
- <description> Manifest for the service that this record is for.</description>
- </param>
+ <param name="serviceManifest" type="AppServiceManifest" mandatory="true">
+ <description> Manifest for the service that this record is for.</description>
+ </param>
- <param name="servicePublished" type="Boolean" mandatory="true">
- <description> If true, the service is published and available. If false, the service has likely just been unpublished, and should be considered unavailable.</description>
- </param>
+ <param name="servicePublished" type="Boolean" mandatory="true">
+ <description> If true, the service is published and available. If false, the service has likely just been unpublished, and should be considered unavailable.</description>
+ </param>
- <param name="serviceActive" type="Boolean" mandatory="true">
- <description> If true, the service is the active primary service of the supplied service type. It will receive all potential RPCs that are passed through to that service type. If false, it is not the primary service of the supplied type. See servicePublished for its availability. </description>
- </param>
+ <param name="serviceActive" type="Boolean" mandatory="true">
+ <description> If true, the service is the active primary service of the supplied service type. It will receive all potential RPCs that are passed through to that service type. If false, it is not the primary service of the supplied type. See servicePublished for its availability. </description>
+ </param>
</struct>
<struct name="AppServiceData" since="5.1">
- <description> Contains all the current data of the app service. The serviceType will link to which of the service data objects are included in this object. (eg if service type equals MEDIA, the mediaServiceData param should be included.</description>
+ <description> Contains all the current data of the app service. The serviceType will link to which of the service data objects are included in this object. (eg if service type equals MEDIA, the mediaServiceData param should be included.</description>
- <param name="serviceType" type="AppServiceType" mandatory="true"/>
- <param name="serviceID" type="String" mandatory="true"/>
+ <param name="serviceType" type="AppServiceType" mandatory="true"/>
+ <param name="serviceID" type="String" mandatory="true"/>
- <param name="mediaServiceData" type="MediaServiceData" mandatory="false"/>
+ <param name="mediaServiceData" type="MediaServiceData" mandatory="false"/>
+ <param name="weatherServiceData" type="WeatherServiceData" mandatory="false"/>
</struct>
<!-- End App Services -->
@@ -6859,39 +6946,39 @@
</function>
<function name="PublishAppService" functionID="PublishAppServiceID" messagetype="request" since="5.1">
- <description>Registers a service offered by this app on the module</description>
+ <description>Registers a service offered by this app on the module</description>
- <param name="appServiceManifest" type="AppServiceManifest" mandatory="true">
- <description> The manifest of the service that wishes to be published.</description>
- </param>
+ <param name="appServiceManifest" type="AppServiceManifest" mandatory="true">
+ <description> The manifest of the service that wishes to be published.</description>
+ </param>
</function>
<function name="PublishAppService" functionID="PublishAppServiceID" messagetype="response" since="5.1">
- <description>Response to the request to register a service offered by this app on the module</description>
+ <description>Response to the request to register a service offered by this app on the module</description>
- <param name="success" type="Boolean" platform="documentation" mandatory="true">
- <description> true, if successful; false, if failed </description>
- </param>
+ <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"/>
- <element name="REJECTED"/>
- <element name="DISALLOWED"/>
- <element name="INVALID_DATA"/>
- <element name="OUT_OF_MEMORY"/>
- <element name="TOO_MANY_PENDING_REQUESTS"/>
- <element name="APPLICATION_NOT_REGISTERED"/>
- <element name="GENERIC_ERROR"/>
- </param>
+ <param name="resultCode" type="Result" platform="documentation" mandatory="true">
+ <description>See Result</description>
+ <element name="SUCCESS"/>
+ <element name="REJECTED"/>
+ <element name="DISALLOWED"/>
+ <element name="INVALID_DATA"/>
+ <element name="OUT_OF_MEMORY"/>
+ <element name="TOO_MANY_PENDING_REQUESTS"/>
+ <element name="APPLICATION_NOT_REGISTERED"/>
+ <element name="GENERIC_ERROR"/>
+ </param>
- <param name="info" type="String" maxlength="1000" mandatory="false" platform="documentation">
- <description>Provides additional human readable info regarding the result.</description>
- </param>
+ <param name="info" type="String" maxlength="1000" mandatory="false" platform="documentation">
+ <description>Provides additional human readable info regarding the result.</description>
+ </param>
- <param name="appServiceRecord" type="AppServiceRecord" mandatory="false">
- <description> If the request was successful, this object will be the current status of the service record for the published service. This will include the Core supplied service ID.</description>
- </param>
+ <param name="appServiceRecord" type="AppServiceRecord" mandatory="false">
+ <description> If the request was successful, this object will be the current status of the service record for the published service. This will include the Core supplied service ID.</description>
+ </param>
</function>
<!-- Notifications -->
@@ -7188,9 +7275,9 @@
</function>
<function name="OnAppServiceData" functionID="OnAppServiceDataID" messagetype="notification" since="5.1">
- <description>This notification includes the data that is updated from the specific service</description>
+ <description>This notification includes the data that is updated from the specific service</description>
- <param name="serviceData" type="AppServiceData" mandatory="true"/>
+ <param name="serviceData" type="AppServiceData" mandatory="true"/>
</function>
<!-- ~~~~~~~~~~~~~~~~~~ -->