diff --git a/build/libraries_sysmenu/boot/ARM9/src/bootAPI.c b/build/libraries_sysmenu/boot/ARM9/src/bootAPI.c index 93eb6d46..7b163621 100644 --- a/build/libraries_sysmenu/boot/ARM9/src/bootAPI.c +++ b/build/libraries_sysmenu/boot/ARM9/src/bootAPI.c @@ -106,10 +106,10 @@ void BOOT_Ready( void ) } // NTRモード起動でない場合は、LCFG関連データをメモリに展開 - if( !isNtrMode ) { +/* if( !isNtrMode ) { BOOTi_CopyLCFGData(); } - +*/ // WRAMの配置 { MIHeader_WramRegs *pWRAMREGS = (MIHeader_WramRegs *)th->s.main_wram_config_data; @@ -207,7 +207,7 @@ static void BOOTi_ClearREG_RAM( void ) // レジスタクリアは基本的に OS_Boot で行う } - +/* // LCFG関連データをメインメモリ先頭の予約領域にコピーする static void BOOTi_CopyLCFGData( void ) { @@ -223,4 +223,4 @@ static void BOOTi_CopyLCFGData( void ) MI_CpuClearFast( &pSettings->parental, sizeof(LCFGTWLParentalControl) ); } } - +*/ diff --git a/build/libraries_sysmenu/sysmenu/ARM9/src/device.c b/build/libraries_sysmenu/sysmenu/ARM9/src/device.c index bf5d0c85..52f563bc 100644 --- a/build/libraries_sysmenu/sysmenu/ARM9/src/device.c +++ b/build/libraries_sysmenu/sysmenu/ARM9/src/device.c @@ -45,7 +45,7 @@ static u8 s_brightness; // 輝度取得で呼ぶSYSM_ReadMcuRegisterAsyncのコールバック static OSThreadQueue s_callback_queue; static SYSMMcuResult s_callback_result; -static void BackLightBlightnessCallBack( SYSMMcuResult result, void *arg ) +static void MCUCallBack( SYSMMcuResult result, void *arg ) { #pragma unused(arg) s_callback_result = result; @@ -69,7 +69,7 @@ u8 SYSM_GetBackLightBlightness( void ) while( 1 ) { // BUSYだと失敗するので成功するまでトライ - if ( MCU_RESULT_SUCCESS == SYSM_ReadMcuRegisterAsync( MCU_REG_BL_ADDR, &brightness, BackLightBlightnessCallBack, NULL ) ) + if ( MCU_RESULT_SUCCESS == SYSM_ReadMcuRegisterAsync( MCU_REG_BL_ADDR, &brightness, MCUCallBack, NULL ) ) { OS_SleepThread( &s_callback_queue ); // 値が返ってくるまでスリープ break; @@ -110,6 +110,34 @@ void SYSM_SetBackLightBrightness( u8 brightness ) } +// ワイヤレス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 ) { diff --git a/build/libraries_sysmenu/sysmenu/ARM9/src/sysmenu_lib.c b/build/libraries_sysmenu/sysmenu/ARM9/src/sysmenu_lib.c index d93506bb..92f9928d 100644 --- a/build/libraries_sysmenu/sysmenu/ARM9/src/sysmenu_lib.c +++ b/build/libraries_sysmenu/sysmenu/ARM9/src/sysmenu_lib.c @@ -27,6 +27,7 @@ extern void LCFG_VerifyAndRecoveryNTRSettings( void ); // function's prototype------------------------------------------------------- +static void SYSMi_CopyLCFGData( void ); static TitleProperty *SYSMi_CheckDebuggerBannerViewModeBoot( void ); static TitleProperty *SYSMi_CheckShortcutBoot1( void ); static TitleProperty *SYSMi_CheckShortcutBoot2( void ); @@ -100,7 +101,7 @@ void SYSM_SetAllocFunc( void *(*pAlloc)(u32), void (*pFree)(void*) ) void *SYSM_Alloc( u32 size ) { void *p = SYSMi_Alloc( size ); - OS_TPrintf( "SYSM_Alloc : %08x %xbytes\n", p, size ); + OS_TPrintf( "SYSM_Alloc : 0x%08x 0x%xbytes\n", p, size ); return p; } @@ -108,7 +109,7 @@ void *SYSM_Alloc( u32 size ) // メモリFree void SYSM_Free( void *ptr ) { - OS_TPrintf( "SYSM_Free : %08x\n", ptr ); + OS_TPrintf( "SYSM_Free : 0x%08x\n", ptr ); SYSMi_Free( ptr ); } @@ -167,7 +168,38 @@ TitleProperty *SYSM_ReadParameters( void ) } LCFG_VerifyAndRecoveryNTRSettings(); // NTR設定データを読み出して、TWL設定データとベリファイし、必要ならリカバリ } - + + //----------------------------------------------------- + // システム領域に本体設定などをコピー + //----------------------------------------------------- + // NTRカードアプリARM9コードのロード領域とメモリがかち合うが、先頭0x4000はセキュア領域で別バッファに格納されるので、 + // ここでこれらのパラメータをロードしても大丈夫。 + SYSMi_CopyLCFGData(); + + //----------------------------------------------------- + // 無線ON/OFFフラグをもとに、LEDを設定する。 + //----------------------------------------------------- +/* { + BOOL enable; + if( LCFG_THW_IsForceDisableWireless() ) { + enable = FALSE; + // 本体設定の無線有効フラグがTRUEの時は強制FALSEにしてファイル更新 + if( LCFG_TSD_IsAvailableWireless() ) { + u8 *pBuffer = SYSM_Alloc( LCFG_WRITE_TEMP ); + if( pBuffer ) { + LCFG_TSD_SetFlagAvailableWireless( FALSE ); + LCFG_WriteTWLSettings( (u8 (*)[ LCFG_WRITE_TEMP ])pBuffer ); + SYSM_Free( pBuffer ); + }else { + SYSM_SetFatalError( TRUE ); + } + } + }else { + enable = LCFG_TSD_IsAvailableWireless(); + } + SYSMi_SetWirelessLED( enable ); + } +*/ //----------------------------------------------------- // 各種デバイス設定 //----------------------------------------------------- @@ -262,6 +294,25 @@ TitleProperty *SYSM_ReadParameters( void ) return pBootTitle; } + +// 本体設定データなどのメモリ展開。 +static void SYSMi_CopyLCFGData( void ) +{ + // 本体設定データ、HWノーマル情報、HWセキュア情報をメモリに展開しておく + MI_CpuCopyFast( LCFGi_GetTSD(), (void *)HW_PARAM_TWL_SETTINGS_DATA, sizeof(LCFGTWLSettingsData) ); + MI_CpuCopyFast( LCFGi_GetHWN(), (void *)HW_PARAM_TWL_HW_NORMAL_INFO, sizeof(LCFGTWLHWNormalInfo) ); + MI_CpuCopyFast( LCFGi_GetHWS(), (void *)HW_HW_SECURE_INFO, HW_HW_SECURE_INFO_END - HW_HW_SECURE_INFO ); + + // 本体設定データの不要部分をクリアしておく + { + LCFGTWLSettingsData *pSettings = (LCFGTWLSettingsData *)HW_PARAM_TWL_SETTINGS_DATA; + MI_CpuClear32( &pSettings->launcherStatus, sizeof(LCFGTWLLauncherStatus) ); + MI_CpuClearFast( &pSettings->parental, sizeof(LCFGTWLParentalControl) ); + } +} + + + BOOL SYSM_IsLauncherHidden( void ) { #ifdef DO_NOT_SHOW_LAUNCHER @@ -271,6 +322,7 @@ BOOL SYSM_IsLauncherHidden( void ) #endif } + static TitleProperty *SYSMi_CheckDebuggerBannerViewModeBoot( void ) { MI_CpuClear8( &s_bootTitleBuf, sizeof(TitleProperty) ); diff --git a/build/libraries_sysmenu/sysmenu/common/include/internal_api.h b/build/libraries_sysmenu/sysmenu/common/include/internal_api.h index e19fb010..02b5cce4 100644 --- a/build/libraries_sysmenu/sysmenu/common/include/internal_api.h +++ b/build/libraries_sysmenu/sysmenu/common/include/internal_api.h @@ -57,6 +57,9 @@ void SYSMi_SetBootAppMountInfo( TitleProperty *pBootTitle ); // デバイス //------------------------------------------------------- +// ワイヤレスLED制御 +void SYSMi_SetWirelessLED( BOOL enable ); + // RTC補正 void SYSMi_WriteAdjustRTC( void ); diff --git a/build/systemMenu_RED/Launcher/ARM9/Makefile b/build/systemMenu_RED/Launcher/ARM9/Makefile index 7cbc7dfe..c1a7a393 100644 --- a/build/systemMenu_RED/Launcher/ARM9/Makefile +++ b/build/systemMenu_RED/Launcher/ARM9/Makefile @@ -17,11 +17,11 @@ #---------------------------------------------------------------------------- SUBDIRS = \ -# ../../../libraries_sysmenu/sysmenu \ + ../../../libraries_sysmenu/sysmenu \ + ../../../libraries_sysmenu/boot \ + ../../../components/hyena.TWL # ../../../libraries_sysmenu/hotsw \ -# ../../../components/hyena.TWL # ../../../libraries_sysmenu/reloc_info \ -# ../../../libraries_sysmenu/boot \ # ../../../libraries_sysmenu/mcu \ # ../../../libraries_sysmenu/ds \ # $(ROOT)/build/libraries/reboot \ diff --git a/docs/繝。繝「繝ェ繝槭ャ繝誉繝ゥ繝ウ繝√Ε繝シ.vsd b/docs/繝。繝「繝ェ繝槭ャ繝誉繝ゥ繝ウ繝√Ε繝シ.vsd index 305e7416..996c95f2 100644 Binary files a/docs/繝。繝「繝ェ繝槭ャ繝誉繝ゥ繝ウ繝√Ε繝シ.vsd and b/docs/繝。繝「繝ェ繝槭ャ繝誉繝ゥ繝ウ繝√Ε繝シ.vsd differ