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/pxi.c \
|
||||||
../common/src/mountInfo.c \
|
../common/src/mountInfo.c \
|
||||||
../common/src/decryptAES.c \
|
../common/src/decryptAES.c \
|
||||||
../common/src/masterkey.c \
|
|
||||||
$(REVISION_SRC)
|
$(REVISION_SRC)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -24,16 +24,8 @@
|
|||||||
// define data-----------------------------------------------------------------
|
// define data-----------------------------------------------------------------
|
||||||
// extern data-----------------------------------------------------------------
|
// extern data-----------------------------------------------------------------
|
||||||
// function's prototype-------------------------------------------------------
|
// 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-------------------------------------------------------------
|
// global variable-------------------------------------------------------------
|
||||||
// static variable-------------------------------------------------------------
|
// static variable-------------------------------------------------------------
|
||||||
static u8 s_brightness;
|
|
||||||
// const data------------------------------------------------------------------
|
// 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クロック補正値をセット
|
// RTCクロック補正値をセット
|
||||||
void SYSMi_WriteAdjustRTC( void )
|
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を設定する。
|
// 無線ON/OFFフラグをもとに、LEDを設定する。
|
||||||
//-----------------------------------------------------
|
//-----------------------------------------------------
|
||||||
{
|
{
|
||||||
BOOL enable;
|
PMWirelessLEDStatus enable;
|
||||||
if( LCFG_THW_IsForceDisableWireless() ) {
|
if( LCFG_THW_IsForceDisableWireless() ) {
|
||||||
enable = FALSE;
|
enable = PM_WIRELESS_LED_OFF;
|
||||||
}else {
|
}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補正
|
// RTC補正
|
||||||
void SYSMi_WriteAdjustRTC( void );
|
void SYSMi_WriteAdjustRTC( void );
|
||||||
|
|
||||||
|
|||||||
@ -234,18 +234,6 @@ void SYSMi_PXIFifoRecvCallback( PXIFifoTag tag, u32 data, BOOL err )
|
|||||||
|
|
||||||
switch( cmd )
|
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
|
#ifdef DHT_TEST
|
||||||
case SYSM_PXI_COMM_DS_HASH_TABLE:
|
case SYSM_PXI_COMM_DS_HASH_TABLE:
|
||||||
dht = (void*)(0x2000000 + (packet.data << 8));
|
dht = (void*)(0x2000000 + (packet.data << 8));
|
||||||
|
|||||||
@ -26,6 +26,7 @@ TWL_PROC = ARM9
|
|||||||
|
|
||||||
SRCDIR = src
|
SRCDIR = src
|
||||||
SRCS = util.c \
|
SRCS = util.c \
|
||||||
|
masterkey.c
|
||||||
|
|
||||||
|
|
||||||
TARGET_LIB = libsysmutil$(TWL_LIBSUFFIX).a
|
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 masterKey;
|
||||||
u32 inquiryCode = SYSM_CalcPCTLInquiryCode();
|
u32 inquiryCode = UTL_CalcPCTLInquiryCode();
|
||||||
u8 arg[ 9 ];
|
u8 arg[ 9 ];
|
||||||
RTCDate date;
|
RTCDate date;
|
||||||
RTC_Init();
|
RTC_Init();
|
||||||
@ -92,7 +92,7 @@ u32 SYSM_CalcPCTLMasterKey( void )
|
|||||||
// ペアレンタルコントロール問い合わせ番号算出
|
// ペアレンタルコントロール問い合わせ番号算出
|
||||||
//
|
//
|
||||||
//======================================================================
|
//======================================================================
|
||||||
u32 SYSM_CalcPCTLInquiryCode( void )
|
u32 UTL_CalcPCTLInquiryCode( void )
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
u64 num = 0;
|
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オフセット制御
|
// RTCオフセット制御
|
||||||
//======================================================================
|
//======================================================================
|
||||||
|
|||||||
@ -780,7 +780,7 @@ static void DrawBackLightSwitch(void)
|
|||||||
static int old_brightness = -1;
|
static int old_brightness = -1;
|
||||||
u8 brightness;
|
u8 brightness;
|
||||||
|
|
||||||
brightness = SYSM_GetBackLightBlightness();
|
(void)UTL_GetBacklightBrightness( &brightness );
|
||||||
|
|
||||||
// 1フレーム前の古い値と輝度値が違っていたら描画しなおし
|
// 1フレーム前の古い値と輝度値が違っていたら描画しなおし
|
||||||
if( old_brightness != brightness )
|
if( old_brightness != brightness )
|
||||||
|
|||||||
@ -54,11 +54,6 @@
|
|||||||
#define FWHEADER_SIZE 0x100
|
#define FWHEADER_SIZE 0x100
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
external functions
|
|
||||||
*/
|
|
||||||
extern void SYSMi_SetWirelessLED( BOOL enable );
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
internal variables
|
internal variables
|
||||||
*/
|
*/
|
||||||
@ -511,7 +506,7 @@ instfirm_error:
|
|||||||
|
|
||||||
// インストール開始すらできなかった時は、FATALエラー
|
// インストール開始すらできなかった時は、FATALエラー
|
||||||
#ifdef SDK_RELEASE
|
#ifdef SDK_RELEASE
|
||||||
SYSMi_SetWirelessLED( FALSE );
|
PMi_SetWirelessLED( PM_WIRELESS_LED_OFF );
|
||||||
#endif
|
#endif
|
||||||
s_isFinished = TRUE;
|
s_isFinished = TRUE;
|
||||||
SYSM_SetFatalError( TRUE );
|
SYSM_SetFatalError( TRUE );
|
||||||
@ -556,7 +551,7 @@ BOOL PollingInstallWlanFirmware( BOOL isStartScanWDS )
|
|||||||
// ColdStartの無線ファームロードなら、FATALエラー
|
// ColdStartの無線ファームロードなら、FATALエラー
|
||||||
SYSM_SetFatalError( TRUE );
|
SYSM_SetFatalError( TRUE );
|
||||||
#ifdef SDK_RELEASE
|
#ifdef SDK_RELEASE
|
||||||
SYSMi_SetWirelessLED( FALSE );
|
PMi_SetWirelessLED( PM_WIRELESS_LED_OFF );
|
||||||
#endif
|
#endif
|
||||||
s_isFinished = TRUE;
|
s_isFinished = TRUE;
|
||||||
}else {
|
}else {
|
||||||
|
|||||||
@ -326,8 +326,11 @@ void TwlMain( void )
|
|||||||
(void)SND_FlushCommand(SND_COMMAND_NOBLOCK);
|
(void)SND_FlushCommand(SND_COMMAND_NOBLOCK);
|
||||||
|
|
||||||
#ifndef DISABLE_SLEEP
|
#ifndef DISABLE_SLEEP
|
||||||
// スリープモードへの遷移(蓋閉じ判定はデフォルトで行う)
|
// デバッガ動作時はスリープしない
|
||||||
SYSM_GoSleepMode();
|
if( !SYSM_IsRunOnDebugger() ) {
|
||||||
|
// スリープモードへの遷移(蓋閉じ判定はデフォルトで行う)
|
||||||
|
UTL_GoSleepMode();
|
||||||
|
}
|
||||||
#endif // DISABLE_SLEEP
|
#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;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -34,9 +34,9 @@ extern "C" {
|
|||||||
#define SYSMENU_PXI_FIFO_TAG (PXI_MAX_FIFO_TAG - 5)
|
#define SYSMENU_PXI_FIFO_TAG (PXI_MAX_FIFO_TAG - 5)
|
||||||
|
|
||||||
typedef enum SYSMPXICommand {
|
typedef enum SYSMPXICommand {
|
||||||
SYSM_PXI_COMM_BL_BRIGHT = 0,
|
SYSM_PXI_COMM_DUMMY = 0,
|
||||||
#ifdef DHT_TEST
|
#ifdef DHT_TEST
|
||||||
SYSM_PXI_COMM_DS_HASH_TABLE = 1,
|
SYSM_PXI_COMM_DS_HASH_TABLE,
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
SYSM_PXI_COMM_NUM
|
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 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 );
|
extern void SYSM_StartDecryptAESRegion_W( const void *wram_addr, const void *orig_addr, u32 size );
|
||||||
// WRAM経由ファイル読み込みのコールバックで使うAESデクリプト処理関数
|
// WRAM経由ファイル読み込みのコールバックで使うAESデクリプト処理関数
|
||||||
|
|
||||||
// デバイス制御
|
|
||||||
extern void SYSM_CaribrateTP( void ); // タッチパネルキャリブレーション
|
|
||||||
extern void SYSM_SetBackLightBrightness( u8 brightness ); // バックライトを制御(本体設定データへの値セーブも行う)
|
|
||||||
extern u8 SYSM_GetBackLightBlightness( void ); // バックライト輝度を取得(X2以前とX3以降で挙動に違い)
|
|
||||||
|
|
||||||
// Nintendoロゴ制御
|
// Nintendoロゴ制御
|
||||||
extern BOOL SYSM_CheckNintendoLogo( u16 *pLogoData ); // 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_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形式でロード(同上)
|
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
|
#endif
|
||||||
|
|
||||||
// 状態チェック
|
// 状態チェック
|
||||||
|
|||||||
@ -39,6 +39,9 @@ extern u32 UTL_GetBacklightBrightness( u8 *pBrightness ); //
|
|||||||
// タッチパネル
|
// タッチパネル
|
||||||
extern void UTL_CaribrateTP( const LCFGTWLTPCalibData *pCalib );
|
extern void UTL_CaribrateTP( const LCFGTWLTPCalibData *pCalib );
|
||||||
|
|
||||||
|
// スリープ
|
||||||
|
extern void UTL_GoSleepMode( void );
|
||||||
|
|
||||||
// RTC関係
|
// RTC関係
|
||||||
extern BOOL UTL_CheckRTCDate( RTCDate *pDate ); // 日付が正常かチェック
|
extern BOOL UTL_CheckRTCDate( RTCDate *pDate ); // 日付が正常かチェック
|
||||||
extern BOOL UTL_CheckRTCTime( RTCTime *pTime ); // 時刻が正常かチェック
|
extern BOOL UTL_CheckRTCTime( RTCTime *pTime ); // 時刻が正常かチェック
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user