X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=service%2Fsystem%2Finterface_unified%2Flibrary%2Finclude%2Fsystem_service%2Fss_power_service.h;fp=service%2Fsystem%2Finterface_unified%2Flibrary%2Finclude%2Fsystem_service%2Fss_power_service.h;h=15ba033883b961c4ae38861570971816deafa8fd;hb=17cf21bcf8a2e29d2cbcf0a313474d2a4ee44f5d;hp=0000000000000000000000000000000000000000;hpb=9e86046cdb356913ae026f616e5bf17f6f238aa5;p=staging%2Fbasesystem.git 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 index 0000000..15ba033 --- /dev/null +++ b/service/system/interface_unified/library/include/system_service/ss_power_service.h @@ -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 +#include +#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