summaryrefslogtreecommitdiff
path: root/src/components/include/application_manager
diff options
context:
space:
mode:
Diffstat (limited to 'src/components/include/application_manager')
-rw-r--r--src/components/include/application_manager/application_manager.h83
-rw-r--r--src/components/include/application_manager/application_manager_settings.h9
-rw-r--r--src/components/include/application_manager/policies/policy_handler_interface.h3
-rw-r--r--src/components/include/application_manager/rpc_handler.h60
-rw-r--r--src/components/include/application_manager/rpc_service.h90
5 files changed, 213 insertions, 32 deletions
diff --git a/src/components/include/application_manager/application_manager.h b/src/components/include/application_manager/application_manager.h
index f6f06bd7cd..f514168c53 100644
--- a/src/components/include/application_manager/application_manager.h
+++ b/src/components/include/application_manager/application_manager.h
@@ -39,6 +39,7 @@
#include "application_manager/application.h"
#include "application_manager/hmi_capabilities.h"
#include "application_manager/commands/command.h"
+#include "application_manager/command_factory.h"
#include "connection_handler/connection_handler.h"
#include "utils/data_accessor.h"
#include "utils/shared_ptr.h"
@@ -48,10 +49,7 @@
#include "application_manager/state_controller.h"
#include "application_manager/hmi_interfaces.h"
#include "policy/policy_types.h"
-#ifdef SDL_REMOTE_CONTROL
-#include "functional_module/plugin_manager.h"
-#endif
-
+#include "application_manager/plugin_manager/rpc_plugin_manager.h"
namespace resumption {
class LastState;
}
@@ -82,6 +80,12 @@ namespace application_manager {
namespace event_engine {
class EventDispatcher;
}
+namespace rpc_service {
+class RPCService;
+}
+namespace rpc_handler {
+class RPCHandler;
+}
class Application;
class StateControllerImpl;
@@ -94,7 +98,6 @@ struct ApplicationsAppIdSorter {
return lhs->app_id() < rhs->app_id();
}
};
-
struct ApplicationsPolicyAppIdSorter {
bool operator()(const ApplicationSharedPtr lhs,
const ApplicationSharedPtr rhs) {
@@ -135,8 +138,15 @@ class ApplicationManager {
virtual void set_hmi_message_handler(
hmi_message_handler::HMIMessageHandler* handler) = 0;
+
+ /**
+ * @brief set_protocol_handler
+ * @param handler
+ * set protocol handler
+ */
virtual void set_protocol_handler(
protocol_handler::ProtocolHandler* handler) = 0;
+
virtual void set_connection_handler(
connection_handler::ConnectionHandler* handler) = 0;
@@ -159,7 +169,6 @@ class ApplicationManager {
virtual AppSharedPtrs applications_by_button(uint32_t button) = 0;
virtual AppSharedPtrs applications_with_navi() = 0;
-#ifdef SDL_REMOTE_CONTROL
/**
* @brief application find application by device and policy identifier
* @param device_id device id
@@ -176,12 +185,12 @@ class ApplicationManager {
virtual std::vector<std::string> devices(
const std::string& policy_app_id) const = 0;
- virtual void SendPostMessageToMobile(const MessagePtr& message) = 0;
-
- virtual void SendPostMessageToHMI(const MessagePtr& message) = 0;
+ virtual plugin_manager::RPCPluginManager& GetPluginManager() = 0;
- virtual functional_modules::PluginManager& GetPluginManager() = 0;
-#endif // SDL_REMOTE_CONTROL
+#ifdef BUILD_TESTS
+ virtual void SetPluginManager(
+ std::unique_ptr<plugin_manager::RPCPluginManager>& plugin_manager) = 0;
+#endif
virtual std::vector<ApplicationSharedPtr>
applications_with_mobile_projection() = 0;
@@ -254,6 +263,14 @@ class ApplicationManager {
const utils::SharedPtr<Application> app) = 0;
/**
+ * @brief Checks if driver distraction state is valid, creates message
+ * which is sent to the application if allowed, otherwise it is added
+ * to a list of postponed messages.
+ * @param application contains registered application.
+ */
+ virtual void SendDriverDistractionState(ApplicationSharedPtr application) = 0;
+
+ /**
* DEPRECATED
* @brief Checks if Application is subscribed for way points
* @param Application AppID
@@ -308,23 +325,24 @@ class ApplicationManager {
*/
virtual const std::set<int32_t> GetAppsSubscribedForWayPoints() const = 0;
- virtual void SendMessageToMobile(const commands::MessageSharedPtr message,
- bool final_message = false) = 0;
-
- virtual void SendMessageToHMI(const commands::MessageSharedPtr message) = 0;
-
virtual void RemoveHMIFakeParameters(
- application_manager::MessagePtr& message) = 0;
-
- virtual bool ManageHMICommand(const commands::MessageSharedPtr message) = 0;
- virtual bool ManageMobileCommand(const commands::MessageSharedPtr message,
- commands::Command::CommandOrigin origin) = 0;
-
- virtual MessageValidationResult ValidateMessageBySchema(
- const Message& message) = 0;
+ application_manager::commands::MessageSharedPtr& message) = 0;
virtual mobile_api::HMILevel::eType GetDefaultHmiLevel(
ApplicationConstSharedPtr application) const = 0;
+
+ /**
+ * @brief Checks if required transport for resumption is available
+ *
+ * The required transport can be configured through smartDeviceLink.ini file.
+ *
+ * @param application an instance of the app to check
+ * @return true if the app is connected through one of the required
+ * transports, false otherwise
+ */
+ virtual bool CheckResumptionRequiredTransportAvailable(
+ ApplicationConstSharedPtr application) const = 0;
+
/**
* @brief hmi_capabilities return capabilities of hmi
* @return capabilities of hmi
@@ -380,6 +398,11 @@ class ApplicationManager {
virtual policy::PolicyHandlerInterface& GetPolicyHandler() = 0;
virtual const policy::PolicyHandlerInterface& GetPolicyHandler() const = 0;
+ virtual rpc_service::RPCService& GetRPCService() const = 0;
+ virtual rpc_handler::RPCHandler& GetRPCHandler() const = 0;
+ virtual bool is_stopping() const = 0;
+ virtual bool is_audio_pass_thru_active() const = 0;
+
virtual uint32_t GetNextHMICorrelationID() = 0;
virtual uint32_t GenerateNewHMIAppID() = 0;
@@ -431,8 +454,8 @@ class ApplicationManager {
* @param vehicle_info Enum value of type of vehicle data
* @param new value (for integer values currently) of vehicle data
*/
- virtual AppSharedPtrs IviInfoUpdated(
- mobile_apis::VehicleDataType::eType vehicle_info, int value) = 0;
+ virtual void IviInfoUpdated(mobile_apis::VehicleDataType::eType vehicle_info,
+ int value) = 0;
virtual ApplicationSharedPtr RegisterApplication(const utils::SharedPtr<
smart_objects::SmartObject>& request_for_registration) = 0;
@@ -463,6 +486,8 @@ class ApplicationManager {
virtual bool IsStopping() const = 0;
+ virtual bool IsLowVoltage() = 0;
+
virtual void RemoveAppFromTTSGlobalPropertiesList(const uint32_t app_id) = 0;
virtual mobile_apis::Result::eType SaveBinary(
@@ -613,6 +638,9 @@ class ApplicationManager {
virtual app_launch::AppLaunchCtrl& app_launch_ctrl() = 0;
+ virtual protocol_handler::MajorProtocolVersion SupportedSDLVersion()
+ const = 0;
+
/*
* @brief Converts connection string transport type representation
* to HMI Common_TransportType
@@ -690,9 +718,6 @@ class ApplicationManager {
mobile_apis::AudioStreamingState::eType audio_state,
mobile_apis::SystemContext::eType system_context) const = 0;
- virtual void SendAudioPassThroughNotification(
- uint32_t session_key, std::vector<uint8_t>& binary_data) = 0;
-
/**
* @brief Checks if application can stream (streaming service is started and
* streaming is enabled in application)
diff --git a/src/components/include/application_manager/application_manager_settings.h b/src/components/include/application_manager/application_manager_settings.h
index e745a831c6..8f9d7496c8 100644
--- a/src/components/include/application_manager/application_manager_settings.h
+++ b/src/components/include/application_manager/application_manager_settings.h
@@ -38,6 +38,8 @@
#include <stdint.h>
#include <string>
+#include <map>
+#include <vector>
namespace application_manager {
class ApplicationManagerSettings : public RequestControlerSettings,
@@ -87,6 +89,13 @@ class ApplicationManagerSettings : public RequestControlerSettings,
virtual const uint32_t& app_resuming_timeout() const = 0;
virtual uint16_t attempts_to_open_resumption_db() const = 0;
virtual uint16_t open_attempt_timeout_ms_resumption_db() const = 0;
+ virtual const std::map<std::string, std::vector<std::string> >&
+ transport_required_for_resumption_map() const = 0;
+ virtual const std::string& navigation_lowbandwidth_resumption_level()
+ const = 0;
+ virtual const std::string& projection_lowbandwidth_resumption_level()
+ const = 0;
+ virtual const std::string& media_lowbandwidth_resumption_level() const = 0;
virtual void set_config_file_name(const std::string& fileName) = 0;
virtual const std::pair<uint32_t, int32_t>& start_stream_retry_amount()
const = 0;
diff --git a/src/components/include/application_manager/policies/policy_handler_interface.h b/src/components/include/application_manager/policies/policy_handler_interface.h
index d48c7307b9..b8946a63f4 100644
--- a/src/components/include/application_manager/policies/policy_handler_interface.h
+++ b/src/components/include/application_manager/policies/policy_handler_interface.h
@@ -40,7 +40,6 @@
#include <queue>
#include "interfaces/MOBILE_API.h"
#include "application_manager/policies/policy_handler_observer.h"
-#include "application_manager/core_service.h"
#include "application_manager/application.h"
#include "policy/usage_statistics/statistics_manager.h"
#include "utils/custom_string.h"
@@ -471,7 +470,6 @@ class PolicyHandlerInterface {
virtual void OnDeviceSwitching(const std::string& device_id_from,
const std::string& device_id_to) = 0;
-#ifdef SDL_REMOTE_CONTROL
/**
* @brief Sets HMI default type for specified application
* @param application_id ID application
@@ -536,7 +534,6 @@ class PolicyHandlerInterface {
*/
virtual bool GetModuleTypes(const std::string& policy_app_id,
std::vector<std::string>* modules) const = 0;
-#endif // SDL_REMOTE_CONTROL
private:
/**
diff --git a/src/components/include/application_manager/rpc_handler.h b/src/components/include/application_manager/rpc_handler.h
new file mode 100644
index 0000000000..9b6428f32d
--- /dev/null
+++ b/src/components/include/application_manager/rpc_handler.h
@@ -0,0 +1,60 @@
+/*
+ * 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_INCLUDE_APPLICATION_MANAGER_RPC_HANDLER_H
+#define SRC_COMPONENTS_INCLUDE_APPLICATION_MANAGER_RPC_HANDLER_H
+
+#include "protocol_handler/protocol_observer.h"
+#include "hmi_message_handler/hmi_message_handler.h"
+
+#ifdef TELEMETRY_MONITOR
+#include "application_manager/telemetry_observer.h"
+#endif // TELEMETRY_MONITOR
+
+namespace application_manager {
+namespace rpc_handler {
+
+class RPCHandler
+ : public hmi_message_handler::HMIMessageObserver,
+ public protocol_handler::ProtocolObserver
+#ifdef TELEMETRY_MONITOR
+ ,
+ public telemetry_monitor::TelemetryObservable<AMTelemetryObserver>
+#endif // TELEMETRY_MONITOR
+ {
+ public:
+ virtual ~RPCHandler() {}
+};
+
+} // namespace rpc_handler
+} // namespace application_manager
+#endif // SRC_COMPONENTS_INCLUDE_APPLICATION_MANAGER_RPC_HANDLER_H
diff --git a/src/components/include/application_manager/rpc_service.h b/src/components/include/application_manager/rpc_service.h
new file mode 100644
index 0000000000..79b4007f71
--- /dev/null
+++ b/src/components/include/application_manager/rpc_service.h
@@ -0,0 +1,90 @@
+/*
+ * 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_INCLUDE_APPLICATION_MANAGER_RPC_SERVICE_H
+#define SRC_COMPONENTS_INCLUDE_APPLICATION_MANAGER_RPC_SERVICE_H
+
+#include "application_manager/commands/command.h"
+#include "application_manager/message.h"
+#include "protocol_handler/protocol_handler.h"
+#include "hmi_message_handler/hmi_message_handler.h"
+
+namespace application_manager {
+namespace rpc_service {
+
+class RPCService {
+ public:
+ virtual ~RPCService() {}
+
+ /**
+ * @brief ManageMobileCommand convert message to mobile command and execute it
+ * @param message pointer to received message
+ * @param origin origin of command
+ * @return true if command is executed, otherwise return false
+ */
+ virtual bool ManageMobileCommand(const commands::MessageSharedPtr message,
+ commands::Command::CommandSource source) = 0;
+ /**
+ * @brief ManageHMICommand convert message to HMI command and execute it
+ * @param message pointer to received message
+ * @return true if command is executed, otherwise return false
+ */
+ virtual bool ManageHMICommand(const commands::MessageSharedPtr message) = 0;
+
+ /**
+ * @brief SendMessageToMobile Put message to the queue to be sent to mobile.
+ * @param message pointer to message to send
+ * @param final_message if true - connection to mobile will be closed
+ * after processing this message
+ */
+ virtual void SendMessageToMobile(const commands::MessageSharedPtr message,
+ bool final_message = false) = 0;
+ /**
+ * @brief SendMessageToHMI Put message to the queue to be sent to HMI.
+ * @param message pointer to message to send
+ */
+ virtual void SendMessageToHMI(const commands::MessageSharedPtr message) = 0;
+
+ /**
+ * @brief set_protocol_handler
+ * @param handler
+ * set protocol handler
+ */
+ virtual void set_protocol_handler(
+ protocol_handler::ProtocolHandler* handler) = 0;
+ virtual void set_hmi_message_handler(
+ hmi_message_handler::HMIMessageHandler* handler) = 0;
+};
+} // namespace rpc_service
+} // namespace application_manager
+
+#endif // SRC_COMPONENTS_INCLUDE_APPLICATION_MANAGER_RPC_SERVICE_H