VOID SetKitlMode(OAL_BLMENU_ITEM *pMenu) { WCHAR key; UNREFERENCED_PARAMETER(pMenu); if ((g_bootCfg.kitlFlags & OAL_KITL_FLAGS_POLL) != 0) { OALLog(L" Set KITL to interrupt mode [y/-]: "); } else { OALLog(L" Set KITL to polled mode [y/-]: "); } // Get key key = OALBLMenuReadKey(TRUE); OALLog(L"%c\r\n", key); if (key == L'y' || key == L'Y') { if ((g_bootCfg.kitlFlags & OAL_KITL_FLAGS_POLL) != 0) { g_bootCfg.kitlFlags &= ~OAL_KITL_FLAGS_POLL; OALLog(L" KITL set to interrupt mode\r\n"); } else { g_bootCfg.kitlFlags |= OAL_KITL_FLAGS_POLL; OALLog(L" KITL set to polled mode\r\n"); } } }
VOID SetMacAddress(OAL_BLMENU_ITEM *pMenu) { DWORD dummy; UINT16 mac[3] = {0xFFFF, 0xFFFF, 0xFFFF}; #pragma warning(push) #pragma warning(disable:4204 4221) // We're using OALBLMenuSetMacAddress outside of a menu, but it still requires // a menu item input structure OAL_BLMENU_ITEM AM35xMacMenuItem = { 0, NULL, NULL, L"AM35x", mac, NULL }; OAL_BLMENU_ITEM ExternalLanMacMenuItem = { 0, NULL, NULL, L"9311", mac, NULL }; #pragma warning(pop) UNREFERENCED_PARAMETER(pMenu); // Set Internal EMAC Mac OALLog(L"\r\n Set Internal EMAC (LAN9xxx) MAC Address:\r\n"); memcpy(mac,g_bootCfg.mac,sizeof(mac)); OALBLMenuSetMacAddress(&AM35xMacMenuItem); // Make sure we don't come out of OALBLMenuSetMacAddress with the original 0xFFFF FFFF FFFF or with all zeros if (((mac[0]== 0xFFFF) && (mac[1] == 0xFFFF) && (mac[2] == 0xFFFF)) || ((mac[0]== 0x0) && (mac[1] == 0x0) && (mac[2] == 0x0))) { OALLog(L"\r\n WARNING: MAC address not programmed!\r\n"); return; } memcpy(g_bootCfg.mac,mac,sizeof(mac)); if (!LAN911XFindController(OALPAtoUA((DWORD) BSP_LAN9311_REGS_PA),&dummy)) { return; } // Set Internal EMAC Mac OALLog(L"\r\n Set External Lan (SAMSC9311) MAC Address:\r\n"); memset(mac,0xFF,sizeof(mac)); LAN911XGetMacAddress(OALPAtoUA((DWORD) BSP_LAN9311_REGS_PA),mac); OALBLMenuSetMacAddress(&ExternalLanMacMenuItem); // Make sure we don't come out of OALBLMenuSetMacAddress with the original 0xFFFF FFFF FFFF or with all zeros if (((mac[0]== 0xFFFF) && (mac[1] == 0xFFFF) && (mac[2] == 0xFFFF)) || ((mac[0]== 0x0) && (mac[1] == 0x0) && (mac[2] == 0x0))) { OALLog(L"\r\n WARNING: MAC address not programmed!\r\n"); return; } LAN911XSetMacAddress(OALPAtoUA((DWORD) BSP_LAN9311_REGS_PA),mac); }
VOID SetKitlType( OAL_BLMENU_ITEM *pMenu ) { WCHAR key; UNREFERENCED_PARAMETER(pMenu); if ((g_bootCfg.kitlFlags & OAL_KITL_FLAGS_PASSIVE) != 0) { OALLog(L" Set KITL to active mode [y/-]: "); } else { OALLog(L" Set KITL to passive mode [y/-]: "); } // Get key key = OALBLMenuReadKey(TRUE); OALLog(L"%c\r\n", key); if (key == L'y' || key == L'Y') { if ((g_bootCfg.kitlFlags & OAL_KITL_FLAGS_PASSIVE) != 0) { g_bootCfg.kitlFlags &= ~OAL_KITL_FLAGS_PASSIVE; OALLog(L" KITL set to active mode\r\n"); } else { g_bootCfg.kitlFlags |= OAL_KITL_FLAGS_PASSIVE; OALLog(L" KITL set to passive mode\r\n"); } } }
VOID BLMenu() { UINT32 ud, delay; WCHAR key = 0; // First let user break to menu OALLog(L"Hit space to enter LPC32XX bootloader menu.\n\r"); delay = OALGetTickCount() + (g_bootCfg.boot_to * 1000); ud = OALGetTickCount() - 1; while (delay > OALGetTickCount()) { if (ud <= OALGetTickCount()) { OALLog(L"."); ud = OALGetTickCount() + 1000; } key = OALBLMenuReadKey(FALSE); if (key == L' ') break; } OALLog(L"\r\n"); if (key == L' ') { OALBLMenuShow(&g_menuRoot); } }
VOID SetDeviceID( OAL_BLMENU_ITEM *pMenu ) { WCHAR szInputLine[16]; UNREFERENCED_PARAMETER(pMenu); OALLog( L" Current Device ID: %d\r\n", g_bootCfg.deviceID ); OALLog(L"\r\n New Device ID: "); if (OALBLMenuReadLine(szInputLine, dimof(szInputLine)) == 0) { goto cleanUp; } // Get device ID g_bootCfg.deviceID = OALStringToUINT32(szInputLine); cleanUp: return; }
VOID EnableFlashNK(OAL_BLMENU_ITEM *pMenu) { WCHAR key; UNREFERENCED_PARAMETER(pMenu); if (g_bootCfg.flashNKFlags & ENABLE_FLASH_NK) { OALLog(L" Disable Flashing NK.bin [y/-]: "); } else { OALLog(L" Enable Flashing NK.bin [y/-]: "); } // Get key key = OALBLMenuReadKey(TRUE); OALLog(L"%c\r\n", key); if (key == L'y' || key == L'Y') { if (g_bootCfg.flashNKFlags & ENABLE_FLASH_NK) { g_bootCfg.flashNKFlags &= ~ENABLE_FLASH_NK; OALLog(L" Flashing NK.bin is disabled\r\n"); } else { g_bootCfg.flashNKFlags |= ENABLE_FLASH_NK; OALLog(L" Flashing NK.bin is enabled\r\n"); } } }
VOID BLWriteFlashXLDR(OAL_BLMENU_ITEM *pMenu) { OAL_KITL_TYPE bkType; wcscpy(g_bootCfg.filename, L"xldrnand.nb0"); if (BL_ERROR == BLSDCardDownload(g_bootCfg.filename)) { OALLog(TEXT("SD boot failed to open file\r\n")); goto CleanUp; } bkType = g_eboot.type; g_eboot.bootDeviceType = BOOT_SDCARD_TYPE; if (FALSE == OEMReadData(IMAGE_XLDR_CODE_SIZE, (UCHAR *) (IMAGE_WINCE_CODE_CA))) { OALLog(TEXT("SD boot failed to read file\r\n")); return; } g_eboot.bootDeviceType = bkType; g_eboot.type = DOWNLOAD_TYPE_XLDR; if (OEMWriteFlash(IMAGE_WINCE_CODE_CA, IMAGE_XLDR_CODE_SIZE)) OALLog(L"BLWriteFlashXLDR success..\n"); else OALLog(L"BLWriteFlashXLDR fail..\n"); CleanUp: return; }
VOID SetDisplayResolution(OAL_BLMENU_ITEM *pMenu) { WCHAR key; UINT32 i; UNREFERENCED_PARAMETER(pMenu); OALBLMenuHeader(L"Select Display Resolution"); for (i=0; i<OMAP_RES_INVALID; i++) { OALLog(L" [%d] %s\r\n", i+1 , dispResMenu[i].resName); } OALLog(L" [0] Exit and Continue\r\n"); OALLog(L"\r\n Selection (actual %s): ", dispResMenu[g_bootCfg.displayRes].resName); // Get key do { key = OALBLMenuReadKey(TRUE); } while (key < L'0' || key > L'0' + i); OALLog(L"%c\r\n", key); // If user select exit don't change device if (key == L'0') return; g_bootCfg.displayRes = (key - L'0' - 1); }
VOID SetRetailMsgMode(OAL_BLMENU_ITEM *pMenu) { WCHAR key; UNREFERENCED_PARAMETER(pMenu); if (g_bootCfg.oalFlags & BOOT_CFG_OAL_FLAGS_RETAILMSG_ENABLE) { OALLog(L" Disable OAL Retail Messages [y/-]: "); } else { OALLog(L" Enable OAL Retail Messages [y/-]: "); } // Get key key = OALBLMenuReadKey(TRUE); OALLog(L"%c\r\n", key); if (key == L'y' || key == L'Y') { if (g_bootCfg.oalFlags & BOOT_CFG_OAL_FLAGS_RETAILMSG_ENABLE) { g_bootCfg.oalFlags &= ~BOOT_CFG_OAL_FLAGS_RETAILMSG_ENABLE; OALLog(L" OAL Retail Messages disabled\r\n"); } else { g_bootCfg.oalFlags |= BOOT_CFG_OAL_FLAGS_RETAILMSG_ENABLE; OALLog(L" OAL Retail Messages enabled\r\n"); } } }
VOID SetOPPmode(OAL_BLMENU_ITEM *pMenu) { WCHAR key; UINT32 i; UINT32 len = AM35x_OPP_NUM; OPP_MODE_MENU * pOppMenu = oppModeMenu; UNREFERENCED_PARAMETER(pMenu); OALBLMenuHeader(L"Select OPP Mode"); for (i=0; i<len; i++) { OALLog(L" [%d] %s\r\n", i+1 , pOppMenu[i].oppModeName); } OALLog(L" [0] Exit and Continue\r\n"); OALLog(L"\r\n Selection (actual [%s]): ", pOppMenu[g_bootCfg.opp_mode].oppModeName); // Get key do { key = OALBLMenuReadKey(TRUE); } while (key < L'0' || key > L'0' + i); OALLog(L"%c\r\n", key); // If user select exit don't change device if (key == L'0') return; g_bootCfg.opp_mode = (key - L'0' -1); }
VOID OALBLMenuSetDeviceId(OAL_BLMENU_ITEM * pMenu) { WCHAR deviceId[OAL_KITL_ID_SIZE]; LPSTR pDeviceId = pMenu->pParam1; UINT i; memset(deviceId, 0, sizeof(deviceId)); OALLog(L" Enter Device Id (* = auto, actual '%S'): ", DeviceId(pDeviceId)); // Read input line if (OALBLMenuReadLine(deviceId, dimof(deviceId)) == 0) goto cleanUp; // Convert unicode to one-byte character string if (deviceId[0] == L'*' && deviceId[1] == L'\0') { memset(pDeviceId, 0, OAL_KITL_ID_SIZE); } else { for (i = 0; i < OAL_KITL_ID_SIZE; i++) { pDeviceId[i] = (UCHAR)deviceId[i]; } } OALLog(L" Device Id set to '%S'\r\n", DeviceId(pDeviceId)); cleanUp: ; }
VOID SaveSettings(OAL_BLMENU_ITEM *pMenu) { WCHAR key; OALLog(L" Do you want save current settings [-/y]? "); // Get key key = OALBLMenuReadKey(TRUE); OALLog(L"%c\r\n", key); // Depending on result if (key != L'y' && key != L'Y') goto cleanUp; if (BLWriteBootCfg(&g_bootCfg)) { OALLog(L" Current settings has been saved\r\n"); } else { OALLog(L"ERROR: Settings save failed!\r\n"); } cleanUp: return; }
VOID ShowSettings(OAL_BLMENU_ITEM *pMenu) { OALLog(L"\r\n Main:\r\n"); if(g_bootCfg.bootDevLoc.LogicalLoc == SD_BASE){ OALLog( L" Boot device: %s(%S)\r\n", OALKitlDeviceName(&g_bootCfg.bootDevLoc, g_bootDevices), g_bootCfg.binName ); } else{ OALLog( L" Boot device: %s\r\n", OALKitlDeviceName(&g_bootCfg.bootDevLoc, g_bootDevices) ); } OALLog( L" Debug device: %s\r\n", OALKitlDeviceName(&g_bootCfg.kitlDevLoc, g_kitlDevices) ); OALLog(L" Boot timeout: %d seconds\r\n", g_bootCfg.boot_to); ShowNetworkSettings(pMenu); }
BOOL WriteFlashNK( UINT32 address, UINT32 size ) { BOOL rc = FALSE; UCHAR *pData; void *pBase = OALPAtoVA(g_ulFlashBase, FALSE); void *pStart = (void *)((UINT32)pBase + IMAGE_WINCE_NOR_OFFSET); OALLog(L"\r\nWriting NK image to flash memory\r\n"); // Get data location pData = OEMMapMemAddr(address, address); // Verify that we get CE image if (!VerifyImage(pData, NULL)) { OALMSG(OAL_ERROR, (L"ERROR: OEMWriteFlash: NK image signature not found\r\n")); goto cleanUp; } // Unlock blocks if (!OALFlashLock(pBase, pStart, size, FALSE)) { OALMSG(OAL_ERROR, (L"ERROR: OEMWriteFlash: NK blocks could not be unlocked\r\n")); goto cleanUp; } // Erase blocks if (!OALFlashErase(pBase, pStart, size)) { OALMSG(OAL_ERROR, (L"ERROR: OEMWriteFlash: NK blocks could not be erased\r\n")); goto cleanUp; } // Write blocks if (!OALFlashWrite(pBase, pStart, size, pData)) { OALMSG(OAL_ERROR, (L"ERROR: OEMWriteFlash: NK blocks could not be written\r\n")); goto cleanUp; } OALLog(L"NK image written\r\n"); // Change boot device to NOR g_bootCfg.bootDevLoc.IfcType = Internal; g_bootCfg.bootDevLoc.LogicalLoc = BSP_NOR_REGS_PA; // Done rc = TRUE; cleanUp: return rc; }
VOID ShowSDCardSettings(OAL_BLMENU_ITEM *pMenu) { UNREFERENCED_PARAMETER(pMenu); OALLog(L"\r\n SDCard:\r\n"); OALLog( L" Filename: \"%s\"\r\n", g_bootCfg.filename ); // OALBLMenuReadKey(TRUE); }
VOID SetBadBlock(OAL_BLMENU_ITEM *pMenu) { HANDLE hFMD = NULL; PCI_REG_INFO regInfo; FlashInfo flashInfo; BLOCK_ID blockId; WCHAR szInputLine[16]; UNREFERENCED_PARAMETER(pMenu); // Open FMD regInfo.MemBase.Reg[0] = g_ulFlashBase; hFMD = FMD_Init(NULL, ®Info, NULL); if (hFMD == NULL) { OALLog(L" Oops, can't open FMD driver\r\n"); goto cleanUp; } if (!FMD_GetInfo(&flashInfo)) { OALLog(L" Oops, can't get flash geometry info\r\n"); goto cleanUp; } OALLog(L"\r\n Block Number: "); if (OALBLMenuReadLine(szInputLine, dimof(szInputLine)) == 0) { goto cleanUp; } // Get sector number blockId = OALStringToUINT32(szInputLine); // Check sector number if (blockId >= flashInfo.dwNumBlocks) { OALLog(L" Oops, too big block number\r\n"); goto cleanUp; } FMD_SetBlockStatus(blockId, BLOCK_STATUS_BAD); OALLog(L"\r\n Done\r\n"); cleanUp: if (hFMD != NULL) { FMD_Deinit(hFMD); } return; }
VOID EnterSDCardFilename(OAL_BLMENU_ITEM *pMenu) { UNREFERENCED_PARAMETER(pMenu); OALLog(L"\r\n Type new filename (8.3 format) :"); OALBLMenuReadLine(g_bootCfg.filename, dimof(g_bootCfg.filename)); }
/////////////////////////////////////////////////////////////////////////////// // Required OEM IPL routines. /////////////////////////////////////////////////////////////////////////////// // --- These are used by iplcommon (start) --- BOOLEAN OEMIPLInit(void) { // Initialize the UART. // OEMInitDebugSerial(); OALLog(L"\r\nMicrosoft Windows CE IPL for SMDK6410 Ref board\r\n"); // Set the flash address g_ulFlashBase = NAND_FLASH_START_UA; // Messaging handler callback. // g_pfnMessageHandler = OEMMessageHandler; // Check if Current ARM speed is not matched to Target Arm speed // then To get speed up, set Voltage #if (APLL_CLK == CLK_1332MHz) LTC3714_Init(); LTC3714_VoltageSet(1,1200,100); // ARM LTC3714_VoltageSet(2,1300,100); // INT #elif (APLL_CLK == CLK_800MHz) LTC3714_Init(); LTC3714_VoltageSet(1,1300,100); // ARM LTC3714_VoltageSet(2,1200,100); // INT #endif return(TRUE); }
VOID ChangeBootTo(OAL_BLMENU_ITEM *pMenu) { WCHAR buf[MAX_PATH]; OALLog(L"Enter new boot timeout (Seconds): "); if(OALBLMenuReadLine(buf, dimof(buf))){ g_bootCfg.boot_to = decStrToVal(buf); } }
VOID OALBLMenuEnable(OAL_BLMENU_ITEM *pMenu) { LPCWSTR title = pMenu->pParam1; UINT32 *pFlags = pMenu->pParam2; UINT32 mask = (UINT32)pMenu->pParam3; BOOL flag; WCHAR key; // First check input parameter if (title == NULL || pFlags == NULL) { OALMSG(OAL_ERROR, (L"ERROR: OALBLMenuEnable: Invalid parameter\r\n")); goto cleanUp; } if (mask == 0) mask = 0xFFFF; flag = (*pFlags & mask) != 0; OALLog( L" %s %s (actually %s) [y/-]: ", flag ? L"Disable" : L"Enable", title, flag ? L"enabled" : L"disabled" ); // Get key key = OALBLMenuReadKey(TRUE); OALLog(L"%c\r\n", key); if (key == L'y' || key == L'Y') { flag = !flag; OALLog(L" %s %s\r\n", title, flag ? L"enabled" : L"disabled"); } else { OALLog( L" %s stays %s\r\n", title, flag ? L"enabled" : L"disabled" ); } // Save value if (flag) { *pFlags |= mask; } else { *pFlags &= ~mask; } cleanUp:; }
VOID OALBLMenuSetMacAddress(OAL_BLMENU_ITEM *pMenu) { LPCWSTR title = pMenu->pParam1; UINT16 *pMac = pMenu->pParam2; UINT16 mac[3]; WCHAR buffer[18]; // First check input parameters if (title == NULL || pMac == NULL) { OALMSG(OAL_ERROR, ( L"ERROR: OALBLMenuSetMacAddress: Invalid parameter\r\n" )); goto cleanUp; } // Get actual setting mac[0] = pMac[0]; mac[1] = pMac[1]; mac[2] = pMac[2]; // Print prompt OALLog( L" Enter %s MAC address (actual %s): ", title, OALKitlMACtoString(mac) ); // Read input line if (OALBLMenuReadLine(buffer, dimof(buffer)) == 0) goto cleanUp; // Convert string to MAC address if (!OALKitlStringToMAC(buffer, mac)) { OALLog(L" '%s' isn't valid MAC address\r\n", buffer); goto cleanUp; } // Print final MAC address OALLog(L" %s MAC address set to %s\r\n", title, OALKitlMACtoString(mac)); // Save new setting pMac[0] = mac[0]; pMac[1] = mac[1]; pMac[2] = mac[2]; cleanUp:; }
VOID FormatFlash(OAL_BLMENU_ITEM *pMenu) { WCHAR key; UNREFERENCED_PARAMETER(pMenu); OALLog(L" Do you want to format unreserved blocks [-/y]? "); // Get key key = OALBLMenuReadKey(TRUE); OALLog(L"%c\r\n", key); // Depending on result if (key != L'y' && key != L'Y') goto cleanUp; BLConfigureFlashPartitions(TRUE); cleanUp: return; }
VOID OALBLMenuShow(OAL_BLMENU_ITEM *pMenu) { LPCWSTR title = pMenu->pParam1; OAL_BLMENU_ITEM *aMenu = pMenu->pParam2, *pItem; WCHAR key; while (TRUE) { OALBLMenuHeader(L"%s", title); // Print menu items for (pItem = aMenu; pItem->key != 0; pItem++) { OALLog(L" [%c] %s\r\n", pItem->key, pItem->text); } OALLog(L"\r\n Selection: "); while (TRUE) { // Get key key = OALBLMenuReadKey(TRUE); // Look for key in menu for (pItem = aMenu; pItem->key != 0; pItem++) { if (pItem->key == key) break; } // If we find it, break loop if (pItem->key != 0) break; } // Print out selection character OALLog(L"%c\r\n", key); // When action is NULL return back to parent menu if (pItem->pfnAction == NULL) break; // Else call menu action pItem->pfnAction(pItem); } }
VOID OALBLMenuSetIpMask(OAL_BLMENU_ITEM *pMenu) { LPCWSTR title = pMenu->pParam1; UINT32 *pIp = pMenu->pParam2; UINT32 ip; WCHAR buffer[16]; // First check input parameters if (title == NULL || pIp == NULL) { OALMSG(OAL_ERROR, ( L"ERROR: OALBLMenuSetIpMask: Invalid parameters\r\n" )); goto cleanUp; } // Get actual value ip = *pIp; // Print prompt OALLog(L" Enter %s IP mask (actual %s): ", title, OALKitlIPtoString(ip)); // Read input line if (OALBLMenuReadLine(buffer, dimof(buffer)) == 0) goto cleanUp; // Convert string to MAC address ip = OALKitlStringToIP(buffer); if (ip == 0) { OALLog(L" '%s' isn't valid IP mask\r\n", buffer); goto cleanUp; } // Print final IP mask OALLog(L" %s IP mask set to %s\r\n", title, OALKitlIPtoString(ip)); // Save new setting *pIp = ip; cleanUp:; }
UINT32 OALBLMenuReadLine(LPWSTR szBuffer, size_t CharCount) { UINT32 count; WCHAR key; count = 0; while (count < CharCount) { key = OALBLMenuReadKey(TRUE); if (key == L'\r' || key == L'\n') { OALLog(L"\r\n"); break; } if (key == L'\b' && count > 0) { OALLog(L"\b \b"); count--; } else if (key >= L' ' && key < 128 && count < (CharCount - 1)) { szBuffer[count++] = key; OALLog(L"%c", key); } } szBuffer[count] = '\0'; return count; }
static VOID SetECCType(OAL_BLMENU_ITEM *pMenu) { WCHAR key; UNREFERENCED_PARAMETER(pMenu); OALLog(L" This command is used to temporarily changing ECC mode in NK.bin, it is for test purpose only! \r\n"); OALLog(L" Select ECC mode [0(Hamming 1bit)/1(BCH 4bit)/2(BCH 8bit)]: "); // Get key key = OALBLMenuReadKey(TRUE); OALLog(L"%c\r\n", key); if (key == L'0' || key == L'1' || key == L'2') { g_bootCfg.ECCtype = (UCHAR)(key - '0'); } else { g_bootCfg.ECCtype = 0; OALLog(L" Invalid ECC mode, set ECC mode as Hamming 1bit\r\n"); } g_ecctype = g_bootCfg.ECCtype; }
//------------------------------------------------------------------------------ VOID ChangeBaud(OAL_BLMENU_ITEM *pMenu) { WCHAR key; BOOL bu = FALSE; while (bu == FALSE) { OALLog(L" 1: 115.2K\r\n"); OALLog(L" 2: 57600\r\n"); OALLog(L" 3: 38400\r\n"); OALLog(L" 4: 19200\r\n"); OALLog(L" 5: 9600\r\n"); OALLog(L"Select a new baud rate: "); key = OALBLMenuReadKey(TRUE); OALLog(L"\r\n"); switch (key) { case '1': g_bootCfg.baudRate = 115200; bu = TRUE; break; case '2': g_bootCfg.baudRate = 57600; bu = TRUE; break; case '3': g_bootCfg.baudRate = 38400; bu = TRUE; break; case '4': g_bootCfg.baudRate = 19200; bu = TRUE; break; case '5': g_bootCfg.baudRate = 9600; bu = TRUE; break; default: break; } } sport_update_rate(g_bootCfg.baudRate); }
VOID SelectBootDevice(OAL_BLMENU_ITEM *pMenu){ int i; WCHAR buf[MAX_PATH]; OALBLMenuSelectDevice(pMenu); if(g_bootCfg.bootDevLoc.LogicalLoc == SD_BASE){ // let user select image name OALLog(L"Enter image name(actual '%S'): ", g_bootCfg.binName); if(OALBLMenuReadLine(buf, dimof(buf))){ for(i = 0; buf[i] != 0; ++i){ g_bootCfg.binName[i] = (CHAR)buf[i]; } } } }
VOID ShowNetworkSettings(OAL_BLMENU_ITEM *pMenu) { OALLog(L"\r\n Network:\r\n"); OALLog( L" KITL state: %s\r\n", (g_bootCfg.kitlFlags & OAL_KITL_FLAGS_ENABLED) ? L"enabled" : L"disabled" ); OALLog( L" KITL mode: %s\r\n", (g_bootCfg.kitlFlags & OAL_KITL_FLAGS_POLL) ? L"poll" : L"interrupt" ); OALLog( L" DHCP: %s\r\n", (g_bootCfg.kitlFlags & OAL_KITL_FLAGS_DHCP) ? L"enabled" : L"disabled" ); OALLog(L" IP address: %s\r\n", OALKitlIPtoString(g_bootCfg.ipAddress)); OALLog(L" IP mask: %s\r\n", OALKitlIPtoString(g_bootCfg.ipMask)); OALLog(L" IP router: %s\r\n", OALKitlIPtoString(g_bootCfg.ipRoute)); OALLog( L" VMINI: %s\r\n", (g_bootCfg.kitlFlags & OAL_KITL_FLAGS_VMINI) ? L"enabled" : L"disabled" ); }
VOID OALBLMenuActivate(UINT32 delay, OAL_BLMENU_ITEM *pMenu) { UINT32 time; WCHAR key = 0; // First let user break to menu while (delay > 0 && key != L' ') { OALLog(L"Hit space to enter configuration menu %d...\r\n", delay); time = OALGetTickCount(); while ((OALGetTickCount() - time) < 1000) { if ((key = OALBLMenuReadKey(FALSE)) == L' ') break; } delay--; } if (key == L' ') { #ifdef OAL_BLMENU_PCI OALPCIConfig(0, 0, 0, 0, 0, 0, NULL); #endif OALBLMenuShow(pMenu); } }