From 4a40f4cc0e45de28898cdad1b605cc4ca4be2710 Mon Sep 17 00:00:00 2001 From: Konstantin Aladyshev Date: Wed, 31 Aug 2022 16:26:50 +0300 Subject: Finish SKU lesson Signed-off-by: Konstantin Aladyshev --- .../Lesson_SKU/UefiLessonsPkg/SetSku/SetSku.c | 72 ++++++++++++++++++++++ .../Lesson_SKU/UefiLessonsPkg/SetSku/SetSku.inf | 17 +++++ 2 files changed, 89 insertions(+) create mode 100644 Lessons_uncategorized/Lesson_SKU/UefiLessonsPkg/SetSku/SetSku.c create mode 100644 Lessons_uncategorized/Lesson_SKU/UefiLessonsPkg/SetSku/SetSku.inf (limited to 'Lessons_uncategorized/Lesson_SKU/UefiLessonsPkg') diff --git a/Lessons_uncategorized/Lesson_SKU/UefiLessonsPkg/SetSku/SetSku.c b/Lessons_uncategorized/Lesson_SKU/UefiLessonsPkg/SetSku/SetSku.c new file mode 100644 index 0000000..8683947 --- /dev/null +++ b/Lessons_uncategorized/Lesson_SKU/UefiLessonsPkg/SetSku/SetSku.c @@ -0,0 +1,72 @@ +#include +#include + +#include +#include +#include + +//#include + +VOID Usage() +{ + Print(L"Program to set Sku number\n\n"); + Print(L" Usage: SetSku \n"); +} + +INTN +EFIAPI +ShellAppMain ( + IN UINTN Argc, + IN CHAR16 **Argv + ) +{ + EFI_STATUS Status; + + if (Argc != 2) { + Usage(); + return EFI_INVALID_PARAMETER; + } + + UINTN SkuNumber; + RETURN_STATUS ReturnStatus; + ReturnStatus = StrHexToUintnS(Argv[1], NULL, &SkuNumber); + if (RETURN_ERROR(ReturnStatus)) { + Print(L"Error! Can't convert SkuId string to number\n"); + return EFI_INVALID_PARAMETER; + } + + EFI_PCD_PROTOCOL* pcdProtocol; + Status = gBS->LocateProtocol(&gEfiPcdProtocolGuid, + NULL, + (VOID **)&pcdProtocol); + if (EFI_ERROR(Status)) { + Print(L"Error! Can't find EFI_PCD_PROTOCOL\n"); + return EFI_UNSUPPORTED; + } + + EFI_GET_PCD_INFO_PROTOCOL* getPcdInfoProtocol; + Status = gBS->LocateProtocol(&gEfiGetPcdInfoProtocolGuid, + NULL, + (VOID **)&getPcdInfoProtocol); + if (EFI_ERROR(Status)) { + Print(L"Error! Can't find EFI_GET_PCD_INFO_PROTOCOL\n"); + return EFI_UNSUPPORTED; + } + + + pcdProtocol->SetSku(SkuNumber); + + UINTN SkuId = getPcdInfoProtocol->GetSku(); +/* + LibPcdSetSku(SkuNumber); + UINTN SkuId = LibPcdGetSku(); +*/ + if (SkuId != SkuNumber) { + Print(L"Failed to change SkuId to 0x%lx, SkuId is still 0x%lx\n", SkuNumber, SkuId); + return EFI_UNSUPPORTED; + } + + Print(L"Sku is changed successfully to 0x%lx\n", SkuNumber); + + return EFI_SUCCESS; +} diff --git a/Lessons_uncategorized/Lesson_SKU/UefiLessonsPkg/SetSku/SetSku.inf b/Lessons_uncategorized/Lesson_SKU/UefiLessonsPkg/SetSku/SetSku.inf new file mode 100644 index 0000000..b14aed8 --- /dev/null +++ b/Lessons_uncategorized/Lesson_SKU/UefiLessonsPkg/SetSku/SetSku.inf @@ -0,0 +1,17 @@ +[Defines] + INF_VERSION = 1.25 + BASE_NAME = SetSku + FILE_GUID = 8cb96f21-d1dc-4f4a-8064-c3a5b556f73a + MODULE_TYPE = UEFI_APPLICATION + VERSION_STRING = 1.0 + ENTRY_POINT = ShellCEntryLib + +[Sources] + SetSku.c + +[Packages] + MdePkg/MdePkg.dec + +[LibraryClasses] + ShellCEntryLib + UefiLib -- cgit v1.2.3-18-g5258