mirror of
https://github.com/rvtr/TwlIPL.git
synced 2025-10-31 06:01:12 -04:00
・下記のAPIをSYSMからUTLライブラリに移動。
・ペアレンタルコントロールのマスターキー関係 ・スリープ ・下記のAPIをSYSMから削除。 ・バックライト輝度制御。 ・無線LED制御。 ・ランチャーの無線LED制御をPMi_SetWirelessLEDに変更。 ・本体設定で、UTL_SetBacklightBrightnessを使用したバックライト輝度変更を追加。 git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@1457 b08762b0-b915-fc4b-9d8c-17b2551a87ff
This commit is contained in:
parent
ab733f5d99
commit
d83aca47fe
@ -37,7 +37,6 @@ SRCS = sysmenu_lib.c \
|
||||
../common/src/pxi.c \
|
||||
../common/src/mountInfo.c \
|
||||
../common/src/decryptAES.c \
|
||||
../common/src/masterkey.c \
|
||||
$(REVISION_SRC)
|
||||
|
||||
|
||||
|
||||
@ -24,16 +24,8 @@
|
||||
// define data-----------------------------------------------------------------
|
||||
// extern data-----------------------------------------------------------------
|
||||
// function's prototype-------------------------------------------------------
|
||||
#ifdef SDK_FINALROM
|
||||
u32 PM_SendUtilityCommandAsync(u32 number, u16 parameter, u16* retValue, PMCallback callback, void *arg);
|
||||
u32 PM_SendUtilityCommand(u32 number, u16 parameter, u16* retValue);
|
||||
u32 PMi_WriteRegister(u16 registerAddr, u16 data);
|
||||
u32 PMi_WriteRegisterAsync(u16 registerAddr, u16 data, PMCallback callback, void *arg);
|
||||
#endif // SDK_FINALROM
|
||||
|
||||
// global variable-------------------------------------------------------------
|
||||
// static variable-------------------------------------------------------------
|
||||
static u8 s_brightness;
|
||||
// const data------------------------------------------------------------------
|
||||
|
||||
// ============================================================================
|
||||
@ -42,102 +34,6 @@ static u8 s_brightness;
|
||||
//
|
||||
// ============================================================================
|
||||
|
||||
// 輝度取得で呼ぶSYSM_ReadMcuRegisterAsyncのコールバック
|
||||
static OSThreadQueue s_callback_queue;
|
||||
static SYSMMcuResult s_callback_result;
|
||||
static void MCUCallBack( 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 = s_brightness;
|
||||
}
|
||||
else
|
||||
#endif // SDK_SUPPORT_PMIC_2
|
||||
{
|
||||
// X3以降
|
||||
while( 1 )
|
||||
{
|
||||
// BUSYだと失敗するので成功するまでトライ
|
||||
if ( MCU_RESULT_SUCCESS == SYSM_ReadMcuRegisterAsync( MCU_REG_BL_ADDR, &brightness, MCUCallBack, NULL ) )
|
||||
{
|
||||
OS_SleepThread( &s_callback_queue ); // 値が返ってくるまでスリープ
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return brightness;
|
||||
}
|
||||
|
||||
// バックライト輝度調整
|
||||
void SYSM_SetBackLightBrightness( u8 brightness )
|
||||
{
|
||||
if( brightness > BACKLIGHT_BRIGHTNESS_MAX ) {
|
||||
OS_TPrintf( "Backlight brightness over! Change brightenss forcibly : %d -> %d\n", brightness, BACKLIGHT_BRIGHTNESS_MAX );
|
||||
brightness = BACKLIGHT_BRIGHTNESS_MAX;
|
||||
}
|
||||
#ifdef SDK_SUPPORT_PMIC_2
|
||||
if ( SYSMi_GetMcuVersion() <= 1 )
|
||||
{
|
||||
s_brightness = brightness;
|
||||
( void )PMi_WriteRegister( REG_PMIC_BL_BRT_B_ADDR, (u8)(s_brightness * 2) );
|
||||
}
|
||||
else
|
||||
#endif // SDK_SUPPORT_PMIC_2
|
||||
{
|
||||
// X3以降はマイコンに保存するだけ
|
||||
while( 1 )
|
||||
{
|
||||
// BUSYだと失敗するので成功するまでトライ
|
||||
if ( MCU_RESULT_SUCCESS == SYSM_WriteMcuRegisterAsync( MCU_REG_BL_ADDR, brightness, NULL, NULL ) )
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
// ワイヤレスLEDの制御
|
||||
void SYSMi_SetWirelessLED( BOOL enable )
|
||||
{
|
||||
u8 value;
|
||||
// X3以降
|
||||
while( 1 )
|
||||
{
|
||||
// BUSYだと失敗するので成功するまでトライ
|
||||
if ( MCU_RESULT_SUCCESS == SYSM_ReadMcuRegisterAsync( MCU_REG_WIFI_ADDR, &value, MCUCallBack, NULL ) )
|
||||
{
|
||||
OS_SleepThread( &s_callback_queue ); // 値が返ってくるまでスリープ
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
value = (u8)( ( value & ~MCU_REG_WIFI_LED_MASK ) | ( enable ? MCU_REG_WIFI_LED_MASK : 0 ) );
|
||||
|
||||
while( 1 )
|
||||
{
|
||||
// BUSYだと失敗するので成功するまでトライ
|
||||
if ( MCU_RESULT_SUCCESS == SYSM_WriteMcuRegisterAsync( MCU_REG_WIFI_ADDR, value, NULL, NULL ) )
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// RTCクロック補正値をセット
|
||||
void SYSMi_WriteAdjustRTC( void )
|
||||
{
|
||||
@ -175,61 +71,3 @@ void SYSMi_CheckRTC( void )
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// スリープモードへの遷移
|
||||
void SYSM_GoSleepMode( void )
|
||||
{
|
||||
// 蓋閉じ判定
|
||||
if ( ! PAD_DetectFold() )
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// デバッガ起動時にはスリープに入らない
|
||||
if ( ! SYSM_IsRunOnDebugger() || (OSi_DetectDebugger() & OS_CONSOLE_TWLDEBUGGER) )
|
||||
{
|
||||
// カード抜け無検出設定
|
||||
// TWLではゲームカードの再ロードが可能なため
|
||||
// スリープ時のカード抜け検出を無効化
|
||||
// (DS-IPLではゲームカードが起動できなくなるので
|
||||
// レジューム時のROM-IDチェックでエラーになると
|
||||
// シャットダウンしていた)
|
||||
OSIntrMode enable = OS_DisableInterrupts();
|
||||
reg_MI_MCCNT0 &= ~REG_MI_MCCNT0_I_MASK;
|
||||
OS_ResetRequestIrqMask( OS_IE_CARD_IREQ );
|
||||
OS_RestoreInterrupts( enable );
|
||||
|
||||
// スリープ遷移
|
||||
PM_GoSleepMode( PM_TRIGGER_COVER_OPEN |
|
||||
PM_TRIGGER_RTC_ALARM,
|
||||
0,
|
||||
0 );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#ifdef SDK_FINALROM
|
||||
/*---------------------------------------------------------------------------*
|
||||
Name: PMi_WriteRegisterAsync
|
||||
|
||||
Description: send write register command to ARM7
|
||||
|
||||
Arguments: registerAddr : PMIC register number (0-3)
|
||||
data : data written to PMIC register
|
||||
callback : callback function
|
||||
arg : callback argument
|
||||
|
||||
Returns: result of issueing command
|
||||
PM_RESULT_BUSY : busy
|
||||
PM_RESULT_SUCCESS : success
|
||||
*---------------------------------------------------------------------------*/
|
||||
u32 PMi_WriteRegisterAsync(u16 registerAddr, u16 data, PMCallback callback, void *arg)
|
||||
{
|
||||
return PM_SendUtilityCommandAsync(PMi_UTIL_WRITEREG, (u16)((registerAddr<<16) | (data&0xff)), NULL, callback, arg);
|
||||
}
|
||||
|
||||
u32 PMi_WriteRegister(u16 registerAddr, u16 data)
|
||||
{
|
||||
return PM_SendUtilityCommand(PMi_UTIL_WRITEREG, (u16)((registerAddr<<16) | (data&0xff)), NULL);
|
||||
}
|
||||
#endif // SDK_FINALROM
|
||||
|
||||
@ -194,13 +194,13 @@ TitleProperty *SYSM_ReadParameters( void )
|
||||
// 無線ON/OFFフラグをもとに、LEDを設定する。
|
||||
//-----------------------------------------------------
|
||||
{
|
||||
BOOL enable;
|
||||
PMWirelessLEDStatus enable;
|
||||
if( LCFG_THW_IsForceDisableWireless() ) {
|
||||
enable = FALSE;
|
||||
enable = PM_WIRELESS_LED_OFF;
|
||||
}else {
|
||||
enable = LCFG_TSD_IsAvailableWireless();
|
||||
enable = LCFG_TSD_IsAvailableWireless() ? PM_WIRELESS_LED_ON : PM_WIRELESS_LED_OFF;
|
||||
}
|
||||
SYSMi_SetWirelessLED( enable );
|
||||
PMi_SetWirelessLED( enable );
|
||||
}
|
||||
|
||||
//-----------------------------------------------------
|
||||
|
||||
@ -58,9 +58,6 @@ void SYSMi_SetBootAppMountInfo( TitleProperty *pBootTitle );
|
||||
// デバイス
|
||||
//-------------------------------------------------------
|
||||
|
||||
// ワイヤレスLED制御
|
||||
void SYSMi_SetWirelessLED( BOOL enable );
|
||||
|
||||
// RTC補正
|
||||
void SYSMi_WriteAdjustRTC( void );
|
||||
|
||||
|
||||
@ -234,18 +234,6 @@ void SYSMi_PXIFifoRecvCallback( PXIFifoTag tag, u32 data, BOOL err )
|
||||
|
||||
switch( cmd )
|
||||
{
|
||||
case SYSM_PXI_COMM_BL_BRIGHT:
|
||||
#ifdef SDK_SUPPORT_PMIC_2
|
||||
if ( SYSMi_GetMcuVersion() <= 1 )
|
||||
{
|
||||
PMi_SetRegister( REG_PMIC_BL_BRT_B_ADDR, (u8)packet.data );
|
||||
}
|
||||
else
|
||||
#endif // SDK_SUPPORT_PMIC_2
|
||||
{
|
||||
MCU_WriteRegister( MCU_REG_BL_ADDR, (u8)packet.data );
|
||||
}
|
||||
break;
|
||||
#ifdef DHT_TEST
|
||||
case SYSM_PXI_COMM_DS_HASH_TABLE:
|
||||
dht = (void*)(0x2000000 + (packet.data << 8));
|
||||
|
||||
@ -26,6 +26,7 @@ TWL_PROC = ARM9
|
||||
|
||||
SRCDIR = src
|
||||
SRCS = util.c \
|
||||
masterkey.c
|
||||
|
||||
|
||||
TARGET_LIB = libsysmutil$(TWL_LIBSUFFIX).a
|
||||
|
||||
@ -1,255 +0,0 @@
|
||||
/*---------------------------------------------------------------------------*
|
||||
Project: TwlIPL
|
||||
File: SYSM_lib.c
|
||||
|
||||
Copyright 2007 Nintendo. All rights reserved.
|
||||
|
||||
These coded instructions, statements, and computer programs contain
|
||||
proprietary information of Nintendo of America Inc. and/or Nintendo
|
||||
Company Ltd., and are protected by Federal copyright law. They may
|
||||
not be disclosed to third parties or copied or duplicated in any form,
|
||||
in whole or in part, without the prior written consent of Nintendo.
|
||||
|
||||
$Date:: $
|
||||
$Rev$
|
||||
$Author$
|
||||
*---------------------------------------------------------------------------*/
|
||||
|
||||
#include <twl.h>
|
||||
#include <sysmenu.h>
|
||||
#include <sysmenu/mcu.h>
|
||||
#include <spi.h>
|
||||
#include "internal_api.h"
|
||||
|
||||
// define data-----------------------------------------------------------------
|
||||
// extern data-----------------------------------------------------------------
|
||||
// function's prototype-------------------------------------------------------
|
||||
#ifdef SDK_FINALROM
|
||||
u32 PM_SendUtilityCommandAsync(u32 number, u16 parameter, u16* retValue, PMCallback callback, void *arg);
|
||||
u32 PM_SendUtilityCommand(u32 number, u16 parameter, u16* retValue);
|
||||
u32 PMi_WriteRegister(u16 registerAddr, u16 data);
|
||||
u32 PMi_WriteRegisterAsync(u16 registerAddr, u16 data, PMCallback callback, void *arg);
|
||||
#endif // SDK_FINALROM
|
||||
|
||||
// global variable-------------------------------------------------------------
|
||||
// static variable-------------------------------------------------------------
|
||||
static u8 s_brightness;
|
||||
// const data------------------------------------------------------------------
|
||||
|
||||
// ============================================================================
|
||||
//
|
||||
// デバイス制御
|
||||
//
|
||||
// ============================================================================
|
||||
|
||||
// 輝度取得で呼ぶSYSM_ReadMcuRegisterAsyncのコールバック
|
||||
static OSThreadQueue s_callback_queue;
|
||||
static SYSMMcuResult s_callback_result;
|
||||
static void MCUCallBack( 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 = s_brightness;
|
||||
}
|
||||
else
|
||||
#endif // SDK_SUPPORT_PMIC_2
|
||||
{
|
||||
// X3以降
|
||||
while( 1 )
|
||||
{
|
||||
// BUSYだと失敗するので成功するまでトライ
|
||||
if ( MCU_RESULT_SUCCESS == SYSM_ReadMcuRegisterAsync( MCU_REG_BL_ADDR, &brightness, MCUCallBack, NULL ) )
|
||||
{
|
||||
OS_SleepThread( &s_callback_queue ); // 値が返ってくるまでスリープ
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return brightness;
|
||||
}
|
||||
|
||||
// バックライト輝度調整
|
||||
void SYSM_SetBackLightBrightness( u8 brightness )
|
||||
{
|
||||
if( brightness > BACKLIGHT_BRIGHTNESS_MAX ) {
|
||||
OS_TPrintf( "Backlight brightness over! Change brightenss forcibly : %d -> %d\n", brightness, BACKLIGHT_BRIGHTNESS_MAX );
|
||||
brightness = BACKLIGHT_BRIGHTNESS_MAX;
|
||||
}
|
||||
#ifdef SDK_SUPPORT_PMIC_2
|
||||
if ( SYSMi_GetMcuVersion() <= 1 )
|
||||
{
|
||||
s_brightness = brightness;
|
||||
( void )PMi_WriteRegister( REG_PMIC_BL_BRT_B_ADDR, (u8)(s_brightness * 2) );
|
||||
}
|
||||
else
|
||||
#endif // SDK_SUPPORT_PMIC_2
|
||||
{
|
||||
// X3以降はマイコンに保存するだけ
|
||||
while( 1 )
|
||||
{
|
||||
// BUSYだと失敗するので成功するまでトライ
|
||||
if ( MCU_RESULT_SUCCESS == SYSM_WriteMcuRegisterAsync( MCU_REG_BL_ADDR, brightness, NULL, NULL ) )
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
// ワイヤレスLEDの制御
|
||||
void SYSMi_SetWirelessLED( BOOL enable )
|
||||
{
|
||||
u8 value;
|
||||
// X3以降
|
||||
while( 1 )
|
||||
{
|
||||
// BUSYだと失敗するので成功するまでトライ
|
||||
if ( MCU_RESULT_SUCCESS == SYSM_ReadMcuRegisterAsync( MCU_REG_WIFI_ADDR, &value, MCUCallBack, NULL ) )
|
||||
{
|
||||
OS_SleepThread( &s_callback_queue ); // 値が返ってくるまでスリープ
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
value = (u8)( ( value & ~MCU_REG_WIFI_LED_MASK ) | ( enable ? MCU_REG_WIFI_LED_MASK : 0 ) );
|
||||
|
||||
while( 1 )
|
||||
{
|
||||
// BUSYだと失敗するので成功するまでトライ
|
||||
if ( MCU_RESULT_SUCCESS == SYSM_WriteMcuRegisterAsync( MCU_REG_WIFI_ADDR, value, NULL, NULL ) )
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// タッチパネルキャリブレーション
|
||||
void SYSM_CaribrateTP( void )
|
||||
{
|
||||
LCFGTWLTPCalibData store;
|
||||
TPCalibrateParam calibParam;
|
||||
|
||||
// 本体設定データからキャリブレーション情報を取得
|
||||
LCFG_TSD_GetTPCalibration( &store );
|
||||
|
||||
// TPキャリブレーション
|
||||
( void )TP_CalcCalibrateParam( &calibParam, // タッチパネル初期化
|
||||
store.data.raw_x1, store.data.raw_y1, (u16)store.data.dx1, (u16)store.data.dy1,
|
||||
store.data.raw_x2, store.data.raw_y2, (u16)store.data.dx2, (u16)store.data.dy2 );
|
||||
TP_SetCalibrateParam( &calibParam );
|
||||
OS_TPrintf("TP_calib: %4d %4d %4d %4d %4d %4d\n",
|
||||
store.data.raw_x1, store.data.raw_y1, (u16)store.data.dx1, (u16)store.data.dy1,
|
||||
store.data.raw_x2, store.data.raw_y2, (u16)store.data.dx2, (u16)store.data.dy2 );
|
||||
}
|
||||
|
||||
|
||||
// RTCクロック補正値をセット
|
||||
void SYSMi_WriteAdjustRTC( void )
|
||||
{
|
||||
RTCRawAdjust raw;
|
||||
raw.adjust = LCFG_THW_GetRTCAdjust();
|
||||
( void )RTCi_SetRegAdjust( &raw );
|
||||
}
|
||||
|
||||
|
||||
// 起動時のRTCチェック
|
||||
void SYSMi_CheckRTC( void )
|
||||
{
|
||||
RTCDate date;
|
||||
RTCTime time;
|
||||
|
||||
// RTCのリセット or おかしい値を検出した場合は初回起動シーケンスへ。
|
||||
( void )RTC_GetDateTime( &date, &time );
|
||||
if( !UTL_CheckRTCDate( &date ) ||
|
||||
!UTL_CheckRTCTime( &time )
|
||||
#ifndef __IS_DEBUGGER_BUILD // 青デバッガではRTCの電池がないので、毎回ここにひっかかって設定データが片方クリアされてしまう。これを防ぐスイッチ。
|
||||
||
|
||||
SYSMi_GetWork()->flags.common.isResetRTC
|
||||
#endif
|
||||
) { // RTCの異常を検出したら、rtc入力フラグ&rtcOffsetを0にしてNVRAMに書き込み。
|
||||
OS_TPrintf("\"RTC reset\" or \"Illegal RTC data\" detect!\n");
|
||||
LCFG_TSD_SetRTCOffset( 0 );
|
||||
LCFG_TSD_SetRTCLastSetYear( 0 );
|
||||
{
|
||||
u8 *pBuffer = SYSM_Alloc( LCFG_WRITE_TEMP );
|
||||
if( pBuffer != NULL ) {
|
||||
LCFG_WriteTWLSettings( (u8 (*)[ LCFG_WRITE_TEMP ] )pBuffer );
|
||||
SYSM_Free( pBuffer );
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// スリープモードへの遷移
|
||||
void SYSM_GoSleepMode( void )
|
||||
{
|
||||
// 蓋閉じ判定
|
||||
if ( ! PAD_DetectFold() )
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// デバッガ起動時にはスリープに入らない
|
||||
if ( ! SYSM_IsRunOnDebugger() || (OSi_DetectDebugger() & OS_CONSOLE_TWLDEBUGGER) )
|
||||
{
|
||||
// カード抜け無検出設定
|
||||
// TWLではゲームカードの再ロードが可能なため
|
||||
// スリープ時のカード抜け検出を無効化
|
||||
// (DS-IPLではゲームカードが起動できなくなるので
|
||||
// レジューム時のROM-IDチェックでエラーになると
|
||||
// シャットダウンしていた)
|
||||
OSIntrMode enable = OS_DisableInterrupts();
|
||||
reg_MI_MCCNT0 &= ~REG_MI_MCCNT0_I_MASK;
|
||||
OS_ResetRequestIrqMask( OS_IE_CARD_IREQ );
|
||||
OS_RestoreInterrupts( enable );
|
||||
|
||||
// スリープ遷移
|
||||
PM_GoSleepMode( PM_TRIGGER_COVER_OPEN |
|
||||
PM_TRIGGER_RTC_ALARM,
|
||||
0,
|
||||
0 );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#ifdef SDK_FINALROM
|
||||
/*---------------------------------------------------------------------------*
|
||||
Name: PMi_WriteRegisterAsync
|
||||
|
||||
Description: send write register command to ARM7
|
||||
|
||||
Arguments: registerAddr : PMIC register number (0-3)
|
||||
data : data written to PMIC register
|
||||
callback : callback function
|
||||
arg : callback argument
|
||||
|
||||
Returns: result of issueing command
|
||||
PM_RESULT_BUSY : busy
|
||||
PM_RESULT_SUCCESS : success
|
||||
*---------------------------------------------------------------------------*/
|
||||
u32 PMi_WriteRegisterAsync(u16 registerAddr, u16 data, PMCallback callback, void *arg)
|
||||
{
|
||||
return PM_SendUtilityCommandAsync(PMi_UTIL_WRITEREG, (u16)((registerAddr<<16) | (data&0xff)), NULL, callback, arg);
|
||||
}
|
||||
|
||||
u32 PMi_WriteRegister(u16 registerAddr, u16 data)
|
||||
{
|
||||
return PM_SendUtilityCommand(PMi_UTIL_WRITEREG, (u16)((registerAddr<<16) | (data&0xff)), NULL);
|
||||
}
|
||||
#endif // SDK_FINALROM
|
||||
@ -72,10 +72,10 @@ u32 CalcMasterkey(const u8 *src)
|
||||
// マスターキー算出
|
||||
//
|
||||
//======================================================================
|
||||
u32 SYSM_CalcPCTLMasterKey( void )
|
||||
u32 UTL_CalcPCTLMasterKey( void )
|
||||
{
|
||||
u32 masterKey;
|
||||
u32 inquiryCode = SYSM_CalcPCTLInquiryCode();
|
||||
u32 inquiryCode = UTL_CalcPCTLInquiryCode();
|
||||
u8 arg[ 9 ];
|
||||
RTCDate date;
|
||||
RTC_Init();
|
||||
@ -92,7 +92,7 @@ u32 SYSM_CalcPCTLMasterKey( void )
|
||||
// ペアレンタルコントロール問い合わせ番号算出
|
||||
//
|
||||
//======================================================================
|
||||
u32 SYSM_CalcPCTLInquiryCode( void )
|
||||
u32 UTL_CalcPCTLInquiryCode( void )
|
||||
{
|
||||
int i;
|
||||
u64 num = 0;
|
||||
@ -78,6 +78,42 @@ void UTL_CaribrateTP( const LCFGTWLTPCalibData *pCalib )
|
||||
}
|
||||
|
||||
|
||||
//======================================================================
|
||||
// スリープ
|
||||
//======================================================================
|
||||
|
||||
// スリープモードへの遷移
|
||||
void UTL_GoSleepMode( void )
|
||||
{
|
||||
// 蓋閉じ判定
|
||||
if ( ! PAD_DetectFold() )
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// デバッガ起動時にはスリープに入らない
|
||||
if ( OSi_DetectDebugger() & OS_CONSOLE_TWLDEBUGGER )
|
||||
{
|
||||
// カード抜け無検出設定
|
||||
// TWLではゲームカードの再ロードが可能なため
|
||||
// スリープ時のカード抜け検出を無効化
|
||||
// (DS-IPLではゲームカードが起動できなくなるので
|
||||
// レジューム時のROM-IDチェックでエラーになると
|
||||
// シャットダウンしていた)
|
||||
OSIntrMode enable = OS_DisableInterrupts();
|
||||
reg_MI_MCCNT0 &= ~REG_MI_MCCNT0_I_MASK;
|
||||
OS_ResetRequestIrqMask( OS_IE_CARD_IREQ );
|
||||
OS_RestoreInterrupts( enable );
|
||||
|
||||
// スリープ遷移
|
||||
PM_GoSleepMode( PM_TRIGGER_COVER_OPEN |
|
||||
PM_TRIGGER_RTC_ALARM,
|
||||
0,
|
||||
0 );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//======================================================================
|
||||
// RTCオフセット制御
|
||||
//======================================================================
|
||||
|
||||
@ -780,7 +780,7 @@ static void DrawBackLightSwitch(void)
|
||||
static int old_brightness = -1;
|
||||
u8 brightness;
|
||||
|
||||
brightness = SYSM_GetBackLightBlightness();
|
||||
(void)UTL_GetBacklightBrightness( &brightness );
|
||||
|
||||
// 1フレーム前の古い値と輝度値が違っていたら描画しなおし
|
||||
if( old_brightness != brightness )
|
||||
|
||||
@ -54,11 +54,6 @@
|
||||
#define FWHEADER_SIZE 0x100
|
||||
|
||||
|
||||
/*
|
||||
external functions
|
||||
*/
|
||||
extern void SYSMi_SetWirelessLED( BOOL enable );
|
||||
|
||||
/*
|
||||
internal variables
|
||||
*/
|
||||
@ -511,7 +506,7 @@ instfirm_error:
|
||||
|
||||
// インストール開始すらできなかった時は、FATALエラー
|
||||
#ifdef SDK_RELEASE
|
||||
SYSMi_SetWirelessLED( FALSE );
|
||||
PMi_SetWirelessLED( PM_WIRELESS_LED_OFF );
|
||||
#endif
|
||||
s_isFinished = TRUE;
|
||||
SYSM_SetFatalError( TRUE );
|
||||
@ -556,7 +551,7 @@ BOOL PollingInstallWlanFirmware( BOOL isStartScanWDS )
|
||||
// ColdStartの無線ファームロードなら、FATALエラー
|
||||
SYSM_SetFatalError( TRUE );
|
||||
#ifdef SDK_RELEASE
|
||||
SYSMi_SetWirelessLED( FALSE );
|
||||
PMi_SetWirelessLED( PM_WIRELESS_LED_OFF );
|
||||
#endif
|
||||
s_isFinished = TRUE;
|
||||
}else {
|
||||
|
||||
@ -326,8 +326,11 @@ void TwlMain( void )
|
||||
(void)SND_FlushCommand(SND_COMMAND_NOBLOCK);
|
||||
|
||||
#ifndef DISABLE_SLEEP
|
||||
// スリープモードへの遷移(蓋閉じ判定はデフォルトで行う)
|
||||
SYSM_GoSleepMode();
|
||||
// デバッガ動作時はスリープしない
|
||||
if( !SYSM_IsRunOnDebugger() ) {
|
||||
// スリープモードへの遷移(蓋閉じ判定はデフォルトで行う)
|
||||
UTL_GoSleepMode();
|
||||
}
|
||||
#endif // DISABLE_SLEEP
|
||||
}
|
||||
}
|
||||
|
||||
@ -316,6 +316,23 @@ int MachineSettingMain( void )
|
||||
}
|
||||
}
|
||||
|
||||
// とりあえずバックライト輝度変更をここで確認。
|
||||
if( pad.trg & PAD_BUTTON_R) {
|
||||
u8 brightness;
|
||||
(void)UTL_GetBacklightBrightness( &brightness );
|
||||
if( ++brightness > BACKLIGHT_BRIGHTNESS_MAX ) {
|
||||
brightness = BACKLIGHT_BRIGHTNESS_MAX;
|
||||
}
|
||||
(void)UTL_SetBacklightBrightness( brightness );
|
||||
}
|
||||
if( pad.trg & PAD_BUTTON_L ) {
|
||||
u8 brightness;
|
||||
(void)UTL_GetBacklightBrightness( &brightness );
|
||||
if( --brightness < 0 ) {
|
||||
brightness = 0;
|
||||
}
|
||||
(void)UTL_SetBacklightBrightness( brightness );
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
@ -34,9 +34,9 @@ extern "C" {
|
||||
#define SYSMENU_PXI_FIFO_TAG (PXI_MAX_FIFO_TAG - 5)
|
||||
|
||||
typedef enum SYSMPXICommand {
|
||||
SYSM_PXI_COMM_BL_BRIGHT = 0,
|
||||
SYSM_PXI_COMM_DUMMY = 0,
|
||||
#ifdef DHT_TEST
|
||||
SYSM_PXI_COMM_DS_HASH_TABLE = 1,
|
||||
SYSM_PXI_COMM_DS_HASH_TABLE,
|
||||
#endif
|
||||
|
||||
SYSM_PXI_COMM_NUM
|
||||
|
||||
@ -109,31 +109,11 @@ extern void SYSM_StartDecryptAESRegion( ROM_Header_Short *hs ); //
|
||||
extern BOOL SYSM_InitDecryptAESRegion_W( ROM_Header_Short *hs ); // WRAM経由ファイル読み込みのコールバックで使うAESデクリプト処理の初期化
|
||||
extern void SYSM_StartDecryptAESRegion_W( const void *wram_addr, const void *orig_addr, u32 size );
|
||||
// WRAM経由ファイル読み込みのコールバックで使うAESデクリプト処理関数
|
||||
|
||||
// デバイス制御
|
||||
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ロゴデータのチェック
|
||||
extern void SYSM_LoadNintendoLogo2D( u16 *pLogoData, u16 *pDst, int paletteColorIndex ); // NintendoロゴデータをOBJ_2D形式でロード(pTempBufferには0x700bytes必要)
|
||||
extern void SYSM_LoadNintendoLogo1D( u16 *pLogoData, u16 *pDst, int paletteColorIndex ); // NintendoロゴデータをOBJ_1D形式でロード(同上)
|
||||
|
||||
// RTC制御
|
||||
extern BOOL SYSM_CheckRTCDate( RTCDate *pDate ); // 日付が正常かチェック
|
||||
extern BOOL SYSM_CheckRTCTime( RTCTime *pTime ); // 時刻が正常かチェック
|
||||
extern s64 SYSM_CalcRTCOffset( RTCDate *pNewDate, RTCTime *pNewTime ); // RTCオフセット計算とRTCへの日付時刻チェックを行う
|
||||
extern u32 SYSM_GetDayNum( u32 year, u32 month ); // 指定された年・月の日数を取得する
|
||||
extern BOOL SYSM_IsLeapYear100( u32 year ); // 指定された年がうるう年か調べる
|
||||
|
||||
// スリープモード
|
||||
extern void SYSM_GoSleepMode( void ); // スリープモードへの遷移
|
||||
|
||||
// ペアレンタルコントロール問い合わせ
|
||||
u32 SYSM_CalcPCTLInquiryCode( void ); // 問い合わせコード(10進8桁)算出
|
||||
u32 SYSM_CalcPCTLMasterKey( void ); // マスターキー (10進5桁)算出(※内部でRTC_GetDateを使用します。)
|
||||
|
||||
#endif
|
||||
|
||||
// 状態チェック
|
||||
|
||||
@ -39,6 +39,9 @@ extern u32 UTL_GetBacklightBrightness( u8 *pBrightness ); //
|
||||
// タッチパネル
|
||||
extern void UTL_CaribrateTP( const LCFGTWLTPCalibData *pCalib );
|
||||
|
||||
// スリープ
|
||||
extern void UTL_GoSleepMode( void );
|
||||
|
||||
// RTC関係
|
||||
extern BOOL UTL_CheckRTCDate( RTCDate *pDate ); // 日付が正常かチェック
|
||||
extern BOOL UTL_CheckRTCTime( RTCTime *pTime ); // 時刻が正常かチェック
|
||||
|
||||
Loading…
Reference in New Issue
Block a user