mirror of
https://github.com/rvtr/TwlIPL.git
synced 2025-10-31 06:01:12 -04:00
X3バックライト対応その2:X3以降ではバックライト輝度値の保存にLCFGを使用しないよう変更
git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@821 b08762b0-b915-fc4b-9d8c-17b2551a87ff
This commit is contained in:
parent
f0e34f5fd5
commit
a7f1f274a2
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -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; // リード失敗なら初回起動シーケンスへ
|
||||
}
|
||||
|
||||
@ -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 );
|
||||
}
|
||||
}
|
||||
|
||||
@ -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ロゴデータのチェック
|
||||
|
||||
Loading…
Reference in New Issue
Block a user