diff options
Diffstat (limited to 'src/components/include/application_manager')
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 |