/** @file State and accessors for 'acpiview' configuration. Copyright (c) 2016 - 2020, ARM Limited. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent **/ #include #include #include "AcpiViewConfig.h" // Report variables STATIC BOOLEAN mConsistencyCheck; STATIC BOOLEAN mColourHighlighting; STATIC EREPORT_OPTION mReportType; STATIC BOOLEAN mMandatoryTableValidate; STATIC UINTN mMandatoryTableSpec; // User selection of which ACPI table should be checked SELECTED_ACPI_TABLE mSelectedAcpiTable; /** Reset the AcpiView user configuration to defaults **/ VOID EFIAPI AcpiConfigSetDefaults ( VOID ) { mReportType = ReportAll; mSelectedAcpiTable.Type = 0; mSelectedAcpiTable.Name = NULL; mSelectedAcpiTable.Found = FALSE; mConsistencyCheck = TRUE; mMandatoryTableValidate = FALSE; mMandatoryTableSpec = 0; } /** This function converts a string to ACPI table signature. @param [in] Str Pointer to the string to be converted to the ACPI table signature. @retval The ACPI table signature. **/ STATIC UINT32 ConvertStrToAcpiSignature ( IN CONST CHAR16 *Str ) { UINT8 Index; CHAR8 Ptr[4]; ZeroMem (Ptr, sizeof (Ptr)); Index = 0; // Convert to Upper case and convert to ASCII while ((Index < 4) && (Str[Index] != 0)) { if (Str[Index] >= L'a' && Str[Index] <= L'z') { Ptr[Index] = (CHAR8)(Str[Index] - (L'a' - L'A')); } else { Ptr[Index] = (CHAR8)Str[Index]; } Index++; } return *(UINT32 *) Ptr; } /** This function selects an ACPI table in current context. The string name of the table is converted into UINT32 table signature. @param [in] TableName The name of the ACPI table to select. **/ VOID EFIAPI SelectAcpiTable ( IN CONST CHAR16 *TableName ) { ASSERT (TableName != NULL); mSelectedAcpiTable.Name = TableName; mSelectedAcpiTable.Type = ConvertStrToAcpiSignature (mSelectedAcpiTable.Name); } /** This function returns the selected ACPI table. @param [out] SelectedAcpiTable Pointer that will contain the returned struct. **/ VOID EFIAPI GetSelectedAcpiTable ( OUT SELECTED_ACPI_TABLE **SelectedAcpiTable ) { *SelectedAcpiTable = &mSelectedAcpiTable; } /** This function returns the colour highlighting status. @retval TRUE Colour highlighting is enabled. **/ BOOLEAN EFIAPI GetColourHighlighting ( VOID ) { return mColourHighlighting; } /** This function sets the colour highlighting status. @param [in] Highlight The highlight status. **/ VOID EFIAPI SetColourHighlighting ( BOOLEAN Highlight ) { mColourHighlighting = Highlight; } /** This function returns the consistency checking status. @retval TRUE Consistency checking is enabled. **/ BOOLEAN EFIAPI GetConsistencyChecking ( VOID ) { return mConsistencyCheck; } /** This function sets the consistency checking status. @param [in] ConsistencyChecking The consistency checking status. **/ VOID EFIAPI SetConsistencyChecking ( BOOLEAN ConsistencyChecking ) { mConsistencyCheck = ConsistencyChecking; } /** This function returns the report options. @return The current report option. **/ EREPORT_OPTION EFIAPI GetReportOption ( VOID ) { return mReportType; } /** This function sets the report options. @param [in] ReportType The report option to set. **/ VOID EFIAPI SetReportOption ( EREPORT_OPTION ReportType ) { mReportType = ReportType; } /** This function returns the ACPI table requirements validation flag. @retval TRUE Check for mandatory table presence should be performed. **/ BOOLEAN EFIAPI GetMandatoryTableValidate ( VOID ) { return mMandatoryTableValidate; } /** This function sets the ACPI table requirements validation flag. @param [in] Validate Enable/Disable ACPI table requirements validation. **/ VOID EFIAPI SetMandatoryTableValidate ( BOOLEAN Validate ) { mMandatoryTableValidate = Validate; } /** This function returns the identifier of specification to validate ACPI table requirements against. @return ID of specification listing mandatory tables. **/ UINTN EFIAPI GetMandatoryTableSpec ( VOID ) { return mMandatoryTableSpec; } /** This function sets the identifier of specification to validate ACPI table requirements against. @param [in] Spec ID of specification listing mandatory tables. **/ VOID EFIAPI SetMandatoryTableSpec ( UINTN Spec ) { mMandatoryTableSpec = Spec; }