CloverBootloader/Xcode/CloverX64TestNewParser/src/Assign/AssignSettingsACPI.cpp

132 lines
4.8 KiB
C++

/*
* AssignSettings.cpp
*
* Created on: Feb 2, 2021
* Author: jief
*/
#include "AssignSettingsACPI.h"
#include <Platform.h>
#include "AssignField.h"
void AssignAcpi_ACPIDropTable(const XString8& label, SETTINGS_DATA::ACPIClass::ACPIDropTablesClass& oldS, const ConfigPlistClass::ACPI_Class::ACPI_DropTables_Class& newS)
{
Assign(Signature);
Assign(TableId);
Assign(TabLength);
Assign(OtherOS);
}
void AssignACPI_DropTableArray(const XString8 &label, XObjArray<SETTINGS_DATA::ACPIClass::ACPIDropTablesClass> &oldS, const XmlArray<ConfigPlistClass::ACPI_Class::ACPI_DropTables_Class> &newS) {
if ( sizeAssign(size()) ) {
for ( size_t idx = 0 ; idx < newS.size() ; ++idx ) {
oldS.AddReference(new SETTINGS_DATA::ACPIClass::ACPIDropTablesClass(), true);
AssignAcpi_ACPIDropTable(S8Printf("%s[%zu]", label.c_str(), idx), oldS[idx], newS[idx]);
}
}
}
void AssignAcpi_DSDT_DSDTPatch(const XString8& label, SETTINGS_DATA::ACPIClass::DSDTClass::DSDT_Patch& oldS, const ConfigPlistClass::ACPI_Class::DSDT_Class::ACPI_DSDT_Patch_Class& newS)
{
Assign(Disabled);
Assign(PatchDsdtLabel);
Assign(PatchDsdtFind);
Assign(PatchDsdtReplace);
Assign(PatchDsdtTgt);
oldS.PatchDsdtMenuItem.BValue = !newS.dgetDisabled();
}
void AssignAcpi_DSDT(const XString8& label, SETTINGS_DATA::ACPIClass::DSDTClass& oldS, const ConfigPlistClass::ACPI_Class::DSDT_Class& newS)
{
Assign(DsdtName);
Assign(DebugDSDT);
Assign(Rtc8Allowed);
Assign(PNLF_UID);
Assign(FixDsdt);
Assign(ReuseFFFF);
Assign(SuspendOverride);
// if ( AssignField(oldS.DSDTPatchArray.size(), newS.Patches.size(), S8Printf("%s.DSDTPatchArray.size()", label.c_str())) ) {
for ( size_t idx = 0 ; idx < newS.Patches.size() ; ++idx ) {
oldS.DSDTPatchArray.AddReference(new SETTINGS_DATA::ACPIClass::DSDTClass::DSDT_Patch(), true);
AssignAcpi_DSDT_DSDTPatch(S8Printf("%s.DSDTPatchArray[%zu]", label.c_str(), idx), oldS.DSDTPatchArray[idx], newS.Patches[idx]);
}
// }
}
void AssignAcpi_SSDT_Generate(const XString8& label, SETTINGS_DATA::ACPIClass::SSDTClass::GenerateClass& oldS, const ConfigPlistClass::ACPI_Class::SSDT_Class::XmlUnionGenerate& newS)
{
Assign(GeneratePStates);
Assign(GenerateCStates);
Assign(GenerateAPSN);
Assign(GenerateAPLF);
Assign(GeneratePluginType);
}
void AssignAcpi_SSDT(const XString8& label, SETTINGS_DATA::ACPIClass::SSDTClass& oldS, const ConfigPlistClass::ACPI_Class::SSDT_Class& newS)
{
Assign(DropSSDTSetting);
Assign(NoOemTableId);
Assign(NoDynamicExtract);
Assign(EnableISS);
Assign(EnableC7);
Assign(_EnableC6);
Assign(_EnableC4);
Assign(_EnableC2);
Assign(_C3Latency);
Assign(PLimitDict);
Assign(UnderVoltStep);
Assign(DoubleFirstState);
Assign(MinMultiplier);
Assign(MaxMultiplier);
Assign(PluginType);
AssignAcpi_SSDT_Generate(S8Printf("%s.Generate", label.c_str()), oldS.Generate, newS.Generate);
}
//----------------------------------------------------------------------------------------------------------
void AssignAcpi_ACPI_NAME(const XString8& label, ACPI_NAME& oldS, const XString8& newS)
{
AssignField(oldS.Name, newS, S8Printf("%s.Name", label.c_str()));
}
void AssignAcpi_ACPI_RENAME_DEVICE(const XString8& label, ACPI_RENAME_DEVICE& oldS, const XmlAddKey<XmlKey, XmlString8>& newS)
{
AssignAcpi_ACPI_NAME(S8Printf("%s.acpiName", label.c_str()), oldS.acpiName, newS.key().value());
AssignField(oldS.renameTo, newS.value(), S8Printf("%s.renameTo", label.c_str()));
}
void AssignACPI_ACPI_RENAME_DEVICEArray(const XString8 &label, XObjArray<ACPI_RENAME_DEVICE> &oldS, const ConfigPlistClass::ACPI_Class::ACPI_RenamesDevices_Class& newS)
{
// if ( AssignField(oldS.size(), newS.size(), S8Printf("%s size", label.c_str())) ) {
for ( size_t idx = 0 ; idx < newS.size() ; ++idx ) {
oldS.AddReference(new ACPI_RENAME_DEVICE(), true);
AssignAcpi_ACPI_RENAME_DEVICE(S8Printf("%s[%zu]", label.c_str(), idx), oldS[idx], newS.getAtIndex(idx));
}
// }
}
//----------------------------------------------------------------------------------------------------------
void AssignAcpi(const XString8& label, SETTINGS_DATA::ACPIClass& oldS, const ConfigPlistClass::ACPI_Class& newS)
{
Assign(ResetAddr);
Assign(ResetVal);
Assign(SlpSmiEnable);
Assign(FixHeaders);
Assign(FixMCFG);
Assign(NoASPM);
Assign(smartUPS);
Assign(PatchNMI);
Assign(AutoMerge);
Assign(DisabledAML);
Assign(SortedACPI);
AssignACPI_ACPI_RENAME_DEVICEArray(S8Printf("%s.DeviceRename", label.c_str()), oldS.DeviceRename, newS.RenameDevices);
AssignACPI_DropTableArray(S8Printf("%s.ACPIDropTablesArray", label.c_str()), oldS.ACPIDropTablesArray, newS.ACPIDropTablesArray);
AssignAcpi_DSDT(S8Printf("%s.DSDT", label.c_str()), oldS.DSDT, newS.DSDT);
AssignAcpi_SSDT(S8Printf("%s.SSDT", label.c_str()), oldS.SSDT, newS.SSDT);
}