From a7f1f274a2194965f5233ae531aa4176b6fad8b4 Mon Sep 17 00:00:00 2001 From: yoshida_teruhisa Date: Wed, 5 Mar 2008 05:51:35 +0000 Subject: [PATCH] =?UTF-8?q?X3=E3=83=90=E3=83=83=E3=82=AF=E3=83=A9=E3=82=A4?= =?UTF-8?q?=E3=83=88=E5=AF=BE=E5=BF=9C=E3=81=9D=E3=81=AE=EF=BC=92=EF=BC=9A?= =?UTF-8?q?X3=E4=BB=A5=E9=99=8D=E3=81=A7=E3=81=AF=E3=83=90=E3=83=83?= =?UTF-8?q?=E3=82=AF=E3=83=A9=E3=82=A4=E3=83=88=E8=BC=9D=E5=BA=A6=E5=80=A4?= =?UTF-8?q?=E3=81=AE=E4=BF=9D=E5=AD=98=E3=81=ABLCFG=E3=82=92=E4=BD=BF?= =?UTF-8?q?=E7=94=A8=E3=81=97=E3=81=AA=E3=81=84=E3=82=88=E3=81=86=E5=A4=89?= =?UTF-8?q?=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@821 b08762b0-b915-fc4b-9d8c-17b2551a87ff --- .../sysmenu/ARM9/src/device.c | 68 +++++++++++--- .../sysmenu/ARM9/src/sysmenu_lib.c | 6 +- .../Launcher/ARM9/src/launcher.c | 93 +++++-------------- .../sysmenu/sysmenu_lib/common/sysmenu_api.h | 1 + 4 files changed, 84 insertions(+), 84 deletions(-) diff --git a/build/libraries_sysmenu/sysmenu/ARM9/src/device.c b/build/libraries_sysmenu/sysmenu/ARM9/src/device.c index 57e6c8de..9e0350db 100644 --- a/build/libraries_sysmenu/sysmenu/ARM9/src/device.c +++ b/build/libraries_sysmenu/sysmenu/ARM9/src/device.c @@ -41,6 +41,44 @@ u32 PMi_WriteRegisterAsync(u16 registerAddr, u16 data, PMCallback callback, void // // ============================================================================ +// 輝度取得で呼ぶSYSM_ReadMcuRegisterAsyncのコールバック +static OSThreadQueue s_callback_queue; +static SYSMMcuResult s_callback_result; +static void BackLightBlightnessCallBack( SYSMMcuResult result, void *arg ) +{ +#pragma unused(arg) + s_callback_result = result; + OS_WakeupThread( &s_callback_queue ); +} + +// バックライト輝度取得 +u8 SYSM_GetBackLightBlightness( void ) +{ + u8 brightness; +#ifdef SDK_SUPPORT_PMIC_2 + if ( SYSMi_GetMcuVersion() <= 1 ) + { + // X2以前 + brightness = (u8)LCFG_TSD_GetBacklightBrightness(); + } + else +#endif // SDK_SUPPORT_PMIC_2 + { + // X3以降 + while( 1 ) + { + // BUSYだと失敗するので成功するまでトライ + if ( MCU_RESULT_SUCCESS == SYSM_ReadMcuRegisterAsync( MCU_REG_BL_ADDR, &brightness, BackLightBlightnessCallBack, NULL ) ) + { + OS_SleepThread( &s_callback_queue ); // 値が返ってくるまでスリープ + break; + } + } + } + + return brightness; +} + // バックライト輝度調整 void SYSM_SetBackLightBrightness( u8 brightness ) { @@ -52,23 +90,31 @@ void SYSM_SetBackLightBrightness( u8 brightness ) if ( SYSMi_GetMcuVersion() <= 1 ) { ( void )PMi_WriteRegister( REG_PMIC_BL_BRT_B_ADDR, (u8)(brightness * 2) ); + + // X2以前のボードのみLCFGに値を保存 + LCFG_TSD_SetBacklightBrightness( brightness ); + { + u8 *pBuffer = SYSM_Alloc( LCFG_WRITE_TEMP ); + if( pBuffer != NULL ) { + LCFG_WriteTWLSettings( (u8 (*)[ LCFG_WRITE_TEMP ] )pBuffer ); + SYSM_Free( pBuffer ); + } + } } else #endif // SDK_SUPPORT_PMIC_2 { - ( void )SYSM_WriteMcuRegisterAsync( MCU_REG_BL_ADDR, brightness, NULL, NULL ); - } - - LCFG_TSD_SetBacklightBrightness( brightness ); - - // [TODO:] バックライト輝度は毎回セーブせずに、アプリ起動やリセット、電源OFF時に値が変わっていたらセーブするようにする。 - { - u8 *pBuffer = SYSM_Alloc( LCFG_WRITE_TEMP ); - if( pBuffer != NULL ) { - LCFG_WriteTWLSettings( (u8 (*)[ LCFG_WRITE_TEMP ] )pBuffer ); - SYSM_Free( pBuffer ); + // X3以降はマイコンに保存するだけ + while( 1 ) + { + // BUSYだと失敗するので成功するまでトライ + if ( MCU_RESULT_SUCCESS == SYSM_WriteMcuRegisterAsync( MCU_REG_BL_ADDR, brightness, NULL, NULL ) ) + { + break; + } } } + } diff --git a/build/libraries_sysmenu/sysmenu/ARM9/src/sysmenu_lib.c b/build/libraries_sysmenu/sysmenu/ARM9/src/sysmenu_lib.c index fed394b3..b00a6914 100644 --- a/build/libraries_sysmenu/sysmenu/ARM9/src/sysmenu_lib.c +++ b/build/libraries_sysmenu/sysmenu/ARM9/src/sysmenu_lib.c @@ -177,7 +177,11 @@ TitleProperty *SYSM_ReadParameters( void ) SYSMi_GetWork()->flags.common.isFatalError = TRUE; }else if( LCFG_ReadTWLSettings( (u8 (*)[LCFG_READ_TEMP])pBuffer ) ) { // NANDからTWL本体設定データをリード SYSM_CaribrateTP(); // 読み出したTWL本体設定データをもとにTPキャリブレーション。 - brightness = (u8)LCFG_TSD_GetBacklightBrightness(); + if ( SYSMi_GetMcuVersion() <= 1 ) + { + // X2ボード以前だけ輝度読み込み + brightness = (u8)LCFG_TSD_GetBacklightBrightness(); + } }else { SYSMi_GetWork()->flags.common.isInitialSettings = TRUE; // リード失敗なら初回起動シーケンスへ } diff --git a/build/systemMenu_RED/Launcher/ARM9/src/launcher.c b/build/systemMenu_RED/Launcher/ARM9/src/launcher.c index 100d12de..63ef18ef 100644 --- a/build/systemMenu_RED/Launcher/ARM9/src/launcher.c +++ b/build/systemMenu_RED/Launcher/ARM9/src/launcher.c @@ -125,11 +125,6 @@ static BannerCounter banner_counter[LAUNCHER_TITLE_LIST_NUM]; // ランチャー //====================================================== -// バナー表示関係(暫定) -#define DBGBNR -#ifdef DBGBNR - - static void LoadBannerFiles( void ) { // デフォルトバナーファイルの読み込み。最終的にリブートしてしまうので、解放処理は無し @@ -369,9 +364,6 @@ static void BannerDraw(int selected, TitleProperty *titleprop) } } -#endif //DBGBNR - - // ランチャーの初期化 void LauncherInit( TitleProperty *pTitleList ) { @@ -415,56 +407,7 @@ void LauncherInit( TitleProperty *pTitleList ) //FS_InitFile(&strm.file); //strm.isPlay = FALSE; - #ifdef DBGBNR BannerInit(); - #endif -} - -// 輝度表示ポーリングで呼んだSYSM_ReadMcuRegisterAsyncのコールバック -static OSThreadQueue s_callback_queue; -static SYSMMcuResult s_callback_result; -static void PollBackLightBlightnessCallBack( SYSMMcuResult result, void *arg ) -{ - s_callback_result = result; - OS_WakeupThread( &s_callback_queue ); -} - -// 輝度表示ポーリング -// X3基盤から、Select+音量で輝度変更できるようになったため、輝度スイッチ表示切り替えタイミングを変更 -// 変化があれば輝度スイッチ表示を切り替えるように -static void PollBackLightBrightness( void ) -{ - static int old_brightness = -1; -#ifdef SDK_SUPPORT_PMIC_2 - if ( SYSMi_GetMcuVersion() <= 1 ) - { - } - else -#endif // SDK_SUPPORT_PMIC_2 - { - u8 brightness; - ( void )SYSM_ReadMcuRegisterAsync( MCU_REG_BL_ADDR, &brightness, PollBackLightBlightnessCallBack, NULL ); - OS_SleepThread( &s_callback_queue ); // 値が返ってくるまでスリープ - if( s_callback_result==MCU_RESULT_SUCCESS && LCFG_TSD_GetBacklightBrightness() != brightness ) - { - // マイコンから取ってきた輝度とLCFGの設定値がズレていたらLCFGの値を設定しなおし - LCFG_TSD_SetBacklightBrightness( brightness ); - { - u8 *pBuffer = SYSM_Alloc( LCFG_WRITE_TEMP ); - if( pBuffer != NULL ) { - LCFG_WriteTWLSettings( (u8 (*)[ LCFG_WRITE_TEMP ] )pBuffer ); - SYSM_Free( pBuffer ); - } - } - } - } - - // 1フレーム前の古い値とLCFGの値が違っていたら描画しなおし - if( old_brightness != LCFG_TSD_GetBacklightBrightness() ) - { - old_brightness = LCFG_TSD_GetBacklightBrightness(); - DrawBackLightSwitch(); - } } // ROMのローディング中のランチャーフェードアウト @@ -473,16 +416,13 @@ BOOL LauncherFadeout( TitleProperty *pTitleList ) static int fadecount = 0; // 描画関係 - + // 輝度表示 - - PollBackLightBrightness(); + DrawBackLightSwitch(); DrawScrollBar( pTitleList ); - #ifdef DBGBNR BannerDraw( selected, pTitleList ); - #endif // 描画少し追加 { @@ -575,14 +515,14 @@ static void ProcessBackLightPads( void ) } if( (pad.trg & PAD_KEY_UP) || up_bl_trg ) { - brightness = LCFG_TSD_GetBacklightBrightness() + 1; + brightness = SYSM_GetBackLightBlightness() + 1; if( brightness > LCFG_TWL_BACKLIGHT_LEVEL_MAX ) { brightness = LCFG_TWL_BACKLIGHT_LEVEL_MAX; } SYSM_SetBackLightBrightness( (u8)brightness ); } if( ( pad.trg & PAD_KEY_DOWN) || dw_bl_trg ) { - brightness = LCFG_TSD_GetBacklightBrightness() - 1; + brightness = SYSM_GetBackLightBlightness() - 1; if( brightness < 0 ) { brightness = 0; } @@ -800,13 +740,11 @@ typedef struct NandFirmResetParameter { MoveByScrollBar(); // 描画関係 - PollBackLightBrightness(); + DrawBackLightSwitch(); DrawScrollBar( pTitleList ); - #ifdef DBGBNR BannerDraw( selected, pTitleList ); - #endif // RTC情報の取得&表示 GetAndDrawRTCData( &g_rtcDraw, FALSE ); @@ -817,9 +755,20 @@ typedef struct NandFirmResetParameter { // バックライトスイッチの表示 static void DrawBackLightSwitch(void) { - NNS_G2dCharCanvasClearArea( &gCanvas, TXT_COLOR_NULL, B_LIGHT_DW_BUTTON_TOP_X + 24, B_LIGHT_DW_BUTTON_TOP_Y, 40, 13 ); - PutStringUTF16( B_LIGHT_DW_BUTTON_TOP_X, B_LIGHT_DW_BUTTON_TOP_Y, TXT_COLOR_RED, - L"\xE01c   \xE01b" ); - PrintfSJIS( B_LIGHT_DW_BUTTON_TOP_X + 11, B_LIGHT_DW_BUTTON_TOP_Y, TXT_COLOR_RED, - "BL:%2d\n", LCFG_TSD_GetBacklightBrightness() ); + static int old_brightness = -1; + u8 brightness; + + brightness = SYSM_GetBackLightBlightness(); + + // 1フレーム前の古い値と輝度値が違っていたら描画しなおし + if( old_brightness != brightness ) + { + old_brightness = brightness; + + NNS_G2dCharCanvasClearArea( &gCanvas, TXT_COLOR_NULL, B_LIGHT_DW_BUTTON_TOP_X + 24, B_LIGHT_DW_BUTTON_TOP_Y, 40, 13 ); + PutStringUTF16( B_LIGHT_DW_BUTTON_TOP_X, B_LIGHT_DW_BUTTON_TOP_Y, TXT_COLOR_RED, + L"\xE01c   \xE01b" ); + PrintfSJIS( B_LIGHT_DW_BUTTON_TOP_X + 11, B_LIGHT_DW_BUTTON_TOP_Y, TXT_COLOR_RED, + "BL:%2d\n", brightness ); + } } diff --git a/include/sysmenu/sysmenu_lib/common/sysmenu_api.h b/include/sysmenu/sysmenu_lib/common/sysmenu_api.h index bdc9c1bf..b9c2674b 100644 --- a/include/sysmenu/sysmenu_lib/common/sysmenu_api.h +++ b/include/sysmenu/sysmenu_lib/common/sysmenu_api.h @@ -105,6 +105,7 @@ extern AuthResult SYSM_TryToBootTitle( TitleProperty *pBootTitle ); // // デバイス制御 extern void SYSM_CaribrateTP( void ); // タッチパネルキャリブレーション extern void SYSM_SetBackLightBrightness( u8 brightness ); // バックライトを制御(本体設定データへの値セーブも行う) +extern u8 SYSM_GetBackLightBlightness( void ); // バックライト輝度を取得(X2以前とX3以降で挙動に違い) // Nintendoロゴ制御 extern BOOL SYSM_CheckNintendoLogo( u16 *pLogoData ); // Nintendoロゴデータのチェック