NetworkPkg/WifiConnectionManagerDxe: Update UI according to UEFI spec

REF: https://bugzilla.tianocore.org/show_bug.cgi?id=4736

In UEFI_Spec_2_10_Aug29.pdf page 1694 section 35.5.4 for
EFI_BROWSER_ACTION_FORM_OPEN:
NOTE: EFI_FORM_BROWSER2_PROTOCOL.BrowserCallback() cannot be used with
this browser action because question values have not been retrieved yet.

So should not call HiiGetBrowserData() and HiiSetBrowserData() in FORM_OPEN
call back function.

Now use wifi list key and enroll cert key instead of the connect action key,
move wifi info display from open action to close action.

Cc: Saloni Kasbekar <saloni.kasbekar@intel.com>
Cc: Zachary Clark-williams <zachary.clark-williams@intel.com>
Cc: Dandan Bi <dandan.bi@intel.com>
Cc: Felix Polyudov <Felixp@ami.com>
Signed-off-by: Liqi Liu <liqi.liu@intel.com>
Reviewed-by: Zachary Clark-williams <zachary.clark-williams@intel.com>
Acked-by: Michael D Kinney <michael.d.kinney@intel.com>
This commit is contained in:
Liqi Liu 2024-03-21 14:01:45 +08:00 committed by mergify[bot]
parent b6cd5ddce9
commit fcfdbe2987
1 changed files with 74 additions and 39 deletions

View File

@ -1412,7 +1412,9 @@ WifiMgrDxeHiiConfigAccessCallback (
return EFI_OUT_OF_RESOURCES;
}
HiiGetBrowserData (&gWifiConfigFormSetGuid, mVendorStorageName, BufferSize, (UINT8 *)IfrNvData);
if (Action != EFI_BROWSER_ACTION_FORM_OPEN) {
HiiGetBrowserData (&gWifiConfigFormSetGuid, mVendorStorageName, BufferSize, (UINT8 *)IfrNvData);
}
if (Action == EFI_BROWSER_ACTION_FORM_OPEN) {
switch (QuestionId) {
@ -1438,43 +1440,6 @@ WifiMgrDxeHiiConfigAccessCallback (
break;
case KEY_CONNECT_ACTION:
if (Private->CurrentNic->UserSelectedProfile == NULL) {
break;
}
Profile = Private->CurrentNic->UserSelectedProfile;
//
// Enter the network connection configuration page
// Recovery from restored data
//
if (HiiSetString (Private->RegisteredHandle, STRING_TOKEN (STR_SSID), Profile->SSId, NULL) == 0) {
return EFI_OUT_OF_RESOURCES;
}
IfrNvData->SecurityType = Profile->SecurityType;
if (HiiSetString (
Private->RegisteredHandle,
STRING_TOKEN (STR_SECURITY_TYPE),
mSecurityType[IfrNvData->SecurityType],
NULL
) == 0)
{
return EFI_OUT_OF_RESOURCES;
}
if ((IfrNvData->SecurityType == SECURITY_TYPE_WPA2_ENTERPRISE) ||
(IfrNvData->SecurityType == SECURITY_TYPE_WPA3_ENTERPRISE))
{
IfrNvData->EapAuthMethod = Profile->EapAuthMethod;
IfrNvData->EapSecondAuthMethod = Profile->EapSecondAuthMethod;
StrCpyS (IfrNvData->EapIdentity, EAP_IDENTITY_SIZE, Profile->EapIdentity);
}
break;
case KEY_ENROLLED_CERT_NAME:
if (Private->CurrentNic->UserSelectedProfile == NULL) {
@ -1524,6 +1489,43 @@ WifiMgrDxeHiiConfigAccessCallback (
}
} else if (Action == EFI_BROWSER_ACTION_FORM_CLOSE) {
switch (QuestionId) {
case KEY_EAP_ENROLL_CERT_FROM_FILE:
if (Private->CurrentNic->UserSelectedProfile == NULL) {
break;
}
Profile = Private->CurrentNic->UserSelectedProfile;
//
// Enter the network connection configuration page
// Recovery from restored data
//
if (HiiSetString (Private->RegisteredHandle, STRING_TOKEN (STR_SSID), Profile->SSId, NULL) == 0) {
return EFI_OUT_OF_RESOURCES;
}
IfrNvData->SecurityType = Profile->SecurityType;
if (HiiSetString (
Private->RegisteredHandle,
STRING_TOKEN (STR_SECURITY_TYPE),
mSecurityType[IfrNvData->SecurityType],
NULL
) == 0)
{
return EFI_OUT_OF_RESOURCES;
}
if ( (IfrNvData->SecurityType == SECURITY_TYPE_WPA2_ENTERPRISE)
|| (IfrNvData->SecurityType == SECURITY_TYPE_WPA3_ENTERPRISE))
{
IfrNvData->EapAuthMethod = Profile->EapAuthMethod;
IfrNvData->EapSecondAuthMethod = Profile->EapSecondAuthMethod;
StrCpyS (IfrNvData->EapIdentity, EAP_IDENTITY_SIZE, Profile->EapIdentity);
}
break;
case KEY_CONNECT_ACTION:
if (Private->CurrentNic->UserSelectedProfile == NULL) {
@ -1909,6 +1911,39 @@ WifiMgrDxeHiiConfigAccessCallback (
NULL
);
}
if (Private->CurrentNic->UserSelectedProfile == NULL) {
break;
}
Profile = Private->CurrentNic->UserSelectedProfile;
//
// Enter the network connection configuration page
// Recovery from restored data
//
if (HiiSetString (Private->RegisteredHandle, STRING_TOKEN (STR_SSID), Profile->SSId, NULL) == 0) {
return EFI_OUT_OF_RESOURCES;
}
IfrNvData->SecurityType = Profile->SecurityType;
if (HiiSetString (
Private->RegisteredHandle,
STRING_TOKEN (STR_SECURITY_TYPE),
mSecurityType[IfrNvData->SecurityType],
NULL
) == 0)
{
return EFI_OUT_OF_RESOURCES;
}
if ( (IfrNvData->SecurityType == SECURITY_TYPE_WPA2_ENTERPRISE)
|| (IfrNvData->SecurityType == SECURITY_TYPE_WPA3_ENTERPRISE))
{
IfrNvData->EapAuthMethod = Profile->EapAuthMethod;
IfrNvData->EapSecondAuthMethod = Profile->EapSecondAuthMethod;
StrCpyS (IfrNvData->EapIdentity, EAP_IDENTITY_SIZE, Profile->EapIdentity);
}
}
break;
@ -1944,7 +1979,7 @@ WifiMgrDxeHiiConfigAccessCallback (
}
}
if (!EFI_ERROR (Status)) {
if (!EFI_ERROR (Status) && (Action != EFI_BROWSER_ACTION_FORM_OPEN)) {
//
// Pass changed uncommitted data back to Form Browser.
//