Re-organized sub-directory by category
[staging/basesystem.git] / service / system / interface_unified / library / include / system_service / ss_power_service.h
diff --git a/service/system/interface_unified/library/include/system_service/ss_power_service.h b/service/system/interface_unified/library/include/system_service/ss_power_service.h
new file mode 100755 (executable)
index 0000000..15ba033
--- /dev/null
@@ -0,0 +1,535 @@
+/*
+ * @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.
+ */
+
+/**
+ * @file ss_power_service.h
+ * @brief \~english This file supports the Power Service interface.
+ */
+/** @addtogroup BaseSystem
+ *  @{
+ */
+/** @addtogroup system_service
+ *  @ingroup BaseSystem
+ *  @{
+ */
+/** @addtogroup power_service
+ *  @ingroup system_service
+ *  @{
+ */
+#ifndef SS_POWER_SERVICE_H_  // NOLINT (build/header_guard)
+#define SS_POWER_SERVICE_H_
+
+#include <native_service/frameworkunified_types.h>
+#include <map>
+#include "system_service/ss_system_types.h"
+
+
+
+typedef enum _PwLevelTypes {
+  epspltUNKNOWN,
+  epspltWAKEUP = 0x99,
+  epspltNORMAL,
+  epspltSHUTDOWN,
+  epspltEMERGENCY,
+} PowerSrvLevelType, EPWR_LEVEL_TYPE;
+
+
+typedef enum {
+  epsstUNKNOWN,
+  epsstBASIC,
+  epsstSUPERVISOR,
+  epsstSYSTEM,
+} PowerSrvSessionType, EPWR_SESSION_TYPE;
+
+
+typedef enum {
+  epscnINVALID     = 0xFF,
+  epscnCANWAKEUP   = 0x07,  //< All modules up with Display Off and Audio Muted
+  epscnCANSLEEP    = 0x08,  //< Communication and all modules shut down
+} ePowerSrvCANStates, EPWR_CAN_STATE_TYPE;
+
+
+
+// Not in use for PastModel003*1. Can be used for Platform
+typedef enum {
+  epswlINVALID     = 0xFF,
+  epswlFULLRUN     = 0x0A,  //< Normal ignition on and full wakeup
+  epswlLOCALWAKEUP = 0x0B,  //< Only certain modules are up.
+} ePowerSrvWakeupLevels, EPWR_WAKEUP_LEVEL_TYPE;
+
+typedef EPWR_WAKEUP_LEVEL_TYPE * PEPWR_WAKEUP_LEVEL_TYPE;
+
+typedef enum {
+  epswsINVALID     = 0xFF,
+  epswsPWRON       = 0x00,  //< Enable Display and Audio
+  epswsPWROFF      = 0x01,  //< Disable Audio and HMI
+} ePowerSrvPowerStates, EPWR_POWER_STATE_TYPE;
+
+
+typedef enum {
+  epsvsINVALID    = 0xFF,
+  epsvsNORMAL     = 0x20,
+  epsvsLVI1       = 0x22,
+  epsvsLVI2       = 0x24,
+} ePowerSrvVoltageStates, EPWR_VOLTAGE_STATE_TYPE;
+
+typedef EPWR_VOLTAGE_STATE_TYPE * PEPWR_VOLTAGE_STATE_TYPE;
+
+typedef enum {
+  epscsINVALID    = 0xFF,
+  epscsENTRY      = 0xA0,
+  epscsEXIT       = 0xA2,
+} ePowerSrvCrankStates, EPWR_CRANK_STATE_TYPE;
+
+
+//******************************************************************************
+//  Startup Reason / EPWR_WAKEUP_FACTOR_TYPE typedefs                          *
+//                                                                             *
+/**
+ * \~english
+ */
+typedef enum {
+  epswfINVALID         = 0xFF,  //!< \~english
+  epswfTESTACC         = 0x00,  //!< \~english
+  epswfON_KEY          = 0x01,  //!< \~english
+  epswfIGN_ACC         = 0x02,  //!< \~english
+  epswfDR_OPEN_CLOSE   = 0x03,  //!< \~english
+  epswfDX_ACTIVATION   = 0x04,  //!< \~english
+  epswfPASS_ACTIVATION = 0x05,  //!< \~english
+  epswfSPVACTIVATION   = 0x06,  //!< \~english
+  epswfUSER_DATA_RESET = 0x07   //!< \~english
+//
+//  Carry-over enums from CCR
+//
+//  epswfPWRBUTTONON    = 0x0C,
+//  epswfIGNON       = 0x0D,
+//  epswfDISCEJECT      = 0x0F,
+//  epswfSHOWTIME     = 0x11,
+//  epswfPHONECALL     = 0x12,
+//
+//  End of Carry-over enums from CCR
+//
+} ePowerSrvWakeupFactors, EPWR_WAKEUP_FACTOR_TYPE;
+typedef EPWR_WAKEUP_FACTOR_TYPE * PEPWR_WAKEUP_FACTOR_TYPE;
+//                                                                             *
+//  End of Startup Reason / EPWR_WAKEUP_FACTOR_TYPE                            *
+//******************************************************************************
+
+//****************************************************************************
+// Shutdown Popup Protocol enums & typedefs                                  *
+//                                                                           *
+typedef enum {                                                            // *
+  epsspPowerSave1        = 0x00,                                          // *
+  epsspPowerSave2        = 0x01,                                          // *
+  epsspPowerSave3        = 0x02,                                          // *
+  epsspPowerSaveClr      = 0x03,                                          // *
+  epsspLowVoltage1       = 0x04,                                          // *
+  epsspLowVoltage2       = 0x05,                                          // *
+  epsspLowVoltage3       = 0x06,                                          // *
+  epsspLowVoltageClr     = 0x07,                                          // *
+  epsspBattCouplingSW1   = 0x08,                                          // *
+  epsspBattCouplingSW2   = 0x09,                                          // *
+  epsspBattCouplingSW3   = 0x0A,                                          // *
+  epsspBattCouplingSWClr = 0x0B,                                          // *
+  epsspAbnormalTemp_1st  = 0x0C,                                          // *
+  epsspAbnormalTemp_Clr  = 0x0D,                                          // *
+  epsspLimpHome_1st      = 0x0E,                                          // *
+  epsspLimpHome_2nd      = 0x0F,                                          // *
+  epsspLimpHome_3rd      = 0x10,                                          // *
+  epsspLimpHome_Clr      = 0x11,                                          // *
+  epsspProdMd_1st        = 0x12,                                          // *
+  epsspProdMd_Clr        = 0x13,                                          // *
+  epsspTransMd_1st       = 0x14,                                          // *
+  epsspTransMd_Clr       = 0x15,                                          // *
+  epsspAllClr            = 0xFF                                           // *
+} ePwrServiceShutdownPopupType, EPWR_SHUTDOWN_POPUP_TYPE;                 // *
+                                                                          // *
+//                                                                           *
+// End of Shutdown Condition Protocol enums & typedefs                       *
+//****************************************************************************
+
+//****************************************************************************
+// CPMShowPowerPopup Protocol enums & typedefs                               *
+//                                                                           *
+typedef enum {                                                            // *
+  epssppNormal           = 0x00,                                          // *
+  epssppCritical         = 0x01,                                          // *
+  epssppAppCritical      = 0x02,                                          // *
+  epssppAllClr           = 0xFF                                           // *
+} ePwrServicePowerPopupType, EPWR_POWER_POPUP_TYPE;                       // *
+                                                                          // *
+//                                                                           *
+// End of CPMShowPowerPopup Protocol enums & typedefs                        *
+//****************************************************************************
+
+//****************************************************************************
+// Limp Home Cutoff Protocol enums & typedefs                                *
+//                                                                           *
+typedef enum {                                                            // *
+  epslhcINVALID   = 0xFF,                                                 // *
+  epslhcDISABLED  = 0x00,                                                 // *
+  epslhcENABLED   = 0x01                                                  // *
+} ePwrServiceLHCType, EPWR_LHC_TYPE;                                      // *
+                                                                          // *
+//                                                                           *
+// End of Limp Home Cutoff Protocol enums & typedefs                         *
+//****************************************************************************
+
+//****************************************************************************
+// Production Mode Protocol enums & typedefs                                 *
+//                                                                           *
+typedef enum {                                                            // *
+  epspmINVALID   = 0xFF,                                                  // *
+  epspmDISABLED  = 0x00,                                                  // *
+  epspmENABLED   = 0x01                                                   // *
+} ePwrServiceProdModeType, EPWR_PROD_MODE_TYPE;                           // *
+                                                                          // *
+//                                                                           *
+// End of Production Mode Protocol enums & typedefs                          *
+//****************************************************************************
+
+//****************************************************************************
+// Transport Mode Protocol enums & typedefs                                  *
+//                                                                           *
+typedef enum {                                                            // *
+  epstmINVALID   = 0xFF,                                                  // *
+  epstmDISABLED  = 0x00,                                                  // *
+  epstmENABLED   = 0x01                                                   // *
+} ePwrServiceTransportModeType, EPWR_TRANSPORT_MODE_TYPE;                 // *
+                                                                          // *
+//                                                                           *
+// End of Transport Mode Protocol enums & typedefs                           *
+//****************************************************************************
+
+//****************************************************************************
+// Last User Mode, User Mode , User Mode Change Reason Protocol enums &      *
+// typedefs                                                                  *
+//                                                                           *
+/**
+ * \~english
+ */
+typedef enum {
+  epsumINVALID    = 0xFF,   //!< \~english
+  epsumOFF        = 0x00,   //!< \~english
+  epsumON         = 0x01    //!< \~english
+} ePwrServiceUserModeType, EPWR_USER_MODE_TYPE;
+
+/**
+ * \~english State transition reason.
+ */
+typedef enum {
+  epsumcrNOT_AVAILABLE  = 0x00,   //!< \~english Not available.
+  epsumcrON_KEY         = 0x01,   //!< \~english
+  epsumcrPARKING_B,               //!< \~english Parking(+B) Power state transition.
+  epsumcrPRE_BA,                  //!< \~english Pre-boot(+BA) Power state transition.
+  epsumcrNORMAL,                  //!< \~english Normal-boot Power state transition.
+  epsumcrBACKGROUND_BA,           //!< \~english Background-boot(+BA) Power state transition.
+} ePwrServiceUserModeChangeReasonType, EPWR_USER_MODE_CHANGE_REASON_TYPE;
+                                                                          // *
+//                                                                           *
+// End of Last User Mode, User Mode Protocol enums & typedefs                *
+//****************************************************************************
+
+/**
+ * \~english
+ */
+typedef struct _upinfo {
+  EPWR_WAKEUP_LEVEL_TYPE   level;                           //!< \~english
+  EPWR_WAKEUP_FACTOR_TYPE  factor;                          //!< \~english
+  EPWR_USER_MODE_CHANGE_REASON_TYPE  userModeChangeReason;  //!< \~english State transition reason.
+} upInfo;
+
+/**
+ * \~english
+ */
+typedef struct _wakeinfo {
+  EPWR_POWER_STATE_TYPE   powerupType;  //!< \~english
+  upInfo up;                            //!< \~english
+} wakeInfo;
+
+//****************************************************************************
+// System Mode Info enums & typedefs                                         *
+//                                                                           *
+typedef enum {                                                            // *
+  epssinfINVALID      = 0xFF,                                             // *
+  epssinfNORMAL       = 0x00,                                             // *
+  epssinfPROGRAMMING  = 0x08,                                             // *
+}ePowerSrvSystemModeInfo, EPWR_SYSTEM_MODE_INFO;                          // *
+                                                                          // *
+typedef enum {                                                            // *
+  epssusfINVALID                = 0xFF,                                   // *
+  epssusSYSTEM_SERVICES_STARTED = 0x00,                                   // *
+  epssusALL_SERVICES_LAUNCHED   = 0x01                                    // *
+}ePowerSrvStartupStageType, EPWR_STARTUP_STAGE_TYPE;                      // *
+                                                                          // *
+typedef struct _SystemModeInfo {                                          // *
+  EPWR_USER_MODE_TYPE      lastUserMode; // NOTE: Don't use this. just only remained for backward compatibility.
+  EPWR_LHC_TYPE            limpHomeCutoff;                                // *
+  EPWR_PROD_MODE_TYPE      productionMode;                                // *
+  EPWR_TRANSPORT_MODE_TYPE transportMode;                                 // *
+  EPWR_SYSTEM_MODE_INFO    systemMode;                                    // *
+  EPWR_STARTUP_STAGE_TYPE  startupStage;                                  // *
+} SystemModeInfo;                                                         // *
+//                                                                           *
+// End of System Mode Info enums & typedefs                                  *
+//****************************************************************************
+
+//****************************************************************************
+// Startup Confirmation enums & typedefs                                     *
+//                                                                           *
+typedef enum {                                                            // *
+  eps_CWORD56_bmINVALID          = 0xFF,                                       // *
+  eps_CWORD56_bmAPPLICATION_MODE = 0x00,                                       // *
+  eps_CWORD56_bmPROGRAMMING_MODE = 0x08                                        // *
+} EPWR_SC__CWORD56__BOOT_MODE_TYPE;                                            // *
+                                                                          // *
+typedef enum {                                                            // *
+  epsstINVALID     = 0xFF,                                                // *
+  epsstWARMSTART   = 0x00,                                                // *
+  epsstCOLDSTART   = 0x01                                                 // *
+} EPWR_SC_WAKEUP_TYPE;                                                    // *
+                                                                          // *
+typedef enum {                                                            // *
+  epsscrtINVALID      = 0xFF,                                             // *
+  epsscrtNOT_REQUIRED = 0x00,                                             // *
+  epsscrtREQUIRED     = 0x01                                              // *
+} EPWR_SC_COLD_START_REQ_TYPE;                                            // *
+                                                                          // *
+typedef enum {                                                            // *
+  epsssINVALID = 0xFF,                                                    // *
+  epsssUNLOCK  = 0x00,                                                    // *
+  epsssLOCK    = 0x01                                                     // *
+} EPWR_SC_SECURITY_STATUS;                                                // *
+                                                                          // *
+typedef struct {                                                          // *
+  EPWR_SC__CWORD56__BOOT_MODE_TYPE _CWORD56_BootMode;                               // *
+  EPWR_SC_WAKEUP_TYPE         wakeupType;                                 // *
+  EPWR_SC_COLD_START_REQ_TYPE coldStartRequest;                           // *
+  EPWR_SC_SECURITY_STATUS     securityStatus;                             // *
+  UI_32                       HWVersion;                                  // *
+  UI_32                       matchedHardwareType;                        // *
+  UI_32                       softwareType;                               // *
+  UI_32                       imageType;                                  // *
+  UI_32                       majorVersion;                               // *
+  UI_32                       minorVersion;                               // *
+  UI_32                       SWVersionYear;                              // *
+  UI_32                       SWVersionWeek;                              // *
+  UI_32                       SWVersionPatchLevel;                        // *
+} StartupConfirmationMsgStrut, EPWR_SC_MSG_STRUCT;                        // *
+//                                                                           *
+// End of Startup Confirmation enums & typedefs                              *
+//****************************************************************************
+
+//****************************************************************************
+// Power Request Message enums & typedefs                                    *
+//                                                                           *
+/**
+ * _CWORD102_ Startup Information
+ */
+typedef enum {
+  epsprm_CWORD102_siINVALID                = 0xFF,  //!< \~english
+  epsprm_CWORD102_si_CWORD102__STARTUP_NORMAL      = 0x00,  //!< Normal Startup
+  epsprm_CWORD102_si_CWORD102__STARTUP_AFTER_RESET = 0x01   //!< Startup after Irregular Reset
+}ePowerSrv_CWORD102_StartupInfoType, EPWR__CWORD102__STARTUP_INFO_TYPE;
+/**
+ * Opening Type
+ */
+typedef enum {
+  epsprmotINVALID               = 0xFF,   //!< \~english
+  epsprmotTIMING_TYPE_1         = 0x00,   //!< CI/DI Show timing type1
+  epsprmotTIMING_TYPE_2         = 0x01    //!< CI/DI Show timing type2
+} ePowerSrvPwrReqMsgCIDIOpeningType, EPWR_OPENING_TYPE;
+/**
+ * Manual Reset Information
+ */
+typedef enum {
+  epsprmriINVALID               = 0xFF,   //!< \~english
+  epsprmriNORMAL                = 0x00,   //!< \~english
+  epsprmriWAKEUP_AFTER_RESET    = 0x01    //!< \~english
+} ePowerSrvPwrManResetInfoType, EPWR_MAN_RESET_INFO_TYPE;
+/**
+ * Last System Retention Request
+ */
+typedef enum {
+  epsprlsrrINVALID               = 0xFF,  //!< \~english
+  epsprlsrrLAST_SYSTEM_OFF       = 0x00,  //!< \~english
+  epsprlsrrLAST_SYSTEM_ON        = 0x01   //!< \~english
+} ePowerSrvTypeLastSysRetReq, EPWR_LAST_SYS_RET_REQ_TYPE;
+
+// *
+typedef struct {                                                          // *
+  EPWR__CWORD102__STARTUP_INFO_TYPE          startupType;                         // *
+  EPWR_OPENING_TYPE                  openingType;                         // *
+  EPWR_WAKEUP_FACTOR_TYPE            startupReason;                       // *
+  EPWR_USER_MODE_TYPE                lastUserMode;                        // *
+  EPWR_MAN_RESET_INFO_TYPE           manResetInfo;                        // *
+  EPWR_LAST_SYS_RET_REQ_TYPE         lastSystemRetentionReq;              // *
+  EPWR_USER_MODE_TYPE                userMode;                            // *
+} PowerRequestMsgStrut, EPWR_POWER_REQUEST_MSG_STRUCT;                    // *
+
+/**
+ * \~english structure for power request message
+ */
+typedef struct {                                              
+  EPWR__CWORD102__STARTUP_INFO_TYPE          startupType;             //!< \~english
+  EPWR_OPENING_TYPE                  openingType;             //!< \~english
+  EPWR_WAKEUP_FACTOR_TYPE            startupReason;           //!< \~english
+  EPWR_USER_MODE_TYPE                lastUserMode;            //!< \~english
+  EPWR_MAN_RESET_INFO_TYPE           manResetInfo;            //!< \~english
+  EPWR_LAST_SYS_RET_REQ_TYPE         lastSystemRetentionReq;  //!< \~english
+  EPWR_USER_MODE_TYPE                userMode;                //!< \~english
+  EPWR_USER_MODE_CHANGE_REASON_TYPE  userModeChangeReason;    //!< \~english State transition reason.
+} PowerRequestMsgStrutWithUMCR, EPWR_POWER_REQUEST_MSG_STRUCT_WITH_UMCR;
+//                                                                           *
+// End of Power Request Message enums & typedefs                             *
+//****************************************************************************
+
+
+
+//****************************************************************************
+// Shutdown Request Message enums & typedefs                                 *
+//                                                                           *
+//  ONS                                                                      *
+//                                                                           *
+typedef enum {                                                            // *
+  epssdmonsINVALID             = 0xFF,                                    // *
+  epssdmonsNO_ONS              = 0x00,                                    // *
+  epssdmonsONS                 = 0x01                                     // *
+} ePowerSrvONSType, EPWR_ONS_TYPE;                                        // *
+//                                                                           *
+//  Shutdown Trigger                                                         *
+//                                                                           *
+typedef enum {                                                            // *
+  epssdmsdtINVALID             = 0xFF,                                    // *
+  epssdmsdtTESTACC_OFF         = 0x00,                                    // *
+  epssdmsdtON_KEY              = 0x01,                                    // *
+  epssdmsdtIGN_LOCK            = 0x02,                                    // *
+  epssdmsdtPWR_SAVE            = 0x03,                                    // *
+  epssdmsdtTMP_STARTUP         = 0x04,                                    // *
+  epssdmsdtDIAG_DEACTIVATION   = 0x05,                                    // *
+  epssdmsdtABNORMAL_VOLTAGE    = 0x06,                                    // *
+  epssdmsdtABNORMAL_TEMP       = 0x07,                                    // *
+  epssdmsdtBATTERYCUTOFF       = 0x08,                                    // *
+  epssdmsdtLIMPHOME            = 0x09,                                    // *
+  epssdmsdtHU_CAN_ERROR        = 0x0A,                                    // *
+  epssdmsdtBODY_CAN_ERROR      = 0x0B,                                    // *
+  epssdmsdtTRANSPORT_MODE      = 0x0C,                                    // *
+  epssdmsdtPRODUCTION_MODE     = 0x0D,                                    // *
+  epssdmsdtIGN_OFF             = 0x0E,                                    // *
+  epssdmsdtGENERIC_ERROR_RESET = 0x0F,                                    // *
+  epssdmsdtFATAL_ERROR_RESET   = 0x10,                                    // *
+  epssdmsdtUSER_DATA_RESET     = 0x11,                                    // *
+  epssdmsdtFACTORY_DATA_RESET  = 0x12,                                    // *
+  epssdmsdtFAST_SLEEP_MODE     = 0x13,                                    // *
+  epssdmsdtNORMAL_RESET        = 0x14,                                    // *
+  epssdmsdtPROGUPDATE_RESET    = 0x15,      // cannot use this
+    //                                                                       *
+    // Note to self: Make sure to update all enum-to-enum and                *
+    // enum-to-string maps when changing these enums !                       *
+} ePowerSrvPwrShutdownTriggerType, EPWR_SHUTDOWN_TRIGGER_TYPE;            // *
+//                                                                           *
+typedef struct {                                                          // *
+  EPWR_ONS_TYPE                  ONS_Type;                                // *
+  EPWR_SHUTDOWN_TRIGGER_TYPE     shutdownTrigger;                         // *
+  EPWR_USER_MODE_TYPE            lastUserMode;                            // *
+  EPWR_TRANSPORT_MODE_TYPE       transportMode;                           // *
+  EPWR_PROD_MODE_TYPE            productionMode;                          // *
+  EPWR_LHC_TYPE                  limpHomeCutoffRequest;                   // *
+} ShutdownRequestMsgStrut, EPWR_SHUTDOWN_REQUEST_MSG_STRUCT;              // *
+//                                                                           *
+// End of Shutdown Request Message enums & typedefs                          *
+//****************************************************************************
+
+//****************************************************************************
+// HeartBeat enums & typedefs                                                *
+//                                                                           *
+// HeartBeat Request Message                                                 *
+typedef struct {                                                          // *
+  UI_8  IntervalSec;                                                      // *
+} EPWR_HB_REQ_MSG_STRUCT;                                                 // *
+//                                                                           *
+// HeartBeat Response Message                                                *
+// Zero byte data message returned.                                          *
+// End of HeartBeat enums & typedefs                                         *
+//****************************************************************************
+
+//****************************************************************************
+// CPU Reset Reason enums & typedefs                                         *
+typedef  enum {                                                           // *
+    epsCpuResetReasonGeneric = 0                                          // *
+  , epsCpuResetReasonFatalError                                           // *
+  , epsCpuResetReasonUserDataReset                                        // *
+  , epsCpuResetReasonFactoryDataReset                                     // *
+  , epsCpuResetReasonUserForceReset                                       // *
+  , epsCpuResetReasonShipmentModeReset                                    // *
+  , epsCpuResetReasonHeadUnitReset                                        // *
+  , epsCpuResetReasonNormalReset                                          // *
+  , epsCpuResetReasonProgupdateReset    // cannot use this
+} epsCpuResetReason;                                                      // *
+//
+typedef struct {
+#define PWR_RESET_MSG_STR_SIZE 32
+    epsCpuResetReason resetReason;                                        // *
+    CHAR              messageStr[PWR_RESET_MSG_STR_SIZE];                 // *
+} SS_Pwr_CpuResetMsgStruct;
+//                                                                           *
+// End of CPU Reset Reason enums & typedefs                                  *
+//****************************************************************************
+
+typedef struct {
+  union _data {
+    wakeInfo wake;
+
+    struct _crank {
+      EPWR_CRANK_STATE_TYPE   state;
+    }crank;
+
+    struct _voltage {
+      EPWR_VOLTAGE_STATE_TYPE state;
+    }voltage;
+
+    struct _ws_complete {
+      EPWR_WAKEUP_LEVEL_TYPE   level;
+      EPWR_WAKEUP_FACTOR_TYPE  factor;
+    }wk_shdwn_complete;
+
+    struct _commwake {
+      EPWR_CAN_STATE_TYPE   state;
+    }commwake;
+
+    struct _UserMode {
+      EPWR_USER_MODE_TYPE    mode;
+    } user_mode;
+
+    struct _ShutdownPopup {
+      EPWR_SHUTDOWN_POPUP_TYPE shutdownPopupEvent;
+    } shutdownPopup;
+
+    struct _PowerPopup {
+      EPWR_POWER_POPUP_TYPE  powerPopupEvent;
+    } powerPopup;
+
+    StartupConfirmationMsgStrut  startupConfirmationMsg;
+    PowerRequestMsgStrutWithUMCR powerRequestMsg;
+    ShutdownRequestMsgStrut      shutdownRequestMsg;
+  }data;
+} Pwr_ServiceSetInterface;
+
+#endif /* SS_POWER_SERVICE_H_ */  // NOLINT (build/header_guard)
+
+/** @}*/  // end of power_service
+/** @}*/  // end of system_service
+/** @}*/  // end of BaseSystem