TwlIPL/build/systemMenu_tools/updaterLogDelete/ARM9.TWL/src/main.c
yosiokat 47c53d01f2 SystemUpdaterログ削除ツールの追加。
git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@2882 b08762b0-b915-fc4b-9d8c-17b2551a87ff
2009-07-22 06:01:00 +00:00

150 lines
3.8 KiB
C
Raw Blame History

#include <twl.h>
//#include <twl/os/common/ownerInfoEx_private.h>
#include "font.h"
#include "screen.h"
#include "keypad.h"
#define SYSTEM_UPDATER_LOG_PATH "nand:/sys/log/updater.log"
void VBlankIntr(void);
void myInit(void);
s16 drawLine = 0;
void TwlMain( void )
{
myInit();
//---- interrupt setting
OS_SetIrqFunction(OS_IE_V_BLANK, VBlankIntr);
OS_EnableIrqMask(OS_IE_V_BLANK);
OS_EnableIrq();
GX_VBlankIntr(TRUE);
{
FSFile file;
if( FS_OpenFileEx( &file, SYSTEM_UPDATER_LOG_PATH, FS_FILEMODE_R ) ) {
(void)FS_CloseFile( &file );
}else {
PrintString(0, drawLine++, CONSOLE_GREEN, "UpdaterLog is already deleted.");
OS_WaitVBlankIntr();
OS_Terminate();
}
}
PrintString(0, drawLine++, CONSOLE_WHITE, "Press A key To delete UpdaterLog.");
while(1){
kamiPadRead();
if(kamiPadIsTrigger(PAD_BUTTON_A)){
if ( !FS_DeleteFile(SYSTEM_UPDATER_LOG_PATH) )
{
FSResult res = FS_GetArchiveResultCode(SYSTEM_UPDATER_LOG_PATH);
PrintString(0, drawLine++, CONSOLE_RED, "Delete Failed. Err:%03x", res);
break;
}
PrintString(0, drawLine++, CONSOLE_WHITE, "Delete Succeeded.");
break;
}
}
OS_WaitVBlankIntr();
OS_Terminate();
}
static void
VBlankIntr(void)
{
//---- upload pseudo screen to VRAM
DC_FlushRange(gScreen, sizeof(gScreen));
GX_LoadBG0Scr(gScreen, 0, sizeof(gScreen));
GXS_LoadBG0Scr(gScreen, 0, sizeof(gScreen));
OS_SetIrqCheckFlag(OS_IE_V_BLANK); // checking VBlank interrupt
}
void myInit(void)
{
//---- init
OS_Init();
OS_InitTick();
OS_InitAlarm();
FX_Init();
GX_Init();
GX_DispOff();
GXS_DispOff();
//---- init displaying
GX_SetBankForLCDC(GX_VRAM_LCDC_ALL);
MI_CpuClearFast((void *)HW_LCDC_VRAM, HW_LCDC_VRAM_SIZE);
(void)GX_DisableBankForLCDC();
MI_CpuFillFast((void *)HW_OAM, 192, HW_OAM_SIZE);
MI_CpuClearFast((void *)HW_PLTT, HW_PLTT_SIZE);
MI_CpuFillFast((void *)HW_DB_OAM, 192, HW_DB_OAM_SIZE);
MI_CpuClearFast((void *)HW_DB_PLTT, HW_DB_PLTT_SIZE);
//---- setting 2D for top screen
GX_SetBankForBG(GX_VRAM_BG_128_A);
G2_SetBG0Control(GX_BG_SCRSIZE_TEXT_256x256,
GX_BG_COLORMODE_16,
GX_BG_SCRBASE_0xf800, GX_BG_CHARBASE_0x00000, GX_BG_EXTPLTT_01);
G2_SetBG0Priority(0);
G2_BG0Mosaic(FALSE);
GX_SetGraphicsMode(GX_DISPMODE_GRAPHICS, GX_BGMODE_0, GX_BG0_AS_2D);
GX_SetVisiblePlane(GX_PLANEMASK_BG0);
GX_LoadBG0Char(d_CharData, 0, sizeof(d_CharData));
GX_LoadBGPltt(d_PaletteData, 0, sizeof(d_PaletteData));
//---- setting 2D for bottom screen
GX_SetBankForSubBG(GX_VRAM_SUB_BG_128_C);
G2S_SetBG0Control(GX_BG_SCRSIZE_TEXT_256x256,
GX_BG_COLORMODE_16,
GX_BG_SCRBASE_0xf800, GX_BG_CHARBASE_0x00000, GX_BG_EXTPLTT_01);
G2S_SetBG0Priority(0);
G2S_BG0Mosaic(FALSE);
GXS_SetGraphicsMode(GX_BGMODE_0);
GXS_SetVisiblePlane(GX_PLANEMASK_BG0);
GXS_LoadBG0Char(d_CharData, 0, sizeof(d_CharData));
GXS_LoadBGPltt(d_PaletteData, 0, sizeof(d_PaletteData));
//---- screen
MI_CpuFillFast((void *)gScreen, 0, sizeof(gScreen));
DC_FlushRange(gScreen, sizeof(gScreen));
/* DMA<4D><41><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IO<49><4F><EFBFBD>W<EFBFBD>X<EFBFBD>^<5E>փA<D683>N<EFBFBD>Z<EFBFBD>X<EFBFBD><58><EFBFBD><EFBFBD><EFBFBD>̂ŃL<C583><4C><EFBFBD>b<EFBFBD>V<EFBFBD><56><EFBFBD><EFBFBD> Wait <20>͕s<CD95>v */
// DC_WaitWriteBufferEmpty();
GX_LoadBG0Scr(gScreen, 0, sizeof(gScreen));
GXS_LoadBG0Scr(gScreen, 0, sizeof(gScreen));
//---- init interrupt
OS_SetIrqFunction(OS_IE_V_BLANK, VBlankIntr);
(void)OS_EnableIrqMask(OS_IE_V_BLANK);
(void)GX_VBlankIntr(TRUE);
(void)OS_EnableIrq();
(void)OS_EnableInterrupts();
//---- FileSytem init
FS_Init(FS_DMA_NOT_USE);
//---- start displaying
GX_DispOn();
GXS_DispOn();
}