diff options
author | 2020-11-20 23:36:23 +0900 | |
---|---|---|
committer | 2020-11-22 09:02:55 +0900 | |
commit | 17cf21bcf8a2e29d2cbcf0a313474d2a4ee44f5d (patch) | |
tree | 582a9768558d9eaf261ca5df6136e9de54c95816 /systemservice/system_manager/server/src/ss_system_manager.cpp | |
parent | 9e86046cdb356913ae026f616e5bf17f6f238aa5 (diff) |
Re-organized sub-directory by category
Since all the sub-directories were placed in the
first level, created sub-directories, "hal", "module",
and "service" for classification and relocated each component.
Signed-off-by: Tadao Tanikawa <tanikawa.tadao@jp.panasonic.com>
Change-Id: Ifdf743ac0d1893bd8e445455cf0d2c199a011d5c
Diffstat (limited to 'systemservice/system_manager/server/src/ss_system_manager.cpp')
-rwxr-xr-x | systemservice/system_manager/server/src/ss_system_manager.cpp | 3655 |
1 files changed, 0 insertions, 3655 deletions
diff --git a/systemservice/system_manager/server/src/ss_system_manager.cpp b/systemservice/system_manager/server/src/ss_system_manager.cpp deleted file mode 100755 index 8e26f23..0000000 --- a/systemservice/system_manager/server/src/ss_system_manager.cpp +++ /dev/null @@ -1,3655 +0,0 @@ -/* - * @copyright Copyright (c) 2016-2020 TOYOTA MOTOR CORPORATION. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/////////////////////////////////////////////////////////////////////////////// -/// \ingroup tag_SystemManager -/// \brief This file provides support for System Manager business logic. -/// -/////////////////////////////////////////////////////////////////////////////// - -#include <native_service/cl_lock.h> -#include <native_service/cl_process.h> -#include <native_service/cl_monitor.h> - -#include <native_service/frameworkunified_application.h> -#include <native_service/frameworkunified_framework_if.h> -#include <native_service/frameworkunified_multithreading.h> -#include <native_service/frameworkunified_thread_priority.h> - -#include <native_service/ns_np_service_nor_persistence.h> -#include <native_service/ns_np_service_protocol.h> -#include <native_service/ns_plogger_if.h> -#include <native_service/ns_np_service_if.h> -#include <native_service/ns_backup.h> - -#include <heartbeat/ss_hb_if.h> - -#include <processlauncher/ProcessLauncher_if.h> -#include <processlauncher/ss_sm_process_launcher.h> -#include <processlauncher/ss_sm_process_launcher_protocol.h> - -#include <system_service/ss_system_manager_conf.h> -#include <stub/ss_diag.h> - -#include <system_service/ss_client_names.h> -#include <system_service/ss_heartbeat_service_protocol.h> -#include <system_service/ss_power_service_if.h> -#include <system_service/ss_power_service_notifications.h> -#include <system_service/ss_power_service_protocol.h> -#include <system_service/ss_services.h> -#include <system_service/ss_sm_thread_names.h> -#include <system_service/ss_sm_thread_names_local.h> -#include <system_service/ss_sm_client_if.h> -#include <system_service/ss_string_maps.h> -#include <system_service/ss_system_manager_notifications.h> -#include <system_service/ss_system_manager_notifications_local.h> -#include <system_service/ss_templates.h> -#include <system_service/ss_sm_client_if_local.h> -#include <system_service/ss_test_clients.h> -#include <stub/Clock_API.h> -#include <power_hal.h> -#include <dirent.h> -#include <errno.h> -#include <fcntl.h> -#include <stdio.h> -#include <stdlib.h> -#include <sys/mman.h> -#include <sys/resource.h> -#include <sys/procfs.h> -#include <sys/timeb.h> -#include <sys/wait.h> -#include <inttypes.h> -#include <libgen.h> -#include <spawn.h> -#include <pthread.h> -#include <linux/oom.h> -#include <sys/stat.h> -#include <sys/types.h> -#include <sys/ioctl.h> -#include <sched.h> -#include <other_service/itoa.h> -#include <iomanip> -#include <fstream> -#include <string> -#include <map> -#include <vector> -#include "ss_sm_signals.h" -#include "ss_sm_default_paths.h" -#include "ss_sm_systemmanagerlog.h" -#include "ss_sm_version.h" -#include "ss_system_manager.h" -using namespace std; // NOLINT - -static CSystemManager g_oSystemManger; - -#define SS_SM_TEMP_FILE_FOR_STORE_LOGS "/nv/BS/ss/system_manager/rwdata/sm_tempStoreLogs" -#define TR_USB_PATH "/usr/agl/bin/realtimeUsbLog" - -// \brief: public structure that is used for logging by NSLogger. -FRAMEWORKUNIFIEDLOGPARAM g_FrameworkunifiedLogParams = { - FRAMEWORKUNIFIEDLOGOPTIONS, - { - ZONE_TEXT_10, ZONE_TEXT_11, ZONE_TEXT_12, - ZONE_TEXT_13, ZONE_TEXT_14, ZONE_TEXT_15, - ZONE_TEXT_16, ZONE_TEXT_17, ZONE_TEXT_18, - ZONE_TEXT_19, ZONE_TEXT_20, ZONE_TEXT_21, - ZONE_TEXT_22, ZONE_TEXT_23, ZONE_TEXT_24, - ZONE_TEXT_25, ZONE_TEXT_26, ZONE_TEXT_27, - ZONE_TEXT_28, ZONE_TEXT_29, ZONE_TEXT_30, - ZONE_TEXT_31 - }, - FRAMEWORKUNIFIEDLOGZONES -}; - -std::string NumberToString(int Number) { // LCOV_EXCL_START 8: dead code - AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert - std::ostringstream ss; - ss << Number; - return ss.str(); -} -// LCOV_EXCL_STOP - -/* Check if "Mount Point" exsists as Directory */ -/*****************************************************************************/ -/** - @ingroup: CSystemManager - @brief: No Argument Constructor. - @note: . - @param void - @return void - */ -/*****************************************************************************/ -template<typename C, eFrameworkunifiedStatus (C::*M)(HANDLE)> EFrameworkunifiedStatus SysMgrCallback(HANDLE hApp) { - EFrameworkunifiedStatus l_eStatus = eFrameworkunifiedStatusFail; - C * pObj = static_cast<C *>(&g_oSystemManger); - if (pObj) { - l_eStatus = (pObj->*M)(hApp); - } - return l_eStatus; -} - -//************************************************************************** -// System Manager State String Map * -// * -void Init_SS_SMModuleState_StrMap(std::map<SS_SMModuleState, SS_String> & m_strMap) { // NOLINT - MAP_ENTRY(m_strMap, SS_SM_READY_TO_LAUNCH_APP); - MAP_ENTRY(m_strMap, SS_SM_APPS_LAUNCH_IN_PROGRESS); - MAP_ENTRY(m_strMap, SS_SM_APPS_LAUNCHED_READY_TO_START); - MAP_ENTRY(m_strMap, SS_SM_APPS_START_IN_PROGRESS); - MAP_ENTRY(m_strMap, SS_SM_APPS_START_COMPLETE); - MAP_ENTRY(m_strMap, SS_SM_APPS_STOPPING_AT__CWORD56__REQ); - MAP_ENTRY(m_strMap, SS_SM_APPS_STOPPING_AT_INTERNAL_REQ); - MAP_ENTRY(m_strMap, SS_SM_WAITING_FOR_CRITICAL_APPS_AT__CWORD56__REQ); - MAP_ENTRY(m_strMap, SS_SM_WAITING_FOR_CRITICAL_APPS_AT_INTERNAL_REQ); - MAP_ENTRY(m_strMap, SS_SM_APPS_PRE_START_IN_PROGRESS); - MAP_ENTRY(m_strMap, SS_SM_APPS_PRE_STOP_IN_PROGRESS); - MAP_ENTRY(m_strMap, SS_SM_APPS_PRE_RUN_COMPLETE); - MAP_ENTRY(m_strMap, SS_SM_APPS_BACKGROUND_START_IN_PROGRESS); - MAP_ENTRY(m_strMap, SS_SM_APPS_BACKGROUND_STOP_IN_PROGRESS); - MAP_ENTRY(m_strMap, SS_SM_APPS_BACKGROUND_RUN_COMPLETE); -} // End of void Init_SS_SMModuleState_StrMap(std::map<SS_SMModuleState, - -class EnumStringMap<SS_SMModuleState, Init_SS_SMModuleState_StrMap> - m_oSS_SMModuleStateStrMap; -SS_String GetStr(SS_SMModuleState f_enum) { - return m_oSS_SMModuleStateStrMap.GetStr(f_enum); // LCOV_EXCL_BR_LINE 11:unexpected branch // NOLINT(whitespace/line_length) -} // End of SS_String :GetStr(SS_SMModuleState f_enum) -// * -// End of System Manager State String Map * -//************************************************************************** - -std::string CSystemManager::m_bootOpt; // NOLINT - -/*****************************************************************************/ -/** - @ingroup: CSystemManager - @brief: No Argument Constructor. - @note: . - @param void - @return void - */ -/*****************************************************************************/ -CSystemManager & CSystemManager::GetInstance() { - return g_oSystemManger; -} - -/*****************************************************************************/ -/** - @ingroup: CSystemManager - @brief: No Argument Constructor. - @note: . - @param void - @return void - */ -/*****************************************************************************/ -CSystemManager::CSystemManager() : - m_hHeartbeatThread(INVALID_HANDLE, eSM_ThreadNotExist), - m_hProcLauncherThread(INVALID_HANDLE, eSM_ThreadNotExist), - m_SystemLaunchProgress(SS_SM_INITIAL_GROUP), - m_GroupLaunchTimer(NULL), - m_GroupRelaunchCount(0), - m_GroupRelaunchLimit(0), - m_hPowerServiceSession(NULL), - m_ActiveGroupId(SS_SM_INITIAL_GROUP), - m_StartUpReason(epswfINVALID), - m_DataResetMode(e_SS_SM_DATA_RESET_MODE_NONE), - m_ProgUpdateState(SS_SM_PROG_UPDATE_STATE_NONE), - m_NextWakeupType(e_SS_SM_NEXT_WAKEUP_TYPE_NONE), - m_DramBackupStatus(e_SS_SM_DRAM_BACKUP_NG), - m_isIlgReset(FALSE), - m_ResetStatus(e_SS_SM_RESET_STATUS_NONE), - m_ResetCount(0), - m_SMCurrentState(SS_SM_READY_TO_LAUNCH_APP), - - m_MaxShutdownTime(0), - m_NbrDebugDumpRspnRecv(0), - m_isRcvModeInfo(FALSE), - m_BinaryFilesPath(""), - m_ConfigFilesPath(""), - m_pfStopCompleteHandler( - SysMgrCallback<CSystemManager, &CSystemManager::send_shutdown_complete_response>), - m_VersionNumberStruct(0, eFrameworkunifiedStatusErrOther), - m_BuildInfoStr(""), - m_isRstPending(FALSE), - m_rstPendingInfo(), - m_UsingVMPlayer(FALSE), - NVM_VALID_SIGNATURE(0xBA5EBA11), - m_lastUserMode(epsumON), - m_shutdownTrigger(epssdmsdtINVALID), - m_isImmediateReset(FALSE), - m_isImmResetReq(FALSE), - m_needReNotifyStartPrm(FALSE), - m_pVarCodeStr(NULL), - m_SSLGroupLaunchMapIterator(NULL), - m_ModuleLaunchListIter(NULL), - m_bIsNPP_ServicesStarted(FALSE), - m_bIsBackupAvail(FALSE), - m_oSystemLauncher(), - m_SystemStarter(), - m_NPPStopSent(FALSE), - m_userModeChangeReason(epsumcrNOT_AVAILABLE), - m__CWORD56_CmdHist(SS_SM__CWORD56__CMD_HIST_SIZE), - m_SMCmdHist(SS_SM_CMD_HIST_SIZE), - m_TimerCmdHist(SS_SM_TIMER_CMD_HIST_SIZE), - m_PubCmdHist(SS_SM_PUB_CMD_HIST_SIZE), - m_ErrHist(SS_SM_ERR_HIST_SIZE), - m_ClProcessSigFd(-1), - m_SysMemMonitor(), - m_FreeMemAvailable(0), - m_coreFileSizeBytes(0), - m_BootMicroResetReason(SS_SM_BOOT_MICRO_RESET_REASON_SELF_RESET), - m_errorEventQueueLocked(FALSE), - m_isPrevErrEventCompleted(TRUE), - m_errorEventResult(eFrameworkunifiedStatusOK), - m_requestedArtifactId(eArtifactIdInterfaceunifiedDebugLog) { // LCOV_EXCL_BR_LINE 11:unexpected branch // NOLINT(whitespace/line_length) - m_InitialBoot = true; - - m_ResetFactor = PSM_FACTOR_NONE; - - m_Wake.powerupType = epswsPWRON; - m_Wake.up.level = epswlFULLRUN; - - m_SystemModeInfo.lastUserMode = m_lastUserMode; - m_SystemModeInfo.limpHomeCutoff = epslhcINVALID; - m_SystemModeInfo.productionMode = epspmINVALID; - m_SystemModeInfo.transportMode = epstmINVALID; - m_SystemModeInfo.systemMode = epssinfINVALID; - m_SystemModeInfo.startupStage = epssusfINVALID; - - bzero(&m_SMConfig, sizeof(m_SMConfig)); - bzero(&m_startUpConfirmationMsg, sizeof(m_startUpConfirmationMsg)); - bzero(&m_HBReport, sizeof(m_HBReport)); - - m__CWORD56_HistIter = m__CWORD56_CmdHist.begin(); - m_TimerHistIter = m_TimerCmdHist.begin(); - m_SMHistIter = m_SMCmdHist.begin(); - m_PubHistIter = m_PubCmdHist.begin(); - m_ErrHistIter = m_ErrHist.begin(); - - ////******************************************************************//// - //// Initialization of enum<=>enum and enum=>string maps //// - //// //// - - // - // **** Initialization of powerupType enum maps **** - // Map of System Services powerupType to BOOL enum values - m_PowerType_to_SSBoolEnumMap[epswsPWRON] = TRUE; - m_PowerType_to_SSBoolEnumMap[epswsPWROFF] = FALSE; - // - // Map of System Services powerupType to System Services User Mode enum values - m_PowerType_to_SSUserModeEnumMap[epswsPWRON] = epsumON; - m_PowerType_to_SSUserModeEnumMap[epswsPWROFF] = epsumOFF; - // - // Map of BOOL to System Services powerupType enum values - m_SSBool_to_PowerTypeEnumMap[TRUE] = epswsPWRON; - m_SSBool_to_PowerTypeEnumMap[FALSE] = epswsPWROFF; - // - // **** Initialization of User Mode ( aka Last User Mode ) maps **** - // Map of BOOL to System Services User Mode enum values - m_SSBool_to_SSUserModeEnumMap[FALSE] = epsumOFF; - m_SSBool_to_SSUserModeEnumMap[TRUE] = epsumON; - // - // Map of BOOL to System Services User Mode enum values - m_SSUserMode_to_SSBoolEnumMap[epsumOFF] = FALSE; - m_SSUserMode_to_SSBoolEnumMap[epsumON] = TRUE; - - // LCOV_EXCL_BR_STOP - //// //// - //// End of Initialization of enum<=>enum and enum=>string maps //// - ////******************************************************************//// - - m_startUpConfirmationMsg.wakeupType = epsstINVALID; - m_startUpConfirmationMsg.coldStartRequest = epsscrtINVALID; - m_startUpConfirmationMsg.HWVersion = UINT32_MAX; - m_startUpConfirmationMsg.matchedHardwareType = UINT32_MAX; - m_startUpConfirmationMsg.softwareType = UINT32_MAX; - m_startUpConfirmationMsg.imageType = UINT32_MAX; - m_startUpConfirmationMsg.majorVersion = UINT32_MAX; - m_startUpConfirmationMsg.minorVersion = UINT32_MAX; - - m_SystemManagerPriority = PR_SS_SYSMANAGER; -} - -/*****************************************************************************/ -/** - @ingroup: CSystemManager - @brief: Destructor - @note: . - @param void - @return void - */ -/*****************************************************************************/ -CSystemManager::~CSystemManager() { // LCOV_EXCL_BR_LINE 11:unexpected branch // NOLINT(whitespace/line_length) - if (NULL != m_pVarCodeStr) { - delete[] m_pVarCodeStr; // LCOV_EXCL_BR_LINE 11:unexpected branch // NOLINT(whitespace/line_length) - } -} - -/*****************************************************************************/ -/** - @ingroup: CSystemManager - @brief: Initialize_memory Memory initialization processing - @note: . - @param - @return void - */ -/*****************************************************************************/ -void CSystemManager::Initialize_memory(HANDLE hApp, bool* l_isInitFail, EFrameworkunifiedStatus* l_eStatus_work, BOOL isIllReset) { - int ret; - EFrameworkunifiedStatus l_eStatus; - - /// Start Process for Realtime USB Logging - { - PreLaunchModuleParams l_rtuparam; - l_rtuparam.LaunchFunc = CreateRtUsb; - l_rtuparam.relaunchLimit = 1; - l_rtuparam.name = "realtimeUsbLog"; - l_rtuparam.binaryFileName = TR_USB_PATH; -/* l_rtuparam.pid = CreateRtUsb(); - if (l_rtuparam.pid == 1) { - FRAMEWORKUNIFIEDLOG(ZONE_ERR, __FUNCTION__, " Error: CreateRtUsb()"); - } */ - m_PreLaunchModuleList.push_back(l_rtuparam); - } - - FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "+"); - - int fd = open("/dev/urandom", O_RDONLY); // LCOV_EXCL_BR_LINE 5: standard lib error - if (fd == -1) { // LCOV_EXCL_BR_LINE 5: standard lib error - AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert - SS_ASERT_ERRNO(0); // LCOV_EXCL_LINE 5: standard lib error - } else { - char buf[4]; - ret = static_cast<int>(read(fd, buf, 4)); // LCOV_EXCL_BR_LINE 5: standard lib error - if (-1 == ret) { // LCOV_EXCL_BR_LINE 5: standard lib error - AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert - SS_ASERT_ERRNO(0); // LCOV_EXCL_LINE 5: standard lib error - } else if (4 != ret) { // LCOV_EXCL_BR_LINE 5: standard lib error - AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert - SS_ASERT(0); // LCOV_EXCL_LINE 5: standard lib error - } else { - fprintf(stderr, "WakeupID:%X%X%X%X\n", buf[0], buf[1], buf[2], buf[3]); - FRAMEWORKUNIFIEDLOG(ZONE_STATE, __FUNCTION__, "WakeupID:%X%X%X%X", buf[0], buf[1], buf[2], buf[3]); - } - close(fd); - } - - FRAMEWORKUNIFIEDLOG(ZONE_STATE, __FUNCTION__, "bootOpt:%s", m_bootOpt.c_str()); - - *l_eStatus_work = FrameworkunifiedAttachCallbackToDispatcherWithFd(hApp, m_ClProcessSigFd, // LCOV_EXCL_BR_LINE 4: nsfw error - SysMgrCallback<CSystemManager, &CSystemManager::OnProcessTermDetected>); - - if (eFrameworkunifiedStatusOK != *l_eStatus_work) { // LCOV_EXCL_BR_LINE 4: nsfw error - // LCOV_EXCL_START 4: nsfw error - AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert - LOG_ERROR("FrameworkunifiedAttachCallbackToDispatcherWithFd()"); - *l_isInitFail = true; - // LCOV_EXCL_STOP - } - - pthread_mutex_init(&sm_hist_mutex, NULL); - - ReadPathFromEnvironmentVariables(); - ReadUsingVMPlayerEnvironmentVariable(); - - // FIXME : Dump information from power_hal by using - - if (eFrameworkunifiedStatusOK != (*l_eStatus_work = SetSystemModeInfoStruct())) { - LOG_ERROR("SetSystemModeInfoStruct()"); // LCOV_EXCL_BR_LINE 15: marco defined in ss_templates.h // NOLINT(whitespace/line_length) - *l_isInitFail = true; - } - - // Select configuration file for wakeup services - BOOL bIsVupMode = (m_SystemModeInfo.systemMode == epssinfPROGRAMMING) ? TRUE : FALSE; // LCOV_EXCL_BR_LINE 11:unexpected branch // NOLINT(whitespace/line_length) - - T_SS_SM_INIT_HOOK_IN_PARAM inPrm; - - std::memset(&inPrm, 0, sizeof(inPrm)); - inPrm.bIsVupMode = bIsVupMode; - - if (eFrameworkunifiedStatusOK != (*l_eStatus_work = ss_sm_initHook(hApp, &inPrm, &m_productCustomPrm))) { - SS_ASERT_LOG(0, "ERROR: ss_sm_initHook()"); // LCOV_EXCL_BR_LINE 15: marco defined in ss_templates.h // NOLINT(whitespace/line_length) - *l_isInitFail = true; - } - - SetEnvVariableForVupMode(bIsVupMode); - - // Get the Version Number - // GetVersionNumber() will report any errors - m_VersionNumberStruct.m_eSystemmanagerStatus = GetVersionNumber(m_VersionNumberStruct.m_VersionNumber); - - *l_eStatus_work = GetBuildInfo(m_BuildInfoStr); - l_eStatus = *l_eStatus_work; - - LOG_ERROR_REC_HIST_IF_ERRORED(l_eStatus, "GetBuildInfo()"); // LCOV_EXCL_BR_LINE 15: marco defined in ss_system_manager.h // NOLINT(whitespace/line_length) - - INTERFACEUNIFIEDLOG_WHEN_COMPILED; // LCOV_EXCL_BR_LINE 15: marco defined in ss_system_manager.h // NOLINT(whitespace/line_length) - - FRAMEWORKUNIFIEDLOG(ZONE_INFO, __FUNCTION__, " %s priority is %d", SERVICE_SYSMANAGER, m_SystemManagerPriority); - FRAMEWORKUNIFIEDLOG(ZONE_PERFORMANCE, __FUNCTION__, " %s was compiled at %s @ %s", __FILE__, __DATE__, __TIME__); - - FRAMEWORKUNIFIEDLOG(ZONE_PERFORMANCE, __FUNCTION__, " Host Processor Software Version is '0x%016llX'", - m_VersionNumberStruct.m_VersionNumber); - - FRAMEWORKUNIFIEDLOG(ZONE_PERFORMANCE, __FUNCTION__, " Host Processor Build Version is '%s'", m_BuildInfoStr.c_str()); - - LogESystemmanagerStatusEnums(); - LogProtocolIDs(); -} - -/*****************************************************************************/ -/** - @ingroup: CSystemManager - @brief: Initialize_callbacks Callback enrollment process - @note: . - @param - @return void - */ -/*****************************************************************************/ -void CSystemManager::Initialize_callbacks(HANDLE hApp, bool *l_isInitFail, EFrameworkunifiedStatus *l_eStatus_work) { - EFrameworkunifiedStatus l_eStatus; - - m_GroupLaunchTimer = new (std::nothrow) TimerCtrl(eSM_TIMERS_END); // LCOV_EXCL_BR_LINE 11:unexpected branch // NOLINT(whitespace/line_length) - if (NULL == m_GroupLaunchTimer) { // LCOV_EXCL_BR_LINE 5: Because new doesn't pass the failure case - // LCOV_EXCL_START 5: Because new doesn't pass the failure case - AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert - *l_eStatus_work = eFrameworkunifiedStatusNullPointer; - LOG_ERROR("new(std::nothrow)TimerCtrl(eSM_TIMERS_END)"); - *l_isInitFail = true; - // LCOV_EXCL_STOP - } - - // LCOV_EXCL_BR_START 11:unexpected branch // NOLINT(whitespace/line_length) - m_GroupLaunchTimer->Initialize(hApp); - m_aTimerIDs[eSM_TIMER_GROUP_MONITOR] = - m_GroupLaunchTimer->CreateTimer(SysMgrCallback<CSystemManager, &CSystemManager::OnGroupLaunchTimerExpiry>); - m_aTimerIDs[eSM_TIMER_PROCESS_LAUNCH_MONITOR] = - m_GroupLaunchTimer->CreateTimer(SysMgrCallback<CSystemManager, &CSystemManager::OnProcessLaunchTimerExpiry>); - m_aTimerIDs[eSM_TIMER_HEARTBEAT_MONITOR] = - m_GroupLaunchTimer->CreateTimer(SysMgrCallback<CSystemManager, &CSystemManager::OnHeartBeatMonitorTimerExpiry>); - m_aTimerIDs[eSM_TIMER_PROCESSLAUNCHER_MONITOR] = - m_GroupLaunchTimer->CreateTimer(SysMgrCallback<CSystemManager, - &CSystemManager::OnProcessLaunchMonitorTimerExpiry>); - m_aTimerIDs[eSM_TIMER_CLIENT_START_MONITOR] = - m_GroupLaunchTimer->CreateTimer(SysMgrCallback<CSystemManager, - &CSystemManager::OnClientStartMonitorTimerExpiry>); - m_aTimerIDs[eSM_TIMER_NPP_STATUS_CHECK_MONITOR] = - m_GroupLaunchTimer->CreateTimer(SysMgrCallback<CSystemManager, - &CSystemManager::OnNPPStatusCheckMonitorTimerExpiry>); - m_aTimerIDs[eSM_TIMER__CWORD56__HEARTBEAT_RESPONSE] = - m_GroupLaunchTimer->CreateTimer(SysMgrCallback<CSystemManager, - &CSystemManager::On_CWORD56_HeartBeatResponseIntervalTimerExpiry>); - m_aTimerIDs[eSM_TIMER_LAUNCH_GROUP_TRIGGER_PROC_RESP_TIMER] = - m_GroupLaunchTimer->CreateTimer(SysMgrCallback<CSystemManager, - &CSystemManager::OnLaunchGroupTriggerProcessResponseTimerExpiry>); - m_aTimerIDs[eSM_TIMER_GROUP_LAUNCH_WAIT_TIMER] = - m_GroupLaunchTimer->CreateTimer(SysMgrCallback<CSystemManager, &CSystemManager::OnGroupLaunchWaitTimeout>); - m_aTimerIDs[eSM_TIMER_MODULE_CONNECT_WAIT_TIMER] = - m_GroupLaunchTimer->CreateTimer(SysMgrCallback<CSystemManager, &CSystemManager::OnModuleConnectWaitTimeout>); - m_aTimerIDs[eSM_TIMER_START_RESP_MONITOR_WAIT_TIMER] = - m_GroupLaunchTimer->CreateTimer(SysMgrCallback<CSystemManager, &CSystemManager::OnStartRespMonitorTimeout>); - m_aTimerIDs[eSM_TIMER_SHUTDOWN_COMPLETE_MONITOR] = - m_GroupLaunchTimer->CreateTimer(SysMgrCallback<CSystemManager, - &CSystemManager::OnShutdownCompleteMonitorTimeout>); - m_aTimerIDs[eSM_TIMER_CLIENT_STOP_MONITOR] = - m_GroupLaunchTimer->CreateTimer(SysMgrCallback<CSystemManager, &CSystemManager::OnClientStopMonitorTimerExpiry>); - - FrameworkunifiedProtocolCallbackHandler l_cbArrayAnySource[] = { - // Command ID, Call back functions - { SS_SM_PROTOCOL_OPEN_SESSION_REQ, SysMgrCallback<CSystemManager, &CSystemManager::OnOpenSession> }, - { SS_SM_CPU_RESET_REQ, SysMgrCallback<CSystemManager, &CSystemManager::OnCpuResetRequest> } - }; - - FrameworkunifiedProtocolCallbackHandler l_cbArrayGroupLaunchService[] = { - // Command ID, Call back functions - { SS_SM_GROUP_LAUNCH_TRIGGER, SysMgrCallback<CSystemManager, &CSystemManager::OnLaunchGroupTriggerProcessResponse> } - }; - - FrameworkunifiedProtocolCallbackHandler l_cbArrayNPPService[] = { - // Command ID, Call back functions - { NPS_NPP_READY_EVENT, SysMgrCallback<CSystemManager, &CSystemManager::OnNPPReadyEventCallback> }, - { NPS_GET_READYSTATUS_ACK, SysMgrCallback<CSystemManager, &CSystemManager::OnNPPReadyStatusCallback> }, - { NPS_NPP_STOP_ACK, SysMgrCallback<CSystemManager, &CSystemManager::OnNppStopComplete> } - }; - - FrameworkunifiedProtocolCallbackHandler l_cbArrayPowerService[] = { - // Command ID, Call back functions - { SS_SM_POWER_REQUEST_MSG, SysMgrCallback<CSystemManager, &CSystemManager::OnPowerRequestCallback> }, - { SS_SM_WAKEUP_MODULES, SysMgrCallback<CSystemManager, &CSystemManager::OnWakeupCallback> }, - { SS_SM_SYSTEM_MODE_INFO_REQ, SysMgrCallback<CSystemManager, &CSystemManager::OnSystemModeInfoRequest> }, - { SS_SM_INITCOMP_REP, SysMgrCallback<CSystemManager, &CSystemManager::OnInitCompReportCallback> }, - { SS_SM_SHUTDOWN_MODULES, SysMgrCallback<CSystemManager, &CSystemManager::OnShutdownModulesRequest> }, - { SS_SM_FWD_STARTUP_CONFIRMATION_MSG_REQ, - SysMgrCallback<CSystemManager, &CSystemManager::OnSetStartupConfirmationDataRequest> } - }; - - FrameworkunifiedProtocolCallbackHandler l_cbArraySystemManager[] = { - // Command ID, Call back functions - { SS_SM_SendTriggerToSelf, SysMgrCallback<CSystemManager, &CSystemManager::OnLaunchGroupSelfTrigger> }, - { SS_SM_DEBUG_DUMP_RSPN, SysMgrCallback<CSystemManager, &CSystemManager::OnDebugDumpResponseReceived> } - }; - // LCOV_EXCL_BR_STOP - -#define ATTACH_CBS_TO_DISPATCHER(L_ARRAY, CALLING_SERVICE_NAME) \ - *l_eStatus_work = l_eStatus = FrameworkunifiedAttachCallbacksToDispatcher(hApp, \ - CALLING_SERVICE_NAME, \ - L_ARRAY, \ - static_cast<UI_32>_countof(L_ARRAY)); \ - if (eFrameworkunifiedStatusOK != l_eStatus) { \ - FRAMEWORKUNIFIEDLOG(ZONE_ERR, __FUNCTION__, \ - " Error: FrameworkunifiedAttachCallbacksToDispatcher(%s) errored: %d/'%s'", \ - #L_ARRAY, \ - l_eStatus, \ - GetStr(l_eStatus).c_str()); \ - *l_isInitFail = true; \ - } -// End of #define ATTACH_CBS_TO_DISPATCHER( CALLING_SERVICE_NAME, L_ARRAY ) - - // LCOV_EXCL_BR_START 15: marco defined above - // Note: This macro will exit this function if the embedded fnc errors. - ATTACH_CBS_TO_DISPATCHER(l_cbArrayAnySource, FRAMEWORKUNIFIED_ANY_SOURCE); - - // Note: This macro will exit this function if the embedded fnc errors. - ATTACH_CBS_TO_DISPATCHER(l_cbArrayGroupLaunchService, SS_GROUP_LAUNCH_TRIGGER); - - // Note: This macro will exit this function if the embedded fnc errors. - ATTACH_CBS_TO_DISPATCHER(l_cbArrayNPPService, FRAMEWORKUNIFIED_NS_NPSERVICE); - - // Note: This macro will exit this function if the embedded fnc errors. - ATTACH_CBS_TO_DISPATCHER(l_cbArrayPowerService, SERVICE_POWER); - - // Note: This macro will exit this function if the embedded fnc errors. - ATTACH_CBS_TO_DISPATCHER(l_cbArraySystemManager, SERVICE_SYSMANAGER); - // LCOV_EXCL_BR_STOP - - { - char pathBuf[128]; - // LCOV_EXCL_BR_START 11:unexpected branch // NOLINT(whitespace/line_length) - snprintf(pathBuf, sizeof(pathBuf), "/proc/%d/oom_score_adj", getpid()); - std::ofstream fo(pathBuf); - fo << OOM_SCORE_ADJ_MIN << endl; - fo.close(); - // LCOV_EXCL_BR_STOP - FRAMEWORKUNIFIEDLOG(ZONE_INFO, __FUNCTION__, "set OOM_SCORE_ADJ_MIN(SS_SysManager/%d)", getpid()); - } - -#undef ATTACH_CBS_TO_DISPATCHER - - // LCOV_EXCL_BR_START 4: nsfw error - *l_eStatus_work = FrameworkunifiedSubscribeNotificationWithCallback(hApp, NTFY_BackupMgr_Availability, - SysMgrCallback<CSystemManager, &CSystemManager::OnBackupMgrAvailCallback>); - // LCOV_EXCL_BR_STOP - if (eFrameworkunifiedStatusOK != *l_eStatus_work) { // LCOV_EXCL_BR_LINE 4: nsfw error - // LCOV_EXCL_START 4: nsfw error - AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert - LOG_ERROR("FrameworkunifiedSubscribeNotificationWithCallback()"); - *l_isInitFail = true; - // LCOV_EXCL_STOP - } - - if (eFrameworkunifiedStatusOK != (*l_eStatus_work = ErrorEventInit(hApp))) { // LCOV_EXCL_BR_LINE 6: function do not return error - // LCOV_EXCL_START 6: function do not return error - AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert - LOG_ERROR("ErrorEventInit()"); - *l_isInitFail = true; - // LCOV_EXCL_STOP - } - -#ifndef SS_SM_SKIP_HEARTBEAT_INIT - // LCOV_EXCL_BR_START 6: function do not return error, expect nsfw error - if (eFrameworkunifiedStatusOK != (*l_eStatus_work = init_Heartbeat(hApp))) { - // LCOV_EXCL_BR_STOP - // LCOV_EXCL_START 6: function do not return error, expect nsfw error - AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert - LOG_ERROR("init_HeartBeat()"); - *l_isInitFail = true; - // LCOV_EXCL_STOP - } -#else -#warning Test code - NOT calling init_Heartbeat(hApp) - FRAMEWORKUNIFIEDLOG(ZONE_ERR, __FUNCTION__, " Error: NOT calling init_Heartbeat(hApp)"); -#endif -#undef SS_SM_SKIP_HEARTBEAT_INIT - - // LCOV_EXCL_BR_START 6: function do not return error, expect nsfw error - if (eFrameworkunifiedStatusOK != (*l_eStatus_work = init_process_launcher(hApp))) { - // LCOV_EXCL_BR_STOP - // LCOV_EXCL_START 6: function do not return error, expect nsfw error - AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert - LOG_ERROR("init_process_launcher()"); - *l_isInitFail = true; - // LCOV_EXCL_STOP - } - - // LCOV_EXCL_BR_START 6: function do not return error, expect init error - if (eFrameworkunifiedStatusOK != (*l_eStatus_work = start_process_launching(hApp))) { - // LCOV_EXCL_BR_STOP - // LCOV_EXCL_START 6: function do not return error, expect init error - AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert - LOG_ERROR("start_process_launching()"); - *l_isInitFail = true; - // LCOV_EXCL_STOP - } - - // LCOV_EXCL_BR_START 6: function do not return error, expect nsfw error - if (eFrameworkunifiedStatusOK != (*l_eStatus_work = init_sysmem_monitor(hApp))) { - // LCOV_EXCL_BR_STOP - // LCOV_EXCL_START 6: function do not return error, expect nsfw error - AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert - LOG_ERROR("init_sysmem_monitor()"); - *l_isInitFail = true; - // LCOV_EXCL_STOP - } - - /// Internal thread monitoring start - // LCOV_EXCL_BR_START 11:unexpected branch // NOLINT(whitespace/line_length) - m_GroupLaunchTimer->StartTimer(m_aTimerIDs[eSM_TIMER_HEARTBEAT_MONITOR], - SS_HEARTBEAT_MONITOR_TIMER_CONFIG, 0, - SS_HEARTBEAT_MONITOR_TIMER_CONFIG, 0); - - m_GroupLaunchTimer->StartTimer( - m_aTimerIDs[eSM_TIMER_PROCESSLAUNCHER_MONITOR], - SS_PROCESSLAUNCHER_MONITOR_TIMER_CONFIG, 0, - SS_PROCESSLAUNCHER_MONITOR_TIMER_CONFIG, 0); - - m_GroupLaunchTimer->StartTimer( - m_aTimerIDs[eSM_TIMER_NPP_STATUS_CHECK_MONITOR], - SS_NPP_STATUS_CHECK_MONITOR_TIME_SEC, 0, - SS_NPP_STATUS_CHECK_MONITOR_TIME_SEC, 0); - // LCOV_EXCL_BR_STOP -} - - -/*****************************************************************************/ -/** - @ingroup: CSystemManager - @brief: Initialization - @note: . - @param HANDLE hApp - @return void - */ -/*****************************************************************************/ -EFrameworkunifiedStatus CSystemManager::Initialize(HANDLE hApp) { - bool l_isInitFail = false; - EFrameworkunifiedStatus l_eStatus = eFrameworkunifiedStatusOK; - int ret; - PsmFactorT l_startup_factor; - - // Need to call Lock System Initialize API once in the system - ret = CL_LockSystemInit(); - if (ret != 0) { - fprintf(stderr, "SS_SysManager/%s/Error: CL_LockSystemInit() errored: %d\n", __FUNCTION__, ret); - } - - ret = CL_LockProcessInit(); - if (ret != 0) { - fprintf(stderr, "SS_SysManager/%s/Error: CL_LockProcessInit() errored: %d\n", __FUNCTION__, ret); - l_isInitFail = true; - } - - ret = PsmGetStartupFactor(hApp, &l_startup_factor); - if (ret == 0) { - if ((static_cast<UI_32>(l_startup_factor) & PSM_RESET_HISTORY) == PSM_RESET_HISTORY) { - DGCODE_RET_API l_ret = DGCODE_RET_ERROR; - uint64_t l_SystemResetRobCode = 0; - DGCODE_ROB_SSR_INFO l_info; - if (l_startup_factor == PSM_FACTOR_AGL_WITH_HISTORY) { - l_SystemResetRobCode = 0x2219; // AGL cause - } else if (l_startup_factor == PSM_FACTOR_TIER1_WITH_HISTORY) { - l_SystemResetRobCode = 0x221A; // Tier1 cause - } else if (l_startup_factor == PSM_FACTOR_USER_WITH_HISTORY) { - l_SystemResetRobCode = 0x8027; // USER cause - } else { - // No processing - } - - if (l_SystemResetRobCode != 0) { - memset(&l_info, 0x00, sizeof(DGCODE_ROB_SSR_INFO)); - - l_ret = Diag_PutRoBInfo(hApp, l_SystemResetRobCode, &l_info); - if (l_ret == DGCODE_RET_ERROR) { - LOG_ERROR("Diag_PutRoBInfo()"); - } - } - } - } else { - (void)fprintf(stderr, "SS_SysManager/%s/ERROR:start-up factor not get\n", __FUNCTION__); - } - - m_isIlgReset = (false == GetSyscomPowerStatusInfo(hApp)) ? TRUE : FALSE; - if (m_isIlgReset || ("elog" == m_bootOpt)) { - fprintf(stderr, "SS_SysManager/%s/Error: ILGRST LOG SAVE\n", __func__); - StoreDebugLogs(hApp, SS_STORELOGS_ILLEGAL); - } else { - StoreDebugLogs(hApp, SS_STORELOGS_ACCOFFON); - } - - if (m_isIlgReset == TRUE) { - // overwrite AGL_ILLRESET_FLAG. - uint32_t tmp = static_cast<uint32_t>(m_isIlgReset); - if (PowerHalSetResetInfo(AGL_ILLRESET_FLAG, tmp)) { - FRAMEWORKUNIFIEDLOG(ZONE_ERR, __FUNCTION__, - "Could not set AGL_ILLRESET_FLAG to power_hal"); - } - } else { - // keep last value of AGL_ILLRESET_FLAG. - } - - FRAMEWORKUNIFIED_SET_ZONES(); - NsLogSetLogMethod(LPRINT | LMSGQ); - // FRAMEWORKUNIFIEDLOG can not be used until this line - - m_ClProcessSigFd = CL_ProcessInit(); // LCOV_EXCL_BR_LINE 4: nsfw error - if (m_ClProcessSigFd == -1) { // LCOV_EXCL_BR_LINE 4: nsfw error - // LCOV_EXCL_START 4: nsfw error - AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert - FRAMEWORKUNIFIEDLOG(ZONE_ERR, __FUNCTION__, " Error: CL_ProcessInit()"); - l_isInitFail = true; - // LCOV_EXCL_STOP - } - - ret = CL_MonitorInit(CL_MONITOR_INIT_SYSTEM); - if(ret != 0) { - fprintf(stderr, "SS_SysManager/%s/Error: CL_MonitorInit() errored: %d\n", __FUNCTION__, ret); - l_isInitFail = true; - } - - // Threads MUST NOT be started until this line -// ===== Initialization No.1 - Initialize_memory(hApp, &l_isInitFail, &l_eStatus, m_isIlgReset); - -// ===== Initialization No.2 - Initialize_callbacks(hApp, &l_isInitFail, &l_eStatus); - - FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "-"); - - return l_eStatus; -} - -EFrameworkunifiedStatus CSystemManager::SetEnvVariableForVupMode(BOOL bIsVupMode) { - EFrameworkunifiedStatus l_eStatus = eFrameworkunifiedStatusOK; - const CHAR SmVupModeEnvVariable[] = "SM_VUP_MODE"; - const CHAR *l_pValue = bIsVupMode ? "y" : "n"; // LCOV_EXCL_BR_LINE 11:unexpected branch // NOLINT(whitespace/line_length) - - if (0 != setenv(SmVupModeEnvVariable, l_pValue, 1)) { // LCOV_EXCL_BR_LINE 5: standard lib error - // LCOV_EXCL_START 5: standard lib error - AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert - SS_ASERT_ERRNO(0); - l_eStatus = eFrameworkunifiedStatusFail; - // LCOV_EXCL_STOP - } - - return l_eStatus; -} - -int CSystemManager::CreateRtUsb(void) {// LCOV_EXCL_START 8: dead code - AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert - int pid = -1; - int ret; - - ret = mkdir("/var/run", 0775); - if ((ret < 0) && (errno != EEXIST)) { - return -1; - } - pid = fork(); - switch (pid) { - case 0: /* child process */ - { - struct sched_param param; - int policy; - const char *exec; - exec = const_cast<char *>(TR_USB_PATH); - param.sched_priority = 0; - policy = SCHED_OTHER; - if (sched_setscheduler(getpid(), policy, ¶m) < 0) { - SS_ASERT(0); - _exit(-1); - } - if (setpriority(PRIO_PROCESS, getpid(), 0) < 0) { - SS_ASERT(0); - _exit(-1); - } - // exec - if (execlp(exec, exec, NULL) < 0) { - SS_ASERT(0); - _exit(-1); - } - _exit(0); - } - break; - - case -1: /* error */ - SS_ASERT(0); - goto ERROR; - - default: /* parent process */ - break; - } - -ERROR: - return pid; -}// LCOV_EXCL_STOP - -bool CSystemManager::StoreDebugLogs(const HANDLE h_app, - SS_STORELOGS_OPE_TYPE type) { - bool isMountRamd = false; - EFrameworkunifiedStatus l_eStatus = eFrameworkunifiedStatusOK; - int pid; - - if (!GetDramPowerStatusInfo(h_app)) { - goto ERROR; - } else if (access(SS_SM_TEMP_FILE_FOR_STORE_LOGS, F_OK) == 0) { - fprintf(stderr, "SS_SysManager/%s/Error: Skip StoreDebugLogs\n", __FUNCTION__); - goto ERROR; - } - - isMountRamd = true; - - if (type == SS_STORELOGS_ILLEGAL) { - UI_32 l_ErrLogCount = 0; - if (PowerHalGetResetInfo(AGL_ERRLOG_COUNTER, &l_ErrLogCount)) { - fprintf(stderr, "SS_SysManager/%s/Error: " - "Could not read AGL_ERRLOG_COUNTER from power_hal\n", __FUNCTION__); - goto ERROR; - } - - if (l_ErrLogCount >= SS_SM_ERR_LOGGING_LIMIT) { - fprintf(stderr, "SS_SysManager/%s/Error: " - "Skip StoreDebugLogs by continuous error l_ErrLogCount=%lu\n", - __FUNCTION__, l_ErrLogCount); - goto ERROR; - } - - l_ErrLogCount++; - if (PowerHalSetResetInfo(AGL_ERRLOG_COUNTER, l_ErrLogCount)) { - // Just logging, don't go to ERROR. - fprintf(stderr, "SS_SysManager/%s/Error: " - "Could not write AGL_ERRLOG_COUNTER to power_hal\n", __FUNCTION__); - } - } else if (type == SS_STORELOGS_ACCOFFON) { - if (0 != unlink(SS_LOGGER_SAVE_INTERFACEUNIFIEDLOG_FLAG)) { - fprintf(stderr, "SS_SysManager/%s/Error: ACCOFFON LOG SAVE\n", __FUNCTION__); - } else { - goto ERROR; - } - } - - pid = fork(); - if (pid == 0) { - int fd = open(SS_SM_TEMP_FILE_FOR_STORE_LOGS, - O_CREAT | O_TRUNC | O_RDWR, 00664); - if (-1 == fd) { // LCOV_EXCL_BR_LINE 5:fd must not be -1 - fprintf(stderr, "SS_SysManager/%s/Error: Failed open %s errno: %d\n", - __FUNCTION__, SS_SM_TEMP_FILE_FOR_STORE_LOGS, errno); - } else { - fsync(fd); - close(fd); - } - FRAMEWORKUNIFIED_SET_ZONES(); // LCOV_EXCL_BR_LINE 15: marco defined in ns_logger_if.h // NOLINT(whitespace/line_length) - NsLogSetLogMethod(LPRINT | LMSGQ); - - if (eFrameworkunifiedStatusOK != (l_eStatus = SS_LoggerStoreLogs(type))) { // LCOV_EXCL_BR_LINE 200: always return OK - AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert - fprintf(stderr, "SS_SysManager/%s/Error: SS_LoggerStoreDebugLogs() errored: %d\n", __FUNCTION__, l_eStatus); // LCOV_EXCL_LINE 200: always return OK // NOLINT(whitespace/line_length) - } - // Close accessing the RAMD by FRAMEWORKUNIFIEDLOG for RAMD initialization - NsForceClose(); - - if (0 != unlink(SS_SM_TEMP_FILE_FOR_STORE_LOGS)) { - SS_ASERT_ERRNO(0); // LCOV_EXCL_BR_LINE 15: marco defined in ss_templates.h // NOLINT(whitespace/line_length) - } - - exit(0); - } else if (pid == -1) { // LCOV_EXCL_BR_LINE 5:fork error case - // LCOV_EXCL_START 5:fork error case - AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert - fprintf(stderr, "SS_SysManager/%s/Error: ASSERT %d\n", __FUNCTION__, __LINE__); - // LCOV_EXCL_STOP - } else { - if (-1 == waitpid(pid, NULL, 0)) { // LCOV_EXCL_BR_LINE 5:waitpid error case - // LCOV_EXCL_START 5:waitpid error case - AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert - fprintf(stderr, "SS_SysManager/%s/Error: ASSERT %d\n", __FUNCTION__, __LINE__); - // LCOV_EXCL_STOP - } - } - ERROR: - return isMountRamd; -} - -#define SS_SM_SCAC_DEVICE_NODE "/dev/scac_driver" -#define SS_SM_SCAC_CMD_SHUTDOWN 0x3000 - -EFrameworkunifiedStatus CSystemManager::SecureChipOff() { - static bool isOffDone = false; - EFrameworkunifiedStatus l_eStatus = eFrameworkunifiedStatusOK; - int32_t fd; - int32_t res; - - if (!isOffDone) { - fd = open(SS_SM_SCAC_DEVICE_NODE, O_RDWR); - if (fd < 0) { - FRAMEWORKUNIFIEDLOG(ZONE_ERR, __FUNCTION__, "open(%s) ERR", SS_SM_SCAC_DEVICE_NODE); - l_eStatus = eFrameworkunifiedStatusFail; - } else { - res = ioctl(fd, SS_SM_SCAC_CMD_SHUTDOWN); - if (res < 0) { // LCOV_EXCL_BR_LINE 5: standard lib error - // LCOV_EXCL_START 5: standard lib error - AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert - FRAMEWORKUNIFIEDLOG(ZONE_ERR, __FUNCTION__, "ioctl(SS_SM_SCAC_CMD_SHUTDOWN) ERR"); - l_eStatus = eFrameworkunifiedStatusFail; - // LCOV_EXCL_STOP - } - - close(fd); - } - - isOffDone = true; - } else { - FRAMEWORKUNIFIEDLOG(ZONE_STATE, __FUNCTION__, "Skip Chip Off"); - } - - return l_eStatus; -} - -UI_32 CSystemManager::InProgressStateToSendMsg() const { - UI_32 l_iCmd = SS_SYSTEM_MANAGER_PROTOCOL_ENDING_INDEX; - switch (m_SMCurrentState) { - case SS_SM_APPS_PRE_START_IN_PROGRESS: - l_iCmd = SS_SM_PRE_START; - break; - case SS_SM_APPS_PRE_STOP_IN_PROGRESS: - l_iCmd = SS_SM_PRE_STOP; - break; - case SS_SM_APPS_BACKGROUND_START_IN_PROGRESS: - l_iCmd = SS_SM_BACKGROUND_START; - break; - case SS_SM_APPS_BACKGROUND_STOP_IN_PROGRESS: - l_iCmd = SS_SM_BACKGROUND_STOP; - break; - case SS_SM_APPS_START_IN_PROGRESS: - l_iCmd = SS_SM_START; - break; - default: - break; - } - return l_iCmd; -} - -SMModuleState CSystemManager::InProgressStateToState() const { - SMModuleState l_state = MODULE_STATE_INVALID; - switch (m_SMCurrentState) { - case SS_SM_APPS_PRE_START_IN_PROGRESS: - l_state = MODULE_STATE_STARTED_PRE; - break; - case SS_SM_APPS_PRE_STOP_IN_PROGRESS: - l_state = MODULE_STATE_STOPPED_PRE; - break; - case SS_SM_APPS_BACKGROUND_START_IN_PROGRESS: - l_state = MODULE_STATE_STARTED_BACKGROUND; - break; - case SS_SM_APPS_BACKGROUND_STOP_IN_PROGRESS: - l_state = MODULE_STATE_STOPPED_BACKGROUND; - break; - case SS_SM_APPS_START_IN_PROGRESS: - l_state = MODULE_STATE_STARTED; - break; - default: - break; - } - return l_state; -} - -/////////////////////////////////////////////////////////////////////////////// -/// \ingroup SetSystemModeInfoStruct -/// Read ( or initialize ) NVM and set the SystemModeInfo structure -/// -/// \return EFrameworkunifiedStatus -/// Success ==> eFrameworkunifiedStatusOK -/// Failure ==> Other values -/////////////////////////////////////////////////////////////////////////////// -EFrameworkunifiedStatus CSystemManager::SetSystemModeInfoStruct() { - FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "+"); - EFrameworkunifiedStatus l_eStatus = eFrameworkunifiedStatusOK; - - if (m_UsingVMPlayer) { - FRAMEWORKUNIFIEDLOG(ZONE_INFO, __FUNCTION__, " 'm_UsingVMPlayer' is True," - " using default SystemModeInfo values"); - m_SystemModeInfo.limpHomeCutoff = epslhcDISABLED; - m_SystemModeInfo.productionMode = epspmDISABLED; - m_SystemModeInfo.transportMode = epstmDISABLED; - m_SystemModeInfo.systemMode = epssinfNORMAL; - m_DataResetMode = e_SS_SM_DATA_RESET_MODE_NONE; - m_ResetCount = 0; - m_ProgUpdateState = SS_SM_PROG_UPDATE_STATE_NONE; - // Don't change the m_SystemModeInfo.startupStage. - // It is set dynamically as System Manager initializes the _CWORD102_. - } else { - uint32_t tmp = 0; - if (PowerHalGetResetInfo(AGL_RESET_COUNTER, &m_ResetCount)) { - FRAMEWORKUNIFIEDLOG(ZONE_ERR, __FUNCTION__, - "Could not read AGLRESET_COUNTER from power_hal, assume to 0"); - m_ResetCount = 0; - } - - if (PowerHalGetResetInfo(AGL_PROGUPDATE_STATE, &m_ProgUpdateState)) { - FRAMEWORKUNIFIEDLOG(ZONE_ERR, __FUNCTION__, - "Could not read AGL_PROGUPDATE_STATE from power_hal, " - "assume to SS_SM_PROG_UPDATE_STATE_NONE"); - m_ProgUpdateState = SS_SM_PROG_UPDATE_STATE_NONE; - } - - if (PowerHalGetResetInfo(AGL_DATARESET_STATE, &tmp)) { - FRAMEWORKUNIFIEDLOG(ZONE_ERR, __FUNCTION__, - "Could not read AGL_DATARESET_STATE from power_hal, " - "assume to e_SS_SM_DATA_REESET_MODE_NONE"); - m_DataResetMode = e_SS_SM_DATA_RESET_MODE_NONE; - } else { - m_DataResetMode = static_cast<ESMDataResetModeInfo>(tmp); - } - m_SystemModeInfo.systemMode = epssinfNORMAL; - } // End else ! m_UsingVMPlayer - - FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "-"); - return l_eStatus; -} // End of EFrameworkunifiedStatus CSystemManager::SetSystemModeInfoStruct() - -/////////////////////////////////////////////////////////////////////////////// -/// \ingroup ClearDramBackupInfo -/// -/// \param [in] -/// -/// -/// \return EFrameworkunifiedStatus -/// Success ==> eFrameworkunifiedStatusOK -/// Failure ==> Other values -/////////////////////////////////////////////////////////////////////////////// -EFrameworkunifiedStatus CSystemManager::ClearDramBackupInfo(HANDLE hApp) { - EFrameworkunifiedStatus l_eStatus = eFrameworkunifiedStatusOK; - int ret; - FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "+"); - - FRAMEWORKUNIFIEDLOG(ZONE_STATE, __FUNCTION__, "PsmClrRamJudgeFlgPower()"); - ret = PsmClrRamJudgeFlgPower(hApp); - if (ret != 0) { // LCOV_EXCL_BR_LINE 11: Excluded due to gcov constraints (others) - SS_ASERT_ERRNO(0); // LCOV_EXCL_BR_LINE 15: marco defined in ss_templates.h // NOLINT(whitespace/line_length) - l_eStatus = eFrameworkunifiedStatusFail; - } - - FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "-"); - return l_eStatus; -} - -/////////////////////////////////////////////////////////////////////////////// -/// \ingroup CloseApplication -/// Process request to close Application -/// -/// \param [in] -/// -/// -/// \return EFrameworkunifiedStatus -/// Success ==> eFrameworkunifiedStatusOK -/// Failure ==> Other values -/////////////////////////////////////////////////////////////////////////////// -EFrameworkunifiedStatus CSystemManager::CloseApplication(HANDLE hApp) { // LCOV_EXCL_START 6: Because the condition cannot be set - AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert - EFrameworkunifiedStatus l_eStatus; - - FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "+"); - - if (eFrameworkunifiedStatusOK - != (l_eStatus = FrameworkunifiedPublishServiceAvailability(hApp, FALSE))) { - LOG_ERROR("FrameworkunifiedPublishServiceAvailability(hApp,FALSE)"); - } else if (eFrameworkunifiedStatusOK != (l_eStatus = - FrameworkunifiedUnRegisterServiceAvailabilityNotification(hApp))) { - LOG_ERROR("FrameworkunifiedUnRegisterServiceAvailabilityNotification(hApp)"); - } else { - FRAMEWORKUNIFIEDLOG(ZONE_INFO, __FUNCTION__, " Successful"); - } - - FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "-"); - return l_eStatus; -} // End of EFrameworkunifiedStatus CSystemManager::CloseApplication(HANDLE hApp) -// LCOV_EXCL_STOP - -/////////////////////////////////////////////////////////////////////////////// -/// \ingroup SMStateStartCompleteEntry -/// entry for SM module state(SS_SM_APPS_START_COMPLETE) -/// -/// \param -/// -/// \return EFrameworkunifiedStatus -/////////////////////////////////////////////////////////////////////////////// -VOID CSystemManager::SMStateStartCompleteEntry(HANDLE hApp) { - EFrameworkunifiedStatus l_eStatus; - - FRAMEWORKUNIFIEDLOG(ZONE_INFO, __FUNCTION__, - "All %d groups have been sent system_manager protocol message, sending Start Complete to _CWORD56_", - m_SystemStarter.get_id()); - CALL_AND_LOG_STATUS_IF_ERRORED( // LCOV_EXCL_BR_LINE 15: marco defined in ss_templates.h // NOLINT(whitespace/line_length) - send_power_request_complete_response(hApp, "Startup")); // LCOV_EXCL_BR_LINE 15: marco defined in ss_templates.h // NOLINT(whitespace/line_length) - - CALL_AND_LOG_STATUS(PublishPowerOnOffNotification(hApp)); // LCOV_EXCL_BR_LINE 15: marco defined in ss_templates.h // NOLINT(whitespace/line_length) - - if (m_InitialBoot == true) { - m_InitialBoot = false; - - const ESMServiceWakeupStatus l_svcWupStatus = e_SS_SM_SVC_WAKEUP_STATUS_COMPLETE; - - CALL_AND_LOG_STATUS( // LCOV_EXCL_BR_LINE 15: marco defined in ss_templates.h // NOLINT(whitespace/line_length) - FrameworkunifiedNPPublishNotification(hApp, NTFY_SSServiceWakeupStatus, // LCOV_EXCL_BR_LINE 15: marco defined in ss_templates.h // NOLINT(whitespace/line_length) - &l_svcWupStatus, sizeof(ESMServiceWakeupStatus))); // LCOV_EXCL_BR_LINE 15: marco defined in ss_templates.h // NOLINT(whitespace/line_length) - - // If all modules are restarted, a passive warning will be issued - // indicating that Heartbeat is already running. - - UI_32 l_list_num = static_cast<UI_32>(m_HBList.size()); - if (SS_MAX_NUM_MODULES < l_list_num) { - l_list_num = SS_MAX_NUM_MODULES; - FRAMEWORKUNIFIEDLOG(ZONE_WARN, __FUNCTION__, - " Warn: SS_MAX_NUM_MODULES '%d' < m_HBList.size '%d'", - SS_MAX_NUM_MODULES, l_list_num); - } - - CHAR send_data[sizeof(l_list_num) - + (l_list_num * SS_SM_HB_MAX_PROC_NAME_SIZE) - + sizeof(m_SMConfig.HBConfig)]; - CHAR* p_prm = &send_data[0]; - - memcpy(p_prm, reinterpret_cast<char *>(&m_SMConfig.HBConfig), sizeof(m_SMConfig.HBConfig)); - p_prm = p_prm + sizeof(m_SMConfig.HBConfig); - memcpy(p_prm, reinterpret_cast<char *>(&l_list_num), sizeof(l_list_num)); - p_prm = p_prm + sizeof(l_list_num); - - for (UI_32 i = 0; i < l_list_num; i++) { - snprintf(p_prm, SS_SM_HB_MAX_PROC_NAME_SIZE, "%s", m_HBList[i].c_str()); - p_prm = p_prm + SS_SM_HB_MAX_PROC_NAME_SIZE; - } - l_eStatus = SendRequestToHeartBeat(hApp, SS_HEARTBEAT_START, &send_data, static_cast<UI_32>(sizeof(send_data))); // LCOV_EXCL_BR_LINE 11:unexpected branch // NOLINT(whitespace/line_length) - LOG_ERROR_REC_HIST_IF_ERRORED(l_eStatus, "SendRequestToHeartBeat()"); // LCOV_EXCL_BR_LINE 15: marco defined in ss_templates.h // NOLINT(whitespace/line_length) - - m_DataResetMode = e_SS_SM_DATA_RESET_MODE_NONE; - { - uint32_t tmp = static_cast<uint32_t>(m_DataResetMode); - if (PowerHalSetResetInfo(AGL_DATARESET_STATE, tmp)) { - FRAMEWORKUNIFIEDLOG(ZONE_ERR, __FUNCTION__, - "Could not set AGL_DATARESET_STATE to power_hal"); - } - } - - m_ProgUpdateState = SS_SM_PROG_UPDATE_STATE_NONE; - if (PowerHalSetResetInfo(AGL_PROGUPDATE_STATE, m_ProgUpdateState)) { - FRAMEWORKUNIFIEDLOG(ZONE_ERR, __FUNCTION__, - "Could not set AGL_PROGUPDATE_STATE to power_hal"); - } - - m_isIlgReset = FALSE; - { - uint32_t tmp = static_cast<uint32_t>(m_isIlgReset); - if (PowerHalSetResetInfo(AGL_ILLRESET_FLAG, tmp)) { - FRAMEWORKUNIFIEDLOG(ZONE_ERR, __FUNCTION__, - "Could not set AGL_ILLRESET_FLAG to power_hal"); - } - } - - if (access(SS_SM_TEMP_FILE_FOR_STORE_LOGS, F_OK) == 0) { - SS_ASERT_ERRNO(0 == unlink(SS_SM_TEMP_FILE_FOR_STORE_LOGS)); // LCOV_EXCL_BR_LINE 15: marco defined in ss_templates.h // NOLINT(whitespace/line_length) - } - } - - for (vector<std::string>::iterator protectedSvc = - m_productCustomPrm.protectedSvcs.begin(); - protectedSvc != m_productCustomPrm.protectedSvcs.end(); - protectedSvc++) { - ModuleLaunchListIter l_ModuleListIter; - l_eStatus = GetModuleIterator(protectedSvc->c_str(), l_ModuleListIter); - if (eFrameworkunifiedStatusOK == l_eStatus) { - if ((l_ModuleListIter->IsModuleState(MODULE_STATE_STARTED)) - || (l_ModuleListIter->IsModuleState(MODULE_STATE_LAUNCHED) - && !l_ModuleListIter->is_start_required)) { - char pathBuf[128]; - - snprintf(pathBuf, 128, "/proc/%d/oom_score_adj", l_ModuleListIter->pid); // NOLINT - std::ofstream fo(pathBuf); // LCOV_EXCL_BR_LINE 11:unexpected branch // NOLINT(whitespace/line_length) - fo << OOM_SCORE_ADJ_MIN << endl; // LCOV_EXCL_BR_LINE 11:unexpected branch // NOLINT(whitespace/line_length) - fo.close(); // LCOV_EXCL_BR_LINE 11:unexpected branch // NOLINT(whitespace/line_length) - FRAMEWORKUNIFIEDLOG(ZONE_INFO, __FUNCTION__, "set OOM_SCORE_ADJ_MIN(%s/%d)", - l_ModuleListIter->name.c_str(), l_ModuleListIter->pid); - } else { - SS_ASERT(0); // LCOV_EXCL_BR_LINE 15: marco defined in ss_templates.h // NOLINT(whitespace/line_length) - } - } - } - - for (vector<std::string>::iterator groupRelaunchSvc = - m_productCustomPrm.groupRelaunchSvcs.begin(); - groupRelaunchSvc != m_productCustomPrm.groupRelaunchSvcs.end(); - groupRelaunchSvc++) { - ModuleLaunchListIter l_ModuleListIter; - l_eStatus = GetModuleIterator(groupRelaunchSvc->c_str(), l_ModuleListIter); - if (eFrameworkunifiedStatusOK == l_eStatus) { - if ((l_ModuleListIter->IsModuleState(MODULE_STATE_STARTED)) - || (l_ModuleListIter->IsModuleState(MODULE_STATE_LAUNCHED) - && !l_ModuleListIter->is_start_required)) { - GroupRelaunchModuleParams l_param; // LCOV_EXCL_BR_LINE 11:unexpected branch // NOLINT(whitespace/line_length) - l_param.name = l_ModuleListIter->name.c_str(); - m_GroupRelaunchModuleList.push_back(l_param); - - if (l_ModuleListIter->retry_cnt > m_GroupRelaunchLimit) { - m_GroupRelaunchLimit = l_ModuleListIter->retry_cnt; - } - - FRAMEWORKUNIFIEDLOG(ZONE_STATE, __FUNCTION__, "GroupRelaunchSvcs:%s(%d)", - l_ModuleListIter->name.c_str(), l_ModuleListIter->pid); - } else { - FRAMEWORKUNIFIEDLOG(ZONE_STATE, __FUNCTION__, "%s is not Launched", groupRelaunchSvc->c_str()); - } - } else { - FRAMEWORKUNIFIEDLOG(ZONE_STATE, __FUNCTION__, "%s is not exist", groupRelaunchSvc->c_str()); - } - } - FRAMEWORKUNIFIEDLOG(ZONE_STATE, __FUNCTION__, "GroupRelaunchLimit:%d", m_GroupRelaunchLimit); - - SendDeferMsg(hApp); // LCOV_EXCL_BR_LINE 11:unexpected branch // NOLINT(whitespace/line_length) -} // End of VOID CSystemManager::SMStateStartCompleteEntry() - -/////////////////////////////////////////////////////////////////////////////// -/// \ingroup SMStateEntry -/// entry for SM module state -/// -/// \param -/// -/// \return EFrameworkunifiedStatus -/////////////////////////////////////////////////////////////////////////////// -VOID CSystemManager::SMStateEntry(HANDLE hApp, SS_SMModuleState l_SMState) { - switch (l_SMState) { - case SS_SM_APPS_START_COMPLETE: - case SS_SM_APPS_PRE_RUN_COMPLETE: - case SS_SM_APPS_BACKGROUND_RUN_COMPLETE: - SMStateStartCompleteEntry(hApp); - break; - default: - break; - } -} // End of VOID CSystemManager::SMStateEntry(SS_SMModuleState l_SMState) - -/////////////////////////////////////////////////////////////////////////////// -/// \ingroup SMStateExit -/// exit for SM module state -/// -/// \param -/// -/// \return EFrameworkunifiedStatus -/////////////////////////////////////////////////////////////////////////////// -VOID CSystemManager::SMStateExit(HANDLE hApp, SS_SMModuleState l_SMState) { - switch (l_SMState) { - case SS_SM_APPS_START_COMPLETE: - break; - default: - break; - } -} // End of VOID CSystemManager::SMStateExit(SS_SMModuleState l_SMState) - -/////////////////////////////////////////////////////////////////////////////// -/// \ingroup SMSetState -/// set module state -/// -/// \param -/// -/// \return EFrameworkunifiedStatus -/////////////////////////////////////////////////////////////////////////////// -VOID CSystemManager::SMSetState(HANDLE hApp, SS_SMModuleState l_SMNewState) { - // FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "+"); - FRAMEWORKUNIFIEDLOG(ZONE_STATE, __FUNCTION__, "%s -> %s", - GetStr(m_SMCurrentState).c_str(), GetStr(l_SMNewState).c_str()); - - if (l_SMNewState != m_SMCurrentState) { - SMStateExit(hApp, m_SMCurrentState); - - m_SMCurrentState = l_SMNewState; - - SMStateEntry(hApp, m_SMCurrentState); - } - // FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "-"); -} - -/////////////////////////////////////////////////////////////////////////////// -/// \ingroup register_all_notification_callbacks -/// register all notifications and callbacks with NP_NPS -/// this function gets called when NP_NPS reply launch complete -/// -/// \param -/// -/// \return EFrameworkunifiedStatus -/////////////////////////////////////////////////////////////////////////////// -EFrameworkunifiedStatus CSystemManager::register_all_notification_callbacks(HANDLE hApp) { - EFrameworkunifiedStatus l_eStatus; - FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "+"); - - FrameworkunifiedNotificationsList userModeNotificationsBOOL[] = { { - NTFY_SSSystemMgrPowerOnOff, sizeof(BOOL), eFrameworkunifiedStateVar }, { - NTFY_SSSystemMgrUserMode, sizeof(BOOL), eFrameworkunifiedStateVar } }; - - FrameworkunifiedNotificationsList userModeNotificationsStruct[] = { { - NTFY_SSSystemMgrPowerOnOff, - sizeof(T_SS_SM_UserModeOnOffNotification_Struct), eFrameworkunifiedStateVar }, { - NTFY_SSSystemMgrUserMode, - sizeof(T_SS_SM_UserModeOnOffNotification_Struct), eFrameworkunifiedStateVar } }; - - FrameworkunifiedNotificationsList sm_notifications[] = { - { NTFY_SSSystemMgrStartUpType, sizeof(EPWR_SC_WAKEUP_TYPE), eFrameworkunifiedStateVar }, - { NTFY_SSSystemMgrDataReset, sizeof(ESMDataResetType), eFrameworkunifiedStateVar }, - { NTFY_SSSystemMgrShutdownStarted, 0, eFrameworkunifiedStateVar }, - { NTFY_SSServiceWakeupStatus, sizeof(ESMServiceWakeupStatus), eFrameworkunifiedStateVar }, - { NTFY_SSNeedAplRestart, 0, eFrameworkunifiedStateVar } }; - - if (m_SMConfig.UMConfig.IsUserModeNotificationABOOL) { - l_eStatus = FrameworkunifiedNPRegisterNotifications(hApp, userModeNotificationsBOOL, - static_cast<UI_32>(_countof(userModeNotificationsBOOL))); - } else { - l_eStatus = FrameworkunifiedNPRegisterNotifications(hApp, - userModeNotificationsStruct, - static_cast<UI_32>(_countof(userModeNotificationsStruct))); - } - - if (eFrameworkunifiedStatusOK != l_eStatus) { - LOG_ERROR("FrameworkunifiedNPRegisterNotifications(userModeNotifications)"); // LCOV_EXCL_BR_LINE 15: marco defined in ss_templates.h // NOLINT(whitespace/line_length) - } else if (eFrameworkunifiedStatusOK != (l_eStatus = FrameworkunifiedNPRegisterNotifications(hApp, sm_notifications, static_cast<UI_32>(_countof(sm_notifications))))) { // LCOV_EXCL_BR_LINE 4:NSFW error case //NOLINT (whitespace/line_length) - // LCOV_EXCL_START 4: nsfw error code - AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert - LOG_ERROR("FrameworkunifiedNPRegisterNotifications(sm_notifications)"); // LCOV_EXCL_BR_LINE 15: marco defined in ss_templates.h // NOLINT(whitespace/line_length) - // LCOV_EXCL_STOP - } else if (eFrameworkunifiedStatusOK != (l_eStatus = FrameworkunifiedRegisterServiceAvailabilityNotification(hApp, NTFY_SSSystemMgrAvailability))) { // LCOV_EXCL_BR_LINE 4:NSFW error case //NOLINT (whitespace/line_length) - // LCOV_EXCL_START 4: nsfw error code - AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert - LOG_ERROR("FrameworkunifiedRegisterServiceAvailabilityNotification(" // LCOV_EXCL_BR_LINE 15: marco defined in ss_templates.h // NOLINT(whitespace/line_length) - NTFY_SSSystemMgrAvailability ")"); // LCOV_EXCL_BR_LINE 15: marco defined in ss_templates.h // NOLINT(whitespace/line_length) - // LCOV_EXCL_STOP - } else if (eFrameworkunifiedStatusOK != (l_eStatus = FrameworkunifiedPublishServiceAvailability(hApp, TRUE))) { // LCOV_EXCL_BR_LINE 4:NSFW error case //NOLINT (whitespace/line_length) - // LCOV_EXCL_START 4: nsfw error code - AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert - LOG_ERROR("FrameworkunifiedPublishServiceAvailability('NTFY_SSSystemMgrAvailability ', TRUE)"); // LCOV_EXCL_BR_LINE 15: marco defined in ss_templates.h // NOLINT(whitespace/line_length) - // LCOV_EXCL_STOP - } else { - LOG_SUCCESS("FrameworkunifiedPublishServiceAvailability('NTFY_SSSystemMgrAvailability ', TRUE)"); // LCOV_EXCL_BR_LINE 15: marco defined in ss_templates.h // NOLINT(whitespace/line_length) - - REC_HIST_IF_SUCCESSFUL(NTFY_SSSystemMgrAvailability, m_PubCmdHist, // LCOV_EXCL_BR_LINE 15: marco defined in ss_templates.h // NOLINT(whitespace/line_length) - m_PubHistIter, "", l_eStatus); // LCOV_EXCL_BR_LINE 15: marco defined in ss_templates.h // NOLINT(whitespace/line_length) - } - - FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "-"); - return l_eStatus; -} - -/////////////////////////////////////////////////////////////////////////////// -/// \ingroup -/// -/// \param -/// -/// \return -/////////////////////////////////////////////////////////////////////////////// -EFrameworkunifiedStatus CSystemManager::init_Heartbeat(HANDLE hApp) { - EFrameworkunifiedStatus l_eStatus = eFrameworkunifiedStatusOK; - FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "+"); - - FrameworkunifiedProtocolCallbackHandler hb_protocol_callbacks[] = { { - SS_HEARTBEAT_PERIODIC_RESP, SysMgrCallback<CSystemManager, - &CSystemManager::OnHeartBeatThreadHeartbeatResponse> }, { - SS_HEARTBEAT_ERROR_DETECTED, SysMgrCallback<CSystemManager, - &CSystemManager::OnHeartBeatErrorDetected> }, { - SS_HEARTBEAT_AVAIL_CHECK_RESP, SysMgrCallback<CSystemManager, - &CSystemManager::OnCheckAvailResponse> } }; // LCOV_EXCL_BR_LINE 11:unexpected branch - - // Subscribe to Notifications (All required notifications) - if (eFrameworkunifiedStatusOK != (l_eStatus = FrameworkunifiedAttachCallbacksToDispatcher(hApp, SS_SMHeartbeat, hb_protocol_callbacks, static_cast<UI_32>(_countof(hb_protocol_callbacks))))) { // LCOV_EXCL_BR_LINE 4:NSFW error case //NOLINT (whitespace/line_length) - // LCOV_EXCL_START 4: nsfw error - AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert - LOG_ERROR("FrameworkunifiedAttachCallbacksToDispatcher(hb_notification_handlers)"); - // LCOV_EXCL_STOP - } else if (NULL == (m_hHeartbeatThread.m_ThreadHdl = FrameworkunifiedCreateChildThreadWithPriority(hApp, SS_SMHeartbeat, HBThreadStart, HBThreadStop, PR_SMHEARTBEAT))) { // LCOV_EXCL_BR_LINE 4:NSFW error case //NOLINT (whitespace/line_length) - // LCOV_EXCL_START 4: nsfw error - AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert - l_eStatus = eFrameworkunifiedStatusThreadNotExist; - m_hHeartbeatThread.m_ThreadState = eSM_ThreadNotExist; - LOG_ERROR("FrameworkunifiedCreateChildThreadWithPriority(hApp, SS_SMHeartbeat)"); - // LCOV_EXCL_STOP - } else if (eFrameworkunifiedStatusOK != (l_eStatus = FrameworkunifiedStartChildThread(hApp, m_hHeartbeatThread.m_ThreadHdl, 0, NULL))) { // LCOV_EXCL_BR_LINE 4:NSFW error case //NOLINT (whitespace/line_length) - // LCOV_EXCL_START 4: nsfw error - AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert - m_hHeartbeatThread.m_ThreadState = eSM_ThreadNotExist; - LOG_ERROR("FrameworkunifiedStartChildThread(SS_SMHeartbeat)"); - // LCOV_EXCL_STOP - } else { - m_hHeartbeatThread.m_ThreadState = eSMThreadIsFine; - } - - FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "-"); - return l_eStatus; -} - -EFrameworkunifiedStatus CSystemManager::init_sysmem_monitor(HANDLE hApp) { - EFrameworkunifiedStatus l_eStatus; - FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "+"); - - FrameworkunifiedProtocolCallbackHandler sysmem_protocol_callbacks[] = { { - eSysMemThrdCmd_SYS_LOW_MEMORY, SysMgrCallback<CSystemManager, - &CSystemManager::OnLowSystemMemory> } }; // LCOV_EXCL_BR_LINE 11:unexpected branch // NOLINT(whitespace/line_length) - // LCOV_EXCL_BR_START 4: For setting the initialization conditions at SystemManager startup - if (eFrameworkunifiedStatusOK - != (l_eStatus = FrameworkunifiedAttachCallbacksToDispatcher( - hApp, - m_SysMemMonitor.GetThreadName().c_str(), sysmem_protocol_callbacks, - static_cast<UI_32>(_countof(sysmem_protocol_callbacks))))) { - // LCOV_EXCL_BR_STOP - AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert - LOG_ERROR("FrameworkunifiedAttachCallbacksToDispatcher()"); // LCOV_EXCL_LINE 4: For setting the initialization conditions at SystemManager startup - } else { - m_SysMemMonitor.SetSLMConfigData(m_SMConfig.SLMConfig); // LCOV_EXCL_BR_LINE 11:unexpected branch // NOLINT(whitespace/line_length) - l_eStatus = m_SysMemMonitor.Initialize(hApp); // LCOV_EXCL_BR_LINE 11:unexpected branch // NOLINT(whitespace/line_length) - LOG_ERROR_REC_HIST_IF_ERRORED // LCOV_EXCL_BR_LINE 6: For setting the initialization conditions at SystemManager startup - (l_eStatus, "m_SysMemMonitor.Initialize(hApp);"); // LCOV_EXCL_BR_LINE 6: For setting the initialization conditions at SystemManager startup - } - - FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "-"); - return l_eStatus; -} - -/////////////////////////////////////////////////////////////////////////////// -/// \ingroup -/// -/// \param -/// -/// \return -/////////////////////////////////////////////////////////////////////////////// -EFrameworkunifiedStatus CSystemManager::OnGroupLaunchTimerExpiry(HANDLE hThread) { // LCOV_EXCL_START 6: Because the condition cannot be set - AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert - EFrameworkunifiedStatus l_eStatus = eFrameworkunifiedStatusOK; - FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "+"); - UI_32 l_launchID = m_oSystemLauncher.get_id(); - - FRAMEWORKUNIFIEDLOG(ZONE_PERFORMANCE, __FUNCTION__, " Received from group %d", l_launchID); - REC_HIST_IF_SUCCESSFUL("SM_TIMER_GROUP_MONITOR", m_TimerCmdHist, - m_TimerHistIter, "TIMER", l_eStatus); - - LogGroupModulesState(l_launchID, - " Group launch timer expired, processing next group."); - - if (NULL == hThread) { - l_eStatus = eFrameworkunifiedStatusInvldParam; - LOG_ERROR("NULL == hThread"); - } else { - // FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "Timer expired for group id,%d",m_oSystemLauncher.get_id()); - if (!m_oSystemLauncher.is_end()) { - l_launchID = m_oSystemLauncher.advance_id(); - if (eFrameworkunifiedStatusOK != (l_eStatus = OnLaunchGroup(hThread))) { - FRAMEWORKUNIFIEDLOG(ZONE_ERR, __FUNCTION__, - " Error: OnLaunchGroup(%d) errored: %d/'%s'", l_launchID, - l_eStatus, GetStr(l_eStatus).c_str()); - } - } - } - - FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "-"); - return l_eStatus; -} // End of EFrameworkunifiedStatus CSystemManager::OnGroupLaunchTimerExpiry( HANDLE hThread ) -// LCOV_EXCL_STOP - -/////////////////////////////////////////////////////////////////////////////// -/// \ingroup -/// -/// \param -/// -/// \return -/////////////////////////////////////////////////////////////////////////////// -EFrameworkunifiedStatus CSystemManager::FindNameOfTerminatedProcess(SI_32 f_pid, SS_String &f_ModuleName) { - EFrameworkunifiedStatus l_eStatus = eFrameworkunifiedStatusDbRecNotFound; - FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "+"); - - GroupLaunchMapIter l_GroupIterator = m_MapProclaunchGrps.begin(); - if (l_GroupIterator == m_MapProclaunchGrps.end()) { // LCOV_EXCL_BR_LINE 200: Group Map cannot be empty - // LCOV_EXCL_START 200: Group Map cannot be empty - AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert - FRAMEWORKUNIFIEDLOG(ZONE_ERR, __FUNCTION__, "Error : Group Map empty"); // LCOV_EXCL_BR_LINE 15: marco defined in ns_logger_if.h // NOLINT(whitespace/line_length) - l_eStatus = eFrameworkunifiedStatusInvldParam; - // LCOV_EXCL_STOP - } else { - BOOL l_bModuleFound = FALSE; - for (; (FALSE == l_bModuleFound) - && (l_GroupIterator != m_MapProclaunchGrps.end()); - l_GroupIterator++) { - ModuleLaunchListIter l_ModuleListIterator = - l_GroupIterator->second.modules.begin(); - for (; (FALSE == l_bModuleFound) - && (l_ModuleListIterator - != l_GroupIterator->second.modules.end()); - l_ModuleListIterator++) { - if (l_ModuleListIterator->pid == f_pid) { - l_bModuleFound = TRUE; - f_ModuleName = l_ModuleListIterator->name; - l_eStatus = eFrameworkunifiedStatusOK; - } - } - } - } - FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "-"); - return l_eStatus; -} -/////////////////////////////////////////////////////////////////////////////// -/// \ingroup -/// -/// \param -/// -/// \return -/////////////////////////////////////////////////////////////////////////////// -EFrameworkunifiedStatus CSystemManager::GetBinaryNameOfProcess(SS_String f_ModuleQueueName, - SS_String &f_ModuleBinaryName) { - FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "+"); - EFrameworkunifiedStatus l_eStatus = eFrameworkunifiedStatusFail; - ModuleLaunchListIter l_moduleIter; - - f_ModuleBinaryName = ""; - l_eStatus = GetModuleIterator(f_ModuleQueueName.c_str(), l_moduleIter); - if (eFrameworkunifiedStatusOK != l_eStatus) { - LOG_ERROR("GetModuleIterator()"); // LCOV_EXCL_BR_LINE 15: marco defined in ss_templates.h // NOLINT(whitespace/line_length) - } else { - size_t l_pos = l_moduleIter->path.find_last_of("\\/"); - if (std::string::npos == l_pos) { // LCOV_EXCL_BR_LINE 5: stdlib error case. - // LCOV_EXCL_START 5: stdlib error case. - AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert - FRAMEWORKUNIFIEDLOG(ZONE_ERR, __FUNCTION__, - " Error. Unable to parse binary name from path %s.", - l_moduleIter->path.c_str()); - // LCOV_EXCL_STOP - } else { - f_ModuleBinaryName = l_moduleIter->path.substr(l_pos + 1); - l_eStatus = eFrameworkunifiedStatusOK; - } - } - - FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "-"); - return l_eStatus; -} - -/////////////////////////////////////////////////////////////////////////////// -/// \ingroup -/// -/// \param -/// -/// \return -/////////////////////////////////////////////////////////////////////////////// -EFrameworkunifiedStatus CSystemManager::init_process_launcher(HANDLE hApp) { - FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "+"); - EFrameworkunifiedStatus l_eStatus; - UI_32 TODO = 0; - - FrameworkunifiedProtocolCallbackHandler process_launcher_protocol_callbacks[] = { - // Command ID, Call back functions - { ePLThrdCmd_LAUNCH_MODULE_RESP, SysMgrCallback<CSystemManager, - &CSystemManager::OnModuleLaunchResponse> }, - { ePLThrdCmd_TERMINATE_MODULE_RESP, SysMgrCallback<CSystemManager, - &CSystemManager::OnTerminateModuleResponse> }, - { ePLThrdCmd_RELAUNCH_MODULE_RESP, SysMgrCallback<CSystemManager, - &CSystemManager::OnReLaunchModuleResponse> }, - { ePLThrdCmd_THREAD_STATUS_RESP, SysMgrCallback<CSystemManager, - &CSystemManager::OnProcessLauncherThreadHeartbeatResponse> } }; // LCOV_EXCL_BR_LINE 11:unexpected branch // NOLINT(whitespace/line_length) - - // setup call backs for my children - if (eFrameworkunifiedStatusOK != (l_eStatus = FrameworkunifiedAttachCallbacksToDispatcher(hApp, SS_SMLauncher, process_launcher_protocol_callbacks, static_cast<UI_32>(_countof(process_launcher_protocol_callbacks))))) { // LCOV_EXCL_BR_LINE 4:NSFW error case //NOLINT (whitespace/line_length) - AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert - LOG_ERROR("FrameworkunifiedAttachCallbacksToDispatcher()"); // LCOV_EXCL_LINE 4: For setting the initialization conditions at SystemManager startup - //////// Create Writer Child Threads handles the writing of data - } else if (NULL == (m_hProcLauncherThread.m_ThreadHdl = FrameworkunifiedCreateChildThreadWithPriority(hApp, SS_SMLauncher, ProcessLauncherOnStart, ProcessLauncherOnStop, PR_SMPROCLAUNCH))) { // LCOV_EXCL_BR_LINE 4:NSFW error case //NOLINT (whitespace/line_length) - // LCOV_EXCL_START 4: For setting the initialization conditions at SystemManager startup - AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert - l_eStatus = eFrameworkunifiedStatusNullPointer; - m_hProcLauncherThread.m_ThreadState = eSM_ThreadNotExist; - FRAMEWORKUNIFIEDLOG(ZONE_ERR, __FUNCTION__, - " Error: FrameworkunifiedCreateChildThreadWithPriority(%s) errored: %d/'%s'", - SS_SMLauncher, l_eStatus, GetStr(l_eStatus).c_str()); - // LCOV_EXCL_STOP - } else if (eFrameworkunifiedStatusOK != (l_eStatus = FrameworkunifiedStartChildThread(hApp, m_hProcLauncherThread.m_ThreadHdl, sizeof(UI_32), &TODO))) { // LCOV_EXCL_BR_LINE 4:NSFW error case //NOLINT (whitespace/line_length) - AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert - m_hProcLauncherThread.m_ThreadState = // LCOV_EXCL_LINE 4: For setting the initialization conditions at SystemManager startup - eSM_ThreadNotExist; // LCOV_EXCL_LINE 4: For setting the initialization conditions at SystemManager startup - LOG_ERROR("FrameworkunifiedStartChildThread()"); // LCOV_EXCL_LINE 4: For setting the initialization conditions at SystemManager startup - } else { - m_hProcLauncherThread.m_ThreadState = eSMThreadIsFine; - } - FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "-"); - return l_eStatus; -} - -EFrameworkunifiedStatus CSystemManager::OnGroupLaunchWaitTimeout(HANDLE hApp) { - FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "+"); - EFrameworkunifiedStatus l_eStatus; - SetCmdHist("SM_TIMER_GROUP_LAUNCH_WAIT_TIMER", m_TimerCmdHist, m_TimerHistIter, FrameworkunifiedGetMsgSrc(hApp)); // LCOV_EXCL_BR_LINE 11:unexpected branch // NOLINT(whitespace/line_length) - CALL_AND_LOG_STATUS(OnLaunchGroup(hApp)); // LCOV_EXCL_BR_LINE 15: marco defined in ss_templates.h // NOLINT(whitespace/line_length) - FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "-"); - return l_eStatus; -} - -/////////////////////////////////////////////////////////////////////////////// -/// \ingroup -/// -/// \param -/// -/// \return -/////////////////////////////////////////////////////////////////////////////// -EFrameworkunifiedStatus CSystemManager::OnModuleLaunchResponse(HANDLE hApp) { - FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "+"); - EFrameworkunifiedStatus l_eStatus; - INTERFACEUNIFIEDLOG_RECEIVED_FROM(hApp); // LCOV_EXCL_BR_LINE 15: marco defined in ns_logger_if.h // NOLINT(whitespace/line_length) - FRAMEWORKUNIFIEDLOG(ZONE_INFO, __FUNCTION__, "from %s", FrameworkunifiedGetMsgSrc(hApp)); - - GroupLaunchMapIter l_GroupIter; - ModuleLaunchListIter l_ModuleIter; - UI_32 l_launchID = m_oSystemLauncher.get_id(); - - l_eStatus = PerformModuleLaunchRespProcessing(hApp, l_GroupIter, l_ModuleIter, "ML"); - if (eFrameworkunifiedStatusOK != l_eStatus) { - LOG_ERROR("PerformModuleLaunchRespProcessing()"); // LCOV_EXCL_BR_LINE 15: marco defined in ss_templates.h // NOLINT(whitespace/line_length) - } else if (l_GroupIter->second.id == l_launchID) { - BOOL IsGroupLaunchComplete = TRUE; - // Search the group for any module that has not completed launching. - for (l_ModuleIter = l_GroupIter->second.modules.begin(); - IsGroupLaunchComplete && (l_ModuleIter != l_GroupIter->second.modules.end()); - l_ModuleIter++) { - IsGroupLaunchComplete = !l_ModuleIter->IsModuleState(MODULE_STATE_LAUNCHING); - } - - if (IsGroupLaunchComplete) { - m_GroupLaunchTimer->StopTimer(m_aTimerIDs[eSM_TIMER_GROUP_MONITOR]); - l_GroupIter->second.launch_complete = TRUE; - FRAMEWORKUNIFIEDLOG(ZONE_STATE, __FUNCTION__, "Group%d LaunchComp", l_GroupIter->second.id); - - if (!m_oSystemLauncher.is_end()) { - l_launchID = m_oSystemLauncher.advance_id(); - FRAMEWORKUNIFIEDLOG(ZONE_STATE, __FUNCTION__, "Next group:%d", l_launchID); - if (FALSE == l_GroupIter->second.grp_wait_for_trigger) { - UI_32 l_Sec = (l_GroupIter->second.grp_launch_wait) / (1000 * 1000); - UI_32 l_mSec = 0; - if (l_Sec > 0) { - l_mSec = ((l_GroupIter->second.grp_launch_wait) % (1000 * 1000)) / 1000; - } else { - l_mSec = (l_GroupIter->second.grp_launch_wait) / 1000; - } - m_GroupLaunchTimer->StartTimer( - m_aTimerIDs[eSM_TIMER_GROUP_LAUNCH_WAIT_TIMER], l_Sec, l_mSec, 0, 0); - } else { - // Start the timer for group trigger... added for optimization - m_GroupLaunchTimer->StartTimer( - m_aTimerIDs[eSM_TIMER_LAUNCH_GROUP_TRIGGER_PROC_RESP_TIMER], - SS_LAUNCH_GROUP_TRIGGER_TIMER_CONFIG, 0, 0, 0); - } - } - } else { - FRAMEWORKUNIFIEDLOG(ZONE_INFO, __FUNCTION__, " Group %d/%s LaunchIncomp", l_launchID, - l_GroupIter->second.name.c_str()); - } - } else { - FRAMEWORKUNIFIEDLOG(ZONE_INFO, __FUNCTION__, - " '%s' ( Group %d/%s ) Launch Response received late - " - "group id is now %d", l_ModuleIter->name.c_str(), - l_GroupIter->second.id, l_GroupIter->second.name.c_str() - , l_launchID); - } - FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "-"); - return l_eStatus; -} - -EFrameworkunifiedStatus CSystemManager::OnReLaunchModuleResponse(HANDLE hApp) { - FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "+"); - EFrameworkunifiedStatus l_eStatus; - INTERFACEUNIFIEDLOG_RECEIVED_FROM(hApp); // LCOV_EXCL_BR_LINE 15: marco defined in ss_templates.h // NOLINT(whitespace/line_length) - FRAMEWORKUNIFIEDLOG(ZONE_PERFORMANCE, __FUNCTION__, "from %s", FrameworkunifiedGetMsgSrc(hApp)); - - GroupLaunchMapIter l_GroupIter; - ModuleLaunchListIter l_ModuleIter; - - l_eStatus = PerformModuleLaunchRespProcessing(hApp, l_GroupIter, l_ModuleIter, "RL"); - LOG_ERROR_REC_HIST_IF_ERRORED(l_eStatus, "PerformModuleLaunchRespProcessing()"); // LCOV_EXCL_BR_LINE 15: marco defined in ss_system_manager.h // NOLINT(whitespace/line_length) - - FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "-"); - return l_eStatus; -} // End of EFrameworkunifiedStatus CSystemManager::OnReLaunchModuleResponse( HANDLE hApp ) - - -EFrameworkunifiedStatus CSystemManager::PerformModuleLaunchRespProcessing(HANDLE hApp, - GroupLaunchMapIter & f_GroupIter, ModuleLaunchListIter & f_ModuleIter, - PCSTR p_sPPD_tag) { - FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "+"); - EFrameworkunifiedStatus l_eStatus; - T_ProcessLaunchResp l_LaunchRespData; - - // ReadMsg(): * - // Check hApp ptr, msg size, msg reception, read msg if all ok. * - // Report any errors found. * - // * - if (eFrameworkunifiedStatusOK != (l_eStatus = ReadMsg < T_ProcessLaunchResp > (hApp, l_LaunchRespData))) { // LCOV_EXCL_BR_LINE 4: nsfw error // NOLINT(whitespace/line_length) - AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert - LOG_ERROR("ReadMsg()"); // LCOV_EXCL_LINE 4: nsfw error - } else { - BOOL b_DidModuleLaunch = FALSE; - f_GroupIter = l_LaunchRespData.groupIterator; - f_ModuleIter = l_LaunchRespData.moduleIterator; - SS_String l_ModulePath = l_LaunchRespData.path; - - FRAMEWORKUNIFIEDLOG(ZONE_PERFORMANCE, __FUNCTION__, "%s(%d)", l_LaunchRespData.name, l_LaunchRespData.pid); - - if (l_LaunchRespData.pid == -1) { - f_ModuleIter->pid = -1; - - FRAMEWORKUNIFIEDLOG(ZONE_ERR, __FUNCTION__, " Error: Process launch failed: %s, %s", - f_ModuleIter->name.c_str(), l_ModulePath.c_str()); - - /// TODO - /// If PID is -1, launch had failed. Add logic to do necessary action. - - f_ModuleIter->SetModuleState(MODULE_STATE_LAUNCH_FAILED); - } else if (l_LaunchRespData.pid == 0x7FFFFFFF) { - FRAMEWORKUNIFIEDLOG(ZONE_WARN, __FUNCTION__, " Warning: '%s', '%s' already launched", - f_ModuleIter->name.c_str(), l_ModulePath.c_str()); - - b_DidModuleLaunch = TRUE; - } else { - f_ModuleIter->pid = l_LaunchRespData.pid; - b_DidModuleLaunch = TRUE; - } - - if (b_DidModuleLaunch) { - // - // Module state could already be MODULE_STATE_CONNECTED if - // module process ran before process launcher thread completed; - // don't overwrite/reset the MODULE_STATE_CONNECTED state. - if (f_ModuleIter->IsModuleState(MODULE_STATE_LAUNCHING)) { - f_ModuleIter->SetModuleState(MODULE_STATE_LAUNCHED); - } - - l_eStatus = f_ModuleIter->GetPriority(f_ModuleIter->current_priority); - if (eFrameworkunifiedStatusOK != l_eStatus) { - FRAMEWORKUNIFIEDLOG(ZONE_WARN, __FUNCTION__, " Warning: f_ModuleIter->GetPriority( " - "f_ModuleIter->current_priority ) returned %d/'%s'. " - "Setting 'current_priority' = 'configuration_priority' %d.", - l_eStatus, GetStr(l_eStatus).c_str(), - f_ModuleIter->configuration_priority); - f_ModuleIter->current_priority = f_ModuleIter->configuration_priority; - l_eStatus = eFrameworkunifiedStatusOK; - } - } - } - FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "-"); - return l_eStatus; -} // End of EFrameworkunifiedStatus CSystemManager::PerformModuleLaunchRespProcessing( - -/////////////////////////////////////////////////////////////////////////////// -/// \ingroup OnTerminateModuleResponse -/// -/// \param HANDLE hApp -/// -/// \return EFrameworkunifiedStatus -/////////////////////////////////////////////////////////////////////////////// -EFrameworkunifiedStatus CSystemManager::OnTerminateModuleResponse(HANDLE hApp) { - FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "+"); - EFrameworkunifiedStatus l_eStatus; - T_ProcessLauncherTerminationResp l_TerminateRespData; - INTERFACEUNIFIEDLOG_RECEIVED_FROM(hApp); // LCOV_EXCL_BR_LINE 15: marco defined in ss_templates.h // NOLINT(whitespace/line_length) - FRAMEWORKUNIFIEDLOG(ZONE_STATE, __FUNCTION__, " from %s", FrameworkunifiedGetMsgSrc(hApp)); - - // ReadMsg(): * - // Check hApp ptr, msg size, msg reception, read msg if all ok. * - // Report any errors found. * - // * - if (eFrameworkunifiedStatusOK != (l_eStatus = ReadMsg < T_ProcessLauncherTerminationResp - > (hApp, l_TerminateRespData))) { - LOG_ERROR("ReadMsg()"); // LCOV_EXCL_BR_LINE 15: marco defined in ss_templates.h // NOLINT(whitespace/line_length) - } else { - ModuleLaunchListIter l_ModuleIter = l_TerminateRespData.moduleIterator; - - SS_String l_ModulePath = m_BinaryFilesPath + l_ModuleIter->path; - - if ((0 == strcmp(l_ModulePath.c_str(), l_TerminateRespData.path)) - && (0 == strcmp(l_ModuleIter->arguments.c_str(), - l_TerminateRespData.args))) { - l_ModuleIter->pid = 0; - FRAMEWORKUNIFIEDLOG(ZONE_INFO, __FUNCTION__, " %s Termination successful", - l_ModuleIter->name.c_str()); - } else { - if (0 != strcmp(l_ModulePath.c_str(), l_TerminateRespData.path)) { - FRAMEWORKUNIFIEDLOG(ZONE_ERR, __FUNCTION__, - " Error: ModuleIter->path != l_TerminateRespData.path" - " \" '%s' != '%s' \"", l_ModuleIter->path.c_str(), - l_TerminateRespData.path); - } - if (0 != strcmp(l_ModuleIter->arguments.c_str(), - l_TerminateRespData.args)) { - FRAMEWORKUNIFIEDLOG(ZONE_ERR, __FUNCTION__, " Error: ModuleIter->arguments != " - "l_TerminateRespData.args, \" '%s' != '%s' \"", - l_ModuleIter->arguments.c_str(), l_TerminateRespData.args); - } - } - } - - FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "-"); - return l_eStatus; -} // End of EFrameworkunifiedStatus CSystemManager::OnTerminateModuleResponse( HANDLE hApp ) - -/////////////////////////////////////////////////////////////////////// -/// \ingroup ReadPathAndFileNameEnvironmentVariables -/// -/// \param -/// -/// \return VOID -/////////////////////////////////////////////////////////////////////////////// -VOID CSystemManager::ReadPathFromEnvironmentVariables() { - FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "+"); // LCOV_EXCL_BR_LINE 15: marco defined in ns_logger_if.h // NOLINT(whitespace/line_length) - CHAR *l_pEnvVariable = NULL; - - // read Path from environment variable - if (NULL == (l_pEnvVariable = std::getenv(BaseDirPathEnvVariable))) { - // Environment variable not set, set it to default path - FRAMEWORKUNIFIEDLOG(ZONE_INFO, __FUNCTION__, "Using Default path for Binary Files : %s", DefaultBasePath); - m_BinaryFilesPath = DefaultBasePath; - - FRAMEWORKUNIFIEDLOG(ZONE_INFO, __FUNCTION__, "Using Default path for Config Files : %s%s", - DefaultBasePath, DefaultConfigFilesPath); - m_ConfigFilesPath = DefaultBasePath; - } else { - // set path of binary files - m_BinaryFilesPath = l_pEnvVariable; - - // set path of configuration files - m_ConfigFilesPath = l_pEnvVariable; - } - // set path of configuration files - m_ConfigFilesPath += DefaultConfigFilesPath; - - FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "-"); - return; -} - -/////////////////////////////////////////////////////////////////////// -/// \ingroup GetConfigDataFileNameFromEnvironmentVariable -/// -/// \param -/// -/// \return SS_String -/////////////////////////////////////////////////////////////////////////////// -SS_String CSystemManager::ReadLaunchConfigFileNameFromEnvironmentVariable() { - FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "+"); - CHAR *l_pEnvVariable = NULL; - SS_String l_FileName; - - // read Launch Config File Name from environment variable - // LCOV_EXCL_BR_START 5: standard lib error - if (NULL == (l_pEnvVariable = std::getenv(LaunchConfigFileNameEnvVariable))) { - // LCOV_EXCL_BR_STOP - // Environment variable not set, set it to default file name - // LCOV_EXCL_START 5: standard lib error - AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert - FRAMEWORKUNIFIEDLOG(ZONE_INFO, __FUNCTION__, " Using Default Launch Configuration file : %s", - DefaultLaunchConfigFileName); - l_FileName = DefaultLaunchConfigFileName; - // LCOV_EXCL_STOP - } else { - l_FileName = l_pEnvVariable; - } - - FRAMEWORKUNIFIEDLOG(ZONE_INFO, __FUNCTION__, " Using Launch Configuration file: %s", l_FileName.c_str()); - - SS_String retStr = m_ConfigFilesPath + l_FileName; // LCOV_EXCL_BR_LINE 11:unexpected branch // NOLINT(whitespace/line_length) - if (access(retStr.c_str(), F_OK) != 0) { // LCOV_EXCL_BR_LINE 5: standard lib error - // LCOV_EXCL_START 5: standard lib error - AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert - FRAMEWORKUNIFIEDLOG(ZONE_WARN, __FUNCTION__, "no found %s", retStr.c_str()); - SS_ASERT(0); - // LCOV_EXCL_STOP - } - return retStr; -} - -/////////////////////////////////////////////////////////////////////// -/// \ingroup GetConfigDataFileNameFromEnvironmentVariable -/// -/// \param -/// -/// \return SS_String -/////////////////////////////////////////////////////////////////////////////// -SS_String CSystemManager::ReadConfigDataFileNameFromEnvironmentVariable() { - FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "+"); - CHAR *l_pEnvVariable = NULL; - SS_String l_FileName = ""; - - // read SM Config Data File Name from environment variable - // LCOV_EXCL_BR_START 5: standard lib error - if (NULL == (l_pEnvVariable = std::getenv(SMConfigDataFileNameEnvVariable))) { - // LCOV_EXCL_BR_STOP 5: standard lib error - // LCOV_EXCL_START 5: standard lib error - AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert - // Environment variable not set, set it to default file name - FRAMEWORKUNIFIEDLOG(ZONE_INFO, __FUNCTION__, "Using Default Configuration Data file : %s", DefaultSMConfigFileName); - l_FileName = DefaultSMConfigFileName; - // LCOV_EXCL_STOP - } else { - l_FileName = l_pEnvVariable; - } - - SS_String retStr = m_ConfigFilesPath + l_FileName; // LCOV_EXCL_BR_LINE 11:unexpected branch // NOLINT(whitespace/line_length) - if (access(retStr.c_str(), F_OK) != 0) { // LCOV_EXCL_BR_LINE 5: standard lib error - // LCOV_EXCL_START 5: standard lib error - AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert - FRAMEWORKUNIFIEDLOG(ZONE_WARN, __FUNCTION__, "no found %s", retStr.c_str()); - SS_ASERT(0); - // LCOV_EXCL_STOP - } - FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "-"); - return retStr; -} - -/////////////////////////////////////////////////////////////////////// -/// \ingroup ReadUsingVMPlayerEnvironmentVariable -/// -/// \param -/// -/// \return VOID -/////////////////////////////////////////////////////////////////////////////// -VOID CSystemManager::ReadUsingVMPlayerEnvironmentVariable() { - FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "+"); - CHAR *l_pEnvVariable = std::getenv(UsingVMPlayerVariable); - m_UsingVMPlayer = (NULL != l_pEnvVariable); - FRAMEWORKUNIFIEDLOG(ZONE_INFO, __FUNCTION__, " %sunning on a VMPlayer", - m_UsingVMPlayer ? "R" : "Not r"); - FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "-"); - return; -} // End of VOID CSystemManager::ReadUsingVMPlayerEnvironmentVariable() - -/////////////////////////////////////////////////////////////////////////////// -/// \ingroup -/// -/// \param -/// -/// \return -/////////////////////////////////////////////////////////////////////////////// -EFrameworkunifiedStatus CSystemManager::start_process_launching(HANDLE hApp) { - FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "+"); - EFrameworkunifiedStatus l_eStatus = eFrameworkunifiedStatusOK; - BOOL l_bIsGoodRc; - SS_String l_SMConfigFile(ReadConfigDataFileNameFromEnvironmentVariable()); - SMConfigParams SMConfigData; - SS_String l_LaunchConfigFile(ReadLaunchConfigFileNameFromEnvironmentVariable()); // LCOV_EXCL_BR_LINE 11:unexpected branch // NOLINT(whitespace/line_length) - SysMgrConfiguration l_launchConfig; - - FRAMEWORKUNIFIEDLOG(ZONE_INFO, __FUNCTION__, " Reading %s Configuration Data from %s", - SERVICE_SYSMANAGER, l_SMConfigFile.c_str()); - - l_bIsGoodRc = SMConfigData.LoadSMConfigParameters(m_SMConfig, l_SMConfigFile); - - if (!l_bIsGoodRc) { // LCOV_EXCL_BR_LINE 6: For setting the initialization conditions at SystemManager startup - // LCOV_EXCL_START 6: For setting the initialization conditions at SystemManager startup - AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert - FRAMEWORKUNIFIEDLOG(ZONE_ERR, __FUNCTION__, - " Error: SMConfigData.LoadSMConfigParameters(m_SMConfig, " - " %s) returned FALSE", l_SMConfigFile.c_str()); - l_eStatus = eFrameworkunifiedStatusFileLoadError; - // LCOV_EXCL_STOP - } else { - SMSetState(hApp, SS_SM_APPS_LAUNCH_IN_PROGRESS); // LCOV_EXCL_BR_LINE 11:unexpected branch // NOLINT(whitespace/line_length) - FRAMEWORKUNIFIEDLOG(ZONE_INFO, __FUNCTION__, " Reading Launch Configuration Data from %s", - l_LaunchConfigFile.c_str()); - - SS_String l_launchOrderName = "DEFAULT"; // LCOV_EXCL_BR_LINE 11:unexpected branch // NOLINT(whitespace/line_length) - LaunchOrderedVector l_OrderList; - - l_bIsGoodRc = l_launchConfig.LoadParametersCfg(m_MapProclaunchGrps, - m_MapProcNames, l_OrderList, l_launchOrderName, l_LaunchConfigFile); - - if (l_OrderList.size() != 0) { // LCOV_EXCL_BR_LINE 6: For setting the initialization conditions at SystemManager startup - AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert - FRAMEWORKUNIFIEDLOG(ZONE_STATE, __FUNCTION__, "wakeup order:%s", - l_launchOrderName.c_str()); - } else { - FRAMEWORKUNIFIEDLOG(ZONE_STATE, __FUNCTION__, "wakeup order:DEFAULT"); - } - - if (!l_bIsGoodRc) { // LCOV_EXCL_BR_LINE 6: For setting the initialization conditions at SystemManager startup - // LCOV_EXCL_START 6: For setting the initialization conditions at SystemManager startup - AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert - FRAMEWORKUNIFIEDLOG(ZONE_ERR, __FUNCTION__, " Error: l_launchConfig.LoadParametersCfg( " - "m_MapProclaunchGrps, m_MapProcNames, %s ) returned FALSE", - l_LaunchConfigFile.c_str()); - l_eStatus = eFrameworkunifiedStatusFileLoadError; - // LCOV_EXCL_STOP - } else { - m_SystemLaunchProgress = SS_SM_INITIAL_GROUP; - // l_launchConfig.PrintAllInfo( m_MapProclaunchGrps ); - - FRAMEWORKUNIFIEDLOG(ZONE_INFO, __FUNCTION__, " System Launch Started"); - // Don't use DynamicLaunch because its dependency on the services table is complex - SS_SOURCE source_type = SS_SOURCE_FM; - - m_oSystemLauncher.configure_dynamic_launch(source_type, m_MapProclaunchGrps, l_OrderList); - m_oSystemLauncher.copyDynOrderedVector(m_SystemStarter); - // m_SystemStarter.print_info(); - - // start the timer upon successful launching of first process - FRAMEWORKUNIFIEDLOG(ZONE_INFO, __FUNCTION__, - "Starting Module Connection Timeout timer with %d sec period", - m_SMConfig.MCConfig.ModuleConnectionTimeOutSec); - m_GroupLaunchTimer->StartTimer( - m_aTimerIDs[eSM_TIMER_MODULE_CONNECT_WAIT_TIMER], - m_SMConfig.MCConfig.ModuleConnectionTimeOutSec, 0, - m_SMConfig.MCConfig.ModuleConnectionTimeOutSec, 0); // LCOV_EXCL_BR_LINE 11:unexpected branch // NOLINT(whitespace/line_length) - CALL_AND_LOG_STATUS(OnLaunchGroup(hApp)); // LCOV_EXCL_BR_LINE 6: For setting the initialization conditions at SystemManager startup - } - } - - FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "-"); - return l_eStatus; -} - - -EFrameworkunifiedStatus CSystemManager::GetLastSourceInfo(SS_SOURCE &source_type) { // LCOV_EXCL_START 8: Because the condition cannot be set - AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert - FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "+"); - EFrameworkunifiedStatus l_eStatus; - - CHAR LastSource[64 + 1] = { '\0' }; - l_eStatus = NPSynchronousReadPersistentData(SERVICE_AS_MODE, - NTFY_SSLastSourceType, LastSource, static_cast<UI_32>(sizeof(LastSource) - 1)); - if (eFrameworkunifiedStatusOK != l_eStatus) { - LOG_ERROR("NPSynchronousReadPersistentData(" - SERVICE_AS_MODE "," NTFY_SSLastSourceType); - } else { - std::string tempstr(LastSource); - FRAMEWORKUNIFIEDLOG(ZONE_INFO, __FUNCTION__, " String got from persistence %s", LastSource); - UI_32 pos = static_cast<UI_32>(tempstr.find("_")); - std::string tempstr2 = tempstr.substr(0, pos); - UI_64 value = strtoull(tempstr2.c_str(), 0, 10); - source_type = static_cast<SS_SOURCE>((UI_32)(value >> 32) & 0x0000FFFF); - } - FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "-"); - return l_eStatus; -} - -EFrameworkunifiedStatus CSystemManager::OnLaunchGroupTriggerProcessResponse(HANDLE hApp) { - AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert - FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "+"); - EFrameworkunifiedStatus l_eStatus = eFrameworkunifiedStatusOK; - INTERFACEUNIFIEDLOG_RECEIVED_FROM(hApp); - UI_32 l_groupID; - - FRAMEWORKUNIFIEDLOG(ZONE_STATE, __FUNCTION__, "from %s", FrameworkunifiedGetMsgSrc(hApp)); - SetCmdHist("SS_SM_GROUP_LAUNCH_TRIGGER", m_SMCmdHist, m_SMHistIter, FrameworkunifiedGetMsgSrc(hApp)); - // stop group launch trigger process response timer - m_GroupLaunchTimer->StopTimer(m_aTimerIDs[eSM_TIMER_LAUNCH_GROUP_TRIGGER_PROC_RESP_TIMER]); - - if (eFrameworkunifiedStatusOK != (l_eStatus = ReadMsg < UI_32 > (hApp, l_groupID))) { - LOG_ERROR("ReadMsg()"); - } else { - SS_SOURCE source_type = SS_SOURCE_NA; - l_eStatus = GetLastSourceInfo(source_type); - - if ((SS_SOURCE_AM == source_type) || (SS_SOURCE_FM == source_type) - || (SS_SOURCE_FM_DAB == source_type) || (SS_SOURCE_SDARS == source_type)) { - if (l_groupID == m_oSystemLauncher.get_id()) { - CALL_AND_LOG_STATUS(OnLaunchGroup(hApp)); - } else { - FRAMEWORKUNIFIEDLOG(ZONE_ERR, __FUNCTION__, - " Error: Received Group ID %d != Sys Mgr Group ID %d", l_groupID, - m_oSystemLauncher.get_id()); - l_eStatus = eFrameworkunifiedStatusInvldParam; - } - } else { // media is last source - CALL_AND_LOG_STATUS(OnLaunchGroup(hApp)); - } - } - - FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "-"); - return l_eStatus; -} - -EFrameworkunifiedStatus CSystemManager::OnLaunchGroupTriggerProcessResponseTimerExpiry(HANDLE hApp) { - AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert - FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "+"); - EFrameworkunifiedStatus l_eStatus = eFrameworkunifiedStatusOK; - INTERFACEUNIFIEDLOG_RECEIVED_FROM(hApp); - REC_HIST_IF_SUCCESSFUL("SM_TIMER_LAUNCH_GROUP_TRIGGER", m_TimerCmdHist, - m_TimerHistIter, FrameworkunifiedGetMsgSrc(hApp), l_eStatus); - CALL_AND_LOG_STATUS(OnLaunchGroup(hApp)); - - FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "-"); - return l_eStatus; -} - -/////////////////////////////////////////////////////////////////////////////// -/// \ingroup -/// -/// \param -/// -/// \return -/////////////////////////////////////////////////////////////////////////////// -EFrameworkunifiedStatus CSystemManager::OnLaunchGroupSelfTrigger(HANDLE hApp) { - AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert - FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "+"); - EFrameworkunifiedStatus l_eStatus = eFrameworkunifiedStatusOK; - - FRAMEWORKUNIFIEDLOG(ZONE_STATE, __FUNCTION__, "from %s", FrameworkunifiedGetMsgSrc(hApp)); - - REC_HIST_IF_SUCCESSFUL("SS_SM_SendTriggerToSelf", m_SMCmdHist, m_SMHistIter, - FrameworkunifiedGetMsgSrc(hApp), l_eStatus); - - CALL_AND_LOG_STATUS(OnLaunchGroup(hApp)); - - FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "-"); - return l_eStatus; -} -// LCOV_EXCL_STOP - -/////////////////////////////////////////////////////////////////////////////// -/// \ingroup -/// -/// \param -/// -/// \return -/////////////////////////////////////////////////////////////////////////////// -EFrameworkunifiedStatus CSystemManager::OnLaunchGroup(HANDLE hApp) { - FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "+"); - EFrameworkunifiedStatus l_eStatus = eFrameworkunifiedStatusOK; - GroupLaunchMapIter l_GroupIter; - UI_32 l_launch_ID = m_oSystemLauncher.get_id(); - - // FRAMEWORKUNIFIEDLOG(ZONE_INFO, __FUNCTION__, " Launching group %d", l_launch_ID ); - - l_GroupIter = m_MapProclaunchGrps.find(l_launch_ID); - - if (l_GroupIter->second.launch_complete == FALSE) { // LCOV_EXCL_BR_LINE 6: Because it is not called for a condition that results in "TRUE" - // FRAMEWORKUNIFIEDLOG(ZONE_INFO, __FUNCTION__ - // , " m_bIsNPP_ServicesStarted ? %s, group.id: %d, Launch_Group: %d" - // , m_bIsNPP_ServicesStarted ? "Yes" : "No" - // , l_GroupIter->second.id - // , m_SystemLaunchProgress ); - - if ((m_bIsNPP_ServicesStarted && m_bIsBackupAvail) || (l_GroupIter->second.id <= 2)) { // LCOV_EXCL_BR_LINE 6: Because it is not called for the condition that results in "FALSE" // NOLINT(whitespace/line_length) - ModuleLaunchListIter l_ModuleListIterator = l_GroupIter->second.modules.begin(); - if (l_ModuleListIterator != l_GroupIter->second.modules.end()) { // LCOV_EXCL_BR_LINE 6: For setting the initialization conditions at SystemManager startup // NOLINT(whitespace/line_length) - // FRAMEWORKUNIFIEDLOG(ZONE_PERFORMANCE, __FUNCTION__, "GRPLCH,(start),%d,%s", - // l_GroupIter->second.id,l_GroupIter->second.name.c_str()); - - FRAMEWORKUNIFIEDLOG(ZONE_STATE, __FUNCTION__, "Launching Group%d/%s", - l_GroupIter->second.id, l_GroupIter->second.name.c_str()); - SS_String l_ModulePath; - for (; l_ModuleListIterator != l_GroupIter->second.modules.end(); l_ModuleListIterator++) { - if (l_ModuleListIterator->IsModuleState(MODULE_STATE_INVALID)) { - char l_cFormat[] = "SendRequestToLauncher(%s, " - "ePLThrdCmd_LAUNCH_MODULE_REQST)"; - char l_cBuf[sizeof(l_cFormat) + MAX_NAME_SIZE_APP]; - snprintf(l_cBuf, sizeof(l_cBuf), l_cFormat, - l_ModuleListIterator->name.c_str()); - - l_eStatus = SendRequestToLauncher(hApp, l_ModuleListIterator, // LCOV_EXCL_BR_LINE 11:unexpected branch // NOLINT(whitespace/line_length) - ePLThrdCmd_LAUNCH_MODULE_REQST, // LCOV_EXCL_BR_LINE 11:unexpected branch // NOLINT(whitespace/line_length) - "ePLThrdCmd_LAUNCH_MODULE_REQST"); // LCOV_EXCL_BR_LINE 11:unexpected branch // NOLINT(whitespace/line_length) - - if (eFrameworkunifiedStatusOK != l_eStatus) { // LCOV_EXCL_BR_LINE 6: For setting the initialization conditions at SystemManager startup // NOLINT(whitespace/line_length) - // LCOV_EXCL_START 6: For setting the initialization conditions at SystemManager startup // NOLINT(whitespace/line_length) - AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert - l_ModuleListIterator->SetModuleState( - MODULE_STATE_LAUNCH_FAILED); - SetCmdHist(l_cBuf, m_ErrHist, m_ErrHistIter, - GetStr(l_eStatus).c_str()); - // LCOV_EXCL_STOP - } else { - l_ModuleListIterator->SetModuleState(MODULE_STATE_LAUNCHING); - } - } else { - l_ModulePath = (m_BinaryFilesPath + l_ModuleListIterator->path); // LCOV_EXCL_BR_LINE 11:unexpected branch // NOLINT(whitespace/line_length) - FRAMEWORKUNIFIEDLOG(ZONE_INFO, __FUNCTION__, - " Not launching %s: module state is %s", - l_ModulePath.c_str(), - l_ModuleListIterator->ModuleStateStr().c_str()); - } - } - - // LCOV_EXCL_BR_START 6: For setting the initialization conditions at SystemManager startup // NOLINT(whitespace/line_length) - if (FALSE == - l_GroupIter->second.grp_wait_for_trigger) { - // LCOV_EXCL_BR_STOP - m_GroupLaunchTimer->StartTimer(m_aTimerIDs[eSM_TIMER_GROUP_MONITOR], - SS_GROUP_LAUNCH_TIMER_CONFIG, 0, 0, 0); // LCOV_EXCL_BR_LINE 11:unexpected branch // NOLINT(whitespace/line_length) - } - } - } - - if (m_oSystemLauncher.is_end()) { // LCOV_EXCL_BR_LINE 6: For setting the initialization conditions at SystemManager startup // NOLINT(whitespace/line_length) - FRAMEWORKUNIFIEDLOG(ZONE_INFO, __FUNCTION__, "System Launch Completed"); - - if (epssusSYSTEM_SERVICES_STARTED == m_SystemModeInfo.startupStage) { - // If startupStage == SYSTEM_SERVICES_STARTED, a notification is requested because there are SVCs required for notification to the _CWORD56_. - l_eStatus = SendSystemModeInfoResponse(hApp, epssusALL_SERVICES_LAUNCHED); - LOG_ERROR_REC_HIST_IF_ERRORED(l_eStatus, // LCOV_EXCL_BR_LINE 15: marco defined in ss_system_manager.h // NOLINT(whitespace/line_length) - "UpdateStartupStageState_SendSystemModeInfoResponse" // LCOV_EXCL_BR_LINE 15: marco defined in ss_system_manager.h // NOLINT(whitespace/line_length) - "( epssusALL_SERVICES_LAUNCHED )"); // LCOV_EXCL_BR_LINE 15: marco defined in ss_system_manager.h // NOLINT(whitespace/line_length) - } - - m_SystemModeInfo.startupStage = epssusALL_SERVICES_LAUNCHED; - - if (is_current_state(SS_SM_APPS_LAUNCH_IN_PROGRESS)) { - SMSetState(hApp, SS_SM_APPS_LAUNCHED_READY_TO_START); - } - // SysMgrConfiguration config; - // config.PrintAllInfo( m_MapProclaunchGrps ); - } - } - FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "-"); - return l_eStatus; -} // End of EFrameworkunifiedStatus CSystemManager::OnLaunchGroup(HANDLE hApp) - -/////////////////////////////////////////////////////////////////////////////// -/// \ingroup OnProcessLaunchTimerExpiry -/// -/// \param HANDLE hApp -/// -/// \return EFrameworkunifiedStatus -/////////////////////////////////////////////////////////////////////////////// -EFrameworkunifiedStatus CSystemManager::OnProcessLaunchTimerExpiry(HANDLE hApp) { // LCOV_EXCL_START 8: Because the condition cannot be set - AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert - EFrameworkunifiedStatus l_eStatus = eFrameworkunifiedStatusOK; - // ToDo 2013_05_17 Jay When used ? Dead code ? Don't see a StartTimer call. - REC_HIST_IF_SUCCESSFUL("SM_TIMER_PROCESS_LAUNCH_MONITOR", m_TimerCmdHist, - m_TimerHistIter, FrameworkunifiedGetMsgSrc(hApp), l_eStatus); - m_GroupLaunchTimer->StopTimer(m_aTimerIDs[eSM_TIMER_PROCESS_LAUNCH_MONITOR]); - return eFrameworkunifiedStatusOK; -} -// LCOV_EXCL_STOP - -/////////////////////////////////////////////////////////////////////////////// -/// \ingroup OnHeartBeatMonitorTimerExpiry -/// -/// \param HANDLE hApp -/// -/// \return EFrameworkunifiedStatus -/////////////////////////////////////////////////////////////////////////////// -EFrameworkunifiedStatus CSystemManager::OnHeartBeatMonitorTimerExpiry(HANDLE hApp) { - FRAMEWORKUNIFIEDLOG(ZONE_PERIODIC_FUNC, __FUNCTION__, "+"); - FRAMEWORKUNIFIEDLOG(ZONE_PERIODIC_INFO, __FUNCTION__, " Received from %s", FrameworkunifiedGetMsgSrc(hApp)); - EFrameworkunifiedStatus l_eStatus = eFrameworkunifiedStatusOK; // LCOV_EXCL_BR_LINE 15: marco defined in ns_logger_if.h // NOLINT(whitespace/line_length) - REC_HIST_IF_SUCCESSFUL("SM_TIMER_HEARTBEAT_MONITOR", m_TimerCmdHist, // LCOV_EXCL_BR_LINE 15: marco defined in ss_system_manager.h // NOLINT(whitespace/line_length) - m_TimerHistIter, FrameworkunifiedGetMsgSrc(hApp), l_eStatus); // LCOV_EXCL_BR_LINE 15: marco defined in ss_system_manager.h // NOLINT(whitespace/line_length) - - // LCOV_EXCL_BR_START 4: nsfw error - if (eFrameworkunifiedStatusOK != (l_eStatus = FrameworkunifiedSendChild(hApp, m_hHeartbeatThread.m_ThreadHdl, - SS_HEARTBEAT_PERIODIC_STATUS_REQ, 0, NULL))) { - // LCOV_EXCL_BR_STOP 4: nsfw error - AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert - LOG_ERROR("FrameworkunifiedSendChild(m_hHeartbeatThread.m_ThreadHdl, " // LCOV_EXCL_LINE 4: nsfw error - "SS_HEARTBEAT_PERIODIC_STATUS_REQ)"); // LCOV_EXCL_BR_LINE 15: marco defined in ss_templates.h // NOLINT(whitespace/line_length) - } else { - m_hHeartbeatThread.m_ThreadState = eSMWaitForHeartbeat; - } - - FRAMEWORKUNIFIEDLOG(ZONE_PERIODIC_FUNC, __FUNCTION__, "-"); - return l_eStatus; -} - -/////////////////////////////////////////////////////////////////////////////// -/// \ingroup SystemManagerDebugDump -/// implement post mortem function -/// -/// \param -/// -/// \return void -/////////////////////////////////////////////////////////////////////////////// - -VOID CSystemManager::SystemManagerDebugDump(HANDLE hApp) { - std::stringstream l_debugDumpBuf; - cmdHistIter i; - - // LCOV_EXCL_BR_START 11:unexpected branch // NOLINT(whitespace/line_length) - l_debugDumpBuf << FrameworkunifiedGetAppName(hApp) << "/" << endl - << " <SYSTEM MANAGER DUMP DATA> " << endl << endl << " ***internals*** " << endl - << endl << " SM state: " - << GetStr(m_SMCurrentState).c_str() << endl << " SM startup reason: " - << GetStr(m_StartUpReason).c_str() << endl << " SM shutdown reason: " - << GetStr(m_shutdownTrigger).c_str() << endl << " LUM: " - << GetStr(m_lastUserMode).c_str() << endl << " TPM: " - << GetStr(m_SystemModeInfo.transportMode).c_str() << endl << " LPH: " - << GetStr(m_SystemModeInfo.limpHomeCutoff).c_str() << endl << " PMode: " - << GetStr(m_SystemModeInfo.productionMode).c_str() << endl << " ActiveGroup: " - << m_ActiveGroupId << endl << " m_MaxShutdownTime: " << m_MaxShutdownTime - << endl << " NPP: " << (m_bIsNPP_ServicesStarted ? "Started" : "notStarted") - << endl - << endl << " ***Error history***" << endl; - // LCOV_EXCL_BR_STOP - - for (i = m_ErrHist.begin(); i != m_ErrHist.end(); ++i) { - l_debugDumpBuf << endl << " " << i->m_cmd.c_str() << " @ " << i->m_time // LCOV_EXCL_BR_LINE 11:unexpected branch // NOLINT(whitespace/line_length) - << "ms EC:" << i->m_sender.c_str() << endl; // LCOV_EXCL_BR_LINE 11:unexpected branch // NOLINT(whitespace/line_length) - } - - l_debugDumpBuf << endl << " ***_CWORD56_ command history***" << endl; - - for (i = m__CWORD56_CmdHist.begin(); i != m__CWORD56_CmdHist.end(); ++i) { - l_debugDumpBuf << endl << " " << i->m_cmd.c_str() << " @ " << i->m_time << "ms" << endl; // LCOV_EXCL_BR_LINE 11:unexpected branch // NOLINT(whitespace/line_length) - } - - l_debugDumpBuf << endl << " ***Timer history***" << endl; - - for (i = m_TimerCmdHist.begin(); i != m_TimerCmdHist.end(); ++i) { - l_debugDumpBuf << endl << " " << i->m_cmd.c_str() << " @ " << i->m_time << "ms" << endl; // LCOV_EXCL_BR_LINE 11:unexpected branch // NOLINT(whitespace/line_length) - } - - l_debugDumpBuf << endl << " ***SM message history***" << endl; - - for (i = m_SMCmdHist.begin(); i != m_SMCmdHist.end(); ++i) { - l_debugDumpBuf << endl << " " << i->m_cmd.c_str() << " @ " << i->m_time << "ms " // LCOV_EXCL_BR_LINE 11:unexpected branch // NOLINT(whitespace/line_length) - << i->m_sender.c_str() << endl; // LCOV_EXCL_BR_LINE 11:unexpected branch // NOLINT(whitespace/line_length) - } - - l_debugDumpBuf << endl << " ***Publishshing history***" << endl; - - for (i = m_PubCmdHist.begin(); i != m_PubCmdHist.end(); ++i) { - l_debugDumpBuf << endl << " " << i->m_cmd.c_str() << " @ " << i->m_time << "ms " // LCOV_EXCL_BR_LINE 11:unexpected branch // NOLINT(whitespace/line_length) - << i->m_sender.c_str() << endl; // LCOV_EXCL_BR_LINE 11:unexpected branch // NOLINT(whitespace/line_length) - } - - l_debugDumpBuf << endl << " ***SM start table***" << endl; // LCOV_EXCL_BR_LINE 11:unexpected branch // NOLINT(whitespace/line_length) - - // LCOV_EXCL_BR_START 11:unexpected branch // NOLINT(whitespace/line_length) - l_debugDumpBuf << endl - << " index | name | start required? | isOKFlag | Module state | start sent " - "| start resposne received |start delta | stop sent | reply received | stop delta | PID" - << endl; - // LCOV_EXCL_BR_STOP - - for (UI_32 k = 1u; (k <= m_MapProclaunchGrps.size()); k++) { - GroupLaunchMapIter l_GroupIterator = m_MapProclaunchGrps.find(k); - - if (l_GroupIterator != m_MapProclaunchGrps.end()) { - ModuleLaunchListIter l_ModuleListIterator = l_GroupIterator->second.modules.begin(); - - for (int i = 1u; l_ModuleListIterator != l_GroupIterator->second.modules.end(); - l_ModuleListIterator++, i++) { - // LCOV_EXCL_BR_START 11:unexpected branch // NOLINT(whitespace/line_length) - std::string sIsOKFlag = GetModuleCondition(l_ModuleListIterator) ? " " : // 'blank' means OK - "X"; // 'X' means state mismatch - - l_debugDumpBuf << " " << std::setw(2) << std::right << i << " | " - << std::setw(24) << std::left << l_ModuleListIterator->name.c_str() - << " | " << std::setw(5) << std::left - << (l_ModuleListIterator->is_start_required ? "TRUE" : "FALSE") - - << " | " << sIsOKFlag.c_str() << " | " << std::setw(24) << std::left - << l_ModuleListIterator->ModuleStateStr().c_str() << " | " - << l_ModuleListIterator->m_startReason.GetInitial() << " | " - << l_ModuleListIterator->m_startReason.GetFinal() << " | " - << std::setw(3) << std::right - << static_cast<SI_16>(l_ModuleListIterator->m_startReason.GetDelta()) - << "ms" << " | " << l_ModuleListIterator->m_stopReason.GetInitial() - << " | " << l_ModuleListIterator->m_stopReason.GetFinal() << " | " - << std::setw(3) - << static_cast<SI_16>(l_ModuleListIterator->m_stopReason.GetDelta()) - << "ms" << " | " << l_ModuleListIterator->pid << endl; - // LCOV_EXCL_BR_STOP - } - } - } - - l_debugDumpBuf << endl << " ***Heartbeat information***" << endl; - - l_debugDumpBuf << endl << " Entire State:" << m_HBReport.eEntireState << endl; // LCOV_EXCL_BR_LINE 11:unexpected branch // NOLINT(whitespace/line_length) - - l_debugDumpBuf << endl << " Number of Modules:" << m_HBReport.nNumOfModules << endl; - - for (UI_32 j = 0; j < m_HBReport.nNumOfModules; j++) { // LCOV_EXCL_BR_LINE 11:unexpected branch // NOLINT(whitespace/line_length) - // LCOV_EXCL_START 6: Because the applicable variable cannot be changed from the external API (only evaluated by the initial value) - AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert - if (0 != m_HBReport.tModuleList[j].HeartBeatRetryCount) { - l_debugDumpBuf << endl << " " << m_HBReport.tModuleList[j].ProcQueueName << "," - << m_HBReport.tModuleList[j].ProcHBState << ", " - << m_HBReport.tModuleList[j].HeartBeatRetryCount << endl; - } - // LCOV_EXCL_STOP - } - - std::string l_debugDumpStr = l_debugDumpBuf.str(); - - SendDebugDumpResponseToSystemManager(l_debugDumpStr); // LCOV_EXCL_BR_LINE 11:unexpected branch // NOLINT(whitespace/line_length) -} - -/////////////////////////////////////////////////////////////////////////////// -/// \ingroup OnProcessLaunchMonitorTimerExpiry -/// This sends request to launcher thread to confirm that it -/// is still responsive. -/// -/// \param [in] hApp -/// HANDLE - Handle of the Client Application -/// -/// \return Status -/// EFrameworkunifiedStatus - success or error -/////////////////////////////////////////////////////////////////////////////// -EFrameworkunifiedStatus CSystemManager::OnProcessLaunchMonitorTimerExpiry(HANDLE hApp) { - FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "+"); - FRAMEWORKUNIFIEDLOG(ZONE_INFO, __FUNCTION__, " Received from %s", FrameworkunifiedGetMsgSrc(hApp)); - EFrameworkunifiedStatus l_eStatus = eFrameworkunifiedStatusOK; - - REC_HIST_IF_SUCCESSFUL("TIMER_PROCESSLAUNCHER_MONITOR", m_TimerCmdHist, // LCOV_EXCL_BR_LINE 15: marco defined in ss_system_manager.h // NOLINT(whitespace/line_length) - m_TimerHistIter, FrameworkunifiedGetMsgSrc(hApp), l_eStatus); // LCOV_EXCL_BR_LINE 15: marco defined in ss_system_manager.h // NOLINT(whitespace/line_length) - - // LCOV_EXCL_BR_START 4: nsfw error - if (eFrameworkunifiedStatusOK != (l_eStatus = FrameworkunifiedSendChild(hApp, m_hProcLauncherThread.m_ThreadHdl, - ePLThrdCmd_THREAD_STATUS_REQST, 0, NULL))) { - // LCOV_EXCL_BR_STOP 4: nsfw error - AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert - LOG_ERROR("FrameworkunifiedSendChild(m_hProcLauncherThread.m_ThreadHdl," // LCOV_EXCL_LINE 4: nsfw error - "ePLThrdCmd_THREAD_STATUS_REQST)"); // LCOV_EXCL_BR_LINE 15: marco defined in ss_templates.h // NOLINT(whitespace/line_length) - } else { - m_hProcLauncherThread.m_ThreadState = eSMWaitForHeartbeat; - } - - FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "-"); - return l_eStatus; -} - -/////////////////////////////////////////////////////////////////////////////// -/// \ingroup SendRequestToLauncher -/// This function is used for sending request to launcher thread from -/// System Manager. -/// -/// \param HANDLE hApp -/// ModuleLaunchListIter f_ModuleListIterator => iterator node from map for the module -/// ESMPLThreadCommandIds f_CommandId => command id to send -/// SS_String f_ModulePath => Path of the Module -/// -/// \return Status -/// EFrameworkunifiedStatus - success or error -/////////////////////////////////////////////////////////////////////////////// -EFrameworkunifiedStatus CSystemManager::PerformLaunchProcedure(HANDLE hApp, - ModuleLaunchListIter f_ModuleIterator, SS_String & f_stopCompName) { - EFrameworkunifiedStatus l_eStatus = eFrameworkunifiedStatusOK; - - SS_String s_ModuleStatus2; - - // Register for Stop Complete notification - if (!f_ModuleIterator->shutdown_critical) { - s_ModuleStatus2 = "is not shutdown_critical"; - // LCOV_EXCL_BR_START 6: For setting the initialization conditions at SystemManager startup - - } else if (eFrameworkunifiedStatusOK != (l_eStatus = - FrameworkunifiedSubscribeNotificationWithCallback( - hApp, - f_stopCompName.c_str(), - SysMgrCallback<CSystemManager, &CSystemManager::OnModuleStopCompleteNotification>))) { - // LCOV_EXCL_BR_STOP - // LCOV_EXCL_START 6: For setting the initialization conditions at SystemManager startup - AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert - FRAMEWORKUNIFIEDLOG(ZONE_ERR, __FUNCTION__, - " Error: FrameworkunifiedSubscribeNotificationWithCallback(hApp, %s) errored: %d/'%s'", - f_stopCompName.c_str(), l_eStatus, GetStr(l_eStatus).c_str()); - - s_ModuleStatus2 = "is shutdown_critical but errored"; - // LCOV_EXCL_STOP - } else { - s_ModuleStatus2 = f_stopCompName + " is now registered"; // LCOV_EXCL_BR_LINE 11:unexpected branch // NOLINT(whitespace/line_length) - } - - FRAMEWORKUNIFIEDLOG(ZONE_INFO, __FUNCTION__, "%s", s_ModuleStatus2.c_str()); - - return l_eStatus; -} - -/////////////////////////////////////////////////////////////////////////////// -/// \ingroup PerformTerminateProcedure -/// Perform Procedure for Service Terminate. -/// -/// \param HANDLE hApp -/// ModuleLaunchListIter f_ModuleListIterator => iterator node from map for the module -/// SS_String & f_availabilityName => Availability Name -/// SS_String & f_stopCompName => Stop Complete Notification Name -/// -/// \return Status -/// EFrameworkunifiedStatus - success or error -/////////////////////////////////////////////////////////////////////////////// -EFrameworkunifiedStatus CSystemManager::PerformTerminateProcedure(HANDLE hApp, - ModuleLaunchListIter f_ModuleIterator, SS_String & f_availabilityName, - SS_String & f_stopCompName) { - EFrameworkunifiedStatus l_eStatus = eFrameworkunifiedStatusOK; - - // close session - f_ModuleIterator->SetModuleState(MODULE_STATE_INVALID); - f_ModuleIterator->pid = 0; - if (NULL != f_ModuleIterator->hsession) { // LCOV_EXCL_BR_LINE 200:hsession must not be NULL. - l_eStatus = FrameworkunifiedMcClose(f_ModuleIterator->hsession); // LCOV_EXCL_BR_LINE 4: nsfw error - if (eFrameworkunifiedStatusOK != l_eStatus) { // LCOV_EXCL_BR_LINE 4: nsfw error - // LCOV_EXCL_START 4: nsfw error - AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert - FRAMEWORKUNIFIEDLOG(ZONE_ERR, __FUNCTION__, " Error: FrameworkunifiedMcClose(%s) errored: %d/'%s'", - f_ModuleIterator->name.c_str(), l_eStatus, GetStr(l_eStatus).c_str()); - // LCOV_EXCL_STOP - } - f_ModuleIterator->hsession = NULL; - } - - // Availability - if (f_ModuleIterator->is_start_required) { - // Initialize Availability - HANDLE pPublishMq = McOpenSender(FRAMEWORKUNIFIED_NS_NPSERVICE); // LCOV_EXCL_BR_LINE 4: nsfw error - if (NULL == pPublishMq) { // LCOV_EXCL_BR_LINE 4: nsfw error - AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert - SS_ASERT(0); // LCOV_EXCL_LINE 4: nsfw error - } else { - ServiceAvailability tServiceAvailability; - - snprintf(tServiceAvailability.cServiceName, MAX_NAME_SIZE_APP, "%s", - f_ModuleIterator->name.c_str()); - tServiceAvailability.eServiceAvailability = eFrameworkunifiedServiceNotAvailable; - - l_eStatus = NPPublishNotification(pPublishMq, f_ModuleIterator->name.c_str(), // LCOV_EXCL_BR_LINE 4: nsfw error - f_availabilityName.c_str(), &tServiceAvailability, // LCOV_EXCL_BR_LINE 4: nsfw error - sizeof(tServiceAvailability)); // LCOV_EXCL_BR_LINE 4: nsfw error - if (eFrameworkunifiedStatusOK != l_eStatus) { // LCOV_EXCL_BR_LINE 4: nsfw error - // LCOV_EXCL_START 4: nsfw error - AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert - FRAMEWORKUNIFIEDLOG(ZONE_ERR, __FUNCTION__, " Error: NPPublishNotification(%s)", - f_availabilityName.c_str()); - // LCOV_EXCL_STOP - } - - l_eStatus = McClose(pPublishMq); // LCOV_EXCL_BR_LINE 4: nsfw error - if (eFrameworkunifiedStatusOK != l_eStatus) { - // LCOV_EXCL_START 4: nsfw error - AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert - SS_ASERT(0); // LCOV_EXCL_BR_LINE 15: marco defined in ss_templates.h // NOLINT(whitespace/line_length) - // LCOV_EXCL_STOP - } - } - } - - if (f_ModuleIterator->shutdown_critical) { - // Unregister Stop Complete notification - if (eFrameworkunifiedStatusOK != (l_eStatus = FrameworkunifiedUnsubscribeNotificationWithCallback(hApp, f_stopCompName.c_str()))) { // LCOV_EXCL_BR_LINE 4: nsfw error // NOLINT(whitespace/line_length) - // LCOV_EXCL_START 4: nsfw error - AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert - FRAMEWORKUNIFIEDLOG(ZONE_ERR, __FUNCTION__, - " Error: FrameworkunifiedUnsubscribeNotificationWithCallback(hApp, %s) errored: %d/'%s'", - f_stopCompName.c_str(), l_eStatus, GetStr(l_eStatus).c_str()); - // LCOV_EXCL_STOP - } else { - SS_String s_ModuleStatus2 = f_stopCompName + " is now unregistered "; - FRAMEWORKUNIFIEDLOG(ZONE_INFO, __FUNCTION__, "%s", s_ModuleStatus2.c_str()); - } - } - - return l_eStatus; -} - -/////////////////////////////////////////////////////////////////////////////// -/// \ingroup SendRequestToLauncher -/// This function is used for sending request to launcher thread from -/// System Manager. -/// -/// \param HANDLE hApp -/// ModuleLaunchListIter f_ModuleListIterator => iterator node from map for the module -/// ESMPLThreadCommandIds f_CommandId => command id to send -/// SS_String f_ModulePath => Path of the Module -/// -/// \return Status -/// EFrameworkunifiedStatus - success or error -/////////////////////////////////////////////////////////////////////////////// -EFrameworkunifiedStatus CSystemManager::SendRequestToLauncher(HANDLE hApp, - ModuleLaunchListIter f_ModuleIterator, ESMPLThreadCommandIds f_CommandId, - SS_String f_CommandIdStr) { - EFrameworkunifiedStatus l_eStatus; - FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "+"); - SS_String l_ModulePath = m_BinaryFilesPath + f_ModuleIterator->path; - - T_ProcessLauncherLaunchReq l_ModuleLaunchReq = { }; - strcpy(l_ModuleLaunchReq.name, f_ModuleIterator->name.c_str()); // NOLINT - strcpy(l_ModuleLaunchReq.path, l_ModulePath.c_str()); // NOLINT - strncpy(l_ModuleLaunchReq.args, f_ModuleIterator->arguments.c_str(), // NOLINT - sizeof(l_ModuleLaunchReq.args) - 1); - strcpy(l_ModuleLaunchReq.logging_mask, // NOLINT - f_ModuleIterator->logging_msk_str.c_str()); - l_ModuleLaunchReq.priority = f_ModuleIterator->configuration_priority; - l_ModuleLaunchReq.cpu_assign = f_ModuleIterator->cpu_assign; - l_ModuleLaunchReq.groupIterator = m_MapProclaunchGrps.find( - f_ModuleIterator->group_id); - l_ModuleLaunchReq.moduleIterator = f_ModuleIterator; - - FRAMEWORKUNIFIEDLOG(ZONE_INFO, __FUNCTION__, - "Queue:%s, path:%s, args:%s, lmsk:%s, prio:%d, cmd:%s", l_ModuleLaunchReq.name, - l_ModuleLaunchReq.path, l_ModuleLaunchReq.args, l_ModuleLaunchReq.logging_mask, - l_ModuleLaunchReq.priority, f_CommandIdStr.c_str()); - - if (eFrameworkunifiedStatusOK != (l_eStatus = FrameworkunifiedSendChild(hApp, m_hProcLauncherThread.m_ThreadHdl, f_CommandId, sizeof(l_ModuleLaunchReq), reinterpret_cast<void *>(&l_ModuleLaunchReq)))) { // LCOV_EXCL_BR_LINE 4: Because an initialization condition is set at SystemManager startup and the branching condition cannot be satisfied // NOLINT(whitespace/line_length) - // LCOV_EXCL_START 4: Because an initialization condition is set at SystemManager startup and the branching condition cannot be satisfied - AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert - FRAMEWORKUNIFIEDLOG(ZONE_ERR, __FUNCTION__, - " Error: FrameworkunifiedSendChild( %s, %s ) errored: %d/'%s'", l_ModulePath.c_str(), - f_CommandIdStr.c_str(), l_eStatus, GetStr(l_eStatus).c_str()); - // LCOV_EXCL_STOP - } else { - SS_String l_availabilityName = f_ModuleIterator->name + "/Availability"; // LCOV_EXCL_BR_LINE 11:unexpected branch // NOLINT(whitespace/line_length) - SS_String l_stopCompName = f_ModuleIterator->name + "/StopComp"; // LCOV_EXCL_BR_LINE 11:unexpected branch // NOLINT(whitespace/line_length) - // Perform command-specific processing - switch (f_CommandId) { // LCOV_EXCL_BR_LINE 6: Because the case is fixed on the call from the SystemManager::Initialize - // LCOV_EXCL_START 6: Because the case is fixed on the call from the SystemManager::Initialize - case ePLThrdCmd_RELAUNCH_MODULE_REQST: - AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert - l_eStatus = PerformTerminateProcedure(hApp, f_ModuleIterator, - l_availabilityName, l_stopCompName); - if (eFrameworkunifiedStatusOK != l_eStatus) { - SS_ASERT(0); - } - - l_eStatus = PerformLaunchProcedure(hApp, f_ModuleIterator, l_stopCompName); - if (eFrameworkunifiedStatusOK != l_eStatus) { - SS_ASERT(0); - } - break; - // LCOV_EXCL_STOP - - case ePLThrdCmd_LAUNCH_MODULE_REQST: - l_eStatus = PerformLaunchProcedure(hApp, f_ModuleIterator, l_stopCompName); - if (eFrameworkunifiedStatusOK != l_eStatus) { // LCOV_EXCL_BR_LINE 6: For setting the initialization conditions at SystemManager startup - AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert - SS_ASERT(0); // LCOV_EXCL_LINE 6: For setting the initialization conditions at SystemManager startup - } - break; - - case ePLThrdCmd_TERMINATE_MODULE_REQST: - l_eStatus = PerformTerminateProcedure(hApp, f_ModuleIterator, - l_availabilityName, l_stopCompName); // LCOV_EXCL_BR_LINE 11:unexpected branch // NOLINT(whitespace/line_length) - if (eFrameworkunifiedStatusOK != l_eStatus) { - SS_ASERT(0); // LCOV_EXCL_BR_LINE 15: marco defined in ss_templates.h // NOLINT(whitespace/line_length) - } - break; - - // LCOV_EXCL_START 6: Because the case is fixed on the call from the SystemManager::Initialize - AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert - case ePLThrdCmd_LAUNCH_MODULE_RESP: - case ePLThrdCmd_MODULE_STATUS_REQST: - case ePLThrdCmd_RELAUNCH_MODULE_RESP: - case ePLThrdCmd_TERMINATE_MODULE_RESP: - case ePLThrdCmd_THREAD_STATUS_REQST: - case ePLThrdCmd_THREAD_STATUS_RESP: - case ePLThrdCmd_NONE: - break; - // default: Don't code a 'default' here - let the compiler - // issue a warning ( set via -Wall or -Wswitch ) when the set of - // enumerations changes - then the maintainer will - // automagically know to update this switch statement. - // LCOV_EXCL_STOP - } - } - - FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "-"); - return l_eStatus; -} // End of EFrameworkunifiedStatus CSystemManager::SendRequestToLauncher( - -/////////////////////////////////////////////////////////////////////////////// -/// \ingroup RemoveModuleEntryFromHB -/// This function is called to send module information to heart beat thread -/// which is to be removed from its list of services to be monitored. -/// -/// \param HANDLE hApp, -/// const CHAR *f_ModuleName => Module Name -/// -/// \return Status -/// EFrameworkunifiedStatus - success or error -/////////////////////////////////////////////////////////////////////////////// -EFrameworkunifiedStatus CSystemManager::RemoveModuleEntryFromHB(HANDLE hApp, const CHAR *f_ModuleName) { - EFrameworkunifiedStatus l_eStatus = eFrameworkunifiedStatusOK; - FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "+"); - - HBListIter l_HBIter = std::find(m_HBList.begin(), m_HBList.end(), f_ModuleName); - if (l_HBIter != m_HBList.end()) { - m_HBList.erase(l_HBIter); - } - - TSMRequestMessage l_ModuleDetails; - strncpy(l_ModuleDetails.pstModuleName, f_ModuleName, - sizeof(l_ModuleDetails.pstModuleName) - 1); - l_ModuleDetails.pstModuleName[sizeof(l_ModuleDetails.pstModuleName) - 1] = '\0'; - l_eStatus = SendRequestToHeartBeat(hApp, SS_HEARTBEAT_DELETE_MODULE_ENTRY, - &l_ModuleDetails, sizeof(TSMRequestMessage)); - - FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "-"); - return l_eStatus; -} -/////////////////////////////////////////////////////////////////////////////// -/// \ingroup OnHeartBeatThreadHeartbeatResponse -/// This function gets called when heart beat thread replies the -/// heart beat query sent by the System Manager. -/// \param [in] hApp -/// HANDLE - Handle of the Client Application -/// -/// \return Status -/// EFrameworkunifiedStatus - success or error -/////////////////////////////////////////////////////////////////////////////// -EFrameworkunifiedStatus CSystemManager::OnHeartBeatThreadHeartbeatResponse(HANDLE hApp) { - FRAMEWORKUNIFIEDLOG(ZONE_PERIODIC_INFO, __FUNCTION__, "HeartBeat HeartBeat Received"); - m_hHeartbeatThread.m_ThreadState = eSMThreadIsFine; - return eFrameworkunifiedStatusOK; -} - -/////////////////////////////////////////////////////////////////////////////// -/// \ingroup OnCheckAvailResponse -/// This function gets service's availability status from HBThread -/// \param [in] hApp -/// HANDLE - Handle of the Client Application -/// -/// \return Status -/// EFrameworkunifiedStatus - success or error -/////////////////////////////////////////////////////////////////////////////// -EFrameworkunifiedStatus CSystemManager::OnCheckAvailResponse(HANDLE hApp) { - EFrameworkunifiedStatus l_eStatus = eFrameworkunifiedStatusOK; - THbAvailCheck result; - - if (eFrameworkunifiedStatusOK != (l_eStatus = ReadMsg < THbAvailCheck > (hApp, result))) { - LOG_ERROR("ReadMsg()"); // LCOV_EXCL_BR_LINE 15: marco defined in ss_tempaltes.h // NOLINT(whitespace/line_length) - } else if (result.isOk == FALSE) { - } - return eFrameworkunifiedStatusOK; -} - -/////////////////////////////////////////////////////////////////////////////// -/// \ingroup OnProcessLauncherThreadHeartbeatResponse -/// This function gets called when launcher thread replies the -/// heart beat query sent by the System Manager. -/// \param [in] hApp -/// HANDLE - Handle of the Client Application -/// -/// \return Status -/// EFrameworkunifiedStatus - success or error -/////////////////////////////////////////////////////////////////////////////// -EFrameworkunifiedStatus CSystemManager::OnProcessLauncherThreadHeartbeatResponse(HANDLE hApp) { - FRAMEWORKUNIFIEDLOG(ZONE_PERIODIC_INFO, __FUNCTION__, "ProcessLaunch HeartBeat Received"); - m_hProcLauncherThread.m_ThreadState = eSMThreadIsFine; - return eFrameworkunifiedStatusOK; -} - -/////////////////////////////////////////////////////////////////////////////// -/// \ingroup RegisterCallbacksForRequester -/// Register callbacks for External Protocol commands -/// -/// \param [in] -/// -/// -/// \return EFrameworkunifiedStatus -/// Success ==> eFrameworkunifiedStatusOK -/// Failure ==> Other values -/////////////////////////////////////////////////////////////////////////////// -EFrameworkunifiedStatus CSystemManager::RegisterCallbacksForRequester(HANDLE hApp, PCSTR f_pRequester) { - EFrameworkunifiedStatus l_eStatus; - FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "+"); - - // Attach Session Protocol messages. - FrameworkunifiedProtocolCallbackHandler l_sm_protocol_handlers[] = { - // Command ID, Call back functions - { SS_SM_START_COMPL_RSPN, - SysMgrCallback<CSystemManager, &CSystemManager::OnModuleStartCompleteResponse> }, - { SS_SM_STOP_COMPL_RSPN, - SysMgrCallback<CSystemManager, &CSystemManager::OnModuleStopCompleteResponse> }, - { SS_SM_PRE_START_COMPL_RSPN, - SysMgrCallback<CSystemManager, &CSystemManager::OnModuleStartCompleteResponse> }, - { SS_SM_PRE_STOP_COMPL_RSPN, - SysMgrCallback<CSystemManager, &CSystemManager::OnModuleStartCompleteResponse> }, - { SS_SM_BACKGROUND_START_COMPL_RSPN, - SysMgrCallback<CSystemManager, &CSystemManager::OnModuleStartCompleteResponse> }, - { SS_SM_BACKGROUND_STOP_COMPL_RSPN, - SysMgrCallback<CSystemManager, &CSystemManager::OnModuleStartCompleteResponse> }, - { SS_SM_GET_START_EXT_INFO, SysMgrCallback<CSystemManager, - &CSystemManager::OnGetStartExtInfo> }, - { SS_SM_GET_STOP_EXT_INFO, SysMgrCallback<CSystemManager, - &CSystemManager::OnGetStopExtInfo> }, - { SS_SM_CRNT_STATE_QUERY, SysMgrCallback<CSystemManager, - &CSystemManager::OnCurrentSMStateQuery> }, - { SS_SM_DATA_RESET_MODE_SET_REQ, SysMgrCallback<CSystemManager, - &CSystemManager::OnSetDataResetModeRequest> }, - { SS_SM_PROG_UPDATE_STATE_SET_REQ, SysMgrCallback<CSystemManager, - &CSystemManager::OnSetProgUpdateStateRequest> }, - - { SS_SM__CWORD56__HEARTBEAT_REQ, SysMgrCallback<CSystemManager, - &CSystemManager::On_CWORD56_HeartBeatRequest> }, - { SS_SM_NEXT_WAKEUP_TYPE_SET_REQ, SysMgrCallback<CSystemManager, - &CSystemManager::OnSetNextWakeupTypeRequest> }, - // Error Event Logging - { SS_SM_ERROR_EVENT_LOGGING_START_REQ, SysMgrCallback<CSystemManager, - &CSystemManager::OnLoggingStartRequest> }, - { SS_SM_ERROR_EVENT_ARTIFACT_REQ, SysMgrCallback<CSystemManager, - &CSystemManager::OnErrorEventArtifactRequest> }, - { SS_SM_ERROR_EVENT_LOGGING_COMPLETE, SysMgrCallback<CSystemManager, - &CSystemManager::OnErrorEventLoggingComplete> }, - { SS_SM_DEBUG_DUMP_RSPN, SysMgrCallback<CSystemManager, - &CSystemManager::OnDebugDumpResponseReceived> }, - { SS_SM_PROPAGATE_SYSTEM_ERROR, SysMgrCallback<CSystemManager, - &CSystemManager::OnPropagateSystemError> }, - { SS_SM_BOOT_MICRO_RESET_NTF, SysMgrCallback<CSystemManager, - &CSystemManager::OnBootMicroResetNotification> }, - { SS_SM_BOOT_MICRO_LOG_RSP, SysMgrCallback<CSystemManager, - &CSystemManager::OnBootMicroLogResponse> }, - { SS_SM_USER_INVOKED_LOG_REQ, SysMgrCallback<CSystemManager, - &CSystemManager::OnUserInvokedLoggingRequest> }, - { SS_SM_ERROR_EVENT_EEL_EXPORT_REQ, SysMgrCallback<CSystemManager, - &CSystemManager::OnEelExportRequest> }, - { SS_SM_ERROR_EVENT_INTERFACEUNIFIED_EMMC_LOGS_REQ, SysMgrCallback<CSystemManager, - &CSystemManager::OnSystemmanagerEmmcLogsRequest> }, - { SS_SM_ERROR_EVENT_CLR_LOGS_REQ, SysMgrCallback<CSystemManager, - &CSystemManager::OnSystemmanagerClearLogsRequest> }, - { SS_SM_ERROR_EVENT_DIAG_LOG_REQ, SysMgrCallback<CSystemManager, - &CSystemManager::OnDiagLoggingRequest> }, - { SS_SM_ERROR_EVENT_CAN_LOG_REQ, SysMgrCallback<CSystemManager, - &CSystemManager::OnCANLoggingRequest> } }; // LCOV_EXCL_BR_LINE 11:unexpected branch // NOLINT(whitespace/line_length) - - l_eStatus = FrameworkunifiedAttachCallbacksToDispatcher(hApp, f_pRequester, - l_sm_protocol_handlers, static_cast<UI_32>(_countof(l_sm_protocol_handlers))); // LCOV_EXCL_BR_LINE 11:unexpected branch // NOLINT(whitespace/line_length) - - if (eFrameworkunifiedStatusOK != l_eStatus) { - FRAMEWORKUNIFIEDLOG(ZONE_ERR, __FUNCTION__, - " Error: FrameworkunifiedAttachCallbacksToDispatcher(%s) errored: %d/'%s'", f_pRequester, - l_eStatus, GetStr(l_eStatus).c_str()); - } - FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "-"); - return l_eStatus; -} // End of EFrameworkunifiedStatus CSystemManager::RegisterCallbacksForRequester( HANDLE hApp, PCSTR f_pRequester) - -/////////////////////////////////////////////////////////////////////////////// -/// \ingroup open_session_with_sm_test_client -/// Process request to open session with sm test client -/// -/// \param [in] -/// -/// -/// \return EFrameworkunifiedStatus -/// Success ==> eFrameworkunifiedStatusOK -/// Failure ==> Other values -/////////////////////////////////////////////////////////////////////////////// -EFrameworkunifiedStatus CSystemManager::open_session_with_sm_test_client(HANDLE hApp, PCSTR pRequester) { - EFrameworkunifiedStatus l_eStatus = eFrameworkunifiedStatusFail; - UI_32 const l_ui32DefaultSessionID = 0; - OpenSessionAck tOpenAck = { }; - -/* - * Here pRequester is SMTesteClient with whom session is opened and its handle is stored in m_hPowerServiceSession handle. - * This case comes only while testing SystemManager through SMTestClient (PowerService should not be running). - */ - // Validate session handle - if (NULL == m_hPowerServiceSession) { - FRAMEWORKUNIFIEDLOG(ZONE_ERR, __FUNCTION__, - " Error: Session Handle NULL, calling FrameworkunifiedMcOpenSender for %s", pRequester); - - m_hPowerServiceSession = FrameworkunifiedMcOpenSender(hApp, pRequester); - // - // Set the Session Handle for Framework so FrameworkunifiedSendResponse won't error due to a null - // session handle. - // - // LCOV_EXCL_BR_START 4:NSFW's error - if (eFrameworkunifiedStatusOK != (l_eStatus = FrameworkunifiedSetSessionHandle(hApp, - pRequester, // [in] PCSTR - Name of the associated service name - m_hPowerServiceSession))) { // [in] HANDLE - Session handle - // LCOV_EXCL_BR_STOP - // LCOV_EXCL_START 4:NSFW's error - AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert - FRAMEWORKUNIFIEDLOG(ZONE_ERR, __FUNCTION__, - " Error: FrameworkunifiedSetSessionHandle(%s) errored: %d/'%s'", pRequester, - l_eStatus, GetStr(l_eStatus).c_str()); - FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "-"); - return l_eStatus; - // LCOV_EXCL_STOP - } - } - - if (m_hPowerServiceSession == NULL) { // LCOV_EXCL_BR_LINE 200:m_hPowerServiceSession must not be NULL - // LCOV_EXCL_START 200:m_hPowerServiceSession must not be NULL - AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert - FRAMEWORKUNIFIEDLOG(ZONE_ERR, __FUNCTION__, - " Error: Invalid Session Handle to service (%s) ", pRequester); - // LCOV_EXCL_STOP - } else { - FRAMEWORKUNIFIEDLOG(ZONE_INFO, __FUNCTION__, "Session opened with %s", pRequester); - - // Copy session name to data structure - strncpy(tOpenAck.cSessionName, FrameworkunifiedGetAppName(hApp), - sizeof(tOpenAck.cSessionName) - 1); - tOpenAck.eStatus = eFrameworkunifiedStatusOK; - tOpenAck.sessionId = l_ui32DefaultSessionID; - - FRAMEWORKUNIFIEDLOG(ZONE_INFO, __FUNCTION__, "About to send Open Session ACK"); - // send OpenSession ACK - // LCOV_EXCL_BR_START 4:NSFW's error - if (eFrameworkunifiedStatusOK != (l_eStatus = FrameworkunifiedSendMsg(m_hPowerServiceSession, - PROTOCOL_OPEN_SESSION_ACK, sizeof(OpenSessionAck), - (PVOID) & tOpenAck))) { - // LCOV_EXCL_BR_STOP - // LCOV_EXCL_START 4:NSFW's error - AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert - LOG_ERROR("FrameworkunifiedSendMsg(PROTOCOL_OPEN_SESSION_ACK)"); - - // Close the message queue handle - if (NULL != m_hPowerServiceSession) { - CALL_AND_LOG_STATUS_IF_ERRORED(FrameworkunifiedMcClose(m_hPowerServiceSession)); - m_hPowerServiceSession = NULL; - } - // LCOV_EXCL_STOP - } else { - CALL_AND_LOG_STATUS_IF_ERRORED(RegisterCallbacksForRequester(hApp, pRequester)); - } - } // end of else block of if(l_ModuleListIterator->hsession == NULL) - - FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "-"); - return l_eStatus; -} - -/////////////////////////////////////////////////////////////////////////////// -/// \ingroup OnOpenSession -/// Process request to open session -/// -/// \param [in] -/// -/// -/// \return EFrameworkunifiedStatus -/// Success ==> eFrameworkunifiedStatusOK -/// Failure ==> Other values -/////////////////////////////////////////////////////////////////////////////// -EFrameworkunifiedStatus CSystemManager::OnOpenSession(HANDLE hApp) { - FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "+"); - INTERFACEUNIFIEDLOG_RECEIVED_FROM(hApp); // LCOV_EXCL_BR_LINE 15: marco defined in ss_templates.h // NOLINT(whitespace/line_length) - EFrameworkunifiedStatus l_eStatus = eFrameworkunifiedStatusOK; - UI_32 const l_ui32DefaultSessionID = 0; - UI_32 const l_ui32DefaultSessionType = 0; - OpenSessionAck tOpenAck = { }; - PCSTR pRequester = FrameworkunifiedGetMsgSrc(hApp); - FRAMEWORKUNIFIEDLOG(ZONE_PERFORMANCE, __FUNCTION__, "%s", pRequester); - - ModuleLaunchListIter l_ModuleListIter; - - REC_HIST_IF_SUCCESSFUL("PROTOCOL_OPEN_SESSION_REQ", m_SMCmdHist, m_SMHistIter, // LCOV_EXCL_BR_LINE 15: marco defined in ss_system_manager.h // NOLINT(whitespace/line_length) - FrameworkunifiedGetMsgSrc(hApp), l_eStatus); // LCOV_EXCL_BR_LINE 15: marco defined in ss_system_manager.h // NOLINT(whitespace/line_length) - - l_eStatus = GetModuleIterator(pRequester, l_ModuleListIter); - - if (eFrameworkunifiedStatusOK != l_eStatus) { - // Special handling for open session request from SMTestClient. - if ((0 == strcmp(TC_SysManager, pRequester))) { - open_session_with_sm_test_client(hApp, pRequester); - } else { - FRAMEWORKUNIFIEDLOG(ZONE_ERR, __FUNCTION__, " Error: %s not found in Group Launch Map", - pRequester); - } - } else { - /**********************************************************************/ - if (0 != l_ModuleListIter->pid) { - UI_32 l_ClientPriority; - l_eStatus = l_ModuleListIter->GetPriority(l_ClientPriority); - - if (eFrameworkunifiedStatusOK != l_eStatus) { - LOG_ERROR("l_ModuleListIter->GetPriority( l_ClientPriority )"); // LCOV_EXCL_BR_LINE 15: marco defined in ss_templates.h // NOLINT(whitespace/line_length) - } else if (l_ClientPriority != l_ModuleListIter->configuration_priority) { - FRAMEWORKUNIFIEDLOG(ZONE_WARN, __FUNCTION__, " Changing %s's priority from %d to %d", - pRequester, l_ClientPriority, - l_ModuleListIter->configuration_priority); - CALL_AND_LOG_STATUS_IF_ERRORED( // LCOV_EXCL_BR_LINE 15: marco defined in ss_templates.h // NOLINT(whitespace/line_length) - l_ModuleListIter->SetPriority( // LCOV_EXCL_BR_LINE 15: marco defined in ss_templates.h // NOLINT(whitespace/line_length) - l_ModuleListIter->configuration_priority)); // LCOV_EXCL_BR_LINE 15: marco defined in ss_templates.h // NOLINT(whitespace/line_length) - } - } - /**********************************************************************/ - - // ToDo Jay 2013 Jan 09 REPLACE WITH CORRECT SERVICE / SESSION HANDLE - // LOGIC - // validate session handle - if (NULL == l_ModuleListIter->hsession) { - // LCOV_EXCL_BR_START 4: nsfw error - if (NULL == (l_ModuleListIter->hsession = FrameworkunifiedMcOpenSender(hApp, pRequester))) { - // LCOV_EXCL_BR_STOP 4: nsfw error - // LCOV_EXCL_START 4: nsfw error - AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert - FRAMEWORKUNIFIEDLOG(ZONE_ERR, __FUNCTION__, - " Error: FrameworkunifiedMcOpenSender(App %s, %s) returned NULL", - FrameworkunifiedGetAppName(hApp), pRequester); - return eFrameworkunifiedStatusInvldHandle; - // LCOV_EXCL_STOP - } - } else { - /* - * Currently System Manager does not support multiple sessions from same client. - * When a client gets restarted after Crash or after missing HeartBeat, System Manager - * would receive OpenSession request from that client even when System Manager already - * has a open session with that client. - */ - FRAMEWORKUNIFIEDLOG(ZONE_WARN, __FUNCTION__, - " Warning: Repeated Session Opening Request from %s", pRequester); - } - if (eFrameworkunifiedStatusOK != (l_eStatus = RegisterCallbacksForRequester(hApp, pRequester))) { - // Close the message queue handle - if (NULL != l_ModuleListIter->hsession) { // LCOV_EXCL_BR_LINE 6: Due to NULL checking - if (eFrameworkunifiedStatusOK != (l_eStatus = FrameworkunifiedMcClose(l_ModuleListIter->hsession))) { - LOG_ERROR("FrameworkunifiedMcClose()"); // LCOV_EXCL_BR_LINE 11:unexpected branch // NOLINT(whitespace/line_length) - } - l_ModuleListIter->hsession = NULL; - } - FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "-"); - return l_eStatus; - } - - // Copy session name to data structure - strncpy(tOpenAck.cSessionName, FrameworkunifiedGetAppName(hApp), sizeof(tOpenAck.cSessionName) - 1); - tOpenAck.eStatus = eFrameworkunifiedStatusOK; - tOpenAck.sessionId = l_ui32DefaultSessionID; - tOpenAck.sessionType = l_ui32DefaultSessionType; - - // send OpenSession ACK - // LCOV_EXCL_BR_START 4: nsfw error - if (eFrameworkunifiedStatusOK - != (l_eStatus = FrameworkunifiedSendMsg(l_ModuleListIter->hsession, - SS_SM_PROTOCOL_OPEN_SESSION_ACK, sizeof(OpenSessionAck), - (PVOID) & tOpenAck))) { // LCOV_EXCL_BR_STOP - // LCOV_EXCL_START 4: nsfw error - AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert - FRAMEWORKUNIFIEDLOG(ZONE_ERR, __FUNCTION__, - " Error: FrameworkunifiedSendMsg( %s, SS_SM_PROTOCOL_OPEN_SESSION_ACK)" - " errored: %d/'%s'", l_ModuleListIter->name.c_str(), l_eStatus, - GetStr(l_eStatus).c_str()); - - if (NULL != l_ModuleListIter->hsession) { - // Close the message queue handle - if (eFrameworkunifiedStatusOK != (l_eStatus = FrameworkunifiedMcClose(l_ModuleListIter->hsession))) { - FRAMEWORKUNIFIEDLOG(ZONE_ERR, __FUNCTION__, - " Error: FrameworkunifiedMcClose(%s) errored: %d/'%s'", - l_ModuleListIter->name.c_str(), l_eStatus, - GetStr(l_eStatus).c_str()); - FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "-"); - } - l_ModuleListIter->hsession = NULL; - } - // LCOV_EXCL_STOP - } else { - // Store PowerService session handle in class so it can be accessed faster - // to use opened session while replying to PowerService. - if ((0 == strcmp(SERVICE_POWER, pRequester))) { - m_hPowerServiceSession = l_ModuleListIter->hsession; - } - - l_ModuleListIter->SetModuleState(MODULE_STATE_CONNECTED); - - FRAMEWORKUNIFIEDLOG(ZONE_INFO, __FUNCTION__, " SM State: %s, %s.is_start_required: %s", - GetStr(m_SMCurrentState).c_str(), l_ModuleListIter->name.c_str(), - GetStr(l_ModuleListIter->is_start_required).c_str()); - - if (l_ModuleListIter->is_start_required - && ((SS_SM_APPS_START_IN_PROGRESS == m_SMCurrentState) - || (SS_SM_APPS_START_COMPLETE == m_SMCurrentState))) { - T_SS_SM_START_DataStructType f_startupData(m_StartUpReason, - m_PowerType_to_SSBoolEnumMap[m_Wake.powerupType], m_DataResetMode, - m_startUpConfirmationMsg.securityStatus, - m_startUpConfirmationMsg.wakeupType, m_DramBackupStatus, - m_ResetStatus, m_ResetCount); - const UI_32 l_iCmd = InProgressStateToSendMsg(); - if (l_iCmd != SS_SYSTEM_MANAGER_PROTOCOL_ENDING_INDEX) { - CALL_AND_LOG_STATUS_IF_ERRORED(l_ModuleListIter->SendMsgAndUpdateState(l_iCmd, &f_startupData)); // LCOV_EXCL_BR_LINE 11: Gcov constraints (because exception-handling routes are automatically generated) // NOLINT(whitespace/line_length) - } - } - } - } - - if (eFrameworkunifiedStatusOK == l_eStatus) { - std::string l_Subscriber; - l_Subscriber = FrameworkunifiedGetMsgSrc(hApp); - - // check if the heart beat subscriber is already in list - HBListIter l_HBIter = std::find(m_HBList.begin(), m_HBList.end(), l_Subscriber); - if (l_HBIter == m_HBList.end()) { - m_HBList.push_back(l_Subscriber); - } - if (m_SMCurrentState == SS_SM_APPS_START_COMPLETE) { - TSMRequestMessage l_ModuleDetails; - snprintf(l_ModuleDetails.pstModuleName, sizeof(l_ModuleDetails.pstModuleName), - "%s", l_Subscriber.c_str()); - l_eStatus = SendRequestToHeartBeat(hApp, SS_HEARTBEAT_APPEND_MODULE_ENTRY, - &l_ModuleDetails, sizeof(TSMRequestMessage)); - LOG_ERROR_REC_HIST_IF_ERRORED(l_eStatus, "SendRequestToHeartBeat()"); // LCOV_EXCL_BR_LINE 15: marco defined in ss_templates.h // NOLINT(whitespace/line_length) - } - } - - FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "-"); - return l_eStatus; -} - -/////////////////////////////////////////////////////////////////////// -/// ConstructGetResultResponse -/// -/// -////////////////////////////////////////////////////////////////////// -EFrameworkunifiedStatus CSystemManager::add_state_information_to_response(CHAR *f_MessageResponse) const { - const CHAR ReadyToLaunchAppDescription[] = "_READY_TO_LAUNCH:"; - const CHAR StartInProgressDescription[] = "_START_IN_PROGRESS:"; - const CHAR LaunchInProgressDescription[] = "_LAUNCH_IN_PROGRESS:"; - const CHAR LaunchedReadyToStartDescription[] = "_READY_TO_START:"; - const CHAR StopInProgressDescription[] = "_STOP_IN_PROGRESS:"; - const CHAR StartCompleteDescription[] = "_START_COMPLETED:"; - const CHAR WaitingForCriticalAppsToStopDescription[] = "_WAITING_FOR_CRITICAL_APPS_TO_STOP:"; - const CHAR PreStartInProgressDescription[] = "_PRE_START_IN_PROGRESS:"; - const CHAR PreStopInProgressDescription[] = "_PRE_STOP_IN_PROGRESS:"; - const CHAR PreRunCompleteDescription[] = "_PRE_RUN_COMPLETE:"; - const CHAR BackgroundStartInProgressDescription[] = "_BACKGROUND_START_IN_PROGRESS:"; - const CHAR BackgroundStopInProgressDescription[] = "_BACKGROUND_STOP_IN_PROGRESS:"; - const CHAR BackgroundRunCompleteDescription[] = "_BACKGROUND_RUN_COMPLETE:"; - EFrameworkunifiedStatus eStatus = eFrameworkunifiedStatusOK; - FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "+"); - CHAR l_Buffer[5]; - UI_32 l_Index = 0; - - std::map<SS_SMModuleState, std::string> StateMap; // State Map - StateMap[SS_SM_READY_TO_LAUNCH_APP] = ReadyToLaunchAppDescription; - StateMap[SS_SM_APPS_LAUNCH_IN_PROGRESS] = LaunchInProgressDescription; - StateMap[SS_SM_APPS_LAUNCHED_READY_TO_START] = LaunchedReadyToStartDescription; - StateMap[SS_SM_APPS_START_IN_PROGRESS] = StartInProgressDescription; - StateMap[SS_SM_APPS_START_COMPLETE] = StartCompleteDescription; - StateMap[SS_SM_APPS_STOPPING_AT__CWORD56__REQ] = StopInProgressDescription; - StateMap[SS_SM_APPS_STOPPING_AT_INTERNAL_REQ] = StopInProgressDescription; - StateMap[SS_SM_WAITING_FOR_CRITICAL_APPS_AT_INTERNAL_REQ] = - WaitingForCriticalAppsToStopDescription; - StateMap[SS_SM_WAITING_FOR_CRITICAL_APPS_AT__CWORD56__REQ] = - WaitingForCriticalAppsToStopDescription; - StateMap[SS_SM_APPS_PRE_START_IN_PROGRESS] = PreStartInProgressDescription; - StateMap[SS_SM_APPS_PRE_STOP_IN_PROGRESS] = PreStopInProgressDescription; - StateMap[SS_SM_APPS_PRE_RUN_COMPLETE] = PreRunCompleteDescription; - StateMap[SS_SM_APPS_BACKGROUND_START_IN_PROGRESS] = BackgroundStartInProgressDescription; - StateMap[SS_SM_APPS_BACKGROUND_STOP_IN_PROGRESS] = BackgroundStopInProgressDescription; - StateMap[SS_SM_APPS_BACKGROUND_RUN_COMPLETE] = BackgroundRunCompleteDescription; - - itoa(m_SMCurrentState, l_Buffer, 16); - while (l_Buffer[l_Index]) { - l_Buffer[l_Index] = toupper(l_Buffer[l_Index]); - l_Index++; - } - - if (SS_SM_MAX_RESP_MSG_SIZE > (strlen(f_MessageResponse) + sizeof(l_Buffer) - + StateMap[m_SMCurrentState].length() + 1)) { - strncat(f_MessageResponse, l_Buffer, sizeof(l_Buffer)); - strncat(f_MessageResponse, StateMap[m_SMCurrentState].c_str(), - StateMap[m_SMCurrentState].length()); - } else { - eStatus = eFrameworkunifiedStatusFail; - } - - FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "-"); - return eStatus; -} - -/////////////////////////////////////////////////////////////////////// -/// ConstructGetResultResponse -/// -/// -////////////////////////////////////////////////////////////////////// -EFrameworkunifiedStatus CSystemManager::construct_get_result_response(CHAR *f_MessageResponse) { - FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "+"); - const EFrameworkunifiedStatus eStatus = add_state_information_to_response(f_MessageResponse); - if (eFrameworkunifiedStatusOK == eStatus) { - FRAMEWORKUNIFIEDLOG(ZONE_INFO, __FUNCTION__, "Response Constructed"); - } - - FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "-"); - return eStatus; -} - -/////////////////////////////////////////////////////////////////////// -/// REC_HIST_IF_SUCCESSFUL / SetCmdHist -/// -/// -////////////////////////////////////////////////////////////////////// -void CSystemManager::SetCmdHist(std::string cmd, cmdHist &hist, cmdHistIter &it, std::string sender) { - UI_64 l_time = 0XDEAD; - CTimeSpan* timerClass = new (std::nothrow) CTimeSpan(); // LCOV_EXCL_BR_LINE 5: Because new cannot fail - if (NULL == timerClass) { // LCOV_EXCL_BR_LINE 5: Because new cannot fail - // LCOV_EXCL_START 5: Because new cannot fail - AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert - FRAMEWORKUNIFIEDLOG(ZONE_ERR, __FUNCTION__, - " 'new (std::nothrow) CTimeSpan()' returned NULL, " - "'it->m_time' being set to 0xDEAD"); - // LCOV_EXCL_STOP - } else { - l_time = timerClass->GetTimeMilliseconds(); - } - - pthread_mutex_lock(&sm_hist_mutex); - - it->m_time = l_time; - it->m_cmd = cmd; - it->m_sender = sender; - it++; - - if (it != hist.end()) { // LCOV_EXCL_BR_LINE 5: std: because it is a member of a vector and it is difficult to create a failing condition - it = hist.begin(); - } - - pthread_mutex_unlock(&sm_hist_mutex); - - delete timerClass; // LCOV_EXCL_BR_LINE 5: Because the delete cannot fail -} - -/////////////////////////////////////////////////////////////////////// -/// OnCurrentPowerStateQuery -/// -/// -////////////////////////////////////////////////////////////////////// -EFrameworkunifiedStatus CSystemManager::OnCurrentSMStateQuery(HANDLE hApp) { - EFrameworkunifiedStatus l_eStatus = eFrameworkunifiedStatusOK; - FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "+"); - INTERFACEUNIFIEDLOG_RECEIVED_FROM(hApp); - FRAMEWORKUNIFIEDLOG(ZONE_STATE, __FUNCTION__, "Received from %s", FrameworkunifiedGetMsgSrc(hApp)); - - SS_SMCurrentState l_CurrentState; - - REC_HIST_IF_SUCCESSFUL("SS_SM_CRNT_STATE_QUERY", m_SMCmdHist, m_SMHistIter, - FrameworkunifiedGetMsgSrc(hApp), l_eStatus); - if (eFrameworkunifiedStatusOK != (l_eStatus = ReadMsg < SS_SMCurrentState > (hApp, l_CurrentState))) { - LOG_ERROR("ReadMsg()"); // LCOV_EXCL_BR_LINE 11:unexpected branch // NOLINT(whitespace/line_length) - } else { - construct_get_result_response(l_CurrentState.respMsgString); - - ModuleLaunchListIter l_ModuleListIter; - PCSTR l_moduleName = FrameworkunifiedGetMsgSrc(hApp); - if (eFrameworkunifiedStatusOK != (l_eStatus = GetModuleIterator(l_moduleName, l_ModuleListIter))) { // LCOV_EXCL_BR_LINE 200: can not be other value // NOLINT (whitespace/line_length) - // LCOV_EXCL_START 200: can not be other value - AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert - FRAMEWORKUNIFIEDLOG(ZONE_ERR, __FUNCTION__, - " Error: Module %s not found in Group Launch Map", l_moduleName); - // LCOV_EXCL_STOP - } else if (l_ModuleListIter->hsession != NULL) { // LCOV_EXCL_BR_LINE 200: can not be NULL // NOLINT (whitespace/line_length) - if (eFrameworkunifiedStatusOK != (l_eStatus = FrameworkunifiedSendMsg(l_ModuleListIter->hsession, // LCOV_EXCL_BR_LINE 4: nsfw error - SS_SM_CRNT_STATE_QUERY_RSPN, sizeof(SS_SMCurrentState), - (PVOID) & l_CurrentState))) { - AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert - LOG_ERROR("FrameworkunifiedSendMsg(SS_SM_CRNT_STATE_QUERY_RSPN)"); // LCOV_EXCL_LINE 4: nsfw error - } - } else { - // LCOV_EXCL_START 200: can not be NUL - AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert - FRAMEWORKUNIFIEDLOG(ZONE_ERR, __FUNCTION__, " NULL == hsession; %s not connected yet", - l_ModuleListIter->name.c_str()); - // LCOV_EXCL_STOP - } - } - - FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "-"); - return l_eStatus; -} - -EFrameworkunifiedStatus CSystemManager::GetVersionNumber(SS_VersionNumberType & f_VersionNumber) { - FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "+"); - EFrameworkunifiedStatus l_eStatus; - - CSMVersion cVersion; - if (eFrameworkunifiedStatusOK != (l_eStatus = cVersion.get_version(f_VersionNumber))) { // LCOV_EXCL_BR_LINE 6: For setting the initialization conditions at SystemManager startup // NOLINT(whitespace/line_length) - LOG_ERROR("cVersion.get_version()"); // LCOV_EXCL_BR_LINE 6: For setting the initialization conditions at SystemManager startup // NOLINT(whitespace/line_length) - } - FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "-"); - return l_eStatus; -} // End of EFrameworkunifiedStatus CSystemManager::GetVersionNumber( SS_VersionNumberType - -EFrameworkunifiedStatus CSystemManager::GetBuildInfo(std::string &f_BuildInfoStr) { - FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "+"); - EFrameworkunifiedStatus l_eStatus; - - CSMVersion cVersion; - if (eFrameworkunifiedStatusOK != (l_eStatus = cVersion.get_build_info(f_BuildInfoStr))) { // LCOV_EXCL_BR_LINE 6: For setting the initialization conditions at SystemManager startup // NOLINT(whitespace/line_length) - LOG_ERROR("cVersion.get_build_info()"); // LCOV_EXCL_BR_LINE 6:For setting the initialization conditions at SystemManager startup // NOLINT(whitespace/line_length) - } - FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "-"); - return l_eStatus; -} // End of EFrameworkunifiedStatus CSystemManager::GetBuildInfo(std::string) - -bool CSystemManager::GetDramPowerStatusInfo(const HANDLE h_app) { - PsmDramStsT l_dram_sts = PSM_DRAM_STS_NORMAL; - bool ret = false; - - // Checking dram power status. - if (PsmGetDramPowerSupplyAbnormalityCheckResultPower(h_app, &l_dram_sts)) - return ret; - - if (l_dram_sts == PSM_DRAM_STS_NORMAL) - ret = true; - - return ret; -} - -bool CSystemManager::GetDramStoreStatusInfo(const HANDLE h_app) { - PsmSysupDramT l_dram1 = PSM_SYSUP_DRAM_NORMAL; - PsmSysupDramT l_dram2 = PSM_SYSUP_DRAM_NORMAL; - PsmSysupDramT l_dram3 = PSM_SYSUP_DRAM_NORMAL; - PsmStartStatusT l_sts = PSM_START_STATUS_FACTRESET; - - bool ret = false; - - // Checking factory shipment status - if (PsmGetStartStatusPower(h_app, &l_sts)) - return ret; - - if (l_sts == PSM_START_STATUS_FACTRESET) { - ret = true; - goto finish; - } - - // Checking dram power - if (!GetDramPowerStatusInfo(h_app)) - goto finish; - - // Checking dram status. - if (PsmGetDramBackupStatusPower(h_app, &l_dram1, &l_dram2, &l_dram3)) - goto finish; - - // l_dram2 and l_dram3 would be ignored. - if (l_dram1 == PSM_SYSUP_DRAM_NORMAL) - ret = true; - - if (l_dram2 == PSM_SYSUP_DRAM_SFTERRSR) - ret = true; - -finish: - return ret; -} - -bool CSystemManager::GetSyscomPowerStatusInfo(const HANDLE h_app) { - PsmComStsT l_syscom_sts = PSM_COM_STS_NORMAL; - bool ret = false; - - if (PsmGetSyscomStatusPower(h_app, &l_syscom_sts)) - return ret; - - if (l_syscom_sts == PSM_COM_STS_NORMAL) - ret = true; - - return ret; -} - -EFrameworkunifiedStatus CSystemManager::OnSetStartupConfirmationDataRequest(HANDLE hApp) { - FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "+"); - INTERFACEUNIFIEDLOG_RECEIVED_FROM(hApp); // LCOV_EXCL_BR_LINE 15: marco defined in ss_templates.h // NOLINT(whitespace/line_length) - FRAMEWORKUNIFIEDLOG(ZONE_PERFORMANCE, __FUNCTION__, "from %s", FrameworkunifiedGetMsgSrc(hApp)); - EFrameworkunifiedStatus l_eStatus; - Pwr_ServiceSetInterface tServiceSetIf; - // ReadMsg(): * - // Check hApp ptr, msg size, msg reception, read msg if all ok. * - // Report any errors found. * - // * - if (eFrameworkunifiedStatusOK - != (l_eStatus = ReadMsg < Pwr_ServiceSetInterface > (hApp, tServiceSetIf))) { // LCOV_EXCL_BR_LINE 4:NSFW's error - // LCOV_EXCL_START 4:NSFW's error - AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert - LOG_ERROR("ReadMsg()"); // LCOV_EXCL_BR_LINE 15: marco defined in ss_templates.h // NOLINT(whitespace/line_length) - // LCOV_EXCL_STOP - } else { - m_startUpConfirmationMsg = tServiceSetIf.data.startupConfirmationMsg; - FRAMEWORKUNIFIEDLOG(ZONE_INFO, __FUNCTION__, " %s Startup Confirmation data:", FrameworkunifiedGetMsgSrc(hApp)); - SYSTEMMANAGERLOG_StartupConfirmationMsg(m_startUpConfirmationMsg); // LCOV_EXCL_BR_LINE 15: marco defined in ns_logger_if.h // NOLINT(whitespace/line_length) - DGCODE_RET_API l_ret = DGCODE_RET_ERROR; - - l_ret = Diag_StartupAllStatusOfDTC(); - if (l_ret == DGCODE_RET_ERROR) { - LOG_ERROR("Diag_StartupAllStatusOfDTC()"); // LCOV_EXCL_BR_LINE 15: marco defined in ss_templates.h // NOLINT(whitespace/line_length) - } - - if ((e_SS_SM_NEXT_WAKEUP_TYPE_COLD == m_NextWakeupType) && (epsstCOLDSTART != m_startUpConfirmationMsg.wakeupType)) { // LCOV_EXCL_BR_LINE 6: Because the above formula cannot be set to true // NOLINT(whitespace/line_length) - // LCOV_EXCL_START 6: Because the condition cannot be set - AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert - FRAMEWORKUNIFIEDLOG(ZONE_STATE, __FUNCTION__, "WakeupType Change to Cold by Svc Request"); - m_startUpConfirmationMsg.wakeupType = epsstCOLDSTART; - // LCOV_EXCL_STOP - } - - m_ResetStatus = ((m_isIlgReset == TRUE) ? - e_SS_SM_RESET_STATUS_NG : - ((m_isImmediateReset == TRUE) ? - e_SS_SM_RESET_STATUS_IMMEDIATE : e_SS_SM_RESET_STATUS_NONE)); - if (e_SS_SM_RESET_STATUS_NG == m_ResetStatus) { - FRAMEWORKUNIFIEDLOG(ZONE_ERR, __PRETTY_FUNCTION__, - "ResetStatus NG illRst:%s lastErr:Not Support", - m_isIlgReset ? "TRUE" : "FALSE"); - m_ResetCount++; - if (PowerHalSetResetInfo(AGL_RESET_COUNTER, m_ResetCount)) { - FRAMEWORKUNIFIEDLOG(ZONE_ERR, __FUNCTION__, - "Could not back up m_ResetCount(%lu) to power_hal", m_ResetCount); - } - } - - m_DramBackupStatus = - ((epsstWARMSTART != m_startUpConfirmationMsg.wakeupType) - || (e_SS_SM_DATA_RESET_MODE_FACTORY == m_DataResetMode) - || (GetDramStoreStatusInfo(hApp) == false)) ? - e_SS_SM_DRAM_BACKUP_NG : e_SS_SM_DRAM_BACKUP_OK; - - if (e_SS_SM_DRAM_BACKUP_NG == m_DramBackupStatus) { - FRAMEWORKUNIFIEDLOG(ZONE_ERR, __PRETTY_FUNCTION__, - "DramBackup NG wakeupType:%s dataResetMode:%s", - (epsstWARMSTART == m_startUpConfirmationMsg.wakeupType) ? - "WARM" : "COLD", - (e_SS_SM_DATA_RESET_MODE_FACTORY == m_DataResetMode) ? - "FACTORY" : "NotFactory"); - } - - if (m_needReNotifyStartPrm) { // LCOV_EXCL_BR_LINE 6: Because the condition cannot be satisfied from the external API - // LCOV_EXCL_BR_START 6: Because both sides are not FALSE - if (e_SS_SM_DRAM_BACKUP_NG == m_DramBackupStatus) { - // LCOV_EXCL_BR_STOP - m_DramBackupStatus = e_SS_SM_DRAM_BACKUP_NG; - } - } - - if (m_needReNotifyStartPrm) { // LCOV_EXCL_BR_LINE 6: Because the condition cannot be satisfied from the external API - if (e_SS_SM_RESET_STATUS_NG == m_ResetStatus) { - // do nothing, keep m_ResetStatus. - } else if (e_SS_SM_RESET_STATUS_IMMEDIATE == m_ResetStatus) { - // do nothing, keep m_ResetStatus. - } else { - m_ResetStatus = e_SS_SM_RESET_STATUS_NONE; - } - - if (epsstWARMSTART != m_startUpConfirmationMsg.wakeupType) { // LCOV_EXCL_BR_LINE 6: Because the above condition cannot be satisfied // NOLINT(whitespace/line_length) - m_startUpConfirmationMsg.wakeupType = epsstCOLDSTART; - } - } - - CALL_AND_LOG_STATUS(ClearDramBackupInfo(hApp)); // LCOV_EXCL_BR_LINE 15: marco defined in ss_templates.h // NOLINT(whitespace/line_length) - - FRAMEWORKUNIFIEDLOG(ZONE_STATE, __FUNCTION__, "\n" - "start prm\n" - "dramBackupStatus = %s\n" - "wakeupType = %s\n" - "dataResetMode = %s\n" - "resetStatus = %s\n" - "resetCount = %d\n" - "progUpdateState = %d", - (m_DramBackupStatus == e_SS_SM_DRAM_BACKUP_OK) ? "OK" : "NG", - (m_startUpConfirmationMsg.wakeupType == epsstWARMSTART) ? "WARM" : "COLD", - (m_DataResetMode == e_SS_SM_DATA_RESET_MODE_FACTORY) ? "FACT" : - (m_DataResetMode == e_SS_SM_DATA_RESET_MODE_USER) ? "USER" : - (m_DataResetMode == e_SS_SM_DATA_RESET_MODE_PROGUPDATE) ? "PROG" : "NONE", - (m_ResetStatus == e_SS_SM_RESET_STATUS_IMMEDIATE) ? "IMM" : - (m_ResetStatus == e_SS_SM_RESET_STATUS_NONE) ? "NONE" : "NG", m_ResetCount, - m_ProgUpdateState); - - if (eFrameworkunifiedStatusOK != (l_eStatus = FrameworkunifiedNPPublishNotification(hApp, NTFY_SSSystemMgrStartUpType, &m_startUpConfirmationMsg.wakeupType, sizeof(EPWR_SC_WAKEUP_TYPE)))) { // LCOV_EXCL_BR_LINE 4:NSFW error case //NOLINT (whitespace/line_length) - // LCOV_EXCL_START 4: nsfw error - AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert - FRAMEWORKUNIFIEDLOG(ZONE_ERR, __FUNCTION__, - " Error: FrameworkunifiedNPPublishNotification(%s, %s) errored: %d/'%s'", - NTFY_SSSystemMgrStartUpType, - GetStr(m_startUpConfirmationMsg.wakeupType).c_str(), l_eStatus, - GetStr(l_eStatus).c_str()); - // LCOV_EXCL_STOP - } else { - FRAMEWORKUNIFIEDLOG(ZONE_INFO, __FUNCTION__, " FrameworkunifiedNPPublishNotification(%s, %s) successful", - NTFY_SSSystemMgrStartUpType, - GetStr(m_startUpConfirmationMsg.wakeupType).c_str()); - - // LCOV_EXCL_BR_START 200: As there are no cases other than eFrameworkunifiedStatusOK - REC_HIST_IF_SUCCESSFUL("SM/StartUpType", - m_PubCmdHist, m_PubHistIter, "", l_eStatus); - // LCOV_EXCL_BR_STOP - } - } - - EFrameworkunifiedStatus l_responseStatus = l_eStatus; - - ModuleLaunchListIter l_ModuleListIter; - PCSTR l_moduleName = FrameworkunifiedGetMsgSrc(hApp); - if (eFrameworkunifiedStatusOK != (l_eStatus = GetModuleIterator(l_moduleName, l_ModuleListIter))) { - FRAMEWORKUNIFIEDLOG(ZONE_ERR, __FUNCTION__, - " Error: Module %s not found in Group Launch Map", l_moduleName); - } else if (l_ModuleListIter->hsession != NULL) { - if (eFrameworkunifiedStatusOK != (l_eStatus = FrameworkunifiedSendMsg(l_ModuleListIter->hsession, // LCOV_EXCL_BR_LINE 4:NSFW's error - SS_SM_FWD_START_CONFIRMATION_MSG_RESP, sizeof(EFrameworkunifiedStatus), - (PVOID) & l_responseStatus))) { - // LCOV_EXCL_START 4:NSFW's error - AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert - LOG_ERROR("FrameworkunifiedSendMsg(SS_SM_FWD_START_CONFIRMATION_MSG_RESP)"); // LCOV_EXCL_BR_LINE 15: marco defined in ss_templates.h // NOLINT(whitespace/line_length) - // LCOV_EXCL_STOP - } - } else { - FRAMEWORKUNIFIEDLOG(ZONE_ERR, __FUNCTION__, " NULL == hsession; %s not connected yet", l_ModuleListIter->name.c_str()); - } - FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "-"); - return l_eStatus; -} // End of EFrameworkunifiedStatus CSystemManager::OnSetStartupConfirmationDataRequest( HANDLE hApp ) - -EFrameworkunifiedStatus CSystemManager::GetTimeStamp(std::string& TimeStamp) { - FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "+"); - EFrameworkunifiedStatus l_eStatus = eFrameworkunifiedStatusOK; - - CHAR format[256] = { '\0' }; - CHAR l_format[256] = { '\0' }; - struct timeb timebuf; - uint32_t time; - uint8_t status; - struct tm theTime; - ftime(&timebuf); - Clock_getSystemTimeY2K38(&time, &status); - CLOCK_RETURN clock_ret = Clock_CnvSecToDateY2K38(&time, &theTime); - - if (CLOCK_OK != clock_ret) { - return eFrameworkunifiedStatusNullPointer; - } - - sprintf(l_format, "GMT Time,%04d-%02d-%02d %02d:%02d:%02d.%hu\n", // NOLINT - theTime.tm_year + 1900, theTime.tm_mon + 1, theTime.tm_mday, - theTime.tm_hour, theTime.tm_min, theTime.tm_sec, timebuf.millitm); - - struct timespec timeSpec; - - if (0 != clock_gettime(CLOCK_MONOTONIC, &timeSpec)) { - SS_ASERT_ERRNO(0); // LCOV_EXCL_BR_LINE 15: marco defined in ss_templates.h // NOLINT(whitespace/line_length) - } else { - time_t timeInSecs = timeSpec.tv_sec; - sprintf(format, "Elaps Time,%ld:%02ld:%02ld\n", (timeInSecs / 3600), // NOLINT - ((timeInSecs % 3600) / 60), (timeInSecs % 60)); - } - - TimeStamp.clear(); - TimeStamp.assign(format); - TimeStamp.append(l_format); - - FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "-"); - return l_eStatus; -} - -VOID CSystemManager::SYSTEMMANAGERLOG_StartupConfirmationMsg(EPWR_SC_MSG_STRUCT & f_scMsg) { - std::stringstream l_enumStr; - l_enumStr << endl; - l_enumStr << " HostProcSoftVer:" << hex << std::setw(16) << std::setfill('0') - << m_VersionNumberStruct.m_VersionNumber << endl; - l_enumStr << " _CWORD56_ Boot Mode:" << GetStr(f_scMsg._CWORD56_BootMode) << endl; // LCOV_EXCL_BR_LINE 11:unexpected branch // NOLINT(whitespace/line_length) - l_enumStr << " wakeupType :" << GetStr(f_scMsg.wakeupType); // LCOV_EXCL_BR_LINE 11:unexpected branch // NOLINT(whitespace/line_length) - - FRAMEWORKUNIFIEDLOG(ZONE_STATE, __FUNCTION__, "%s", l_enumStr.str().c_str()); -} // End of VOID CSystemManager::SYSTEMMANAGERLOG_StartupConfirmationMsg( EPWR_SC_MSG_STRUCT & f_scMsg ) - -VOID CSystemManager::LogESystemmanagerStatusEnums() { - #define INITIAL_INDEX eFrameworkunifiedStatusEmptyMediaList - #define FINAL_INDEX eFrameworkunifiedStatusErrNoEINTR - - FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "+"); - std::stringstream l_enumStr; - for (int i = INITIAL_INDEX; i <= FINAL_INDEX; i++) { - // LCOV_EXCL_BR_START 11:unexpected branch // NOLINT(whitespace/line_length) - l_enumStr << "\n" << "0x" << std::setfill('0') << std::setw(8) << hex << i - << "/" << std::setfill(' ') << std::setw(2) << dec << i << ": " - << GetStr(static_cast<EFrameworkunifiedStatus>(i)); - // LCOV_EXCL_BR_STOP - } - - std::string l_logMsg = l_enumStr.str(); - SystemmanagerLogString(ZONE_INFO, __FUNCTION__, l_logMsg); // LCOV_EXCL_BR_LINE 11:unexpected branch // NOLINT(whitespace/line_length) - FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "-"); - -#undef INITIAL_INDEX -#undef FINAL_INDEX -} // End of VOID CSystemManager::LogESystemmanagerStatusEnums() - -VOID CSystemManager::LogProtocolIDs() { -#define INITIAL_INDEX SS_SYSTEM_MANAGER_PROTOCOL_BEGINNING_INDEX -#define FINAL_INDEX SS_SYSTEM_MANAGER_PROTOCOL_ENDING_INDEX - - FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "+"); - std::stringstream l_enumStr; - for (int i = INITIAL_INDEX; i <= FINAL_INDEX; i++) { - // LCOV_EXCL_BR_START 11:unexpected branch // NOLINT(whitespace/line_length) - l_enumStr << "\n" << "0x" << std::setfill('0') << std::setw(8) << hex << i - << "/" << std::setfill(' ') << std::setw(2) << dec << i << ": " - << GetStr(static_cast<SS_SystemManagerProtocol>(i)); - // LCOV_EXCL_BR_STOP - } - - std::string l_logMsg = l_enumStr.str(); - SystemmanagerLogString(ZONE_INFO, __FUNCTION__, l_logMsg); // LCOV_EXCL_BR_LINE 11:unexpected branch // NOLINT(whitespace/line_length) - FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "-"); - -#undef INITIAL_INDEX -#undef FINAL_INDEX -} // End of VOID CSystemManager::LogProtocolIDs() - -VOID CSystemManager::SystemmanagerLogString(TFrameworkunifiedZone f_zone, PCSTR f_func, std::string &f_text) { - FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "+"); - UI_32 l_offset = 0; - UI_32 l_msgLenMax = MAX_QUEUE_MSG_SIZE - 512; // Leave space for the appending of - // the NSLog date/time/service/line string. - - if (f_text.at(f_text.length() - 1) == '\n') { // LCOV_EXCL_BR_LINE 6: For setting the initialization conditions at SystemManager startup - AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert - f_text.erase(f_text.length() - 1); // LCOV_EXCL_LINE 6: For setting the initialization conditions at SystemManager startup - } - - while (l_offset < f_text.size()) { - UI_32 l_charsRem = static_cast<UI_32>(f_text.size() - l_offset); - UI_32 l_msgLen = (l_charsRem > l_msgLenMax) ? // LCOV_EXCL_BR_LINE 6: For setting the initialization conditions at SystemManager startup - l_msgLenMax : l_charsRem; // LCOV_EXCL_BR_LINE 6: For setting the initialization conditions at SystemManager startup - std::string l_msgStr = f_text.substr(l_offset, l_msgLen); - size_t l_newLinePos = l_msgStr.find_last_of("\n", l_msgLen); - if ((l_newLinePos != std::string::npos) && (l_charsRem > l_msgLenMax)) { // LCOV_EXCL_BR_LINE 6: For setting the initialization conditions at SystemManager startup // NOLINT(whitespace/line_length) - // LCOV_EXCL_START 6: For setting the initialization conditions at SystemManager startup - AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert - l_msgStr = f_text.substr(l_offset, l_newLinePos); - l_offset += static_cast<UI_32>(l_newLinePos); - // LCOV_EXCL_STOP - } else { - l_offset += l_msgLen; - } - - FRAMEWORKUNIFIEDLOG(f_zone, f_func, l_msgStr.c_str()); - } - FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "-"); -} // LCOV_EXCL_BR_LINE 10: Final line - -// End of /SS_SystemManager/src/ss_system_manager.cpp |