IdToForm (\r
IN FORM_BROWSER_FORMSET *FormSet,\r
IN UINT16 FormId\r
-)\r
+ )\r
{\r
LIST_ENTRY *Link;\r
FORM_BROWSER_FORM *Form;\r
Value->Value.u64 = Temp;\r
}\r
\r
+/**\r
+ Get UINT64 type value.\r
+\r
+ @param Value Input Hii value.\r
+\r
+ @retval UINT64 Return the UINT64 type value.\r
+\r
+**/\r
+UINT64\r
+HiiValueToUINT64 (\r
+ IN EFI_HII_VALUE *Value\r
+ )\r
+{\r
+ UINT64 RetVal;\r
+\r
+ RetVal = 0;\r
+\r
+ switch (Value->Type) {\r
+ case EFI_IFR_TYPE_NUM_SIZE_8:\r
+ RetVal = Value->Value.u8;\r
+ break;\r
+\r
+ case EFI_IFR_TYPE_NUM_SIZE_16:\r
+ RetVal = Value->Value.u16;\r
+ break;\r
+\r
+ case EFI_IFR_TYPE_NUM_SIZE_32:\r
+ RetVal = Value->Value.u32;\r
+ break;\r
+\r
+ case EFI_IFR_TYPE_BOOLEAN:\r
+ RetVal = Value->Value.b;\r
+ break;\r
+\r
+ case EFI_IFR_TYPE_DATE:\r
+ RetVal = *(UINT64*) &Value->Value.date;\r
+ break;\r
+\r
+ case EFI_IFR_TYPE_TIME:\r
+ RetVal = (*(UINT64*) &Value->Value.time) & 0xffffff;\r
+ break;\r
+\r
+ default:\r
+ RetVal = Value->Value.u64;\r
+ break;\r
+ }\r
+\r
+ return RetVal;\r
+}\r
\r
/**\r
Compare two Hii value.\r
//\r
// Take remain types(integer, boolean, date/time) as integer\r
//\r
- Temp64 = (INT64) (Value1->Value.u64 - Value2->Value.u64);\r
+ Temp64 = HiiValueToUINT64(Value1) - HiiValueToUINT64(Value2);\r
if (Temp64 > 0) {\r
*Result = 1;\r
} else if (Temp64 < 0) {\r
)\r
{\r
EFI_STATUS Status;\r
- EFI_HANDLE DriverHandle;\r
- EFI_HANDLE Handle;\r
- EFI_HII_HANDLE *HiiHandles;\r
EFI_HII_HANDLE HiiHandle;\r
- UINTN Index;\r
FORM_BROWSER_STATEMENT *Question;\r
FORM_BROWSER_FORMSET *FormSet;\r
FORM_BROWSER_FORM *Form;\r
(DevicePath == NULL && InputHiiHandle != NULL) );\r
\r
GetTheVal = TRUE;\r
- DriverHandle = NULL;\r
HiiHandle = NULL;\r
Question = NULL;\r
Form = NULL;\r
// Get HiiHandle.\r
//\r
if (DevicePath != NULL) {\r
- //\r
- // 1. Get Driver handle.\r
- //\r
- Status = gBS->LocateDevicePath (\r
- &gEfiDevicePathProtocolGuid,\r
- &DevicePath,\r
- &DriverHandle\r
- );\r
- if (EFI_ERROR (Status) || (DriverHandle == NULL)) {\r
+ HiiHandle = DevicePathToHiiHandle (DevicePath, FormSetGuid);\r
+ if (HiiHandle == NULL) {\r
return FALSE;\r
}\r
-\r
- //\r
- // 2. Get Hii handle\r
- //\r
- HiiHandles = HiiGetHiiHandles (NULL);\r
- if (HiiHandles == NULL) {\r
- return FALSE;\r
- }\r
-\r
- for (Index = 0; HiiHandles[Index] != NULL; Index++) {\r
- Status = mHiiDatabase->GetPackageListHandle (\r
- mHiiDatabase,\r
- HiiHandles[Index],\r
- &Handle\r
- );\r
- if (!EFI_ERROR (Status) && (Handle == DriverHandle)) {\r
- HiiHandle = HiiHandles[Index];\r
- break;\r
- }\r
- }\r
- FreePool (HiiHandles);\r
} else {\r
HiiHandle = InputHiiHandle;\r
} \r
//\r
FormSet = AllocateZeroPool (sizeof (FORM_BROWSER_FORMSET));\r
ASSERT (FormSet != NULL);\r
- Status = InitializeFormSet(HiiHandle, FormSetGuid, FormSet, FALSE);\r
+ Status = InitializeFormSet(HiiHandle, FormSetGuid, FormSet);\r
if (EFI_ERROR (Status)) {\r
GetTheVal = FALSE;\r
goto Done;\r
for (Index = 0; Index < OpCode->ValueWidth; Index ++, TempBuffer --) {\r
StrPtr += UnicodeValueToString (StrPtr, PREFIX_ZERO | RADIX_HEX, *TempBuffer, 2);\r
}\r
- Status = SetValueByName (OpCode->VarStorage, OpCode->ValueName, NameValue, GetSetValueWithEditBuffer);\r
+ Status = SetValueByName (OpCode->VarStorage, OpCode->ValueName, NameValue, GetSetValueWithEditBuffer, NULL);\r
FreePool (NameValue);\r
if (!EFI_ERROR (Status)) {\r
Data1.Value.b = TRUE;\r