/******************************************************************************* * * (C) COPYRIGHT MICROSOFT CORP., 1997 * * TITLE: PARSE.H * * VERSION: 2.0 * * AUTHOR: ReedB * * DATE: 1 Jan, 1997 * * DESCRIPTION: * * Declarations and definitions for the parse helper. * *******************************************************************************/ #include #include #include #include #include #include #include #include #include #include #include #include "powrprofp.h" #define MAX_LINES 256 #define MAX_STR 128 #define DELIMITERS "," #define LINE_DELIMITERS "\n\r" // The following defines determine which zero based line of the spread sheet // a given data will appear on. These are one based line indicies which match // the spreadsheet line numbers as long as no blank lines are included. #define SKU_LINE 1 #define NAME_LINE 2 #define DESCRIPTION_LINE 3 #define PLATFORM_LINE 4 #define INSTALL_ON_LINE 5 #define SYSTEM_IDLE_LINE SKU_LINE + 7 #define SYSTEM_IDLE_TIMEOUT_LINE SYSTEM_IDLE_LINE + 1 #define SYSTEM_IDLE_SLEEP_ACTION_FLAGS_LINE SYSTEM_IDLE_LINE + 2 #define SYSTEM_IDLE_SENSITIVITY_LINE SYSTEM_IDLE_LINE + 8 #define MIN_SLEEP_LINE SKU_LINE + 17 #define MAX_SLEEP_LINE MIN_SLEEP_LINE + 1 #define REDUCED_LATENCY_SLEEP_LINE MIN_SLEEP_LINE + 2 #define DOZE_TIMEOUT_LINE MIN_SLEEP_LINE + 3 #define DOZE_S4_TIMEOUT_LINE MIN_SLEEP_LINE + 4 #define VIDEO_TIMEOUT_LINE SKU_LINE + 23 #define SPINDOWN_TIMEOUT_LINE VIDEO_TIMEOUT_LINE + 1 #define OPTIMIZE_FOR_POWER_LINE SKU_LINE + 26 #define FAN_THROTTLE_TOL_LINE OPTIMIZE_FOR_POWER_LINE + 1 #define FORCED_THROTTLE_LINE OPTIMIZE_FOR_POWER_LINE + 2 #define MIN_THROTTLE_LINE OPTIMIZE_FOR_POWER_LINE + 3 #define OVERTHROTTLED_LINE OPTIMIZE_FOR_POWER_LINE + 4 #define OVERTHROTTLED_SLEEP_ACTION_FLAGS_LINE OPTIMIZE_FOR_POWER_LINE + 5 #define DYNAMIC_THROTTLE_LINE OPTIMIZE_FOR_POWER_LINE + 11 #define C1_THRESHOLDS_LINE DYNAMIC_THROTTLE_LINE + 1 #define C2_THRESHOLDS_LINE C1_THRESHOLDS_LINE + 8 #define C3_THRESHOLDS_LINE C2_THRESHOLDS_LINE + 8 // Global #define ADVANCED_LINE 64 #define LOCK_ON_SLEEP_LINE ADVANCED_LINE + 1 #define WAKE_ON_RING_LINE ADVANCED_LINE + 2 #define VIDEO_DIM_DISPLAY_LINE ADVANCED_LINE + 3 #define POWER_BUTTON_LINE ADVANCED_LINE + 5 #define POWER_BUTTON_SLEEP_ACTION_FLAGS_LINE ADVANCED_LINE + 6 #define POWER_BUTTON_SLEEP_EVENT_CODE_LINE ADVANCED_LINE + 12 #define SLEEP_BUTTON_LINE ADVANCED_LINE + 14 #define SLEEP_BUTTON_SLEEP_ACTION_FLAGS_LINE ADVANCED_LINE + 15 #define SLEEP_BUTTON_SLEEP_EVENT_CODE_LINE ADVANCED_LINE + 21 #define LID_CLOSE_LINE ADVANCED_LINE + 23 #define LID_CLOSE_SLEEP_ACTION_FLAGS_LINE ADVANCED_LINE + 24 #define LID_OPEN_WAKE_LINE ADVANCED_LINE + 30 #define BROADCAST_CAP_RES_LINE 96 #define BATMETER_ENABLE_SYSTRAY_FLAG_LINE BROADCAST_CAP_RES_LINE + 2 #define BATMETER_ENABLE_MULTI_FLAG_LINE BROADCAST_CAP_RES_LINE + 3 #define DISCHARGE_POLICY_1_LINE BROADCAST_CAP_RES_LINE + 4 #define DISCHARGE_POLICY_2_LINE BROADCAST_CAP_RES_LINE + 18 // Handy line offsets, for sleep action flags. #define QUERY_APPS 1 #define ALLOW_UI 2 #define IGNORE_NON_RESP 3 #define IGNORE_WAKE 4 #define IGNORE_CRITICAL 5 // offsets for sleep action event codes #define NOTIFY_USER_CODE 1 // Handy line offsets for DISCHARGE_POLICIES #define DP_ENABLE 1 #define DP_BAT_LEVEL 2 #define DP_POWER_POLICY 3 #define DP_MIN_SLEEP_STATE 4 #define DP_TEXT_NOTIFY 6 #define DP_SOUND_NOTIFY 7 #define DP_SLEEP_ACT_FLAGS 8 // Handy line offsets for C-state thresholds #define C_TIME_CHECK 1 #define C_PROMOTE_LIMIT 2 #define C_DEMOTE_LIMIT 3 #define C_PROMOTE_PERCENT 4 #define C_DEMOTE_PERCENT 5 #define C_ALLOW_PROMOTION 6 #define C_ALLOW_DEMOTION 7 // Memphis INF types: #define TYPICAL 0x01 #define COMPACT 0x02 #define CUSTOM 0x04 #define PORTABLE 0x08 #define SERVER 0x10 #define NUM_INF_TYPES 5 // OS types: #define WIN_95 1 #define WIN_NT 2 // file locations #define MACHINE_INF_NAME "..\\winnt\\POWERSYS.INF" #define USER_INF_NAME "..\\winnt\\POWERSFT.INF" #define INI_NAME "POWERCFG.INI" #define MAX_SKUS 6 #define MAX_PROFILES 16 #define MAX_LINE_SIZE 1024 #define DATA_REV 1 extern char *g_pszSrc[MAX_SKUS]; extern char *g_pszLines[MAX_SKUS][MAX_LINES]; extern char *g_pszSkuNames[MAX_SKUS]; extern char g_pszSkuDecoration[MAX_SKUS]; extern UINT g_uiPoliciesCount[MAX_SKUS]; extern PMACHINE_POWER_POLICY g_pmpp[MAX_SKUS][MAX_PROFILES]; extern PUSER_POWER_POLICY g_pupp[MAX_SKUS][MAX_PROFILES]; extern PMACHINE_PROCESSOR_POWER_POLICY g_ppmpp[MAX_SKUS][MAX_PROFILES]; extern GLOBAL_USER_POWER_POLICY g_gupp[MAX_SKUS]; extern GLOBAL_MACHINE_POWER_POLICY g_gmpp[MAX_SKUS]; // Function prototypes implemented in MAKEINI.C or MAKEINF.C: VOID CDECL DefFatalExit(BOOLEAN, char*, ... ); // Function prototypes implemented in PARSE.C: void StrToUpper(char*, char*); UINT GetTokens(char*, UINT, char**, UINT, char*); VOID GetCheckLabelToken(UINT uiLine, char *pszCheck, UINT uiSku); UINT GetFlagToken(UINT); UINT GetPowerStateToken(VOID); UINT GetIntToken(char*); VOID GetNAToken(VOID); POWER_ACTION GetPowerActionToken(VOID); UINT GetOSTypeToken(VOID); UINT GetINFTypeToken(VOID); void StrTrimTrailingBlanks(char *); UINT GetThrottleToken(VOID); VOID CDECL DefFatalExit(BOOLEAN bGetLastError, char *pszFormat, ... ); BOOLEAN ReadSource(void); UINT BuildLineArray(void); VOID GetSleepActionFlags( UINT uiStartLine, UINT uiFlagsAC[], UINT uiFlagsDC[], PUINT puiCount, UINT sku ); VOID GetSleepActionFlagsGlobal( UINT uiStartLine, PPOWER_ACTION_POLICY ppapAC, PPOWER_ACTION_POLICY ppapDC, UINT sku ); VOID GetSleepActionFlagsUserPolicy( UINT uiStartLine, ULONG ulAcPowerPolicyOffset, ULONG ulDcPowerPolicyOffset, PUINT puiCount, UINT sku ); VOID GetSleepActionFlagsMachinePolicy( UINT uiStartLine, ULONG ulAcPowerPolicyOffset, ULONG ulDcPowerPolicyOffset, PUINT puiCount, UINT sku ); VOID GetCStateThresholds( UINT uiStartLine, UINT uiCState, PUINT puiCount, UINT sku ); VOID GetDischargePolicies( UINT uiLine, UINT uiNum, UINT uiIndex, UINT sku ); BOOLEAN GetGlobalPolicies(void); BOOLEAN GetPolicies(void); VOID GetPolicyInf(void);