Define Redfish interface "/Registries/Bios" and enable Attributes property

1. Define Redfish interface "/Registries/Bios" for BIOS Attribute Registry
   RBC Daemon provide method to get BIOS attribute registry.
2. Enable Attributes property for BIOS resource
3. Define Redfish interface "/Systems/system/Bios/Settings" for BIOS
settings
4. RBC daemon is at
https://gerrit.openbmc-project.xyz/#/c/openbmc/bios-settings-mgr/+/35563/
5. IPMI command implementation is at
https://gerrit.openbmc-project.xyz/#/c/openbmc/intel-ipmi-oem/+/30827/
6. Property design is at
https://github.com/openbmc/phosphor-dbus-interfaces/tree/master/xyz/openbmc_project/BIOSConfig
7. Design doc is at
https://github.com/openbmc/docs/blob/master/designs/remote-bios-configuration.md
8. There will be 95 test cases for this feature in the validation team.

Tested:
1. Use postman could get all the attributes in bios
resouce, get bios settings, get bios attribute
registry.
https://IP_ADDR/redfish/v1/Systems/system/Bios
{
    "@Redfish.Settings": {
        "@odata.type": "#Settings.v1_3_0.Settings",
        "SettingsObject": {
            "@odata.id": "/redfish/v1/Systems/system/Bios/Settings"
        }
    },
    "@odata.id": "/redfish/v1/Systems/system/Bios",
    "@odata.type": "#Bios.v1_1_0.Bios",
    "Actions": {
        "#Bios.ChangePassword": {
            "target": "/redfish/v1/Systems/system/Bios/Actions/Bios.ChangePassword"
        },
        "#Bios.ResetBios": {
            "target": "/redfish/v1/Systems/system/Bios/Actions/Bios.ResetBios"
        }
    },
    "AttributeRegistry": "BiosAttributeRegistry",
    "Attributes": {
        "attr0": "current value"
    },
    "Description": "BIOS Configuration Service",
    "Id": "BIOS",
    "Links": {
        "ActiveSoftwareImage": {
            "@odata.id": "/redfish/v1/UpdateService/FirmwareInventory/bios_active"
        },
        "SoftwareImages": [
            {
                "@odata.id": "/redfish/v1/UpdateService/FirmwareInventory/bios_active"
            }
        ],
        "SoftwareImages@odata.count": 1
    },
    "Name": "BIOS Configuration"
}

Redfish interface: https://BMCIP/redfish/v1/Registries/BiosAttributeRegistry
{
    "@odata.id": "/redfish/v1/Registries/BiosAttributeRegistry",
    "@odata.type": "#MessageRegistryFile.v1_1_0.MessageRegistryFile",
    "Description": "BiosAttributeRegistry Message Registry File Location",
    "Id": "BiosAttributeRegistry",
    "Languages": [
        "en"
    ],
    "Languages@odata.count": 1,
    "Location": [
        {
            "Language": "en",
            "Uri": "/redfish/v1/Registries/BiosAttributeRegistry/BiosAttributeRegistry"
        }
    ],
    "Location@odata.count": 1,
    "Name": "BiosAttributeRegistry Message Registry File",
    "Registry": "BiosAttributeRegistry.1.0.0"
}

Redfish interface: https://BMCIP/redfish/v1/Registries/BiosAttributeRegistry/BiosAttributeRegistry
{
    "@odata.id": "/redfish/v1/Registries/BiosAttributeRegistry/BiosAttributeRegistry",
    "@odata.type": "#AttributeRegistry.v1_3_2.AttributeRegistry",
    "Id": "BiosAttributeRegistry",
    "Language": "en",
    "Name": "Bios Attribute Registry",
    "OwningEntity": "OpenBMC",
    "RegistryEntries": {
        "Attributes": [
            {
                "AttributeName": "attr0",
                "CurrentValue": "current value",
                "DefaultValue": "default value",
                "DisplayName": "display name for attr0",
                "HelpText": "description for attr0",
                "MenuPath": "./menu/path/for/attr0",
                "ReadOnly": false,
                "Type": "String",
                "Value": [
                  {
                      "ValueName": "..."
                  },
                  .
                  .
                ]
            },
            .
            .
        ]
    },
    "RegistryVersion": "1.0.0"
}

