diff options
author | Vadym Luchko (gitHub) <vluchko@luxoft.com> | 2021-10-13 18:08:18 +0300 |
---|---|---|
committer | Vadym Luchko (gitHub) <vluchko@luxoft.com> | 2021-10-13 18:10:14 +0300 |
commit | f4dc4dc19fd2a4309218dc819becdf6ec7549c2e (patch) | |
tree | eb2081944c1a1611a72441f65261055bb0c13db2 | |
parent | 2ec5180031a4e2adb7ea220416fdc032238e61ed (diff) | |
download | sdl_core-f4dc4dc19fd2a4309218dc819becdf6ec7549c2e.tar.gz |
fix after merge
fix last state impl
111
fix style
fix s
fix linux build
111
small fixes
fix tests for linux build
111
63 files changed, 1217 insertions, 1165 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index ef8381ab46..2b328fdced 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -461,7 +461,10 @@ include_directories( # --- 3rd party libs add_subdirectory(./src/3rd_party EXCLUDE_FROM_ALL) -find_package(OpenSSL REQUIRED) +if (NOT ANDROID) + find_package(OpenSSL REQUIRED) +endif() + if(ENABLE_LOG AND ${LOGGER_NAME} STREQUAL "LOG4CXX" AND NOT ANDROID) message(STATUS "Including log4cxx") include_directories ( ${LOG4CXX_INCLUDE_DIRECTORY} ) diff --git a/src/3rd_party-static/encryption/CMakeLists.txt b/src/3rd_party-static/encryption/CMakeLists.txt index 2074397cfd..b3860925ba 100644 --- a/src/3rd_party-static/encryption/CMakeLists.txt +++ b/src/3rd_party-static/encryption/CMakeLists.txt @@ -45,4 +45,8 @@ set (LIBRARIES crypto -L$ENV{THIRD_PARTY_INSTALL_PREFIX}/${CMAKE_ANDROID_ARCH_AB add_library("encryption" ${SOURCES}) target_include_directories("encryption" PUBLIC "$ENV{THIRD_PARTY_INSTALL_PREFIX}/${CMAKE_ANDROID_ARCH_ABI}/include") target_link_libraries("encryption" "${LIBRARIES}") + +if(ANDROID) add_dependencies("encryption" openssl_external) +endif() + diff --git a/src/appMain/CMakeLists.txt b/src/appMain/CMakeLists.txt index 60bcec31a2..db2308374e 100644 --- a/src/appMain/CMakeLists.txt +++ b/src/appMain/CMakeLists.txt @@ -30,7 +30,9 @@ include(${CMAKE_SOURCE_DIR}/tools/cmake/helpers/sources.cmake) -#find_package(SDLOpenSSL REQUIRED) +if( NOT ANDROID) + find_package(SDLOpenSSL REQUIRED) +endif() if (EXTENDED_MEDIA_MODE) set(default_media_inc diff --git a/src/appMain/android_platform_interface.cc b/src/appMain/android_platform_interface.cc index f3ef0e94f3..d4afdc1575 100644 --- a/src/appMain/android_platform_interface.cc +++ b/src/appMain/android_platform_interface.cc @@ -1,9 +1,9 @@ #include <jni.h> -#include "config_profile/android_profile.h" #include "appMain/life_cycle_impl.h" -#include "utils/lock.h" +#include "config_profile/android_profile.h" #include "utils/conditional_variable.h" +#include "utils/lock.h" #ifdef ENABLE_LOG #include "utils/logger/androidlogger.h" @@ -16,122 +16,122 @@ void StartSDLNative(JNIEnv* env, jobject); void StopSDLNative(JNIEnv* env, jobject); static JNINativeMethod s_methods[] = { - {"StartSDLNative", "()V", (void*)StartSDLNative}, - {"StopSDLNative", "()V", (void*)StopSDLNative} -}; + {"StartSDLNative", "()V", (void*)StartSDLNative}, + {"StopSDLNative", "()V", (void*)StopSDLNative}}; // To call Java methods when running native code inside an Android activity, // a reference is needed to the JavaVM -static JavaVM *gJavaVM; +static JavaVM* gJavaVM; sync_primitives::Lock wait_lock_; sync_primitives::ConditionalVariable wait_var_; std::string JNI_GetMainActivityStringProperty(const char* property) { - JNIEnv *env = NULL; - gJavaVM->GetEnv((void**)&env, JNI_VERSION_1_6); + JNIEnv* env = NULL; + gJavaVM->GetEnv((void**)&env, JNI_VERSION_1_6); - jclass cls = env->FindClass("org/luxoft/sdl_core/MainActivity"); - jfieldID fieldID = env->GetStaticFieldID(cls, property, "Ljava/lang/String;"); - auto fieldValue = static_cast<jstring>(env->GetStaticObjectField(cls, fieldID)); + jclass cls = env->FindClass("org/luxoft/sdl_core/MainActivity"); + jfieldID fieldID = env->GetStaticFieldID(cls, property, "Ljava/lang/String;"); + auto fieldValue = + static_cast<jstring>(env->GetStaticObjectField(cls, fieldID)); - const char *path_chars = env->GetStringUTFChars(fieldValue, NULL); - return std::string(path_chars); + const char* path_chars = env->GetStringUTFChars(fieldValue, NULL); + return std::string(path_chars); } jint JNI_OnLoad(JavaVM* vm, void*) { - gJavaVM = vm; - JNIEnv *env = NULL; - gJavaVM->GetEnv((void**)&env, JNI_VERSION_1_6); + gJavaVM = vm; + JNIEnv* env = NULL; + gJavaVM->GetEnv((void**)&env, JNI_VERSION_1_6); - jclass cls = env->FindClass("org/luxoft/sdl_core/SdlLauncherService"); - auto globalClass = reinterpret_cast<jclass>(env->NewGlobalRef(cls)); - int len = sizeof(s_methods) / sizeof(s_methods[0]); + jclass cls = env->FindClass("org/luxoft/sdl_core/SdlLauncherService"); + auto globalClass = reinterpret_cast<jclass>(env->NewGlobalRef(cls)); + int len = sizeof(s_methods) / sizeof(s_methods[0]); - env->RegisterNatives(globalClass, s_methods, len); + env->RegisterNatives(globalClass, s_methods, len); - return JNI_VERSION_1_6; + return JNI_VERSION_1_6; } -void StartSDLNative(JNIEnv* env, jobject) -{ +void StartSDLNative(JNIEnv* env, jobject) { #ifdef ENABLE_LOG - auto logger_impl = - std::unique_ptr<logger::LoggerImpl>(new logger::LoggerImpl()); - logger::Logger::instance(logger_impl.get()); + auto logger_impl = + std::unique_ptr<logger::LoggerImpl>(new logger::LoggerImpl()); + logger::Logger::instance(logger_impl.get()); #endif // ENABLE_LOG - const std::string internal_storage = JNI_GetMainActivityStringProperty("sdl_cache_folder_path"); - const std::string external_storage = JNI_GetMainActivityStringProperty("sdl_external_dir_folder_path"); + const std::string internal_storage = + JNI_GetMainActivityStringProperty("sdl_cache_folder_path"); + const std::string external_storage = + JNI_GetMainActivityStringProperty("sdl_external_dir_folder_path"); - profile::AndroidProfile profile_instance(internal_storage, external_storage); - std::unique_ptr<main_namespace::LifeCycle> life_cycle( + profile::AndroidProfile profile_instance(internal_storage, external_storage); + std::unique_ptr<main_namespace::LifeCycle> life_cycle( new main_namespace::LifeCycleImpl(profile_instance)); + std::string ini_name = "androidSmartDeviceLink.ini"; + if (!internal_storage.empty()) { + ini_name = internal_storage + "/files/" + ini_name; + } - std::string ini_name = "androidSmartDeviceLink.ini"; - if (!internal_storage.empty()) { - ini_name = internal_storage + "/files/" + ini_name; - } - - profile_instance.set_config_file_name(ini_name); + profile_instance.set_config_file_name(ini_name); #ifdef ENABLE_LOG if (profile_instance.logs_enabled()) { // Logger initialization // Redefine for each paticular logger implementation - auto logger = std::unique_ptr<logger::AndroidLogger>( - new logger::AndroidLogger()); + auto logger = + std::unique_ptr<logger::AndroidLogger>(new logger::AndroidLogger()); logger_impl->Init(std::move(logger)); } #endif - SDL_LOG_INFO("Application started!"); - SDL_LOG_INFO("SDL version: " << profile_instance.sdl_version()); + SDL_LOG_INFO("Application started!"); + SDL_LOG_INFO("SDL version: " << profile_instance.sdl_version()); - // Check if no error values were read from config file - if (profile_instance.ErrorOccured()) { - SDL_LOG_FATAL(profile_instance.ErrorDescription()); - SDL_DEINIT_LOGGER(); - exit(EXIT_FAILURE); - } + // Check if no error values were read from config file + if (profile_instance.ErrorOccured()) { + SDL_LOG_FATAL(profile_instance.ErrorDescription()); + SDL_DEINIT_LOGGER(); + exit(EXIT_FAILURE); + } - if (!life_cycle->StartComponents()) { - SDL_LOG_FATAL("Failed to start components"); - life_cycle->StopComponents(); - SDL_DEINIT_LOGGER(); - return; - } + if (!life_cycle->StartComponents()) { + SDL_LOG_FATAL("Failed to start components"); + life_cycle->StopComponents(); + SDL_DEINIT_LOGGER(); + return; + } - SDL_LOG_INFO("Components Started"); + SDL_LOG_INFO("Components Started"); - if (!life_cycle->InitMessageSystem()) { - SDL_LOG_FATAL("Failed to init message system"); - life_cycle->StopComponents(); - SDL_DEINIT_LOGGER(); - return; - } + if (!life_cycle->InitMessageSystem()) { + SDL_LOG_FATAL("Failed to init message system"); + life_cycle->StopComponents(); + SDL_DEINIT_LOGGER(); + return; + } - { - // TODO: Replace with lifecycle Run() once signal handling is fixed - sync_primitives::AutoLock auto_lock(wait_lock_); - wait_var_.Wait(auto_lock); - } + { + // TODO: Replace with lifecycle Run() once signal handling is fixed + sync_primitives::AutoLock auto_lock(wait_lock_); + wait_var_.Wait(auto_lock); + } - SDL_LOG_INFO("Stop SDL due to caught signal"); + SDL_LOG_INFO("Stop SDL due to caught signal"); - life_cycle->StopComponents(); - SDL_LOG_INFO("Application has been stopped successfully"); + life_cycle->StopComponents(); + SDL_LOG_INFO("Application has been stopped successfully"); - SDL_LOG_TRACE("StartSDL: exit"); + SDL_LOG_TRACE("StartSDL: exit"); - SDL_DEINIT_LOGGER(); + SDL_DEINIT_LOGGER(); } void StopSDLNative(JNIEnv*, jobject) { - SDL_LOG_INFO("Stop from main activity requested"); - { - // TODO: Replace with sigkill(SIGINT) once signal handling is fixed - sync_primitives::AutoLock auto_lock(wait_lock_); - wait_var_.NotifyOne(); - } + SDL_LOG_INFO("Stop from main activity requested"); + { + // TODO: Replace with sigkill(SIGINT) once signal handling is fixed + sync_primitives::AutoLock auto_lock(wait_lock_); + wait_var_.NotifyOne(); + } }
\ No newline at end of file diff --git a/src/appMain/low_voltage_signals_handler.h b/src/appMain/low_voltage_signals_handler.h index c4c1d93806..a4cb5c1584 100644 --- a/src/appMain/low_voltage_signals_handler.h +++ b/src/appMain/low_voltage_signals_handler.h @@ -116,7 +116,8 @@ class NotificationThreadDelegate : public threads::ThreadDelegate { public: NotificationThreadDelegate( LowVoltageSignalsHandler& low_voltage_signals_handler) - : is_stopped_(false), low_voltage_signals_handler_(low_voltage_signals_handler) {} + : is_stopped_(false) + , low_voltage_signals_handler_(low_voltage_signals_handler) {} ~NotificationThreadDelegate() {} diff --git a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/on_received_policy_update.cc b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/on_received_policy_update.cc index a11395183b..48db903ce5 100644 --- a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/on_received_policy_update.cc +++ b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/hmi/on_received_policy_update.cc @@ -67,8 +67,10 @@ void OnReceivedPolicyUpdate::Run() { std::string file_name = file_path; #ifdef __ANDROID__ - const std::string t_name = file_path.substr(file_path.find_last_of("/\\") + 1); - const std::string system_folder = application_manager_.get_settings().system_files_path(); + const std::string t_name = + file_path.substr(file_path.find_last_of("/\\") + 1); + const std::string system_folder = + application_manager_.get_settings().system_files_path(); file_name = system_folder + "/" + t_name; #endif diff --git a/src/components/application_manager/src/application_manager_impl.cc b/src/components/application_manager/src/application_manager_impl.cc index b91d37f65c..43d410fb49 100644 --- a/src/components/application_manager/src/application_manager_impl.cc +++ b/src/components/application_manager/src/application_manager_impl.cc @@ -5042,7 +5042,7 @@ bool ApplicationManagerImpl::UnsubscribeAppFromSoftButtons( const uint32_t connection_key = (*response)[strings::params][strings::connection_key].asUInt(); - const auto function_id = static_cast<FunctionID::eType>( + const auto function_id = static_cast<mobile_apis::FunctionID::eType>( (*response)[strings::params][strings::function_id].asInt()); ApplicationSharedPtr app = application(connection_key); diff --git a/src/components/application_manager/src/message_helper/message_helper.cc b/src/components/application_manager/src/message_helper/message_helper.cc index e69b39a01a..d569e55a82 100644 --- a/src/components/application_manager/src/message_helper/message_helper.cc +++ b/src/components/application_manager/src/message_helper/message_helper.cc @@ -2384,7 +2384,8 @@ void MessageHelper::SendGetListOfPermissionsResponse( params[strings::message_type] = MessageType::kResponse; params[strings::correlation_id] = correlation_id; params[hmi_response::code] = static_cast<int32_t>( - success_flag ? Common_Result::SUCCESS : Common_Result::GENERIC_ERROR); + success_flag ? hmi_apis::Common_Result::SUCCESS + : hmi_apis::Common_Result::GENERIC_ERROR); SmartObject& msg_params = (*message)[strings::msg_params]; @@ -2755,7 +2756,8 @@ void MessageHelper::SendLaunchApp(const uint32_t connection_key, using namespace smart_objects; SmartObject content(SmartType_Map); - content[strings::msg_params][strings::request_type] = mobile_apis::RequestType::LAUNCH_APP; + content[strings::msg_params][strings::request_type] = + mobile_apis::RequestType::LAUNCH_APP; content[strings::msg_params][strings::app_id] = connection_key; if (!urlSchema.empty()) { content[strings::msg_params][strings::url] = urlSchema; @@ -2772,7 +2774,8 @@ void MessageHelper::SendQueryApps(const uint32_t connection_key, const uint32_t timeout = policy_handler.TimeoutExchangeSec(); smart_objects::SmartObject content(smart_objects::SmartType_Map); - content[strings::msg_params][strings::request_type] = mobile_apis::RequestType::QUERY_APPS; + content[strings::msg_params][strings::request_type] = + mobile_apis::RequestType::QUERY_APPS; content[strings::msg_params][strings::url] = policy_handler.RemoteAppsUrl(); content[strings::msg_params][strings::timeout] = timeout; @@ -2794,7 +2797,8 @@ void MessageHelper::SendQueryApps(const uint32_t connection_key, content[strings::params][strings::binary_data] = smart_objects::SmartObject(binary_data); - content[strings::msg_params][strings::file_type] = mobile_apis::FileType::BINARY; + content[strings::msg_params][strings::file_type] = + mobile_apis::FileType::BINARY; SendSystemRequestNotification(connection_key, content, app_mngr); } diff --git a/src/components/application_manager/src/policies/policy_handler.cc b/src/components/application_manager/src/policies/policy_handler.cc index 46dcfce8d2..1c7dd0166b 100644 --- a/src/components/application_manager/src/policies/policy_handler.cc +++ b/src/components/application_manager/src/policies/policy_handler.cc @@ -335,7 +335,8 @@ bool PolicyHandler::LoadPolicyLibrary() { sync_primitives::AutoWriteLock lock(policy_manager_lock_); #ifdef __ANDROID__ - const std::string policy_lib_path = application_manager_.get_settings().plugins_folder() + "/" + kLibrary; + const std::string policy_lib_path = + application_manager_.get_settings().plugins_folder() + "/" + kLibrary; #else const std::string policy_lib_path = kLibrary; #endif diff --git a/src/components/application_manager/src/state_controller_impl.cc b/src/components/application_manager/src/state_controller_impl.cc index a6af900bf4..749ca93c6c 100644 --- a/src/components/application_manager/src/state_controller_impl.cc +++ b/src/components/application_manager/src/state_controller_impl.cc @@ -728,7 +728,7 @@ void StateControllerImpl::HandleOnEvent( SDL_LOG_AUTO_TRACE(); SDL_LOG_DEBUG("Received event for function" << event.id()); switch (event.id()) { - case mobile_apis::FunctionID::RegisterAppInterfaceID: { + case mobile_apis::FunctionID::RegisterAppInterfaceID: { auto message = event.smart_object(); uint32_t connection_key = message[strings::params][strings::connection_key].asUInt(); @@ -759,7 +759,8 @@ void StateControllerImpl::HandleOnEvent( apps_with_pending_hmistatus_notification_.erase(app->app_id()); if (apps_with_pending_hmistatus_notification_.empty()) { - unsubscribe_from_event(mobile_apis::FunctionID::RegisterAppInterfaceID); + unsubscribe_from_event( + mobile_apis::FunctionID::RegisterAppInterfaceID); } } } break; diff --git a/src/components/config_profile/include/config_profile/android_profile.h b/src/components/config_profile/include/config_profile/android_profile.h index 2de37b345f..e3b176ca9c 100644 --- a/src/components/config_profile/include/config_profile/android_profile.h +++ b/src/components/config_profile/include/config_profile/android_profile.h @@ -38,18 +38,18 @@ #include "utils/macro.h" namespace profile { - class AndroidProfile : public Profile { - public: - AndroidProfile( - const std::string& internal_storage_dir, - const std::string& external_storage_dir); +class AndroidProfile : public Profile { + public: + AndroidProfile(const std::string& internal_storage_dir, + const std::string& external_storage_dir); - void SubstituteMacroInString(std::string& in_string) const OVERRIDE; + void SubstituteMacroInString(std::string& in_string) const OVERRIDE; - private: - std::string internal_storage_dir_; - std::string external_storage_dir_; - }; -} + private: + std::string internal_storage_dir_; + std::string external_storage_dir_; +}; +} // namespace profile -#endif //#ifndef SRC_COMPONENTS_CONFIG_PROFILE_INCLUDE_CONFIG_PROFILE_ANDROID_PROFILE_H_ +#endif //#ifndef + // SRC_COMPONENTS_CONFIG_PROFILE_INCLUDE_CONFIG_PROFILE_ANDROID_PROFILE_H_ diff --git a/src/components/config_profile/src/android_profile.cc b/src/components/config_profile/src/android_profile.cc index 6911592c83..b9cd826a64 100644 --- a/src/components/config_profile/src/android_profile.cc +++ b/src/components/config_profile/src/android_profile.cc @@ -35,30 +35,30 @@ namespace profile { -AndroidProfile::AndroidProfile(const std::string &internal_storage_dir, - const std::string &external_storage_dir) - : internal_storage_dir_(internal_storage_dir) - , external_storage_dir_(external_storage_dir) {} +AndroidProfile::AndroidProfile(const std::string& internal_storage_dir, + const std::string& external_storage_dir) + : internal_storage_dir_(internal_storage_dir) + , external_storage_dir_(external_storage_dir) {} -void AndroidProfile::SubstituteMacroInString(std::string &in_string) const { - std::string out_string = in_string; - const std::map<std::string, std::string> replace_macro = { - {"%ANDROID_INTERNAL_DIR%", internal_storage_dir_}, - {"%ANDROID_EXTERNAL_DIR%", external_storage_dir_} - }; +void AndroidProfile::SubstituteMacroInString(std::string& in_string) const { + std::string out_string = in_string; + const std::map<std::string, std::string> replace_macro = { + {"%ANDROID_INTERNAL_DIR%", internal_storage_dir_}, + {"%ANDROID_EXTERNAL_DIR%", external_storage_dir_}}; - for (const auto& macro : replace_macro) { - size_t index = 0; - while (true) { - index = out_string.find(macro.first, index); - if (index == std::string::npos) break; + for (const auto& macro : replace_macro) { + size_t index = 0; + while (true) { + index = out_string.find(macro.first, index); + if (index == std::string::npos) + break; - out_string.replace(index, macro.first.size(), macro.second); - index += macro.first.size(); - } + out_string.replace(index, macro.first.size(), macro.second); + index += macro.first.size(); } + } - in_string = out_string; + in_string = out_string; } -}
\ No newline at end of file +} // namespace profile
\ No newline at end of file diff --git a/src/components/config_profile/src/profile.cc b/src/components/config_profile/src/profile.cc index d76d878a8a..c8a5b7993a 100644 --- a/src/components/config_profile/src/profile.cc +++ b/src/components/config_profile/src/profile.cc @@ -1405,7 +1405,8 @@ void Profile::UpdateValues() { kMainSection, kHmiCapabilitiesCacheFileKey); - if (!hmi_capabilities_cache_file_name_.empty() && IsRelativePath(hmi_capabilities_cache_file_name_)) { + if (!hmi_capabilities_cache_file_name_.empty() && + IsRelativePath(hmi_capabilities_cache_file_name_)) { hmi_capabilities_cache_file_name_ = app_storage_folder_ + "/" + hmi_capabilities_cache_file_name_; } diff --git a/src/components/connection_handler/test/connection_handler_impl_test.cc b/src/components/connection_handler/test/connection_handler_impl_test.cc index cf1c38cf4d..79b237253c 100644 --- a/src/components/connection_handler/test/connection_handler_impl_test.cc +++ b/src/components/connection_handler/test/connection_handler_impl_test.cc @@ -1221,24 +1221,6 @@ TEST_F(ConnectionHandlerTest, CloseConnectionSessionsInvalidConnectionId) { connection_handler_->CloseConnectionSessions(invalid_id, kCommon); } -TEST_F(ConnectionHandlerTest, CloseConnectionSessionsInvalidConnectionId) { - connection_handler_test::MockConnectionHandlerObserver - mock_connection_handler_observer; - connection_handler_->set_connection_handler_observer( - &mock_connection_handler_observer); - - connection_handler_->set_protocol_handler(&mock_protocol_handler_); - - EXPECT_CALL(mock_protocol_handler_, SendEndSession(_, _)).Times(0); - EXPECT_CALL(mock_connection_handler_observer, OnServiceEndedCallback(_, _, _)) - .Times(0); - EXPECT_CALL(mock_connection_handler_observer, OnServiceEndedCallback(_, _, _)) - .Times(0); - - uint8_t invalid_id = 0u; - connection_handler_->CloseConnectionSessions(invalid_id, kCommon); -} - TEST_F(ConnectionHandlerTest, CloseConnectionSessionsWithCommonReason) { AddTestDeviceConnection(); AddTestSession(); diff --git a/src/components/hmi_message_handler/src/hmi_message_handler_impl.cc b/src/components/hmi_message_handler/src/hmi_message_handler_impl.cc index 02a977a273..959696c5af 100644 --- a/src/components/hmi_message_handler/src/hmi_message_handler_impl.cc +++ b/src/components/hmi_message_handler/src/hmi_message_handler_impl.cc @@ -35,100 +35,103 @@ namespace hmi_message_handler { - SDL_CREATE_LOG_VARIABLE("HMIMessageHandler") - - HMIMessageHandlerImpl::HMIMessageHandlerImpl( - const HMIMessageHandlerSettings &settings) - : settings_(settings), observer_(NULL), messages_to_hmi_( - "HMH ToHMI", - this, - threads::ThreadOptions(get_settings().thread_min_stack_size())), messages_from_hmi_( - "HMH FromHMI", - this, - threads::ThreadOptions(get_settings().thread_min_stack_size())) {} - - HMIMessageHandlerImpl::~HMIMessageHandlerImpl() { - SDL_LOG_AUTO_TRACE(); - messages_to_hmi_.Shutdown(); - messages_from_hmi_.Shutdown(); - set_message_observer(NULL); - } - - void HMIMessageHandlerImpl::OnMessageReceived(MessageSharedPointer message) { - SDL_LOG_AUTO_TRACE(); - sync_primitives::AutoLock lock(observer_locker_); - if (!observer_) { - SDL_LOG_WARN("No HMI message observer set!"); - return; - } - messages_from_hmi_.PostMessage(impl::MessageFromHmi(message)); - } - - void HMIMessageHandlerImpl::SendMessageToHMI(MessageSharedPointer message) { - SDL_LOG_INFO("SendMessageToHMI"); - messages_to_hmi_.PostMessage(impl::MessageToHmi(message)); - } - - void HMIMessageHandlerImpl::set_message_observer(HMIMessageObserver *observer) { - SDL_LOG_AUTO_TRACE(); - sync_primitives::AutoLock lock(observer_locker_); - observer_ = observer; - } - - void HMIMessageHandlerImpl::OnErrorSending(MessageSharedPointer message) { - SDL_LOG_AUTO_TRACE(); - sync_primitives::AutoLock lock(observer_locker_); - if (!observer_) { - SDL_LOG_WARN("No HMI message observer set!"); - return; - } - observer_->OnErrorSending(message); - } - - void HMIMessageHandlerImpl::AddHMIMessageAdapter(HMIMessageAdapter *adapter) { - SDL_LOG_AUTO_TRACE(); - if (!adapter) { - SDL_LOG_WARN("HMIMessageAdapter is not valid!"); - return; - } - sync_primitives::AutoLock lock(message_adapters_locker_); - message_adapters_.insert(adapter); - } - - void HMIMessageHandlerImpl::RemoveHMIMessageAdapter( - HMIMessageAdapter *adapter) { - SDL_LOG_AUTO_TRACE(); - if (!adapter) { - SDL_LOG_WARN("HMIMessageAdapter is not valid!"); - return; - } - sync_primitives::AutoLock lock(message_adapters_locker_); - message_adapters_.erase(adapter); - } - - const HMIMessageHandlerSettings &HMIMessageHandlerImpl::get_settings() const { - return settings_; - } - - void HMIMessageHandlerImpl::Handle(const impl::MessageFromHmi message) { - SDL_LOG_INFO("Received message from hmi"); - sync_primitives::AutoLock lock(observer_locker_); - if (!observer_) { - SDL_LOG_ERROR("Observer is not set for HMIMessageHandler"); - return; - } - - observer_->OnMessageReceived(message); - SDL_LOG_INFO("Message from hmi given away."); - } - - void HMIMessageHandlerImpl::Handle(const impl::MessageToHmi message) { - sync_primitives::AutoLock lock(message_adapters_locker_); - for (std::set<HMIMessageAdapter *>::iterator it = message_adapters_.begin(); - it != message_adapters_.end(); - ++it) { - (*it)->SendMessageToHMI(message); - } - } +SDL_CREATE_LOG_VARIABLE("HMIMessageHandler") + +HMIMessageHandlerImpl::HMIMessageHandlerImpl( + const HMIMessageHandlerSettings& settings) + : settings_(settings) + , observer_(NULL) + , messages_to_hmi_( + "HMH ToHMI", + this, + threads::ThreadOptions(get_settings().thread_min_stack_size())) + , messages_from_hmi_( + "HMH FromHMI", + this, + threads::ThreadOptions(get_settings().thread_min_stack_size())) {} + +HMIMessageHandlerImpl::~HMIMessageHandlerImpl() { + SDL_LOG_AUTO_TRACE(); + messages_to_hmi_.Shutdown(); + messages_from_hmi_.Shutdown(); + set_message_observer(NULL); +} + +void HMIMessageHandlerImpl::OnMessageReceived(MessageSharedPointer message) { + SDL_LOG_AUTO_TRACE(); + sync_primitives::AutoLock lock(observer_locker_); + if (!observer_) { + SDL_LOG_WARN("No HMI message observer set!"); + return; + } + messages_from_hmi_.PostMessage(impl::MessageFromHmi(message)); +} + +void HMIMessageHandlerImpl::SendMessageToHMI(MessageSharedPointer message) { + SDL_LOG_INFO("SendMessageToHMI"); + messages_to_hmi_.PostMessage(impl::MessageToHmi(message)); +} + +void HMIMessageHandlerImpl::set_message_observer(HMIMessageObserver* observer) { + SDL_LOG_AUTO_TRACE(); + sync_primitives::AutoLock lock(observer_locker_); + observer_ = observer; +} + +void HMIMessageHandlerImpl::OnErrorSending(MessageSharedPointer message) { + SDL_LOG_AUTO_TRACE(); + sync_primitives::AutoLock lock(observer_locker_); + if (!observer_) { + SDL_LOG_WARN("No HMI message observer set!"); + return; + } + observer_->OnErrorSending(message); +} + +void HMIMessageHandlerImpl::AddHMIMessageAdapter(HMIMessageAdapter* adapter) { + SDL_LOG_AUTO_TRACE(); + if (!adapter) { + SDL_LOG_WARN("HMIMessageAdapter is not valid!"); + return; + } + sync_primitives::AutoLock lock(message_adapters_locker_); + message_adapters_.insert(adapter); +} + +void HMIMessageHandlerImpl::RemoveHMIMessageAdapter( + HMIMessageAdapter* adapter) { + SDL_LOG_AUTO_TRACE(); + if (!adapter) { + SDL_LOG_WARN("HMIMessageAdapter is not valid!"); + return; + } + sync_primitives::AutoLock lock(message_adapters_locker_); + message_adapters_.erase(adapter); +} + +const HMIMessageHandlerSettings& HMIMessageHandlerImpl::get_settings() const { + return settings_; +} + +void HMIMessageHandlerImpl::Handle(const impl::MessageFromHmi message) { + SDL_LOG_INFO("Received message from hmi"); + sync_primitives::AutoLock lock(observer_locker_); + if (!observer_) { + SDL_LOG_ERROR("Observer is not set for HMIMessageHandler"); + return; + } + + observer_->OnMessageReceived(message); + SDL_LOG_INFO("Message from hmi given away."); +} + +void HMIMessageHandlerImpl::Handle(const impl::MessageToHmi message) { + sync_primitives::AutoLock lock(message_adapters_locker_); + for (std::set<HMIMessageAdapter*>::iterator it = message_adapters_.begin(); + it != message_adapters_.end(); + ++it) { + (*it)->SendMessageToHMI(message); + } +} } // namespace hmi_message_handler diff --git a/src/components/include/security_manager/crypto_manager.h b/src/components/include/security_manager/crypto_manager.h index d64d26bb25..6254055aef 100644 --- a/src/components/include/security_manager/crypto_manager.h +++ b/src/components/include/security_manager/crypto_manager.h @@ -33,9 +33,9 @@ #ifndef SRC_COMPONENTS_INCLUDE_SECURITY_MANAGER_CRYPTO_MANAGER_H_ #define SRC_COMPONENTS_INCLUDE_SECURITY_MANAGER_CRYPTO_MANAGER_H_ +#include <utils/time64.h> #include "application_manager/policies/policy_handler_observer.h" #include "security_manager/security_manager_settings.h" -#include <utils/time64.h> /** * \class security_manager::CryptoManager diff --git a/src/components/include/utils/logger.h b/src/components/include/utils/logger.h index eac58787f1..8b307e5a5e 100644 --- a/src/components/include/utils/logger.h +++ b/src/components/include/utils/logger.h @@ -51,7 +51,7 @@ logger::LocationInfo{__FILE__, __PRETTY_FUNCTION__, __LINE__}, \ std::this_thread::get_id()}; \ logger::Logger::instance().PushLog(message); \ - } + } #include "utils/auto_trace.h" #define SDL_CREATE_LOG_VARIABLE(component_name) \ @@ -75,8 +75,8 @@ LOG_WITH_LEVEL(logger::LogLevel::TRACE_LEVEL, logEvent) #define SDL_LOG_AUTO_TRACE() \ - logger::AutoTrace auto_trace( \ - logger_, logger::LocationInfo{__FILE__, __PRETTY_FUNCTION__, __LINE__}) + logger::AutoTrace auto_trace( \ + logger_, logger::LocationInfo{__FILE__, __PRETTY_FUNCTION__, __LINE__}) #define SDL_LOG_DEBUG(logEvent) \ LOG_WITH_LEVEL(logger::LogLevel::DEBUG_LEVEL, logEvent) diff --git a/src/components/include/utils/threads/pt-internal.h b/src/components/include/utils/threads/pt-internal.h index 19f3f1cb8d..915bf351a3 100644 --- a/src/components/include/utils/threads/pt-internal.h +++ b/src/components/include/utils/threads/pt-internal.h @@ -49,14 +49,14 @@ struct pthread_internal_t { void* alternate_signal_stack; /* - * The dynamic linker implements dlerror(3), which makes it hard for us to implement this - * per-thread buffer by simply using malloc(3) and free(3). + * The dynamic linker implements dlerror(3), which makes it hard for us to + * implement this per-thread buffer by simply using malloc(3) and free(3). */ #define __BIONIC_DLERROR_BUFFER_SIZE 508 char dlerror_buffer[__BIONIC_DLERROR_BUFFER_SIZE]; - - // ugly hack: use last 4 bytes of dlerror_buffer as cancel_lock - pthread_mutex_t cancel_lock; + + // ugly hack: use last 4 bytes of dlerror_buffer as cancel_lock + pthread_mutex_t cancel_lock; }; /* Has the thread a cancellation request? */ @@ -71,9 +71,9 @@ struct pthread_internal_t { /* Has the thread a cancellation handler? */ #define PTHREAD_ATTR_FLAG_CANCEL_HANDLER 0x00000040 -struct pthread_internal_t *__pthread_getid ( pthread_t ); +struct pthread_internal_t* __pthread_getid(pthread_t); -int __pthread_do_cancel (struct pthread_internal_t *); +int __pthread_do_cancel(struct pthread_internal_t*); void pthread_init(void); diff --git a/src/components/include/utils/threads/pthread_android.h b/src/components/include/utils/threads/pthread_android.h index c0e1e69002..b14d88c0f8 100644 --- a/src/components/include/utils/threads/pthread_android.h +++ b/src/components/include/utils/threads/pthread_android.h @@ -20,118 +20,118 @@ #define SRC_COMPONENTS_INCLUDE_UTILS_THREADS_PTHREAD_ANDROID_H #include "pt-internal.h" -#define PTHREAD_CANCELED ((void *) -1) +#define PTHREAD_CANCELED ((void*)-1) #define PTHREAD_CANCEL_ENABLE 0x00000010 #define PTHREAD_CANCEL_DISABLE 0x00000000 inline void pthread_cancel_handler(int signum) { - pthread_exit(0); - } + pthread_exit(0); +} inline void pthread_init() { - struct sigaction sa; - struct pthread_internal_t *p = (struct pthread_internal_t *) pthread_self(); + struct sigaction sa; + struct pthread_internal_t* p = (struct pthread_internal_t*)pthread_self(); - if (p->attr.flags & PTHREAD_ATTR_FLAG_CANCEL_HANDLER) - return; + if (p->attr.flags & PTHREAD_ATTR_FLAG_CANCEL_HANDLER) + return; - // set thread status as pthread_create should do. - // ASYNCROUNOUS is not set, see pthread_setcancelstate(3) - p->attr.flags |= PTHREAD_ATTR_FLAG_CANCEL_HANDLER | PTHREAD_ATTR_FLAG_CANCEL_ENABLE; + // set thread status as pthread_create should do. + // ASYNCROUNOUS is not set, see pthread_setcancelstate(3) + p->attr.flags |= + PTHREAD_ATTR_FLAG_CANCEL_HANDLER | PTHREAD_ATTR_FLAG_CANCEL_ENABLE; - sa.sa_handler = pthread_cancel_handler; - sigemptyset(&(sa.sa_mask)); - sa.sa_flags = 0; + sa.sa_handler = pthread_cancel_handler; + sigemptyset(&(sa.sa_mask)); + sa.sa_flags = 0; - sigaction(SIGRTMIN, &sa, NULL); - } + sigaction(SIGRTMIN, &sa, NULL); +} inline static void call_exit() { - pthread_exit(0); - } + pthread_exit(0); +} -inline int __pthread_do_cancel(struct pthread_internal_t *p) { +inline int __pthread_do_cancel(struct pthread_internal_t* p) { + if (p == (struct pthread_internal_t*)pthread_self()) + call_exit(); + else if (p->attr.flags & PTHREAD_ATTR_FLAG_CANCEL_HANDLER) + pthread_kill((pthread_t)p, SIGRTMIN); + else + pthread_kill((pthread_t)p, SIGTERM); - if (p == (struct pthread_internal_t *) pthread_self()) - call_exit(); - else if (p->attr.flags & PTHREAD_ATTR_FLAG_CANCEL_HANDLER) - pthread_kill((pthread_t) p, SIGRTMIN); - else - pthread_kill((pthread_t) p, SIGTERM); - - return 0; - } + return 0; +} inline void pthread_testcancel() { - struct pthread_internal_t *p = (struct pthread_internal_t *) pthread_self(); - int cancelled; + struct pthread_internal_t* p = (struct pthread_internal_t*)pthread_self(); + int cancelled; - pthread_init(); + pthread_init(); - pthread_mutex_lock(&p->cancel_lock); - cancelled = (p->attr.flags & PTHREAD_ATTR_FLAG_CANCEL_ENABLE) && - (p->attr.flags & PTHREAD_ATTR_FLAG_CANCEL_PENDING); - pthread_mutex_unlock(&p->cancel_lock); + pthread_mutex_lock(&p->cancel_lock); + cancelled = (p->attr.flags & PTHREAD_ATTR_FLAG_CANCEL_ENABLE) && + (p->attr.flags & PTHREAD_ATTR_FLAG_CANCEL_PENDING); + pthread_mutex_unlock(&p->cancel_lock); - if (cancelled) - pthread_exit(PTHREAD_CANCELED); - } + if (cancelled) + pthread_exit(PTHREAD_CANCELED); +} -inline int pthread_setcancelstate(int state, int *oldstate) { - struct pthread_internal_t *p = (struct pthread_internal_t *) pthread_self(); - int newflags; +inline int pthread_setcancelstate(int state, int* oldstate) { + struct pthread_internal_t* p = (struct pthread_internal_t*)pthread_self(); + int newflags; - pthread_init(); + pthread_init(); - switch (state) { - default: - return EINVAL; - case PTHREAD_CANCEL_ENABLE: - case PTHREAD_CANCEL_DISABLE: - break; - } + switch (state) { + default: + return EINVAL; + case PTHREAD_CANCEL_ENABLE: + case PTHREAD_CANCEL_DISABLE: + break; + } - pthread_mutex_lock(&p->cancel_lock); - if (oldstate) - *oldstate = p->attr.flags & PTHREAD_ATTR_FLAG_CANCEL_ENABLE; + pthread_mutex_lock(&p->cancel_lock); + if (oldstate) + *oldstate = p->attr.flags & PTHREAD_ATTR_FLAG_CANCEL_ENABLE; - if (state == PTHREAD_ATTR_FLAG_CANCEL_ENABLE) - p->attr.flags |= PTHREAD_ATTR_FLAG_CANCEL_ENABLE; - else - p->attr.flags &= ~PTHREAD_ATTR_FLAG_CANCEL_ENABLE; - newflags = p->attr.flags; - pthread_mutex_unlock(&p->cancel_lock); + if (state == PTHREAD_ATTR_FLAG_CANCEL_ENABLE) + p->attr.flags |= PTHREAD_ATTR_FLAG_CANCEL_ENABLE; + else + p->attr.flags &= ~PTHREAD_ATTR_FLAG_CANCEL_ENABLE; + newflags = p->attr.flags; + pthread_mutex_unlock(&p->cancel_lock); - if ((newflags & PTHREAD_ATTR_FLAG_CANCEL_PENDING) && - (newflags & PTHREAD_ATTR_FLAG_CANCEL_ENABLE) && - (newflags & PTHREAD_ATTR_FLAG_CANCEL_ASYNCRONOUS)) - __pthread_do_cancel(p); + if ((newflags & PTHREAD_ATTR_FLAG_CANCEL_PENDING) && + (newflags & PTHREAD_ATTR_FLAG_CANCEL_ENABLE) && + (newflags & PTHREAD_ATTR_FLAG_CANCEL_ASYNCRONOUS)) + __pthread_do_cancel(p); - return 0; - } + return 0; +} inline int pthread_cancel(pthread_t t) { - int err = 0; - struct pthread_internal_t *p = (struct pthread_internal_t *) t; + int err = 0; + struct pthread_internal_t* p = (struct pthread_internal_t*)t; - pthread_init(); + pthread_init(); - pthread_mutex_lock(&p->cancel_lock); - if (p->attr.flags & PTHREAD_ATTR_FLAG_CANCEL_PENDING) { - pthread_mutex_unlock(&p->cancel_lock); - return 0; - } + pthread_mutex_lock(&p->cancel_lock); + if (p->attr.flags & PTHREAD_ATTR_FLAG_CANCEL_PENDING) { + pthread_mutex_unlock(&p->cancel_lock); + return 0; + } - p->attr.flags |= PTHREAD_ATTR_FLAG_CANCEL_PENDING; + p->attr.flags |= PTHREAD_ATTR_FLAG_CANCEL_PENDING; - if (!(p->attr.flags & PTHREAD_ATTR_FLAG_CANCEL_ENABLE)) { - pthread_mutex_unlock(&p->cancel_lock); - return 0; - } + if (!(p->attr.flags & PTHREAD_ATTR_FLAG_CANCEL_ENABLE)) { + pthread_mutex_unlock(&p->cancel_lock); + return 0; + } - pthread_mutex_unlock(&p->cancel_lock); - err = __pthread_do_cancel(p); + pthread_mutex_unlock(&p->cancel_lock); + err = __pthread_do_cancel(p); - return err; - } -#endif //SRC_COMPONENTS_INCLUDE_UTILS_THREADS_PTHREAD_ANDROID_H + return err; +} +#endif // SRC_COMPONENTS_INCLUDE_UTILS_THREADS_PTHREAD_ANDROID_H diff --git a/src/components/include/utils/time64.h b/src/components/include/utils/time64.h index 175b2940a7..9e4efcdd20 100644 --- a/src/components/include/utils/time64.h +++ b/src/components/include/utils/time64.h @@ -51,10 +51,10 @@ typedef time_t TIME_TYPE; template <typename DURATION_TYPE> double get_duration_diff(TIME_TYPE from, TIME_TYPE to) { - const DURATION_TYPE time_from(from); - const DURATION_TYPE time_to(to); + const DURATION_TYPE time_from(from); + const DURATION_TYPE time_to(to); - return std::chrono::duration_cast<DURATION_TYPE>(time_from - time_to).count(); + return std::chrono::duration_cast<DURATION_TYPE>(time_from - time_to).count(); } #endif // SRC_COMPONENTS_INCLUDE_UTILS_TIME64_H diff --git a/src/components/policy/policy_regular/include/policy/policy_table/types.h b/src/components/policy/policy_regular/include/policy/policy_table/types.h index f2a5223811..5b2bf6dec4 100644 --- a/src/components/policy/policy_regular/include/policy/policy_table/types.h +++ b/src/components/policy/policy_regular/include/policy/policy_table/types.h @@ -564,7 +564,11 @@ struct VehicleDataItem : CompositeType { VehicleDataItem(const VehicleDataItem& policy_table); explicit VehicleDataItem(const Json::Value* value__); +#ifdef __ANDROID__ bool operator==(const VehicleDataItem& vd) const; +#else + bool operator==(const VehicleDataItem& vd); +#endif ~VehicleDataItem(); diff --git a/src/components/policy/policy_regular/src/policy_table/types.cc b/src/components/policy/policy_regular/src/policy_table/types.cc index f55b3b795f..d4e36a70ee 100644 --- a/src/components/policy/policy_regular/src/policy_table/types.cc +++ b/src/components/policy/policy_regular/src/policy_table/types.cc @@ -1792,7 +1792,12 @@ Json::Value VehicleDataItem::ToJsonValue() const { return ret; } -bool VehicleDataItem::operator==(const VehicleDataItem& vd) const { +#ifdef __ANDROID__ +bool VehicleDataItem::operator==(const VehicleDataItem& vd) const +#else +bool VehicleDataItem::operator==(const VehicleDataItem& vd) +#endif +{ return (name == vd.name && type == vd.type && key == vd.key && mandatory == vd.mandatory && params == vd.params && array == vd.array && since == vd.since && until == vd.until && diff --git a/src/components/protocol_handler/CMakeLists.txt b/src/components/protocol_handler/CMakeLists.txt index 8f3b33d519..91cb7af47e 100644 --- a/src/components/protocol_handler/CMakeLists.txt +++ b/src/components/protocol_handler/CMakeLists.txt @@ -57,12 +57,15 @@ collect_sources(SOURCES "${PATHS}" "${EXCLUDE_PATHS}") set(LIBRARIES ProtocolLibrary - HMI_API Utils bson -L${BSON_LIBS_DIRECTORY} emhashmap -L${EMHASHMAP_LIBS_DIRECTORY} ) +if(ANDROID) + list(APPEND LIBRARIES HMI_API) +endif() + get_property(dirs DIRECTORY "" PROPERTY LIBRARIES) foreach(dir ${dirs}) message(STATUS "libraries='${dir}'") diff --git a/src/components/resumption/src/last_state_impl.cc b/src/components/resumption/src/last_state_impl.cc index 9920a1499b..dba84d748b 100644 --- a/src/components/resumption/src/last_state_impl.cc +++ b/src/components/resumption/src/last_state_impl.cc @@ -61,10 +61,14 @@ void LastStateImpl::SaveToFileSystem() { styled_string = dictionary_.toStyledString(); } +#ifdef __ANDROID__ + const std::string full_path = app_info_storage_; +#else const std::string full_path = !app_storage_folder_.empty() ? app_storage_folder_ + "/" + app_info_storage_ : app_info_storage_; +#endif const std::vector<uint8_t> char_vector_pdata(styled_string.begin(), styled_string.end()); diff --git a/src/components/rpc_base/include/rpc_base/rpc_base_inl.h b/src/components/rpc_base/include/rpc_base/rpc_base_inl.h index 9aa82d6c1b..a7b477c009 100644 --- a/src/components/rpc_base/include/rpc_base/rpc_base_inl.h +++ b/src/components/rpc_base/include/rpc_base/rpc_base_inl.h @@ -388,9 +388,7 @@ bool Array<T, minsize, maxsize>::operator==(const Array& that) { if (this->size() != that.size()) return false; - using It = decltype(std::begin(that)); - - for (It i = std::begin(*this), j = std::begin(that); i != std::end(*this); + for (auto i = std::begin(*this), j = std::begin(that); i != std::end(*this); ++i, ++j) { if (!(*i == *j)) { return false; diff --git a/src/components/security_manager/CMakeLists.txt b/src/components/security_manager/CMakeLists.txt index 3ac614dd98..58afc8e2c5 100644 --- a/src/components/security_manager/CMakeLists.txt +++ b/src/components/security_manager/CMakeLists.txt @@ -57,8 +57,13 @@ set(LIBRARIES ProtocolLibrary ) -list(APPEND LIBRARIES crypto -L${OPENSSL_LIBS_DIRECTORY}) -list(APPEND LIBRARIES ssl -L${OPENSSL_LIBS_DIRECTORY}) +if(ANDROID) + list(APPEND LIBRARIES crypto -L${OPENSSL_LIBS_DIRECTORY}) + list(APPEND LIBRARIES ssl -L${OPENSSL_LIBS_DIRECTORY}) +else() + list(APPEND LIBRARIES crypto) + list(APPEND LIBRARIES ssl) +endif() add_library(SecurityManager ${SOURCES}) target_link_libraries(SecurityManager ${LIBRARIES}) diff --git a/src/components/security_manager/include/security_manager/crypto_manager_impl.h b/src/components/security_manager/include/security_manager/crypto_manager_impl.h index 109a14578b..e7cbf6c421 100644 --- a/src/components/security_manager/include/security_manager/crypto_manager_impl.h +++ b/src/components/security_manager/include/security_manager/crypto_manager_impl.h @@ -147,7 +147,8 @@ class CryptoManagerImpl : public CryptoManager { void ReleaseSSLContext(SSLContext* context) OVERRIDE; std::string LastError() const OVERRIDE; bool IsCertificateUpdateRequired( - const TIME_TYPE system_time, const TIME_TYPE certificates_time) const OVERRIDE; + const TIME_TYPE system_time, + const TIME_TYPE certificates_time) const OVERRIDE; virtual const CryptoManagerSettings& get_settings() const OVERRIDE; private: diff --git a/src/components/security_manager/src/crypto_manager_impl.cc b/src/components/security_manager/src/crypto_manager_impl.cc index 4d1c032bc5..9b25288654 100644 --- a/src/components/security_manager/src/crypto_manager_impl.cc +++ b/src/components/security_manager/src/crypto_manager_impl.cc @@ -39,10 +39,10 @@ #include <stdio.h> #include <algorithm> +#include <chrono> #include <ctime> #include <fstream> #include <iostream> -#include <chrono> #include "security_manager/security_manager.h" @@ -334,7 +334,8 @@ bool CryptoManagerImpl::IsCertificateUpdateRequired( const TIME_TYPE system_time, const TIME_TYPE certificates_time) const { SDL_LOG_AUTO_TRACE(); - const double seconds = get_duration_diff<std::chrono::seconds>(certificates_time, system_time); + const double seconds = + get_duration_diff<std::chrono::seconds>(certificates_time, system_time); const size_t maxsize = 40; char certificate_utc_time[maxsize]; std::strftime( diff --git a/src/components/security_manager/src/ssl_context_impl.cc b/src/components/security_manager/src/ssl_context_impl.cc index f456f85b61..83ae8ceeb5 100644 --- a/src/components/security_manager/src/ssl_context_impl.cc +++ b/src/components/security_manager/src/ssl_context_impl.cc @@ -240,8 +240,10 @@ CryptoManagerImpl::SSLContextImpl::CheckCertContext() { TIME_TYPE start = convert_asn1_time_to_time_t(notBefore); TIME_TYPE end = convert_asn1_time_to_time_t(notAfter); - const double start_seconds = get_duration_diff<std::chrono::seconds>(hsh_context_.system_time, start); - const double end_seconds = get_duration_diff<std::chrono::seconds>(end, hsh_context_.system_time); + const double start_seconds = + get_duration_diff<std::chrono::seconds>(hsh_context_.system_time, start); + const double end_seconds = + get_duration_diff<std::chrono::seconds>(end, hsh_context_.system_time); if (start_seconds < 0) { SDL_LOG_ERROR("Certificate is not yet valid. Time before validity " diff --git a/src/components/transport_manager/include/transport_manager/android/android_connection_factory.h b/src/components/transport_manager/include/transport_manager/android/android_connection_factory.h index a8b2a31dd1..5742a6d5f4 100644 --- a/src/components/transport_manager/include/transport_manager/android/android_connection_factory.h +++ b/src/components/transport_manager/include/transport_manager/android/android_connection_factory.h @@ -56,11 +56,11 @@ class AndroidConnectionFactory : public ServerConnectionFactory { AndroidConnectionFactory(AndroidTransportAdapter* controller); protected: - TransportAdapter::Error Init() override; TransportAdapter::Error CreateConnection( - const DeviceUID& device_uid, const ApplicationHandle& app_handle) override; + const DeviceUID& device_uid, + const ApplicationHandle& app_handle) override; void Terminate() override; diff --git a/src/components/transport_manager/include/transport_manager/android/android_device_scanner.h b/src/components/transport_manager/include/transport_manager/android/android_device_scanner.h index e573bbc78d..6964a85274 100644 --- a/src/components/transport_manager/include/transport_manager/android/android_device_scanner.h +++ b/src/components/transport_manager/include/transport_manager/android/android_device_scanner.h @@ -37,8 +37,8 @@ #define SRC_COMPONENTS_TRANSPORT_MANAGER_INCLUDE_TRANSPORT_MANAGER_ANDROID_ANDROID_DEVICE_SCANNER_H_ #include "transport_manager/android/android_ipc_device.h" -#include "transport_manager/transport_adapter/device_scanner.h" #include "transport_manager/android/local_socket_receiver.h" +#include "transport_manager/transport_adapter/device_scanner.h" #include "utils/conditional_variable.h" #include "utils/lock.h" @@ -66,7 +66,6 @@ class AndroidDeviceScanner : public DeviceScanner { ~AndroidDeviceScanner(); protected: - void Terminate() override; TransportAdapter::Error Init() override; diff --git a/src/components/transport_manager/include/transport_manager/android/android_ipc_control_protocol.h b/src/components/transport_manager/include/transport_manager/android/android_ipc_control_protocol.h index dcc05a749e..f11295e445 100644 --- a/src/components/transport_manager/include/transport_manager/android/android_ipc_control_protocol.h +++ b/src/components/transport_manager/include/transport_manager/android/android_ipc_control_protocol.h @@ -1,35 +1,33 @@ #ifndef SRC_COMPONENTS_TRANSPORT_MANAGER_INCLUDE_TRANSPORT_MANAGER_ANDROID_ANDROID_IPC_CONTROL_PROTOCOL_H_ #define SRC_COMPONENTS_TRANSPORT_MANAGER_INCLUDE_TRANSPORT_MANAGER_ANDROID_ANDROID_IPC_CONTROL_PROTOCOL_H_ -#include <vector> #include <stdint.h> #include <string> +#include <vector> namespace transport_manager { namespace transport_adapter { enum class AndroidIpcProtocolActions { - INVALID_ENUM = -1, - ON_DEVICE_CONNECTED, - ON_DEVICE_DISCONNECTED, + INVALID_ENUM = -1, + ON_DEVICE_CONNECTED, + ON_DEVICE_DISCONNECTED, }; using MsgData = std::vector<uint8_t>; struct AndroidIpcControlProtocol { + AndroidIpcControlProtocol() = delete; - AndroidIpcControlProtocol() = delete; - - static AndroidIpcProtocolActions GetMessageActionType(const MsgData& message); - static std::string GetAddress(const MsgData& message); - static std::string GetName(const MsgData& message); - - static AndroidIpcProtocolActions GetActionFromString(const std::string& str); - static std::string GetActionString(const AndroidIpcProtocolActions action); + static AndroidIpcProtocolActions GetMessageActionType(const MsgData& message); + static std::string GetAddress(const MsgData& message); + static std::string GetName(const MsgData& message); + static AndroidIpcProtocolActions GetActionFromString(const std::string& str); + static std::string GetActionString(const AndroidIpcProtocolActions action); }; -} -} +} // namespace transport_adapter +} // namespace transport_manager #endif // SRC_COMPONENTS_TRANSPORT_MANAGER_INCLUDE_TRANSPORT_MANAGER_ANDROID_ANDROID_IPC_CONTROL_PROTOCOL_H_ diff --git a/src/components/transport_manager/include/transport_manager/android/android_ipc_device.h b/src/components/transport_manager/include/transport_manager/android/android_ipc_device.h index c2c31c89b2..c387c8b801 100644 --- a/src/components/transport_manager/include/transport_manager/android/android_ipc_device.h +++ b/src/components/transport_manager/include/transport_manager/android/android_ipc_device.h @@ -49,15 +49,13 @@ namespace transport_adapter { */ class AndroidIpcDevice : public Device { public: - /** * @brief Constructor. * * @param device_address Bluetooth address. * @param device_name Human-readable device name. **/ - AndroidIpcDevice(const std::string& device_address, - const char* device_name); + AndroidIpcDevice(const std::string& device_address, const char* device_name); bool IsSameAs(const Device* other) const override; @@ -73,7 +71,6 @@ class AndroidIpcDevice : public Device { * @brief List of available apps to interact with (only single app for now) */ ApplicationList applications_list_; - }; } // namespace transport_adapter diff --git a/src/components/transport_manager/include/transport_manager/android/android_socket_connection.h b/src/components/transport_manager/include/transport_manager/android/android_socket_connection.h index c90337c1ad..1c726a2112 100644 --- a/src/components/transport_manager/include/transport_manager/android/android_socket_connection.h +++ b/src/components/transport_manager/include/transport_manager/android/android_socket_connection.h @@ -36,10 +36,10 @@ #ifndef SRC_COMPONENTS_TRANSPORT_MANAGER_INCLUDE_TRANSPORT_MANAGER_ANDROID_ANDROID_SOCKET_CONNECTION_H_ #define SRC_COMPONENTS_TRANSPORT_MANAGER_INCLUDE_TRANSPORT_MANAGER_ANDROID_ANDROID_SOCKET_CONNECTION_H_ -#include "transport_manager/transport_adapter/connection.h" -#include "transport_manager/android/local_socket_sender.h" -#include "transport_manager/android/local_socket_receiver.h" #include "transport_manager/android/android_transport_adapter.h" +#include "transport_manager/android/local_socket_receiver.h" +#include "transport_manager/android/local_socket_sender.h" +#include "transport_manager/transport_adapter/connection.h" namespace transport_manager { namespace transport_adapter { @@ -59,13 +59,13 @@ class AndroidSocketConnection : public Connection { * @param controller Pointer to the device adapter controller. */ AndroidSocketConnection(const DeviceUID& device_uid, - const ApplicationHandle& app_handle, - AndroidTransportAdapter* controller); + const ApplicationHandle& app_handle, + AndroidTransportAdapter* controller); ~AndroidSocketConnection() override; TransportAdapter::Error SendData( - ::protocol_handler::RawMessagePtr message) override; + ::protocol_handler::RawMessagePtr message) override; TransportAdapter::Error Disconnect() override; @@ -76,20 +76,19 @@ class AndroidSocketConnection : public Connection { TransportAdapter::Error Start(); private: - void ProcessMessage(const std::vector<uint8_t>& data); - void OnMessageSent(protocol_handler::RawMessagePtr message); - void OnClientConnectionDone(const bool is_connected); - - DeviceUID device_uid_; - ApplicationHandle app_handle_; - AndroidTransportAdapter* controller_; + void ProcessMessage(const std::vector<uint8_t>& data); + void OnMessageSent(protocol_handler::RawMessagePtr message); + void OnClientConnectionDone(const bool is_connected); - std::unique_ptr<IpcSender> sender_; - std::unique_ptr<IpcReceiver> receiver_; + DeviceUID device_uid_; + ApplicationHandle app_handle_; + AndroidTransportAdapter* controller_; - std::thread receiver_thread_; - std::thread sender_thread_; + std::unique_ptr<IpcSender> sender_; + std::unique_ptr<IpcReceiver> receiver_; + std::thread receiver_thread_; + std::thread sender_thread_; }; } // namespace transport_adapter diff --git a/src/components/transport_manager/include/transport_manager/android/android_transport_adapter.h b/src/components/transport_manager/include/transport_manager/android/android_transport_adapter.h index 9a17beaad4..7a58f43a20 100644 --- a/src/components/transport_manager/include/transport_manager/android/android_transport_adapter.h +++ b/src/components/transport_manager/include/transport_manager/android/android_transport_adapter.h @@ -41,20 +41,16 @@ namespace transport_manager { namespace transport_adapter { - enum class AndroidTransportType { - BLE, - BT - }; +enum class AndroidTransportType { BLE, BT }; /** * @brief Transport adapter that use bluetooth low energy transport. */ class AndroidTransportAdapter : public TransportAdapterImpl { public: - AndroidTransportAdapter(resumption::LastStateWrapperPtr last_state_wrapper, - const TransportManagerSettings& settings, - AndroidTransportType transport_type); + const TransportManagerSettings& settings, + AndroidTransportType transport_type); ~AndroidTransportAdapter() override; @@ -65,7 +61,6 @@ class AndroidTransportAdapter : public TransportAdapterImpl { std::string GetControlReceiverSocketName() const; protected: - DeviceType GetDeviceType() const override; void Store() const override; @@ -77,11 +72,10 @@ class AndroidTransportAdapter : public TransportAdapterImpl { void DisconnectDone(const DeviceUID& device_handle, const ApplicationHandle& app_handle) override; - private: - DeviceUID active_device_uid_; - ApplicationHandle app_handle_; - AndroidTransportType transport_type_; - + private: + DeviceUID active_device_uid_; + ApplicationHandle app_handle_; + AndroidTransportType transport_type_; }; } // namespace transport_adapter diff --git a/src/components/transport_manager/include/transport_manager/android/ipc_receiver.h b/src/components/transport_manager/include/transport_manager/android/ipc_receiver.h index e9b7b12989..0d9236a547 100644 --- a/src/components/transport_manager/include/transport_manager/android/ipc_receiver.h +++ b/src/components/transport_manager/include/transport_manager/android/ipc_receiver.h @@ -6,26 +6,25 @@ namespace transport_manager { namespace transport_adapter { -class IpcReceiver -{ -public: - virtual ~IpcReceiver() {} +class IpcReceiver { + public: + virtual ~IpcReceiver() {} - /** + /** * @brief Initialize receiver * @param ipc_name local socket name */ - virtual void Init(const std::string& ipc_name) = 0; + virtual void Init(const std::string& ipc_name) = 0; - /** + /** * @brief Run receiving cycle */ - virtual void Run() = 0; + virtual void Run() = 0; - /** + /** * @brief Stop receiving */ - virtual void Stop() = 0; + virtual void Stop() = 0; }; } // namespace transport_adapter diff --git a/src/components/transport_manager/include/transport_manager/android/ipc_sender.h b/src/components/transport_manager/include/transport_manager/android/ipc_sender.h index 876532aa85..07bc3c9849 100644 --- a/src/components/transport_manager/include/transport_manager/android/ipc_sender.h +++ b/src/components/transport_manager/include/transport_manager/android/ipc_sender.h @@ -6,34 +6,31 @@ namespace transport_manager { namespace transport_adapter { -class IpcSender -{ -public: - - virtual ~IpcSender() {} - - /** - * @brief Initialize sender - * @param ipc_name local socket name - */ - virtual void Init(const std::string& ipc_name) = 0; - - /** - * @brief Run sending cycle - */ - virtual void Run() = 0; - - /** - * @brief Run sending - */ - virtual void Stop() = 0; - - /** - * @brief Send message - * @param message message to send - */ - virtual void Send(::protocol_handler::RawMessagePtr message) = 0; - +class IpcSender { + public: + virtual ~IpcSender() {} + + /** + * @brief Initialize sender + * @param ipc_name local socket name + */ + virtual void Init(const std::string& ipc_name) = 0; + + /** + * @brief Run sending cycle + */ + virtual void Run() = 0; + + /** + * @brief Run sending + */ + virtual void Stop() = 0; + + /** + * @brief Send message + * @param message message to send + */ + virtual void Send(::protocol_handler::RawMessagePtr message) = 0; }; } // namespace transport_adapter diff --git a/src/components/transport_manager/include/transport_manager/android/local_socket_receiver.h b/src/components/transport_manager/include/transport_manager/android/local_socket_receiver.h index 87cb8cb829..d717319987 100644 --- a/src/components/transport_manager/include/transport_manager/android/local_socket_receiver.h +++ b/src/components/transport_manager/include/transport_manager/android/local_socket_receiver.h @@ -1,28 +1,29 @@ #ifndef SRC_COMPONENTS_TRANSPORT_MANAGER_INCLUDE_TRANSPORT_MANAGER_ANDROID_LOCAL_SOCKET_RECEIVER_H_ #define SRC_COMPONENTS_TRANSPORT_MANAGER_INCLUDE_TRANSPORT_MANAGER_ANDROID_LOCAL_SOCKET_RECEIVER_H_ +#include <atomic> +#include <functional> #include "transport_manager/android/ipc_receiver.h" namespace transport_manager { namespace transport_adapter { -class LocalSocketReceiver: public IpcReceiver -{ -public: - using MessageDelegate = std::function<void(const std::vector<uint8_t>&)>; +class LocalSocketReceiver : public IpcReceiver { + public: + using MessageDelegate = std::function<void(const std::vector<uint8_t>&)>; - LocalSocketReceiver(MessageDelegate&& callback); - ~LocalSocketReceiver(); - void Init(const std::string& socket_name) override; - void Run() override; - void Stop() override; + LocalSocketReceiver(MessageDelegate&& callback); + ~LocalSocketReceiver(); + void Init(const std::string& socket_name) override; + void Run() override; + void Stop() override; -private: - int server_sock_; - int client_sock_; - bool connected_; - std::atomic_bool stop_requested_; - MessageDelegate callback_; + private: + int server_sock_; + int client_sock_; + bool connected_; + std::atomic_bool stop_requested_; + MessageDelegate callback_; }; } // namespace transport_adapter diff --git a/src/components/transport_manager/include/transport_manager/android/local_socket_sender.h b/src/components/transport_manager/include/transport_manager/android/local_socket_sender.h index 2765cbbac1..bd3d5ee628 100644 --- a/src/components/transport_manager/include/transport_manager/android/local_socket_sender.h +++ b/src/components/transport_manager/include/transport_manager/android/local_socket_sender.h @@ -4,38 +4,40 @@ #include <sys/socket.h> #include <sys/un.h> -#include "protocol/raw_message.h" -#include "transport_manager/transport_adapter/transport_adapter_controller.h" #include <utils/threads/message_loop_thread.h> +#include "protocol/raw_message.h" #include "transport_manager/android/ipc_sender.h" +#include "transport_manager/transport_adapter/transport_adapter_controller.h" namespace transport_manager { namespace transport_adapter { -typedef threads::MessageQueue<protocol_handler::RawMessagePtr> RawMessageLoopQueue; +typedef threads::MessageQueue<protocol_handler::RawMessagePtr> + RawMessageLoopQueue; -class LocalSocketSender: public IpcSender -{ -public: - using OnDataSentCallback = std::function<void(protocol_handler::RawMessagePtr)>; - using OnConnectedCallback = std::function<void(const bool)>; +class LocalSocketSender : public IpcSender { + public: + using OnDataSentCallback = + std::function<void(protocol_handler::RawMessagePtr)>; + using OnConnectedCallback = std::function<void(const bool)>; - LocalSocketSender(OnDataSentCallback&& sent_callback, OnConnectedCallback&& connected_callback); - ~LocalSocketSender(); + LocalSocketSender(OnDataSentCallback&& sent_callback, + OnConnectedCallback&& connected_callback); + ~LocalSocketSender(); - void Init(const std::string& socket_name) override; - void Run() override; - void Stop() override; - void Send(::protocol_handler::RawMessagePtr message) override; + void Init(const std::string& socket_name) override; + void Run() override; + void Stop() override; + void Send(::protocol_handler::RawMessagePtr message) override; -private: - int socket_id_; - bool connected_; - RawMessageLoopQueue message_queue_; - OnConnectedCallback connected_callback_; - OnDataSentCallback sent_callback_; + private: + int socket_id_; + bool connected_; + RawMessageLoopQueue message_queue_; + OnConnectedCallback connected_callback_; + OnDataSentCallback sent_callback_; - bool TryToConnect(sockaddr_un &addr, socklen_t len); + bool TryToConnect(sockaddr_un& addr, socklen_t len); }; } // namespace transport_adapter diff --git a/src/components/transport_manager/include/transport_manager/tcp/ifaddrs_android/LocalArray.h b/src/components/transport_manager/include/transport_manager/tcp/ifaddrs_android/LocalArray.h index c9443e6c21..4b6af59d12 100644 --- a/src/components/transport_manager/include/transport_manager/tcp/ifaddrs_android/LocalArray.h +++ b/src/components/transport_manager/include/transport_manager/tcp/ifaddrs_android/LocalArray.h @@ -27,40 +27,49 @@ */ template <size_t STACK_BYTE_COUNT> class LocalArray { -public: - /** - * Allocates a new fixed-size array of the given size. If this size is - * less than or equal to the template parameter STACK_BYTE_COUNT, an - * internal on-stack buffer will be used. Otherwise a heap buffer will - * be allocated. - */ - LocalArray(size_t desiredByteCount) : mSize(desiredByteCount) { - if (desiredByteCount > STACK_BYTE_COUNT) { - mPtr = new char[mSize]; - } else { - mPtr = &mOnStackBuffer[0]; - } + public: + /** + * Allocates a new fixed-size array of the given size. If this size is + * less than or equal to the template parameter STACK_BYTE_COUNT, an + * internal on-stack buffer will be used. Otherwise a heap buffer will + * be allocated. + */ + LocalArray(size_t desiredByteCount) : mSize(desiredByteCount) { + if (desiredByteCount > STACK_BYTE_COUNT) { + mPtr = new char[mSize]; + } else { + mPtr = &mOnStackBuffer[0]; } - /** - * Frees the heap-allocated buffer, if there was one. - */ - ~LocalArray() { - if (mPtr != &mOnStackBuffer[0]) { - delete[] mPtr; - } + } + /** + * Frees the heap-allocated buffer, if there was one. + */ + ~LocalArray() { + if (mPtr != &mOnStackBuffer[0]) { + delete[] mPtr; } - // Capacity. - size_t size() { return mSize; } - bool empty() { return mSize == 0; } - // Element access. - char& operator[](size_t n) { return mPtr[n]; } - const char& operator[](size_t n) const { return mPtr[n]; } -private: - char mOnStackBuffer[STACK_BYTE_COUNT]; - char* mPtr; - size_t mSize; - // Disallow copy and assignment. - LocalArray(const LocalArray&); - void operator=(const LocalArray&); + } + // Capacity. + size_t size() { + return mSize; + } + bool empty() { + return mSize == 0; + } + // Element access. + char& operator[](size_t n) { + return mPtr[n]; + } + const char& operator[](size_t n) const { + return mPtr[n]; + } + + private: + char mOnStackBuffer[STACK_BYTE_COUNT]; + char* mPtr; + size_t mSize; + // Disallow copy and assignment. + LocalArray(const LocalArray&); + void operator=(const LocalArray&); }; -#endif // LOCAL_ARRAY_H_included
\ No newline at end of file +#endif // LOCAL_ARRAY_H_included
\ No newline at end of file diff --git a/src/components/transport_manager/include/transport_manager/tcp/ifaddrs_android/ScopedFd.h b/src/components/transport_manager/include/transport_manager/tcp/ifaddrs_android/ScopedFd.h index 1096e936b0..d2b842df1f 100644 --- a/src/components/transport_manager/include/transport_manager/tcp/ifaddrs_android/ScopedFd.h +++ b/src/components/transport_manager/include/transport_manager/tcp/ifaddrs_android/ScopedFd.h @@ -20,19 +20,19 @@ // Use this when the fd is incidental to the purpose of your function, // but needs to be cleaned up on exit. class ScopedFd { -public: - explicit ScopedFd(int fd) : fd(fd) { - } - ~ScopedFd() { - close(fd); - } - int get() const { - return fd; - } -private: - int fd; - // Disallow copy and assignment. - ScopedFd(const ScopedFd&); - void operator=(const ScopedFd&); + public: + explicit ScopedFd(int fd) : fd(fd) {} + ~ScopedFd() { + close(fd); + } + int get() const { + return fd; + } + + private: + int fd; + // Disallow copy and assignment. + ScopedFd(const ScopedFd&); + void operator=(const ScopedFd&); }; #endif // SCOPED_FD_H_included
\ No newline at end of file diff --git a/src/components/transport_manager/include/transport_manager/tcp/ifaddrs_android/ifaddrs-android.h b/src/components/transport_manager/include/transport_manager/tcp/ifaddrs_android/ifaddrs-android.h index 157beee2c6..068af87951 100644 --- a/src/components/transport_manager/include/transport_manager/tcp/ifaddrs_android/ifaddrs-android.h +++ b/src/components/transport_manager/include/transport_manager/tcp/ifaddrs_android/ifaddrs-android.h @@ -17,17 +17,17 @@ #ifndef IFADDRS_ANDROID_H_included #define IFADDRS_ANDROID_H_included #include <arpa/inet.h> -#include <cstring> #include <errno.h> +#include <linux/netlink.h> +#include <linux/rtnetlink.h> #include <net/if.h> #include <netinet/in.h> -#include <new> +#include <stdio.h> #include <sys/ioctl.h> -#include <sys/types.h> #include <sys/socket.h> -#include <stdio.h> -#include <linux/netlink.h> -#include <linux/rtnetlink.h> +#include <sys/types.h> +#include <cstring> +#include <new> #include "LocalArray.h" #include "ScopedFd.h" // Android (bionic) doesn't have getifaddrs(3)/freeifaddrs(3). @@ -35,169 +35,172 @@ // with all the non-portable code being in this file. // Source-compatible subset of the BSD struct. struct ifaddrs { - // Pointer to next struct in list, or NULL at end. - ifaddrs* ifa_next; - // Interface name. - char* ifa_name; - // Interface flags. - unsigned int ifa_flags; - // Interface network address. - sockaddr* ifa_addr; - // Interface netmask. - sockaddr* ifa_netmask; - ifaddrs(ifaddrs* next) - : ifa_next(next), ifa_name(NULL), ifa_flags(0), ifa_addr(NULL), ifa_netmask(NULL) - { - } - ~ifaddrs() { - delete ifa_next; - delete[] ifa_name; - delete ifa_addr; - delete ifa_netmask; + // Pointer to next struct in list, or NULL at end. + ifaddrs* ifa_next; + // Interface name. + char* ifa_name; + // Interface flags. + unsigned int ifa_flags; + // Interface network address. + sockaddr* ifa_addr; + // Interface netmask. + sockaddr* ifa_netmask; + ifaddrs(ifaddrs* next) + : ifa_next(next) + , ifa_name(NULL) + , ifa_flags(0) + , ifa_addr(NULL) + , ifa_netmask(NULL) {} + ~ifaddrs() { + delete ifa_next; + delete[] ifa_name; + delete ifa_addr; + delete ifa_netmask; + } + // Sadly, we can't keep the interface index for portability with BSD. + // We'll have to keep the name instead, and re-query the index when + // we need it later. + bool setNameAndFlagsByIndex(int interfaceIndex) { + // Get the name. + char buf[IFNAMSIZ]; + char* name = if_indextoname(interfaceIndex, buf); + if (name == NULL) { + return false; } - // Sadly, we can't keep the interface index for portability with BSD. - // We'll have to keep the name instead, and re-query the index when - // we need it later. - bool setNameAndFlagsByIndex(int interfaceIndex) { - // Get the name. - char buf[IFNAMSIZ]; - char* name = if_indextoname(interfaceIndex, buf); - if (name == NULL) { - return false; - } - ifa_name = new char[strlen(name) + 1]; - strcpy(ifa_name, name); - // Get the flags. - ScopedFd fd(socket(AF_INET, SOCK_DGRAM, 0)); - if (fd.get() == -1) { - return false; - } - ifreq ifr; - memset(&ifr, 0, sizeof(ifr)); - strcpy(ifr.ifr_name, name); - int rc = ioctl(fd.get(), SIOCGIFFLAGS, &ifr); - if (rc == -1) { - return false; - } - ifa_flags = ifr.ifr_flags; - return true; + ifa_name = new char[strlen(name) + 1]; + strcpy(ifa_name, name); + // Get the flags. + ScopedFd fd(socket(AF_INET, SOCK_DGRAM, 0)); + if (fd.get() == -1) { + return false; } - // Netlink gives us the address family in the header, and the - // sockaddr_in or sockaddr_in6 bytes as the payload. We need to - // stitch the two bits together into the sockaddr that's part of - // our portable interface. - void setAddress(int family, void* data, size_t byteCount) { - // Set the address proper... - sockaddr_storage* ss = new sockaddr_storage; - memset(ss, 0, sizeof(*ss)); - ifa_addr = reinterpret_cast<sockaddr*>(ss); - ss->ss_family = family; - uint8_t* dst = sockaddrBytes(family, ss); - memcpy(dst, data, byteCount); + ifreq ifr; + memset(&ifr, 0, sizeof(ifr)); + strcpy(ifr.ifr_name, name); + int rc = ioctl(fd.get(), SIOCGIFFLAGS, &ifr); + if (rc == -1) { + return false; } - // Netlink gives us the prefix length as a bit count. We need to turn - // that into a BSD-compatible netmask represented by a sockaddr*. - void setNetmask(int family, size_t prefixLength) { - // ...and work out the netmask from the prefix length. - sockaddr_storage* ss = new sockaddr_storage; - memset(ss, 0, sizeof(*ss)); - ifa_netmask = reinterpret_cast<sockaddr*>(ss); - ss->ss_family = family; - uint8_t* dst = sockaddrBytes(family, ss); - memset(dst, 0xff, prefixLength / 8); - if ((prefixLength % 8) != 0) { - dst[prefixLength/8] = (0xff << (8 - (prefixLength % 8))); - } + ifa_flags = ifr.ifr_flags; + return true; + } + // Netlink gives us the address family in the header, and the + // sockaddr_in or sockaddr_in6 bytes as the payload. We need to + // stitch the two bits together into the sockaddr that's part of + // our portable interface. + void setAddress(int family, void* data, size_t byteCount) { + // Set the address proper... + sockaddr_storage* ss = new sockaddr_storage; + memset(ss, 0, sizeof(*ss)); + ifa_addr = reinterpret_cast<sockaddr*>(ss); + ss->ss_family = family; + uint8_t* dst = sockaddrBytes(family, ss); + memcpy(dst, data, byteCount); + } + // Netlink gives us the prefix length as a bit count. We need to turn + // that into a BSD-compatible netmask represented by a sockaddr*. + void setNetmask(int family, size_t prefixLength) { + // ...and work out the netmask from the prefix length. + sockaddr_storage* ss = new sockaddr_storage; + memset(ss, 0, sizeof(*ss)); + ifa_netmask = reinterpret_cast<sockaddr*>(ss); + ss->ss_family = family; + uint8_t* dst = sockaddrBytes(family, ss); + memset(dst, 0xff, prefixLength / 8); + if ((prefixLength % 8) != 0) { + dst[prefixLength / 8] = (0xff << (8 - (prefixLength % 8))); } - // Returns a pointer to the first byte in the address data (which is - // stored in network byte order). - uint8_t* sockaddrBytes(int family, sockaddr_storage* ss) { - if (family == AF_INET) { - sockaddr_in* ss4 = reinterpret_cast<sockaddr_in*>(ss); - return reinterpret_cast<uint8_t*>(&ss4->sin_addr); - } else if (family == AF_INET6) { - sockaddr_in6* ss6 = reinterpret_cast<sockaddr_in6*>(ss); - return reinterpret_cast<uint8_t*>(&ss6->sin6_addr); - } - return NULL; + } + // Returns a pointer to the first byte in the address data (which is + // stored in network byte order). + uint8_t* sockaddrBytes(int family, sockaddr_storage* ss) { + if (family == AF_INET) { + sockaddr_in* ss4 = reinterpret_cast<sockaddr_in*>(ss); + return reinterpret_cast<uint8_t*>(&ss4->sin_addr); + } else if (family == AF_INET6) { + sockaddr_in6* ss6 = reinterpret_cast<sockaddr_in6*>(ss); + return reinterpret_cast<uint8_t*>(&ss6->sin6_addr); } -private: - // Disallow copy and assignment. - ifaddrs(const ifaddrs&); - void operator=(const ifaddrs&); + return NULL; + } + + private: + // Disallow copy and assignment. + ifaddrs(const ifaddrs&); + void operator=(const ifaddrs&); }; // FIXME: use iovec instead. struct addrReq_struct { - nlmsghdr netlinkHeader; - ifaddrmsg msg; + nlmsghdr netlinkHeader; + ifaddrmsg msg; }; inline bool sendNetlinkMessage(int fd, const void* data, size_t byteCount) { - ssize_t sentByteCount = TEMP_FAILURE_RETRY(send(fd, data, byteCount, 0)); - return (sentByteCount == static_cast<ssize_t>(byteCount)); + ssize_t sentByteCount = TEMP_FAILURE_RETRY(send(fd, data, byteCount, 0)); + return (sentByteCount == static_cast<ssize_t>(byteCount)); } inline ssize_t recvNetlinkMessage(int fd, char* buf, size_t byteCount) { - return TEMP_FAILURE_RETRY(recv(fd, buf, byteCount, 0)); + return TEMP_FAILURE_RETRY(recv(fd, buf, byteCount, 0)); } // Source-compatible with the BSD function. inline int getifaddrs(ifaddrs** result) { - // Simplify cleanup for callers. - *result = NULL; - // Create a netlink socket. - ScopedFd fd(socket(AF_NETLINK, SOCK_DGRAM, NETLINK_ROUTE)); - if (fd.get() < 0) { - return -1; - } - // Ask for the address information. - addrReq_struct addrRequest; - memset(&addrRequest, 0, sizeof(addrRequest)); - addrRequest.netlinkHeader.nlmsg_flags = NLM_F_REQUEST | NLM_F_MATCH; - addrRequest.netlinkHeader.nlmsg_type = RTM_GETADDR; - addrRequest.netlinkHeader.nlmsg_len = NLMSG_ALIGN(NLMSG_LENGTH(sizeof(addrRequest))); - addrRequest.msg.ifa_family = AF_UNSPEC; // All families. - addrRequest.msg.ifa_index = 0; // All interfaces. - if (!sendNetlinkMessage(fd.get(), &addrRequest, addrRequest.netlinkHeader.nlmsg_len)) { - return -1; - } - // Read the responses. - LocalArray<0> buf(65536); // We don't necessarily have std::vector. - ssize_t bytesRead; - while ((bytesRead = recvNetlinkMessage(fd.get(), &buf[0], buf.size())) > 0) { - nlmsghdr* hdr = reinterpret_cast<nlmsghdr*>(&buf[0]); - for (; NLMSG_OK(hdr, (size_t)bytesRead); hdr = NLMSG_NEXT(hdr, bytesRead)) { - switch (hdr->nlmsg_type) { - case NLMSG_DONE: - return 0; - case NLMSG_ERROR: - return -1; - case RTM_NEWADDR: - { - ifaddrmsg* address = reinterpret_cast<ifaddrmsg*>(NLMSG_DATA(hdr)); - rtattr* rta = IFA_RTA(address); - size_t ifaPayloadLength = IFA_PAYLOAD(hdr); - while (RTA_OK(rta, ifaPayloadLength)) { - if (rta->rta_type == IFA_LOCAL) { - int family = address->ifa_family; - if (family == AF_INET || family == AF_INET6) { - *result = new ifaddrs(*result); - if (!(*result)->setNameAndFlagsByIndex(address->ifa_index)) { - return -1; - } - (*result)->setAddress(family, RTA_DATA(rta), RTA_PAYLOAD(rta)); - (*result)->setNetmask(family, address->ifa_prefixlen); - } - } - rta = RTA_NEXT(rta, ifaPayloadLength); - } + // Simplify cleanup for callers. + *result = NULL; + // Create a netlink socket. + ScopedFd fd(socket(AF_NETLINK, SOCK_DGRAM, NETLINK_ROUTE)); + if (fd.get() < 0) { + return -1; + } + // Ask for the address information. + addrReq_struct addrRequest; + memset(&addrRequest, 0, sizeof(addrRequest)); + addrRequest.netlinkHeader.nlmsg_flags = NLM_F_REQUEST | NLM_F_MATCH; + addrRequest.netlinkHeader.nlmsg_type = RTM_GETADDR; + addrRequest.netlinkHeader.nlmsg_len = + NLMSG_ALIGN(NLMSG_LENGTH(sizeof(addrRequest))); + addrRequest.msg.ifa_family = AF_UNSPEC; // All families. + addrRequest.msg.ifa_index = 0; // All interfaces. + if (!sendNetlinkMessage( + fd.get(), &addrRequest, addrRequest.netlinkHeader.nlmsg_len)) { + return -1; + } + // Read the responses. + LocalArray<0> buf(65536); // We don't necessarily have std::vector. + ssize_t bytesRead; + while ((bytesRead = recvNetlinkMessage(fd.get(), &buf[0], buf.size())) > 0) { + nlmsghdr* hdr = reinterpret_cast<nlmsghdr*>(&buf[0]); + for (; NLMSG_OK(hdr, (size_t)bytesRead); hdr = NLMSG_NEXT(hdr, bytesRead)) { + switch (hdr->nlmsg_type) { + case NLMSG_DONE: + return 0; + case NLMSG_ERROR: + return -1; + case RTM_NEWADDR: { + ifaddrmsg* address = reinterpret_cast<ifaddrmsg*>(NLMSG_DATA(hdr)); + rtattr* rta = IFA_RTA(address); + size_t ifaPayloadLength = IFA_PAYLOAD(hdr); + while (RTA_OK(rta, ifaPayloadLength)) { + if (rta->rta_type == IFA_LOCAL) { + int family = address->ifa_family; + if (family == AF_INET || family == AF_INET6) { + *result = new ifaddrs(*result); + if (!(*result)->setNameAndFlagsByIndex(address->ifa_index)) { + return -1; } - break; + (*result)->setAddress(family, RTA_DATA(rta), RTA_PAYLOAD(rta)); + (*result)->setNetmask(family, address->ifa_prefixlen); + } } - } + rta = RTA_NEXT(rta, ifaPayloadLength); + } + } break; + } } - // We only get here if recv fails before we see a NLMSG_DONE. - return -1; + } + // We only get here if recv fails before we see a NLMSG_DONE. + return -1; } // Source-compatible with the BSD function. inline void freeifaddrs(ifaddrs* addresses) { - delete addresses; + delete addresses; } #endif // IFADDRS_ANDROID_H_included
\ No newline at end of file diff --git a/src/components/transport_manager/src/android/android_connection_factory.cc b/src/components/transport_manager/src/android/android_connection_factory.cc index 4e68a5e7ad..e53205a82c 100644 --- a/src/components/transport_manager/src/android/android_connection_factory.cc +++ b/src/components/transport_manager/src/android/android_connection_factory.cc @@ -60,7 +60,8 @@ TransportAdapter::Error AndroidConnectionFactory::CreateConnection( controller_->ConnectionCreated(connection, device_uid, app_handle); TransportAdapter::Error error = connection->Start(); if (TransportAdapter::OK != error) { - SDL_LOG_ERROR("Android Ipc connection::Start() failed with error: " << error); + SDL_LOG_ERROR( + "Android Ipc connection::Start() failed with error: " << error); } return error; } diff --git a/src/components/transport_manager/src/android/android_device_scanner.cc b/src/components/transport_manager/src/android/android_device_scanner.cc index 860337c2f2..6afe0b65e9 100644 --- a/src/components/transport_manager/src/android/android_device_scanner.cc +++ b/src/components/transport_manager/src/android/android_device_scanner.cc @@ -43,9 +43,9 @@ #include <sstream> #include <vector> +#include "transport_manager/android/android_ipc_control_protocol.h" #include "transport_manager/android/android_ipc_device.h" #include "transport_manager/android/android_transport_adapter.h" -#include "transport_manager/android/android_ipc_control_protocol.h" #include "utils/logger.h" @@ -58,12 +58,15 @@ AndroidDeviceScanner::AndroidDeviceScanner( TransportAdapterController* controller) : controller_(controller) , ipc_control_receiver_(new LocalSocketReceiver( - std::bind(&AndroidDeviceScanner::ProcessMessage, this, std::placeholders::_1))) { - + std::bind(&AndroidDeviceScanner::ProcessMessage, + this, + std::placeholders::_1))) { ipc_control_receiver_thread_ = std::thread([&]() { - ipc_control_receiver_->Init(static_cast<AndroidTransportAdapter*>(controller_)->GetControlReceiverSocketName()); + ipc_control_receiver_->Init( + static_cast<AndroidTransportAdapter*>(controller_) + ->GetControlReceiverSocketName()); ipc_control_receiver_->Run(); - }); + }); } AndroidDeviceScanner::~AndroidDeviceScanner() { @@ -82,7 +85,7 @@ void AndroidDeviceScanner::UpdateTotalDeviceList() { void AndroidDeviceScanner::Terminate() { SDL_LOG_AUTO_TRACE(); ipc_control_receiver_->Stop(); - if(ipc_control_receiver_thread_.joinable()) { + if (ipc_control_receiver_thread_.joinable()) { ipc_control_receiver_thread_.join(); } } @@ -92,7 +95,8 @@ TransportAdapter::Error AndroidDeviceScanner::Init() { } TransportAdapter::Error AndroidDeviceScanner::Scan() { - return ipc_control_receiver_thread_.joinable() ? TransportAdapter::OK : TransportAdapter::FAIL; + return ipc_control_receiver_thread_.joinable() ? TransportAdapter::OK + : TransportAdapter::FAIL; } bool AndroidDeviceScanner::IsInitialised() const { @@ -105,39 +109,37 @@ void AndroidDeviceScanner::ProcessMessage(const std::vector<uint8_t>& data) { const auto action = AndroidIpcControlProtocol::GetMessageActionType(data); - switch(action){ - case AndroidIpcProtocolActions::ON_DEVICE_CONNECTED: - { + switch (action) { + case AndroidIpcProtocolActions::ON_DEVICE_CONNECTED: { DeviceSptr device_ptr(new AndroidIpcDevice( - AndroidIpcControlProtocol::GetAddress(data), - AndroidIpcControlProtocol::GetName(data).c_str() )); + AndroidIpcControlProtocol::GetAddress(data), + AndroidIpcControlProtocol::GetName(data).c_str())); found_devices_with_sdl_.push_back(device_ptr); UpdateTotalDeviceList(); - } - break; + } break; - case AndroidIpcProtocolActions::ON_DEVICE_DISCONNECTED: - { + case AndroidIpcProtocolActions::ON_DEVICE_DISCONNECTED: { const auto addr = AndroidIpcControlProtocol::GetAddress(data); - auto it_device = std::find_if(found_devices_with_sdl_.begin(), - found_devices_with_sdl_.end(), [&addr](DeviceSptr d){ - AndroidIpcDevice tDevice(addr, ""); - return d->IsSameAs(static_cast<Device*>(&tDevice)); - }); + auto it_device = + std::find_if(found_devices_with_sdl_.begin(), + found_devices_with_sdl_.end(), + [&addr](DeviceSptr d) { + AndroidIpcDevice tDevice(addr, ""); + return d->IsSameAs(static_cast<Device*>(&tDevice)); + }); if (it_device != found_devices_with_sdl_.end()) { DeviceSptr device = *it_device; found_devices_with_sdl_.erase(it_device); controller_->DisconnectDone(device->unique_device_id(), 0); } - } - break; + } break; default: SDL_LOG_ERROR("Undefined BLE action " << static_cast<uint32_t>(action)); - break; + break; } } else { diff --git a/src/components/transport_manager/src/android/android_ipc_control_protocol.cc b/src/components/transport_manager/src/android/android_ipc_control_protocol.cc index 2d528a90b5..e7ec6c9d3a 100644 --- a/src/components/transport_manager/src/android/android_ipc_control_protocol.cc +++ b/src/components/transport_manager/src/android/android_ipc_control_protocol.cc @@ -1,11 +1,11 @@ #include "transport_manager/android/android_ipc_control_protocol.h" -#include "utils/logger.h" -#include "utils/jsoncpp_reader_wrapper.h" #include "utils/helpers.h" +#include "utils/jsoncpp_reader_wrapper.h" +#include "utils/logger.h" -#include <map> #include <algorithm> +#include <map> namespace transport_manager { namespace transport_adapter { @@ -13,70 +13,77 @@ namespace transport_adapter { SDL_CREATE_LOG_VARIABLE("TransportManager") namespace { - std::map<AndroidIpcProtocolActions, std::string> mapActionNames = { +std::map<AndroidIpcProtocolActions, std::string> mapActionNames = { {AndroidIpcProtocolActions::ON_DEVICE_CONNECTED, "ON_DEVICE_CONNECTED"}, - {AndroidIpcProtocolActions::ON_DEVICE_DISCONNECTED, "ON_DEVICE_DISCONNECTED"}}; - - const char cActionKey[] = "action"; - const char cNameKey[] = "name"; - const char cAddressKey[] = "address"; - const char cParamsKey[] = "params"; - - Json::Value GetParsedJson(const MsgData& message) { - utils::JsonReader reader_; - Json::Value value; - if (reader_.parse((char*)(message.data()), &value)) { - return value; - } - return Json::Value::null; - } - - std::string GetStrFromJson(const Json::Value& value, const std::string& key) { - if (value == Json::Value::null) { - return std::string(); - } - auto params = value.get(key, Json::Value::null); - if (params == Json::Value::null) { - return std::string(); - } - return params.asString(); - } + {AndroidIpcProtocolActions::ON_DEVICE_DISCONNECTED, + "ON_DEVICE_DISCONNECTED"}}; + +const char cActionKey[] = "action"; +const char cNameKey[] = "name"; +const char cAddressKey[] = "address"; +const char cParamsKey[] = "params"; + +Json::Value GetParsedJson(const MsgData& message) { + utils::JsonReader reader_; + Json::Value value; + if (reader_.parse((char*)(message.data()), &value)) { + return value; + } + return Json::Value::null; +} +std::string GetStrFromJson(const Json::Value& value, const std::string& key) { + if (value == Json::Value::null) { + return std::string(); + } + auto params = value.get(key, Json::Value::null); + if (params == Json::Value::null) { + return std::string(); + } + return params.asString(); } -AndroidIpcProtocolActions AndroidIpcControlProtocol::GetMessageActionType(const MsgData& message) { - const auto json = GetParsedJson(message); - return GetActionFromString(GetStrFromJson(json, cActionKey)); +} // namespace + +AndroidIpcProtocolActions AndroidIpcControlProtocol::GetMessageActionType( + const MsgData& message) { + const auto json = GetParsedJson(message); + return GetActionFromString(GetStrFromJson(json, cActionKey)); } -AndroidIpcProtocolActions AndroidIpcControlProtocol::GetActionFromString(const std::string& str) { - AndroidIpcProtocolActions result = AndroidIpcProtocolActions::INVALID_ENUM; +AndroidIpcProtocolActions AndroidIpcControlProtocol::GetActionFromString( + const std::string& str) { + AndroidIpcProtocolActions result = AndroidIpcProtocolActions::INVALID_ENUM; - const auto findResult = std::find_if(mapActionNames.begin(), mapActionNames.end(), - [&str](const std::pair<AndroidIpcProtocolActions, std::string> &pair) { - return pair.second == str;}); + const auto findResult = std::find_if( + mapActionNames.begin(), + mapActionNames.end(), + [&str](const std::pair<AndroidIpcProtocolActions, std::string>& pair) { + return pair.second == str; + }); - if(findResult != mapActionNames.end()) { - result = findResult->first; - } + if (findResult != mapActionNames.end()) { + result = findResult->first; + } - return result; + return result; } -std::string AndroidIpcControlProtocol::GetActionString(const AndroidIpcProtocolActions action) { - auto it = mapActionNames.find(action); - return it != mapActionNames.end() ? it->second : "UNKNOWN"; +std::string AndroidIpcControlProtocol::GetActionString( + const AndroidIpcProtocolActions action) { + auto it = mapActionNames.find(action); + return it != mapActionNames.end() ? it->second : "UNKNOWN"; } std::string AndroidIpcControlProtocol::GetAddress(const MsgData& message) { - const auto json = GetParsedJson(message); - return GetStrFromJson(json.get(cParamsKey, Json::Value::null), cAddressKey); + const auto json = GetParsedJson(message); + return GetStrFromJson(json.get(cParamsKey, Json::Value::null), cAddressKey); } std::string AndroidIpcControlProtocol::GetName(const MsgData& message) { - const auto json = GetParsedJson(message); - return GetStrFromJson(json.get(cParamsKey, Json::Value::null), cNameKey); + const auto json = GetParsedJson(message); + return GetStrFromJson(json.get(cParamsKey, Json::Value::null), cNameKey); } -} -} +} // namespace transport_adapter +} // namespace transport_manager diff --git a/src/components/transport_manager/src/android/android_ipc_device.cc b/src/components/transport_manager/src/android/android_ipc_device.cc index 4edd0dfd7f..26a4b60262 100644 --- a/src/components/transport_manager/src/android/android_ipc_device.cc +++ b/src/components/transport_manager/src/android/android_ipc_device.cc @@ -42,34 +42,34 @@ SDL_CREATE_LOG_VARIABLE("TransportManager") const ApplicationHandle kDefaultAppHandle = 1u; - /** - * @brief Constructor. - * - * @param device_address Bluetooth address. - * @param device_name Human-readable device name. - **/ - AndroidIpcDevice::AndroidIpcDevice(const std::string& device_address, - const char* device_name) +/** + * @brief Constructor. + * + * @param device_address Bluetooth address. + * @param device_name Human-readable device name. + **/ +AndroidIpcDevice::AndroidIpcDevice(const std::string& device_address, + const char* device_name) : Device(device_name, device_address) , address_(device_address) - , applications_list_({kDefaultAppHandle}) { } + , applications_list_({kDefaultAppHandle}) {} - bool AndroidIpcDevice::IsSameAs(const Device* other) const { - SDL_LOG_AUTO_TRACE(); - const AndroidIpcDevice* other_bluetooth_device = +bool AndroidIpcDevice::IsSameAs(const Device* other) const { + SDL_LOG_AUTO_TRACE(); + const AndroidIpcDevice* other_bluetooth_device = dynamic_cast<const AndroidIpcDevice*>(other); - if(other_bluetooth_device) { - return other_bluetooth_device->address_ == address_; - } - - SDL_LOG_TRACE("Compare with no Android Ipc device !"); - - return false; + if (other_bluetooth_device) { + return other_bluetooth_device->address_ == address_; } - ApplicationList AndroidIpcDevice::GetApplicationList() const { - return applications_list_; - } + SDL_LOG_TRACE("Compare with no Android Ipc device !"); + return false; } + +ApplicationList AndroidIpcDevice::GetApplicationList() const { + return applications_list_; } + +} // namespace transport_adapter +} // namespace transport_manager diff --git a/src/components/transport_manager/src/android/android_socket_connection.cc b/src/components/transport_manager/src/android/android_socket_connection.cc index 8915c26079..b6810b5f6f 100644 --- a/src/components/transport_manager/src/android/android_socket_connection.cc +++ b/src/components/transport_manager/src/android/android_socket_connection.cc @@ -34,8 +34,8 @@ #include "transport_manager/android/android_socket_connection.h" #include "transport_manager/android/android_ipc_device.h" -#include "transport_manager/transport_adapter/transport_adapter_controller.h" #include "transport_manager/android/android_transport_adapter.h" +#include "transport_manager/transport_adapter/transport_adapter_controller.h" #include "utils/logger.h" @@ -51,80 +51,90 @@ AndroidSocketConnection::AndroidSocketConnection( , device_uid_(device_uid) , app_handle_(app_handle) , controller_(controller) - , sender_(new LocalSocketSender(std::bind(&AndroidSocketConnection::OnMessageSent, this, std::placeholders::_1), - std::bind(&AndroidSocketConnection::OnClientConnectionDone, this, std::placeholders::_1))) + , sender_(new LocalSocketSender( + std::bind(&AndroidSocketConnection::OnMessageSent, + this, + std::placeholders::_1), + std::bind(&AndroidSocketConnection::OnClientConnectionDone, + this, + std::placeholders::_1))) , receiver_(new LocalSocketReceiver( - std::bind(&AndroidSocketConnection::ProcessMessage, this, std::placeholders::_1))) - {} + std::bind(&AndroidSocketConnection::ProcessMessage, + this, + std::placeholders::_1))) {} AndroidSocketConnection::~AndroidSocketConnection() {} void AndroidSocketConnection::ProcessMessage(const std::vector<uint8_t>& data) { - if (data.size() > 0) { - SDL_LOG_DEBUG("Received " << data.size() << " bytes from Java adapter"); - ::protocol_handler::RawMessagePtr frame( - new protocol_handler::RawMessage(0, 0, data.data(), data.size(), false)); - controller_->DataReceiveDone(device_uid_, app_handle_, frame); - } else { - controller_->DataReceiveFailed(device_uid_, app_handle_, DataReceiveError()); - } + if (data.size() > 0) { + SDL_LOG_DEBUG("Received " << data.size() << " bytes from Java adapter"); + ::protocol_handler::RawMessagePtr frame(new protocol_handler::RawMessage( + 0, 0, data.data(), data.size(), false)); + controller_->DataReceiveDone(device_uid_, app_handle_, frame); + } else { + controller_->DataReceiveFailed( + device_uid_, app_handle_, DataReceiveError()); + } } -void AndroidSocketConnection::OnMessageSent(protocol_handler::RawMessagePtr msg) { - if (msg) { - SDL_LOG_DEBUG("Successfully sent " << msg->data_size() << " bytes to Java adapter"); - controller_->DataSendDone(device_uid_, app_handle_, msg); - } else { - SDL_LOG_ERROR("Failed to send " << msg->data_size() << " bytes to Java adapter"); - controller_->DataSendFailed(device_uid_, app_handle_, msg, DataSendError()); - } +void AndroidSocketConnection::OnMessageSent( + protocol_handler::RawMessagePtr msg) { + if (msg) { + SDL_LOG_DEBUG("Successfully sent " << msg->data_size() + << " bytes to Java adapter"); + controller_->DataSendDone(device_uid_, app_handle_, msg); + } else { + SDL_LOG_ERROR("Failed to send " << msg->data_size() + << " bytes to Java adapter"); + controller_->DataSendFailed(device_uid_, app_handle_, msg, DataSendError()); + } } void AndroidSocketConnection::OnClientConnectionDone(const bool is_connected) { - if (is_connected) { - SDL_LOG_DEBUG("Successfully connected to Java adapter"); - controller_->ConnectDone(device_uid_, app_handle_); - } else { - SDL_LOG_ERROR("Failed to connect to Java adapter"); - controller_->ConnectFailed(device_uid_, app_handle_, ConnectError()); - } + if (is_connected) { + SDL_LOG_DEBUG("Successfully connected to Java adapter"); + controller_->ConnectDone(device_uid_, app_handle_); + } else { + SDL_LOG_ERROR("Failed to connect to Java adapter"); + controller_->ConnectFailed(device_uid_, app_handle_, ConnectError()); + } } -TransportAdapter::Error -AndroidSocketConnection::SendData(::protocol_handler::RawMessagePtr message) { - SDL_LOG_AUTO_TRACE(); - sender_->Send(message); - return TransportAdapter::OK; +TransportAdapter::Error AndroidSocketConnection::SendData( + ::protocol_handler::RawMessagePtr message) { + SDL_LOG_AUTO_TRACE(); + sender_->Send(message); + return TransportAdapter::OK; } TransportAdapter::Error AndroidSocketConnection::Disconnect() { - SDL_LOG_DEBUG("Disconnecting from Java adapter"); - sender_->Stop(); - if (sender_thread_.joinable()) { - sender_thread_.join(); - } - - receiver_->Stop(); - if (receiver_thread_.joinable()) { - receiver_thread_.join(); - } - - return TransportAdapter::OK; + SDL_LOG_DEBUG("Disconnecting from Java adapter"); + sender_->Stop(); + if (sender_thread_.joinable()) { + sender_thread_.join(); + } + + receiver_->Stop(); + if (receiver_thread_.joinable()) { + receiver_thread_.join(); + } + + return TransportAdapter::OK; } TransportAdapter::Error AndroidSocketConnection::Start() { - SDL_LOG_DEBUG("Initializing Android IPC connection threads"); - - receiver_thread_ = std::thread([&]() { - receiver_->Init(controller_->GetReceiverSocketName()); - receiver_->Run(); - }); - sender_thread_ = std::thread([&]() { - sender_->Init(controller_->GetSenderSocketName()); - sender_->Run(); - }); - - return TransportAdapter::OK; + SDL_LOG_DEBUG("Initializing Android IPC connection threads"); + + receiver_thread_ = std::thread([&]() { + receiver_->Init(controller_->GetReceiverSocketName()); + receiver_->Run(); + }); + sender_thread_ = std::thread([&]() { + sender_->Init(controller_->GetSenderSocketName()); + sender_->Run(); + }); + + return TransportAdapter::OK; } } // namespace transport_adapter diff --git a/src/components/transport_manager/src/android/android_transport_adapter.cc b/src/components/transport_manager/src/android/android_transport_adapter.cc index db8adcc96b..54544f987b 100644 --- a/src/components/transport_manager/src/android/android_transport_adapter.cc +++ b/src/components/transport_manager/src/android/android_transport_adapter.cc @@ -41,9 +41,9 @@ #include <iomanip> #include <set> -#include "transport_manager/android/android_transport_adapter.h" -#include "transport_manager/android/android_device_scanner.h" #include "transport_manager/android/android_connection_factory.h" +#include "transport_manager/android/android_device_scanner.h" +#include "transport_manager/android/android_transport_adapter.h" #include "utils/logger.h" @@ -53,154 +53,152 @@ namespace transport_adapter { SDL_CREATE_LOG_VARIABLE("TransportManager") namespace { - std::string getTransportName(AndroidTransportType transport_type) - { - switch(transport_type) { - case AndroidTransportType::BLE: - return "Bluetooth Low Energy"; - break; - - case AndroidTransportType::BT: - return "Bluetooth"; - break; - - default: - SDL_LOG_ERROR("Unknown android transport type"); - break; - } - - return "Unknown"; - } +std::string getTransportName(AndroidTransportType transport_type) { + switch (transport_type) { + case AndroidTransportType::BLE: + return "Bluetooth Low Energy"; + break; + + case AndroidTransportType::BT: + return "Bluetooth"; + break; + + default: + SDL_LOG_ERROR("Unknown android transport type"); + break; + } + + return "Unknown"; } +} // namespace AndroidTransportAdapter::AndroidTransportAdapter( resumption::LastStateWrapperPtr last_state_wrapper, const TransportManagerSettings& settings, AndroidTransportType transport_type) - : TransportAdapterImpl( - new AndroidDeviceScanner(this), - new AndroidConnectionFactory(this), - NULL, - last_state_wrapper, - settings) + : TransportAdapterImpl(new AndroidDeviceScanner(this), + new AndroidConnectionFactory(this), + NULL, + last_state_wrapper, + settings) , active_device_uid_() , app_handle_(0) , transport_type_(transport_type) { - SDL_LOG_DEBUG("AndroidTransportAdapter created for transport type : " << getTransportName(transport_type)); - } + SDL_LOG_DEBUG("AndroidTransportAdapter created for transport type : " + << getTransportName(transport_type)); +} DeviceType AndroidTransportAdapter::GetDeviceType() const { - switch(transport_type_) - { - case AndroidTransportType::BLE: - return DeviceType::BLUETOOTH_LE; - break; - - case AndroidTransportType::BT: - return DeviceType::BLUETOOTH; - break; - } - - SDL_LOG_ERROR("Unknown android transport type"); - return DeviceType::UNKNOWN; + switch (transport_type_) { + case AndroidTransportType::BLE: + return DeviceType::BLUETOOTH_LE; + break; + + case AndroidTransportType::BT: + return DeviceType::BLUETOOTH; + break; + } + + SDL_LOG_ERROR("Unknown android transport type"); + return DeviceType::UNKNOWN; } -void AndroidTransportAdapter::Store() const { -} +void AndroidTransportAdapter::Store() const {} bool AndroidTransportAdapter::Restore() { return true; } -AndroidTransportAdapter::~AndroidTransportAdapter(){ - SDL_LOG_DEBUG("Destroying Android transport adapter"); +AndroidTransportAdapter::~AndroidTransportAdapter() { + SDL_LOG_DEBUG("Destroying Android transport adapter"); } void AndroidTransportAdapter::SearchDeviceDone(const DeviceVector& devices) { - for (const DeviceSptr& device : devices) { - if (dynamic_cast<AndroidIpcDevice*>(device.get()) != nullptr) { - active_device_uid_ = device->unique_device_id(); - SDL_LOG_DEBUG("New active Android Ipc device found: " << active_device_uid_); - - - const auto apps_list = device->GetApplicationList(); - if (!apps_list.empty()) { - app_handle_ = apps_list.front(); - SDL_LOG_DEBUG("New active Android ipc device app handle: " << app_handle_); - } - - break; - } + for (const DeviceSptr& device : devices) { + if (dynamic_cast<AndroidIpcDevice*>(device.get()) != nullptr) { + active_device_uid_ = device->unique_device_id(); + SDL_LOG_DEBUG( + "New active Android Ipc device found: " << active_device_uid_); + + const auto apps_list = device->GetApplicationList(); + if (!apps_list.empty()) { + app_handle_ = apps_list.front(); + SDL_LOG_DEBUG( + "New active Android ipc device app handle: " << app_handle_); + } + + break; } + } - TransportAdapterImpl::SearchDeviceDone(devices); + TransportAdapterImpl::SearchDeviceDone(devices); } -void AndroidTransportAdapter::DisconnectDone(const DeviceUID& device_handle, - const ApplicationHandle& app_handle) { - if (active_device_uid_ == device_handle ) { - const auto disconnect_result = - TransportAdapterImpl::Disconnect(active_device_uid_, app_handle_); - if (TransportAdapter::OK == disconnect_result) { - TransportAdapterImpl::DisconnectDone(active_device_uid_, app_handle_); - active_device_uid_.clear(); - app_handle_ = 0; - } - - return; +void AndroidTransportAdapter::DisconnectDone( + const DeviceUID& device_handle, const ApplicationHandle& app_handle) { + if (active_device_uid_ == device_handle) { + const auto disconnect_result = + TransportAdapterImpl::Disconnect(active_device_uid_, app_handle_); + if (TransportAdapter::OK == disconnect_result) { + TransportAdapterImpl::DisconnectDone(active_device_uid_, app_handle_); + active_device_uid_.clear(); + app_handle_ = 0; } - TransportAdapterImpl::DisconnectDone(device_handle, app_handle); + return; + } + + TransportAdapterImpl::DisconnectDone(device_handle, app_handle); } bool AndroidTransportAdapter::ToBeAutoConnected(DeviceSptr device) const { - if (!active_device_uid_.empty()) { - // Android Ipc device connection is established on the Java side - return device->unique_device_id() == active_device_uid_; - } + if (!active_device_uid_.empty()) { + // Android Ipc device connection is established on the Java side + return device->unique_device_id() == active_device_uid_; + } - return false; + return false; } std::string AndroidTransportAdapter::GetSenderSocketName() const { - switch(transport_type_) { - case AndroidTransportType::BLE: - return "./localBleReader"; - break; - - case AndroidTransportType::BT: - return "./localBtReader"; - break; - } + switch (transport_type_) { + case AndroidTransportType::BLE: + return "./localBleReader"; + break; - return ""; + case AndroidTransportType::BT: + return "./localBtReader"; + break; + } + + return ""; } -std::string AndroidTransportAdapter::GetReceiverSocketName() const{ - switch(transport_type_) { - case AndroidTransportType::BLE: - return "./localBleWriter"; - break; +std::string AndroidTransportAdapter::GetReceiverSocketName() const { + switch (transport_type_) { + case AndroidTransportType::BLE: + return "./localBleWriter"; + break; - case AndroidTransportType::BT: - return "./localBtWriter"; - break; - } + case AndroidTransportType::BT: + return "./localBtWriter"; + break; + } - return ""; + return ""; } -std::string AndroidTransportAdapter::GetControlReceiverSocketName() const{ - switch(transport_type_) { - case AndroidTransportType::BLE: - return "./localBleControl"; - break; - - case AndroidTransportType::BT: - return "./localBtControl"; - break; - } - return ""; +std::string AndroidTransportAdapter::GetControlReceiverSocketName() const { + switch (transport_type_) { + case AndroidTransportType::BLE: + return "./localBleControl"; + break; + + case AndroidTransportType::BT: + return "./localBtControl"; + break; + } + return ""; } } // namespace transport_adapter diff --git a/src/components/transport_manager/src/android/local_socket_receiver.cc b/src/components/transport_manager/src/android/local_socket_receiver.cc index 0ac18b35bc..84fafeda28 100644 --- a/src/components/transport_manager/src/android/local_socket_receiver.cc +++ b/src/components/transport_manager/src/android/local_socket_receiver.cc @@ -2,111 +2,110 @@ #include <thread> #include "utils/logger.h" +#include <netdb.h> +#include <netinet/in.h> #include <stdio.h> #include <stdlib.h> -#include <unistd.h> #include <string.h> -#include <sys/types.h> #include <sys/socket.h> +#include <sys/types.h> #include <sys/un.h> -#include <netinet/in.h> -#include <netdb.h> +#include <unistd.h> SDL_CREATE_LOG_VARIABLE("Ble_Server") -namespace{ - const int buffer_size = 131072; // Copied from INI file - std::vector<uint8_t> buffer(buffer_size); -} +namespace { +const int buffer_size = 131072; // Copied from INI file +std::vector<uint8_t> buffer(buffer_size); +} // namespace namespace transport_manager { namespace transport_adapter { -LocalSocketReceiver::LocalSocketReceiver( MessageDelegate&& callback) - : callback_(callback) -{} - -void LocalSocketReceiver::Init(const std::string& socket_name) -{ - SDL_LOG_AUTO_TRACE(); - connected_ = false; - stop_requested_ = false; - - struct sockaddr_un server_sockaddr; - struct sockaddr_un client_sockaddr; - socklen_t len; - server_sockaddr.sun_family = AF_LOCAL; - server_sockaddr.sun_path[0] = '\0'; - strcpy(&server_sockaddr.sun_path[1], socket_name.c_str() ); - len = offsetof(struct sockaddr_un, sun_path) + 1 + strlen(&server_sockaddr.sun_path[1]); - int err; - - server_sock_ = socket(PF_LOCAL, SOCK_STREAM, 0); - if (server_sock_ < 0) { - err = errno; - SDL_LOG_ERROR("Cannot open socket: " << strerror(err) << " " << socket_name); - return; - } - - unlink(socket_name.c_str()); - int rc = bind(server_sock_, (struct sockaddr *) &server_sockaddr, len); - if (rc < 0){ - err = errno; - SDL_LOG_ERROR("BIND ERROR: " << strerror(err) << " " << socket_name); - close(server_sock_); - return; - } - - int backlog = 1; - rc = listen(server_sock_, backlog); - if (rc < 0){ - err = errno; - SDL_LOG_ERROR("LISTEN ERROR: " << strerror(err) << " " << socket_name); - close(server_sock_); - return; - } +LocalSocketReceiver::LocalSocketReceiver(MessageDelegate&& callback) + : callback_(callback) {} + +void LocalSocketReceiver::Init(const std::string& socket_name) { + SDL_LOG_AUTO_TRACE(); + connected_ = false; + stop_requested_ = false; + + struct sockaddr_un server_sockaddr; + struct sockaddr_un client_sockaddr; + socklen_t len; + server_sockaddr.sun_family = AF_LOCAL; + server_sockaddr.sun_path[0] = '\0'; + strcpy(&server_sockaddr.sun_path[1], socket_name.c_str()); + len = offsetof(struct sockaddr_un, sun_path) + 1 + + strlen(&server_sockaddr.sun_path[1]); + int err; + + server_sock_ = socket(PF_LOCAL, SOCK_STREAM, 0); + if (server_sock_ < 0) { + err = errno; + SDL_LOG_ERROR("Cannot open socket: " << strerror(err) << " " + << socket_name); + return; + } + + unlink(socket_name.c_str()); + int rc = bind(server_sock_, (struct sockaddr*)&server_sockaddr, len); + if (rc < 0) { + err = errno; + SDL_LOG_ERROR("BIND ERROR: " << strerror(err) << " " << socket_name); + close(server_sock_); + return; + } + + int backlog = 1; + rc = listen(server_sock_, backlog); + if (rc < 0) { + err = errno; + SDL_LOG_ERROR("LISTEN ERROR: " << strerror(err) << " " << socket_name); + close(server_sock_); + return; + } - SDL_LOG_INFO("Socket listening... " << socket_name); + SDL_LOG_INFO("Socket listening... " << socket_name); - client_sock_ = accept(server_sock_, (struct sockaddr *) &client_sockaddr, &len); - if (client_sock_ < 0){ - err = errno; - SDL_LOG_ERROR("ACCEPT ERROR: " << strerror(err) << " " << socket_name); - close(server_sock_); - close(client_sock_); - return; - } + client_sock_ = accept(server_sock_, (struct sockaddr*)&client_sockaddr, &len); + if (client_sock_ < 0) { + err = errno; + SDL_LOG_ERROR("ACCEPT ERROR: " << strerror(err) << " " << socket_name); + close(server_sock_); + close(client_sock_); + return; + } - connected_ = true; + connected_ = true; } -void LocalSocketReceiver::Run() -{ - SDL_LOG_AUTO_TRACE(); - - while (connected_ && !stop_requested_) { - buffer.resize(buffer_size); - const int n = read(client_sock_, buffer.data(), buffer_size - 1); - if(n > 0) { - buffer.resize(n); - callback_(buffer); - } +void LocalSocketReceiver::Run() { + SDL_LOG_AUTO_TRACE(); + + while (connected_ && !stop_requested_) { + buffer.resize(buffer_size); + const int n = read(client_sock_, buffer.data(), buffer_size - 1); + if (n > 0) { + buffer.resize(n); + callback_(buffer); } + } } void LocalSocketReceiver::Stop() { - SDL_LOG_DEBUG("Requesting server to stop"); - stop_requested_ = true; - close(client_sock_); - close(server_sock_); - connected_ = false; + SDL_LOG_DEBUG("Requesting server to stop"); + stop_requested_ = true; + close(client_sock_); + close(server_sock_); + connected_ = false; } -LocalSocketReceiver::~LocalSocketReceiver(){ - if(connected_){ - close(client_sock_); - close(server_sock_); - } +LocalSocketReceiver::~LocalSocketReceiver() { + if (connected_) { + close(client_sock_); + close(server_sock_); + } } } // namespace transport_adapter diff --git a/src/components/transport_manager/src/android/local_socket_sender.cc b/src/components/transport_manager/src/android/local_socket_sender.cc index 409f84479e..6c0381ae7c 100644 --- a/src/components/transport_manager/src/android/local_socket_sender.cc +++ b/src/components/transport_manager/src/android/local_socket_sender.cc @@ -4,13 +4,13 @@ #include <utility> #include "utils/logger.h" +#include <netdb.h> +#include <netinet/in.h> #include <stdio.h> #include <stdlib.h> -#include <unistd.h> #include <string.h> #include <sys/types.h> -#include <netinet/in.h> -#include <netdb.h> +#include <unistd.h> #include <atomic> SDL_CREATE_LOG_VARIABLE("local_socket_sender") @@ -18,99 +18,97 @@ SDL_CREATE_LOG_VARIABLE("local_socket_sender") namespace transport_manager { namespace transport_adapter { -LocalSocketSender::LocalSocketSender(OnDataSentCallback&& sent_callback, OnConnectedCallback&& connected_callback) +LocalSocketSender::LocalSocketSender(OnDataSentCallback&& sent_callback, + OnConnectedCallback&& connected_callback) : socket_id_(-1) , connected_(false) , message_queue_() , connected_callback_(connected_callback) - , sent_callback_(sent_callback) -{} - -void LocalSocketSender::Init(const std::string& socket_name) -{ - SDL_LOG_AUTO_TRACE(); - - struct sockaddr_un addr{}; - addr.sun_family = AF_LOCAL; - addr.sun_path[0] = '\0'; - strcpy(&addr.sun_path[1], socket_name.c_str() ); - socklen_t len = offsetof(struct sockaddr_un, sun_path) + 1 + strlen(&addr.sun_path[1]); - int err; - - SDL_LOG_DEBUG("Creating local socket..."); - socket_id_ = socket(PF_LOCAL, SOCK_STREAM, 0); - if (socket_id_ < 0) { - err = errno; - SDL_LOG_ERROR("Cannot open socket: " << strerror(err)); - return; - } + , sent_callback_(sent_callback) {} + +void LocalSocketSender::Init(const std::string& socket_name) { + SDL_LOG_AUTO_TRACE(); + + struct sockaddr_un addr {}; + addr.sun_family = AF_LOCAL; + addr.sun_path[0] = '\0'; + strcpy(&addr.sun_path[1], socket_name.c_str()); + socklen_t len = + offsetof(struct sockaddr_un, sun_path) + 1 + strlen(&addr.sun_path[1]); + int err; + + SDL_LOG_DEBUG("Creating local socket..."); + socket_id_ = socket(PF_LOCAL, SOCK_STREAM, 0); + if (socket_id_ < 0) { + err = errno; + SDL_LOG_ERROR("Cannot open socket: " << strerror(err)); + return; + } + + if (!TryToConnect(addr, len)) { + SDL_LOG_ERROR("Failed to connect"); + close(socket_id_); + } else { + connected_ = true; + } + + connected_callback_(connected_); +} - if (!TryToConnect(addr, len)) { - SDL_LOG_ERROR("Failed to connect"); - close(socket_id_); - } else { - connected_ = true; +void LocalSocketSender::Run() { + SDL_LOG_AUTO_TRACE(); + while (connected_ && !message_queue_.IsShuttingDown()) { + if (message_queue_.empty()) { + message_queue_.wait(); } - connected_callback_(connected_); -} - -void LocalSocketSender::Run() -{ - SDL_LOG_AUTO_TRACE(); - while(connected_ && !message_queue_.IsShuttingDown()) { - if (message_queue_.empty()) { - message_queue_.wait(); - } - - protocol_handler::RawMessagePtr message; - if (message_queue_.pop(message)) { - int n = write(socket_id_, message->data(), message->data_size()); - if (n > 0) { - sent_callback_(message); - } else { - sent_callback_(nullptr); - } - } + protocol_handler::RawMessagePtr message; + if (message_queue_.pop(message)) { + int n = write(socket_id_, message->data(), message->data_size()); + if (n > 0) { + sent_callback_(message); + } else { + sent_callback_(nullptr); + } } + } } -LocalSocketSender::~LocalSocketSender() -{ - if(connected_){ - close(socket_id_); - } +LocalSocketSender::~LocalSocketSender() { + if (connected_) { + close(socket_id_); + } } bool LocalSocketSender::TryToConnect(sockaddr_un& addr, socklen_t len) { - const int connect_attempts = 10; - const int attempt_interval_ms = 500; - - for (int i = 0; i < connect_attempts; ++i) { - SDL_LOG_DEBUG("Attempt #" << i + 1 << " to connect to socket..."); + const int connect_attempts = 10; + const int attempt_interval_ms = 500; - if (connect(socket_id_, (struct sockaddr *) &addr, len) < 0) { - SDL_LOG_ERROR("Connect() failed: " << strerror(errno) - << ". Retry in " << attempt_interval_ms << "ms"); - usleep(attempt_interval_ms); - continue; - } + for (int i = 0; i < connect_attempts; ++i) { + SDL_LOG_DEBUG("Attempt #" << i + 1 << " to connect to socket..."); - SDL_LOG_DEBUG("Successfully connected to socket"); - return true; + if (connect(socket_id_, (struct sockaddr*)&addr, len) < 0) { + SDL_LOG_ERROR("Connect() failed: " << strerror(errno) << ". Retry in " + << attempt_interval_ms << "ms"); + usleep(attempt_interval_ms); + continue; } - SDL_LOG_ERROR("Connection attempts exceeded. Can't connect to socket"); - return false; + SDL_LOG_DEBUG("Successfully connected to socket"); + return true; + } + + SDL_LOG_ERROR("Connection attempts exceeded. Can't connect to socket"); + return false; } void LocalSocketSender::Stop() { - SDL_LOG_DEBUG("Requesting client to stop"); - message_queue_.Shutdown(); + SDL_LOG_DEBUG("Requesting client to stop"); + message_queue_.Shutdown(); } void LocalSocketSender::Send(::protocol_handler::RawMessagePtr message) { - message_queue_.push(message); + message_queue_.push(message); } } // namespace transport_adapter diff --git a/src/components/transport_manager/src/tcp/platform_specific/linux/platform_specific_network_interface_listener.cc b/src/components/transport_manager/src/tcp/platform_specific/linux/platform_specific_network_interface_listener.cc index ba2956413a..4dd95d606f 100644 --- a/src/components/transport_manager/src/tcp/platform_specific/linux/platform_specific_network_interface_listener.cc +++ b/src/components/transport_manager/src/tcp/platform_specific/linux/platform_specific_network_interface_listener.cc @@ -9,7 +9,7 @@ #include "transport_manager/tcp/ifaddrs_android/ifaddrs-android.h" #else #include <ifaddrs.h> -#endif // __ANDROID__ +#endif // __ANDROID__ #include <net/if.h> #include <sys/select.h> diff --git a/src/components/transport_manager/src/tcp/tcp_client_listener.cc b/src/components/transport_manager/src/tcp/tcp_client_listener.cc index 3918ced78c..660861a2f7 100644 --- a/src/components/transport_manager/src/tcp/tcp_client_listener.cc +++ b/src/components/transport_manager/src/tcp/tcp_client_listener.cc @@ -57,7 +57,7 @@ #include "transport_manager/tcp/ifaddrs_android/ifaddrs-android.h" #else #include <ifaddrs.h> -#endif // __ANDROID__ +#endif // __ANDROID__ #include <sstream> diff --git a/src/components/transport_manager/src/transport_adapter/transport_adapter_impl.cc b/src/components/transport_manager/src/transport_adapter/transport_adapter_impl.cc index 1b3758ef63..4129a63647 100644 --- a/src/components/transport_manager/src/transport_adapter/transport_adapter_impl.cc +++ b/src/components/transport_manager/src/transport_adapter/transport_adapter_impl.cc @@ -86,7 +86,7 @@ TransportAdapterImpl::TransportAdapterImpl( , connections_lock_() #ifdef TELEMETRY_MONITOR , metric_observer_(NULL) - + #endif // TELEMETRY_MONITOR , server_connection_factory_(server_connection_factory) , client_connection_listener_(client_connection_listener) @@ -1253,9 +1253,9 @@ void TransportAdapterImpl::RemoveDevice(const DeviceUID& device_handle) { DeviceMap::iterator i = devices_.find(device_handle); if (i != devices_.end()) { DeviceSptr device = i->second; - const bool is_cloud_device = (GetDeviceType() == DeviceType::CLOUD_WEBSOCKET); - const bool is_ble_device = (GetDeviceType() == DeviceType::BLUETOOTH_LE); - if (!device->keep_on_disconnect() || is_cloud_device || is_ble_device) { + const bool is_cloud_device = + (GetDeviceType() == DeviceType::CLOUD_WEBSOCKET); + if (!device->keep_on_disconnect() || is_cloud_device) { devices_.erase(i); for (TransportAdapterListenerList::iterator it = listeners_.begin(); it != listeners_.end(); diff --git a/src/components/transport_manager/src/transport_manager_default.cc b/src/components/transport_manager/src/transport_manager_default.cc index 47801ed759..2c7aa6b42a 100644 --- a/src/components/transport_manager/src/transport_manager_default.cc +++ b/src/components/transport_manager/src/transport_manager_default.cc @@ -72,18 +72,24 @@ TransportAdapterFactory::TransportAdapterFactory() { }; #endif #ifdef BLUETOOTH_LE_SUPPORT - ta_bluetooth_le_creator_ = [](resumption::LastStateWrapperPtr last_state_wrapper, - const TransportManagerSettings& settings) { - return new transport_adapter::AndroidTransportAdapter(last_state_wrapper, - settings, transport_adapter::AndroidTransportType::BLE); - }; + ta_bluetooth_le_creator_ = + [](resumption::LastStateWrapperPtr last_state_wrapper, + const TransportManagerSettings& settings) { + return new transport_adapter::AndroidTransportAdapter( + last_state_wrapper, + settings, + transport_adapter::AndroidTransportType::BLE); + }; #endif #ifdef ANDROID_BT_SUPPORT - ta_android_bt_creator_ = [](resumption::LastStateWrapperPtr last_state_wrapper, - const TransportManagerSettings& settings) { - return new transport_adapter::AndroidTransportAdapter(last_state_wrapper, - settings, transport_adapter::AndroidTransportType::BT); - }; + ta_android_bt_creator_ = + [](resumption::LastStateWrapperPtr last_state_wrapper, + const TransportManagerSettings& settings) { + return new transport_adapter::AndroidTransportAdapter( + last_state_wrapper, + settings, + transport_adapter::AndroidTransportType::BT); + }; #endif ta_tcp_creator_ = [](const uint16_t port, resumption::LastStateWrapperPtr last_state_wrapper, diff --git a/src/components/transport_manager/src/websocket_server/websocket_connection.cc b/src/components/transport_manager/src/websocket_server/websocket_connection.cc index 482a9908e6..a2427537b6 100644 --- a/src/components/transport_manager/src/websocket_server/websocket_connection.cc +++ b/src/components/transport_manager/src/websocket_server/websocket_connection.cc @@ -99,10 +99,10 @@ WebSocketConnection<Session>::~WebSocketConnection() { #ifdef ENABLE_SECURITY template <> -WebSocketConnection<WebSocketSecureSession<>>::~WebSocketConnection() { - if (!IsShuttingDown()) { - Shutdown(); - } +WebSocketConnection<WebSocketSecureSession<> >::~WebSocketConnection() { + if (!IsShuttingDown()) { + Shutdown(); + } } #endif // ENABLE_SECURITY @@ -176,7 +176,7 @@ void WebSocketConnection<WebSocketSecureSession<> >::Run() { SDL_LOG_AUTO_TRACE(); session_->AsyncAccept(); } -#endif // ENABLE_SECURITY +#endif // ENABLE_SECURITY template <typename Session> void WebSocketConnection<Session>::Shutdown() { diff --git a/src/components/utils/CMakeLists.txt b/src/components/utils/CMakeLists.txt index e48f1e48d7..d766363b88 100644 --- a/src/components/utils/CMakeLists.txt +++ b/src/components/utils/CMakeLists.txt @@ -84,6 +84,7 @@ if (ENABLE_LOG) elseif(${LOGGER_NAME} STREQUAL "LOG4CXX") list(APPEND EXCLUDE_PATHS logger/boostlogger.cc + logger/androidlogger.cc ) list(APPEND LIBRARIES log4cxx -L${LOG4CXX_LIBS_DIRECTORY} @@ -94,6 +95,7 @@ if (ENABLE_LOG) else() list(APPEND EXCLUDE_PATHS logger/log4cxxlogger.cc + logger/androidlogger.cc ) endif() else() @@ -101,6 +103,7 @@ else() auto_trace.cc logger/log4cxxlogger.cc logger/boostlogger.cc + logger/androidlogger.cc ) endif() #(ENABLE_LOG) diff --git a/src/components/utils/include/utils/resource_usage.h b/src/components/utils/include/utils/resource_usage.h index 4cfe68b8bf..1c22ac5dc2 100644 --- a/src/components/utils/include/utils/resource_usage.h +++ b/src/components/utils/include/utils/resource_usage.h @@ -61,7 +61,8 @@ class Resources { #if defined(__QNXNTO__) typedef procfs_info PidStats; -#else +#elif defined(OS_LINUX) || defined(__ANDROID__) + struct PidStats { int pid; char comm[MAX_COMM_LEN]; @@ -108,6 +109,8 @@ class Resources { unsigned long guest_time; long int cguest_time; }; +#else + #endif public: /* diff --git a/src/components/utils/src/back_trace.cc b/src/components/utils/src/back_trace.cc index 048d5d0ae3..7c6d52f669 100644 --- a/src/components/utils/src/back_trace.cc +++ b/src/components/utils/src/back_trace.cc @@ -36,8 +36,10 @@ #include <sstream> #include <vector> -//#include <cxxabi.h> -//#include <execinfo.h> +#ifndef __ANDROID__ +#include <cxxabi.h> +#include <execinfo.h> +#endif #include "utils/macro.h" @@ -48,44 +50,50 @@ using threads::Thread; namespace utils { -//namespace { -//string demangle(const char* symbol) { -// char temp[2048]; -// if (1 == sscanf(symbol, "%*[^(]%*[^_]%2047[^)+]", temp)) { -// size_t size; -// int32_t status; -// char* demangled = abi::__cxa_demangle(temp, NULL, &size, &status); -// if (demangled != NULL) { -// string result(demangled); -// free(demangled); -// return result; -// } -// } -// return symbol; -//} -//} // namespace +#ifndef __ANDROID__ +namespace { +string demangle(const char* symbol) { + char temp[2048]; + if (1 == sscanf(symbol, "%*[^(]%*[^_]%2047[^)+]", temp)) { + size_t size; + int32_t status; + char* demangled = abi::__cxa_demangle(temp, NULL, &size, &status); + if (demangled != NULL) { + string result(demangled); + free(demangled); + return result; + } + } + return symbol; +} +} // namespace +#endif Backtrace::Backtrace(int32_t count, int32_t skip_top) : thread_id_(threads::Thread::CurrentId()) { int32_t skip = skip_top + 1; // Skip this constructor vector<void*> full_trace(count + skip); -// int32_t captured = backtrace(&full_trace.front(), count + skip); -// int32_t first_call = std::min(captured, skip); -// int32_t last_call = std::min(first_call + count, captured); -// backtrace_.assign(full_trace.begin() + first_call, -// full_trace.begin() + last_call); +#ifndef __ANDROID__ + int32_t captured = backtrace(&full_trace.front(), count + skip); + int32_t first_call = std::min(captured, skip); + int32_t last_call = std::min(first_call + count, captured); + backtrace_.assign(full_trace.begin() + first_call, + full_trace.begin() + last_call); +#endif } Backtrace::~Backtrace() {} vector<string> Backtrace::CallStack() const { vector<string> callstack; -// callstack.reserve(backtrace_.size()); -// char** mangled = backtrace_symbols(&backtrace_.front(), backtrace_.size()); -// for (size_t i = 0; i != backtrace_.size(); ++i) { -// callstack.push_back(demangle(mangled[i])); -// } -// free(mangled); +#ifndef __ANDROID__ + callstack.reserve(backtrace_.size()); + char** mangled = backtrace_symbols(&backtrace_.front(), backtrace_.size()); + for (size_t i = 0; i != backtrace_.size(); ++i) { + callstack.push_back(demangle(mangled[i])); + } + free(mangled); +#endif return callstack; } diff --git a/src/components/utils/src/logger/androidlogger.cc b/src/components/utils/src/logger/androidlogger.cc index 80ae3bd698..0cbca33ad8 100644 --- a/src/components/utils/src/logger/androidlogger.cc +++ b/src/components/utils/src/logger/androidlogger.cc @@ -34,24 +34,22 @@ #include <android/log.h> -namespace{ - std::chrono::high_resolution_clock::time_point init_time_point; +namespace { +std::chrono::high_resolution_clock::time_point init_time_point; } namespace logger { -AndroidLogger::AndroidLogger(){ -} +AndroidLogger::AndroidLogger() {} void AndroidLogger::Init() { - init_time_point = std::chrono::high_resolution_clock::now(); + init_time_point = std::chrono::high_resolution_clock::now(); } -void AndroidLogger::DeInit() { -} +void AndroidLogger::DeInit() {} android_LogPriority getLogLevel(LogLevel log_level) { - switch (log_level) { + switch (log_level) { case LogLevel::TRACE_LEVEL: return android_LogPriority::ANDROID_LOG_VERBOSE; case LogLevel::DEBUG_LEVEL: @@ -75,27 +73,24 @@ bool AndroidLogger::IsEnabledFor(const std::string& component, } void AndroidLogger::PushLog(const LogMessage& log_message) { - - auto timeInMicroSec = - std::chrono::duration_cast<std::chrono::microseconds> - (log_message.timestamp_ - init_time_point).count(); + auto timeInMicroSec = std::chrono::duration_cast<std::chrono::microseconds>( + log_message.timestamp_ - init_time_point) + .count(); std::string time_stamp; - time_stamp += std::to_string((timeInMicroSec % 1000000000) / 1000000 ); // sec + time_stamp += std::to_string((timeInMicroSec % 1000000000) / 1000000); // sec time_stamp += "::"; - time_stamp += std::to_string((timeInMicroSec % 1000000) / 1000 ); // mls + time_stamp += std::to_string((timeInMicroSec % 1000000) / 1000); // mls time_stamp += "::"; - time_stamp += std::to_string(timeInMicroSec % 1000); // mcs + time_stamp += std::to_string(timeInMicroSec % 1000); // mcs - __android_log_print( - getLogLevel(log_message.log_level_), - time_stamp.c_str(), - "%s: %s:%d %s", - log_message.log_event_.c_str(), - log_message.location_.file_name.c_str(), - log_message.location_.line_number, - log_message.location_.function_name.c_str() - ); + __android_log_print(getLogLevel(log_message.log_level_), + time_stamp.c_str(), + "%s: %s:%d %s", + log_message.log_event_.c_str(), + log_message.location_.file_name.c_str(), + log_message.location_.line_number, + log_message.location_.function_name.c_str()); } } // namespace logger diff --git a/src/components/utils/src/logger/logger_impl.cc b/src/components/utils/src/logger/logger_impl.cc index 4019220ec3..1439f7327a 100644 --- a/src/components/utils/src/logger/logger_impl.cc +++ b/src/components/utils/src/logger/logger_impl.cc @@ -36,8 +36,6 @@ namespace logger { -Logger* Logger::instance_ = nullptr; - LoggerImpl::LoggerImpl(bool use_message_loop_thread) : impl_(nullptr), use_message_loop_thread_(use_message_loop_thread) {} @@ -70,8 +68,6 @@ void LoggerImpl::DeInit() { if (impl_) { impl_->DeInit(); } - - instance_ = nullptr; } void LoggerImpl::Flush() { @@ -100,6 +96,7 @@ void LoggerImpl::PushLog(const LogMessage& log_message) { } Logger& Logger::instance(Logger* pre_init) { + static Logger* instance_; if (pre_init) { assert(instance_ == nullptr); instance_ = pre_init; diff --git a/src/components/utils/src/threads/thread_delegate.cc b/src/components/utils/src/threads/thread_delegate.cc index 22fc4c3f18..d298ab9f0b 100644 --- a/src/components/utils/src/threads/thread_delegate.cc +++ b/src/components/utils/src/threads/thread_delegate.cc @@ -39,7 +39,7 @@ #ifdef __ANDROID__ #include "utils/threads/pthread_android.h" -#endif // __ANDROID__ +#endif // __ANDROID__ namespace threads { diff --git a/src/components/utils/src/threads/thread_posix.cc b/src/components/utils/src/threads/thread_posix.cc index f935ffc612..2db1496c96 100644 --- a/src/components/utils/src/threads/thread_posix.cc +++ b/src/components/utils/src/threads/thread_posix.cc @@ -45,7 +45,7 @@ #ifdef __ANDROID__ #include "utils/threads/pthread_android.h" -#endif // __ANDROID__ +#endif // __ANDROID__ #ifndef __QNXNTO__ const int EOK = 0; diff --git a/src/components/utils/src/timer.cc b/src/components/utils/src/timer.cc index 85ddbed1d8..855a1bc169 100644 --- a/src/components/utils/src/timer.cc +++ b/src/components/utils/src/timer.cc @@ -155,7 +155,7 @@ void timer::Timer::StopThread() { thread_->Stop(threads::Thread::kThreadSoftStop); #else thread_->Stop(threads::Thread::kThreadStopDelegate); -#endif // __ANDROID__ +#endif // __ANDROID__ } delegate_->set_finalized_flag(false); } |