https://BMC_IPADDR/redfish/v1/Systems/system/Bios/Settings
{
    "@odata.id": "/redfish/v1/Systems/system/Bios/Settings",
    "@odata.type": "#Bios.v1_1_0.Bios",
    "AttributeRegistry": "BiosAttributeRegistry",
    "Attributes": {
        "QuietBoot": "0x0"
    },
    "Id": "BiosSettingsV1",
    "Name": "Bios Settings Version 1"
}

2. Passed Validator check for bios resource and bios attribute registry
*** /redfish/v1/Systems/system/Bios
INFO -   Type (#Bios.v1_1_0.Bios), GET SUCCESS (time: 1.57377)
INFO -   PASS
*** /redfish/v1/Registries/BiosAttributeRegistry
INFO -   Type (#MessageRegistryFile.v1_1_0.MessageRegistryFile), GET SUCCESS (time: 0.075438)
INFO -   PASS
INFO -
*** /redfish/v1/Registries/BiosAttributeRegistry/BiosAttributeRegistry
INFO -   Type (#AttributeRegistry.v1_3_2.AttributeRegistry), GET SUCCESS (time: 0.075751)
INFO -   PASS

@odata.id	/redfish/v1/Systems/system/Bios	odata	Exists	PASS
@odata.type	#Settings.v1_3_0.Settings	odata	Exists	PASS
Links	[JSON Object]	Bios.v1_1_0.Links	Yes	complex
Links.ActiveSoftwareImage	Link: /redfish/v1/UpdateService/FirmwareInventory/bios_active	link to: SoftwareInventory	Yes	PASS
Links.SoftwareImages	Array (size: 1)	array of: SoftwareInventory	Yes	...
Links.SoftwareImages[0]	Link: /redfish/v1/UpdateService/FirmwareInventory/bios_active	SoftwareInventory	Yes	PASS
Links.Oem	-	Resource.Oem	No	Optional
SoftwareImages@odata.count	1	odata	Exists	PASS
AttributeRegistry	BiosAttributeRegistry	string	Yes	PASS
Actions	[JSON Object]	Bios.v1_0_0.Actions	Yes	complex
Actions.#Bios.ResetBios	Action	-	Yes	PASS
Actions.#Bios.ChangePassword	Action	-	Yes	PASS
Attributes	[JSON Object]	Bios.v1_0_0.Attributes	Yes	complex
Attributes.attr0	current value	primitive	Yes	PASS
Id	BIOS	string	Yes	PASS
Description	BIOS Configuration Service	string	Yes	PASS
Name	BIOS Configuration	string	Yes	PASS
Oem	-	Resource.Oem	No	Optional
@Redfish.Settings	[JSON Object]	Settings.Settings	Yes	complex
@Redfish.Settings.MaintenanceWindowResource	-	link to: ItemOrCollection	No	Optional
@Redfish.Settings.SupportedApplyTimes	-	string (enum)	No	Optional
@Redfish.Settings.Time	-	date	No	Optional
@Redfish.Settings.ETag	-	string	No	Optional
@Redfish.Settings.SettingsObject	Link: /redfish/v1/Systems/system/Bios/Settings	link to: Item	Yes	PASS
@Redfish.Settings.Messages	-	Message	No	Optional

@odata.id	/redfish/v1/Registries/BiosAttributeRegistry	odata	Exists	PASS
@odata.type	#MessageRegistryFile.v1_1_0.MessageRegistryFile	odata	Exists	PASS
Languages@odata.count	1	odata	Exists	PASS
Location@odata.count	1	odata	Exists	PASS
Actions	-	MessageRegistryFile.v1_1_0.Actions	No	Optional
Languages	Array (size: 1)	string	Yes	...
Languages[0]	en	string	Yes	PASS
Registry	BiosAttributeRegistry.1.0.0	string	Yes	PASS
Location	Array (size: 1)	array of: Location	Yes	...
Location[0]	[JSON Object]	Location	Yes	complex
Location[0].Language	en	string	Yes	PASS
Location[0].Uri	/redfish/v1/Registries/BiosAttributeRegistry/BiosAttributeRegistry	string	Yes	PASS
Location[0].ArchiveUri	-	string	No	Optional
Location[0].PublicationUri	-	string	No	Optional
Location[0].ArchiveFile	-	string	No	Optional
Id	BiosAttributeRegistry	string	Yes	PASS
Description	BiosAttributeRegistry Message Registry File Location	string	Yes	PASS
Name	BiosAttributeRegistry Message Registry File	string	Yes	PASS
Oem	-	Resource.Oem	No	Optional

@odata.id	/redfish/v1/Registries/BiosAttributeRegistry/BiosAttributeRegistry	odata	Exists	PASS
@odata.type	#AttributeRegistry.v1_3_2.AttributeRegistry	odata	Exists	PASS
Actions	-	AttributeRegistry.v1_1_0.Actions	No	Optional
Language	en	string	Yes	PASS
RegistryVersion	1.0.0	string	Yes	PASS
OwningEntity	OpenBMC	string	Yes	PASS
SupportedSystems	-	SupportedSystems	No	Optional
RegistryEntries	[JSON Object]	AttributeRegistry.v1_0_0.RegistryEntries	Yes	complex
RegistryEntries.Attributes	Array (size: 1)	array of: Attributes	Yes	...
RegistryEntries.Attributes[0]	[JSON Object]	Attributes	Yes	complex
RegistryEntries.Attributes[0].Oem	-	Resource.Oem	No	Optional
RegistryEntries.Attributes[0].ResetRequired	-	boolean	No	Optional
RegistryEntries.Attributes[0].UefiDevicePath	-	string	No	Optional
RegistryEntries.Attributes[0].UefiKeywordName	-	string	No	Optional
RegistryEntries.Attributes[0].UefiNamespaceId	-	string	No	Optional
RegistryEntries.Attributes[0].AttributeName	attr0	string	Yes	PASS
RegistryEntries.Attributes[0].Type	String	string (enum)	Yes	PASS
RegistryEntries.Attributes[0].Value	Array (size: 0)	array of: AttributeValue	Yes	...
RegistryEntries.Attributes[0].DisplayName	display name for attr0	string	Yes	PASS
RegistryEntries.Attributes[0].HelpText	description for attr0	string	Yes	PASS
RegistryEntries.Attributes[0].WarningText	-	string	No	Optional
RegistryEntries.Attributes[0].CurrentValue	current value	primitive	Yes	PASS
RegistryEntries.Attributes[0].DefaultValue	default value	primitive	Yes	PASS
RegistryEntries.Attributes[0].DisplayOrder	-	number	No	Optional
RegistryEntries.Attributes[0].MenuPath	./menu/path/for/attr0	string	Yes	PASS
RegistryEntries.Attributes[0].ReadOnly	False	boolean	Yes	PASS
RegistryEntries.Attributes[0].WriteOnly	-	boolean	No	Optional
RegistryEntries.Attributes[0].GrayOut	-	boolean	No	Optional
RegistryEntries.Attributes[0].Hidden	-	boolean	No	Optional
RegistryEntries.Attributes[0].Immutable	-	boolean	No	Optional
RegistryEntries.Attributes[0].IsSystemUniqueProperty	-	boolean	No	Optional
RegistryEntries.Attributes[0].MaxLength	-	number	No	Optional
RegistryEntries.Attributes[0].MinLength	-	number	No	Optional
RegistryEntries.Attributes[0].ScalarIncrement	-	number	No	Optional
RegistryEntries.Attributes[0].UpperBound	-	number	No	Optional
RegistryEntries.Attributes[0].LowerBound	-	number	No	Optional
RegistryEntries.Attributes[0].ValueExpression	-	string	No	Optional
RegistryEntries.Menus	-	Menus	No	Optional
RegistryEntries.Dependencies	-	Dependencies	No	Optional
Id	BiosAttributeRegistry	string	Yes	PASS
Description	-	string	No	Optional
Name	Bios Attribute Registry	string	Yes	PASS
Oem	-	Resource.Oem	No	Optional

Change-Id: Iecc61018c350f0b8c89df59b2864b941508b1916
Signed-off-by: Kuiying Wang <kuiying.wang@intel.com>
diff --git a/redfish-core/include/redfish.hpp b/redfish-core/include/redfish.hpp
index aad28ac..edc0372 100644
--- a/redfish-core/include/redfish.hpp
+++ b/redfish-core/include/redfish.hpp
@@ -160,6 +160,8 @@
         nodes.emplace_back(std::make_unique<SystemActionsReset>(app));
         nodes.emplace_back(std::make_unique<SystemResetActionInfo>(app));
         nodes.emplace_back(std::make_unique<BiosService>(app));
+        nodes.emplace_back(std::make_unique<BiosSettings>(app));
+        nodes.emplace_back(std::make_unique<BiosAttributeRegistry>(app));
         nodes.emplace_back(std::make_unique<BiosReset>(app));
 #ifdef BMCWEB_ENABLE_VM_NBDPROXY
         nodes.emplace_back(std::make_unique<VirtualMedia>(app));