TwlToolsRED/build/tools/sctools/copy_dst/src/main.c
miya 0d9f6d38d0 リストアツールで国別設定をデフォルトにしてしまう問題を修正。
git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlToolsRED@504 7061adef-622a-194b-ae81-725974e89856
2010-05-05 23:54:27 +00:00

2572 lines
72 KiB
C
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*---------------------------------------------------------------------------*
Project:
File: main.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.
*---------------------------------------------------------------------------*/
#include <twl.h>
#include <nitro/nvram/nvram.h>
#include <twl/sea.h>
#include <twl/lcfg.h>
#include <twl/na.h>
#include <twl/nam.h>
#include "ecdl.h"
#include <NitroWiFi/nhttp.h>
#include <NitroWiFi/ncfg.h>
#include </twl/os/common/ownerInfoEx.h>
#include "nssl.h"
#include "font.h"
#include "text.h"
#include "mprintf.h"
#include "logprintf.h"
#include "gfx.h"
#include "key.h"
#include "my_fs_util.h"
#include "mynvram.h"
#include "stream.h"
#include "hwi.h"
#include "hatamotolib.h"
#include "mywlan.h"
#include "mydata.h"
#include "netconnect.h"
#include "sitedefs.h"
#include "wcm_control.h"
#include "nuc.h"
#include "mynuc.h"
#include "miya_mcu.h"
#include "error_report.h"
#include "myfilename.h"
#include "mfiler.h"
#include "menu_version.h"
#include "ntp.h"
#include "myimport.h"
#include "pre_install.h"
#include "wifi_cfg.h"
#include <twl/ltdmain_begin.h>
// #define CHINA_LIMITED 1
// #define PRE_INSTALL 1
//================================================================================
#define THREAD_COMMAND_NUP_FUNCTION 0
#define THREAD_COMMAND_FULL_FUNCTION 1
#define THREAD_COMMAND_WIFI_FUNCTION 2
#define THREAD_COMMAND_USERDATA_AND_WIFI_FUNCTION 3
#define THREAD_COMMAND_REBOOT_FUNCTION 4
#define THREAD_COMMAND_RESTORE_SAVEDATA_FUNCTION 5
#define FREE_REG_POWERON_REBOOT 0x00
#define FREE_REG_RESTOREMODE_REBOOT 0x55
#define FREE_REG_RESTOREMODE_AND_RTC_DONE_REBOOT 0x66
static BOOL only_wifi_config_data_trans_flag = FALSE;
static BOOL user_and_wifi_config_data_trans_flag = FALSE;
static BOOL only_restore_savedata_flag = FALSE;
static BOOL no_network_flag = FALSE;
static BOOL completed_flag = FALSE;
static FSEventHook sSDHook;
static BOOL sd_card_flag = FALSE;
static BOOL wlan_active_flag = TRUE;
static BOOL development_console_flag = FALSE;
static u8 org_region = 0;
static u64 org_fuseId = 0;
static volatile BOOL reboot_flag;
static BOOL reboot_rtc_adjust_done_flag;
static int miya_debug_level = 0;
static OSHeapHandle hHeap;
static u32 allocator_total_size = 0;
static MY_USER_APP_TID *title_id_buf_ptr = NULL;
static int title_id_count = 0;
static u8 WorkForNA[NA_VERSION_DATA_WORK_SIZE];
static BOOL pushed_power_button = FALSE;
static BOOL throw_pushed_power_button = FALSE;
static PMExitCallbackInfo pmexitcallbackinfo;
static void pmexitcallback(void *arg)
{
#pragma unused(arg)
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>i<EFBFBD>f<EFBFBD>[<5B>^<5E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݒ<EFBFBD><DD92>j<EFBFBD>Ȃ烊<C882>Z<EFBFBD>b<EFBFBD>g<EFBFBD><67><EFBFBD>u<EFBFBD><75><EFBFBD>b<EFBFBD>N<EFBFBD><4E><EFBFBD>Ȃ<EFBFBD><C882><EFBFBD><EFBFBD>΂Ȃ<CE82><C882>Ȃ<EFBFBD> */
pushed_power_button = TRUE;
}
static void SDEvents(void *userdata, FSEvent event, void *arg)
{
(void)userdata;
(void)arg;
if (event == FS_EVENT_MEDIA_REMOVED) {
sd_card_flag = FALSE;
m_set_palette(tc[0], M_TEXT_COLOR_YELLOW );
mprintf("SD card:removed!\n");
m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
text_blink_clear(tc[0]);
if( completed_flag == FALSE ) {
text_blink_current_line(tc[0]);
mprintf("insert SD card\n");
}
}
else if (event == FS_EVENT_MEDIA_INSERTED) {
sd_card_flag = TRUE;
if( completed_flag == FALSE ) {
m_set_palette(tc[0], M_TEXT_COLOR_YELLOW );
mprintf("SD card:inserted!\n");
m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
text_blink_clear(tc[0]);
text_blink_current_line(tc[0]);
if( reboot_flag == FALSE ) {
mprintf("Press A button to start UPDATE\n");
}
else {
mprintf("Press A button to start RESTORE\n");
}
}
}
}
static MyData mydata;
static int vram_num_main = 1;
static int vram_num_sub = 0;
static LCFGTWLHWNormalInfo hwn_info;
static LCFGTWLHWSecureInfo hws_info;
#define MY_STACK_SIZE (1024*128) /* <20>ł<EFBFBD><C582><EFBFBD><EFBFBD>ق<EFBFBD><D982><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
//#define MY_THREAD_PRIO 20
#define MY_THREAD_PRIO 10
static OSThread MyThread;
static u64 MyStack[MY_STACK_SIZE/sizeof(u64)];
static void MyThreadProc(void *arg);
static void MyThreadProcNuc(void *arg);
static OSMessage MyMesgBuffer_request[1];
static OSMessage MyMesgBuffer_response[1];
static OSMessageQueue MyMesgQueue_request;
static OSMessageQueue MyMesgQueue_response;
static void init_my_thread(void)
{
OS_InitMessageQueue(&MyMesgQueue_request, &MyMesgBuffer_request[0], 1);
OS_InitMessageQueue(&MyMesgQueue_response, &MyMesgBuffer_response[0], 1);
OS_CreateThread(&MyThread, MyThreadProc,
NULL, MyStack + MY_STACK_SIZE /sizeof(u64),
MY_STACK_SIZE, MY_THREAD_PRIO);
OS_WakeupThreadDirect(&MyThread);
}
static void init_my_thread_nuc(void)
{
OS_InitMessageQueue(&MyMesgQueue_request, &MyMesgBuffer_request[0], 1);
OS_InitMessageQueue(&MyMesgQueue_response, &MyMesgBuffer_response[0], 1);
OS_CreateThread(&MyThread, MyThreadProcNuc,
NULL, MyStack + MY_STACK_SIZE / sizeof(u64),
MY_STACK_SIZE, MY_THREAD_PRIO);
OS_WakeupThreadDirect(&MyThread);
}
static BOOL start_my_thread(u32 command)
{
OSMessage message;
if( TRUE == OS_ReceiveMessage(&MyMesgQueue_response, &message, OS_MESSAGE_NOBLOCK) ) {
(void)OS_SendMessage(&MyMesgQueue_request, (OSMessage)command, OS_MESSAGE_BLOCK);
return TRUE;
}
return FALSE;
}
/*
<20>^<5E>C<EFBFBD>g<EFBFBD><67>ID<49><44><EFBFBD>X<EFBFBD>g
<20>uTitleID_Hi<48>v_<76>uTitleID_Lo<4C>v
------------------------------------------
<20>V<EFBFBD>X<EFBFBD>e<EFBFBD><65><EFBFBD>A<EFBFBD>v<EFBFBD><76>
<20>@<40>@00030017_484E41?? [HNA?] DSi<53><69><EFBFBD>j<EFBFBD><6A><EFBFBD>[
<20>@<40>@00030015_484E42?? [HNB?] <20>{<7B>̐ݒ<CC90>
<20>@<40>@00030015_484E46?? [HNF?] DSi<53>V<EFBFBD><56><EFBFBD>b<EFBFBD>v
<20>@<40>@0003000F_484E4341 [HNCA] <20><><EFBFBD><EFBFBD><EFBFBD>t<EFBFBD>@<40>[<5B><>
<20>@<40>@0003000F_484E4841 [HNHA] <20>z<EFBFBD><7A><EFBFBD>C<EFBFBD>g<EFBFBD><67><EFBFBD>X<EFBFBD>g
<20>@<40>@0003000F_484E4C?? [HNL?] <20>o<EFBFBD>[<5B>W<EFBFBD><57><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<20>@<40>@00030005_484E4441 [HNDA] <20>_<EFBFBD>E<EFBFBD><45><EFBFBD><EFBFBD><EFBFBD>[<5B>h<EFBFBD>v<EFBFBD><76><EFBFBD>C
<20>@<40>@00030005_484E4541 [HNEA] PictChat
<20>@<40>@00030005_484E49?? [HNI?] DSi<53>J<EFBFBD><4A><EFBFBD><EFBFBD>
<20>@<40>@00030005_484E4A?? [HNJ?] <20>j<EFBFBD><6A><EFBFBD>e<EFBFBD><65><EFBFBD>h<EFBFBD>[<5B>]<5D>[<5B><><EFBFBD>r<EFBFBD><72><EFBFBD>[<5B>A
<20>@<40>@00030005_484E4B?? [HNK?] DSi<53>T<EFBFBD>E<EFBFBD><45><EFBFBD>h
<20><><EFBFBD>[<5B>U<EFBFBD>[<5B>A<EFBFBD>v<EFBFBD><76>
<20>@<40>@00030004_484E47?? [HNG?] DSi<53>u<EFBFBD><75><EFBFBD>E<EFBFBD>U
<20>@<40>@00030004_4B4755?? [KGU?] <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
TitleID_Lo<4C>̂S<CC82><53><EFBFBD>ځi<DA81><69><EFBFBD><EFBFBD><EFBFBD>R<EFBFBD>[<5B>h<EFBFBD>j
<20>@<40>@?=[J, E, P, U]=[4A, 45, 50, 55]
<20>A<EFBFBD>v<EFBFBD><76><EFBFBD>̃C<CC83><43><EFBFBD>X<EFBFBD>g<EFBFBD>[<5B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>p<EFBFBD>X
<20>@<40>@"nand:/title/<titleID_Hi>/<titleID_Lo>"
*/
static void RTC_NTP_SYNC(void)
{
RTCDate rtc_date;
RTCTime rtc_time;
if( TRUE == my_ntp_init() ) {
rtc_date.year = (u32)( my_ntp_get_year() - 2000 );
rtc_date.month = (u32)(my_ntp_get_month() + 1 );
rtc_date.day = (u32)my_ntp_get_day();
rtc_date.week = (RTCWeek)my_ntp_get_weekday();
rtc_time.hour = (u32)my_ntp_get_hour();
rtc_time.minute = (u32)my_ntp_get_min();
rtc_time.second = (u32)my_ntp_get_sec();
//RTCDate rtc_date;
//RTCTime rtc_time;
/*
typedef enum RTCWeek
{
RTC_WEEK_SUNDAY = 0, // <20><><EFBFBD>j<EFBFBD><6A>
RTC_WEEK_MONDAY, // <20><><EFBFBD>j<EFBFBD><6A>
RTC_WEEK_TUESDAY, // <20>Ηj<CE97><6A>
RTC_WEEK_WEDNESDAY, // <20><><EFBFBD>j<EFBFBD><6A>
RTC_WEEK_THURSDAY, // <20>ؗj<D897><6A>
RTC_WEEK_FRIDAY, // <20><><EFBFBD>j<EFBFBD><6A>
RTC_WEEK_SATURDAY, // <20>y<EFBFBD>j<EFBFBD><6A>
RTC_WEEK_MAX
}
RTCWeek;
typedef struct RTCDate
{
u32 year; // <20>N ( 0 ~ 99 )
u32 month; // <20><> ( 1 ~ 12 )
u32 day; // <20><> ( 1 ~ 31 )
RTCWeek week; // <20>j<EFBFBD><6A>
}
RTCDate;
// <20><><EFBFBD><EFBFBD><EFBFBD>\<5C><><EFBFBD><EFBFBD>
typedef struct RTCTime
{
u32 hour; // <20><> ( 0 ~ 23 )
u32 minute; // <20><> ( 0 ~ 59 )
u32 second; // <20>b ( 0 ~ 59 )
}
RTCTime;
*/
if( RTC_RESULT_SUCCESS != RTC_SetDate( &rtc_date ) ) {
mprintf("RTC data adjust error\n");
}
else {
mprintf("RTC data adjust success\n");
}
if( RTC_RESULT_SUCCESS != RTC_SetTime( &rtc_time ) ) {
mprintf("RTC time adjust error\n");
}
else {
mprintf("RTC time adjust success\n");
}
reboot_rtc_adjust_done_flag = TRUE;
}
else {
mprintf("RTC-NTP sync. NG\n");
}
}
static BOOL LoadWlanConfig(void)
{
u8 buf[256];
int len;
int i; /* <20><><EFBFBD>[<5B>U<EFBFBD>[<5B>f<EFBFBD>[<5B>^<5E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>݃<EFBFBD><DD83>[<5B>h */
if( TRUE == LoadWlanConfigFile("sdmc:/wlan_cfg.txt") ) {
OS_TPrintf("SSID = %s\n", GetWlanSSID());
OS_TPrintf("MODE = ");
#if 0
mfprintf(tc[3],"SSID = %s\n", GetWlanSSID());
mfprintf(tc[3],"MODE = ");
#endif
switch( GetWlanMode() ) {
case WCM_WEPMODE_NONE:
OS_TPrintf("NONE\n");
// mfprintf(tc[3],"NONE\n");
break;
case WM_WEPMODE_40BIT:
OS_TPrintf("WEP40\n");
// mfprintf(tc[3],"WEP128\n");
break;
case WM_WEPMODE_104BIT:
OS_TPrintf("WEP104\n");
// mfprintf(tc[3],"WEP128\n");
break;
case WM_WEPMODE_128BIT:
OS_TPrintf("WEP128\n");
// mfprintf(tc[3],"WEP128\n");
break;
case WCM_WEPMODE_WPA_TKIP:
OS_TPrintf("WPA-TKIP\n");
// mfprintf(tc[3],"WPA-TKIP\n");
break;
case WCM_WEPMODE_WPA2_TKIP:
OS_TPrintf("WPA2-TKIP\n");
// mfprintf(tc[3],"WPA2-TKIP\n");
break;
case WCM_WEPMODE_WPA_AES:
OS_TPrintf("WPA-AES\n");
// mfprintf(tc[3],"WPA-AES\n");
break;
case WCM_WEPMODE_WPA2_AES :
OS_TPrintf("WPA2-AES\n");
// mfprintf(tc[3],"WPA2-AES\n");
break;
defalut:
OS_TPrintf("Unknow mode..\n");
// mfprintf(tc[3],"Unknow mode..\n");
break;
}
if( TRUE == GetKeyModeStr() ) {
OS_TPrintf("KEY STR = %s\n", GetWlanKEYSTR());
// mfprintf(tc[3],"KEY STR = %s\n", GetWlanKEYSTR());
}
else {
len = GetWlanKEYBIN(buf);
if( len ) {
OS_TPrintf("KEY BIN = 0x");
// mfprintf(tc[3],"KEY BIN = 0x");
for( i = 0 ; i < len ; i++ ) {
OS_TPrintf("%02X",buf[i]);
// mfprintf(tc[3],"%02X",buf[i]);
}
OS_TPrintf("\n");
// mfprintf(tc[3],"\n");
}
}
// mfprintf(tc[3],"\n");
if( TRUE == GetDhcpMODE() ) {
// mfprintf(tc[3],"DHCP client\n");
}
#if 0
else {
u32 addr_temp;
addr_temp = GetIPAddr();
mfprintf(tc[3],"IP addr %d.%d.%d.%d\n", (u32)((addr_temp >> 24) & 0xff),(u32)((addr_temp >> 16) & 0xff),
(u32)((addr_temp >> 8) & 0xff),(u32)(addr_temp & 0xff) );
addr_temp = GetNetmask();
mfprintf(tc[3],"netmask %d.%d.%d.%d\n", (u32)((addr_temp >> 24) & 0xff),(u32)((addr_temp >> 16) & 0xff),
(u32)((addr_temp >> 8) & 0xff),(u32)(addr_temp & 0xff) );
addr_temp = GetGateway();
mfprintf(tc[3],"gateway %d.%d.%d.%d\n", (u32)((addr_temp >> 24) & 0xff),(u32)((addr_temp >> 16) & 0xff),
(u32)((addr_temp >> 8) & 0xff),(u32)(addr_temp & 0xff) );
addr_temp = GetDNS1();
mfprintf(tc[3],"DNS1 %d.%d.%d.%d\n", (u32)((addr_temp >> 24) & 0xff),(u32)((addr_temp >> 16) & 0xff),
(u32)((addr_temp >> 8) & 0xff),(u32)(addr_temp & 0xff) );
addr_temp = GetDNS2();
mfprintf(tc[3],"DNS2 %d.%d.%d.%d\n", (u32)((addr_temp >> 24) & 0xff),(u32)((addr_temp >> 16) & 0xff),
(u32)((addr_temp >> 8) & 0xff),(u32)(addr_temp & 0xff) );
}
mfprintf(tc[3],"\n");
#endif
}
else {
OS_TPrintf("Invalid wlan cfg file\n");
// mfprintf(tc[3],"Invalid wlan cfg file\n");
mprintf("Invalid wlan cfg file\n");
return FALSE;
}
return TRUE;
}
static BOOL RestoreFromSDCard1(void)
{
BOOL flag = TRUE;
/* <20><><EFBFBD>{<7B>I<EFBFBD>ɂ<EFBFBD><C982><EFBFBD><EFBFBD>‚<EFBFBD><C282>̋t<CC8B><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(Get -> Set, Save->Load<61>Ȃ<EFBFBD>) */
/*
<20><><EFBFBD>Ȃ݂ɂ<DD82><C982>ł<EFBFBD>MydataLoad<61>֐<EFBFBD><D690>͐<EFBFBD><CD90><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ă<EFBFBD><C482><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̂Ƃ<CC82><C682><EFBFBD><EFBFBD>B
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> MyData mydata <20>ɂ̓f<CD83>[<5B>^<5E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ă<EFBFBD><C482><EFBFBD><EFBFBD>B
*/
if( reboot_rtc_adjust_done_flag == TRUE ) {
mprintf("RTC-NTP sync. already done. ");
m_set_palette(tc[0], M_TEXT_COLOR_GREEN ); /* green */
mprintf("OK.\n");
m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
}
else if( (mydata.rtc_date_flag == TRUE) && (mydata.rtc_time_flag == TRUE) ) {
mprintf("RTC data restore ");
if( RTC_RESULT_SUCCESS != RTC_SetDate( &(mydata.rtc_date) ) ) {
flag = FALSE;
}
if( RTC_RESULT_SUCCESS != RTC_SetTime( &(mydata.rtc_time) ) ) {
flag = FALSE;
}
if( flag == TRUE ) {
m_set_palette(tc[0], M_TEXT_COLOR_GREEN ); /* green */
mprintf("OK.\n");
}
else {
m_set_palette(tc[0], M_TEXT_COLOR_RED ); /* red */
mprintf("NG.\n");
}
m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
}
else {
// mprintf("RTC data restore ");
mprintf("No original RTC data\n");
flag = TRUE;
}
return flag;
}
static BOOL RestoreFromSDCard2(void)
{
if( mydata.uniqueid_flag == TRUE ) {
mprintf("Unique ID restore ");
/* <20><><EFBFBD>łɃu<C983>[<5B>g<EFBFBD><67><EFBFBD>Ɉ<EFBFBD><C988>x hwn_info <20>̓<EFBFBD><CD83>[<5B>h<EFBFBD><68><EFBFBD>Ă<EFBFBD><C482><EFBFBD><EFBFBD>B */
STD_CopyMemory( (void *)hwn_info.movableUniqueID, (void *)(mydata.movableUniqueID),
LCFG_TWL_HWINFO_MOVABLE_UNIQUE_ID_LEN );
if ( LCFGi_THW_WriteNormalInfoDirect( &hwn_info )) {
m_set_palette(tc[0], M_TEXT_COLOR_GREEN ); /* green */
mprintf("OK.\n");
m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
}
else {
// error
m_set_palette(tc[0], M_TEXT_COLOR_RED ); /* red */
mprintf("NG.\n");
m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
return FALSE;
}
return TRUE;
}
mprintf("No original Unique ID\n");
return TRUE;
}
static BOOL RestoreFromSDCard3(void)
{
// static BOOL SDBackupToSDCard2(void)
BOOL flag;
if( mydata.wireless_lan_param_flag == TRUE ) {
mprintf("WirelessLAN param. restore ");
flag = nvram_restore( MyFile_GetWifiParamFileName() );
if( flag == 3 ) {
m_set_palette(tc[0], M_TEXT_COLOR_GREEN );
mprintf("OK*\n");
m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
}
else if( TRUE == flag ) {
m_set_palette(tc[0], M_TEXT_COLOR_GREEN );
mprintf("OK.\n");
m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
}
else {
// error
m_set_palette(tc[0], M_TEXT_COLOR_RED );
mprintf("NG.\n");
m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
return FALSE;
}
}
else {
mprintf("no original WirelessLAN param.\n");
}
return TRUE;
}
static BOOL RestoreFromSDCard4(void)
{
if( mydata.user_settings_flag == TRUE ) {
mprintf("User setting param. restore ");
if( TRUE == MiyaRestoreTWLSettings( MyFile_GetUserSettingsFileName() ) ) {
/* <20><><EFBFBD>ݒ芮<DD92><E88AAE> LCFG_TSD_SetCountry( (LCFGTWLCountryCode)cfg_data.country ) */
m_set_palette(tc[0], M_TEXT_COLOR_GREEN );
mprintf("OK.\n");
m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
}
else {
// error
m_set_palette(tc[0], M_TEXT_COLOR_RED );
mprintf("NG.\n");
m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
return FALSE;
}
}
else {
mprintf("no original user setting param.\n");
}
return TRUE;
}
static BOOL RestoreFromSDCard5(void)
{
int list_count;
int error_count;
BOOL ret_flag = TRUE;
Error_Report_Init();
if( mydata.num_of_shared2_files > 0 ) {
mprintf("App. shared files restore ");
if( TRUE == RestoreDirEntryList( MyFile_GetAppSharedListFileName(),
MyFile_GetAppSharedRestoreLogFileName(),
&list_count, &error_count )) {
m_set_palette(tc[0], M_TEXT_COLOR_GREEN );
mprintf("OK.\n");
m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
}
else {
// error
m_set_palette(tc[0], M_TEXT_COLOR_RED );
mprintf("NG.\n");
m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
ret_flag = FALSE;
}
}
else if( mydata.num_of_shared2_files == 0 ) {
mprintf("Original device has no shared file\n");
}
else {
mprintf("Original shared files saving failed\n");
}
if( TRUE == Error_Report_Display(tc[0]) ) {
mprintf("\n");
}
Error_Report_End();
return ret_flag;
}
static BOOL RestoreFromSDCard6(void)
{
int list_count;
int error_count;
BOOL ret_flag = TRUE;
Error_Report_Init();
if( mydata.num_of_photo_files > 0 ) {
mprintf("Photo files restore ");
if( TRUE == RestoreDirEntryList( MyFile_GetPhotoListFileName() ,
MyFile_GetPhotoRestoreLogFileName(),
&list_count, &error_count )) {
m_set_palette(tc[0], M_TEXT_COLOR_GREEN );
mprintf("OK.\n");
m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
}
else {
// error
m_set_palette(tc[0], M_TEXT_COLOR_RED );
mprintf("NG.\n");
m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
ret_flag = FALSE;
}
}
else if( mydata.num_of_photo_files == 0 ) {
mprintf("Original device has no photo file\n");
}
else {
mprintf("Original photo files saving failed\n");
}
if( TRUE == Error_Report_Display(tc[0]) ) {
mprintf("\n");
}
Error_Report_End();
return ret_flag;
}
/* <20><><EFBFBD>̊֐<CC8A><D690>͋@<40>\<5C>l<EFBFBD>߂<EFBFBD><DF82><EFBFBD><EFBFBD>B<EFBFBD>o<EFBFBD><6F><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>B */
static BOOL RestoreFromSDCard7(void)
{
BOOL ret_flag = TRUE;
FSFile *log_fd = NULL;
u64 tid;
char game_code_buf[5];
int is_personalized;
int i;
title_id_count = 0;
if( title_id_buf_ptr != NULL ) {
OS_Free( title_id_buf_ptr );
title_id_buf_ptr = NULL;
}
if( mydata.num_of_user_app > 0 ) {
miya_log_fprintf(log_fd,"User title list loading\n");
mprintf("User title list load ");
if( TRUE == UserTitleIDLoad( MyFile_GetUserTitleIDFileName(), &title_id_buf_ptr,
&title_id_count, MyFile_GetUserTitleIDRestoreLogFileName()) ) {
m_set_palette(tc[0], M_TEXT_COLOR_GREEN ); /* green */
mprintf("OK.\n");
m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
for( i = 0; i < title_id_count ; i++ ) {
/*
<20>C<EFBFBD><43><EFBFBD>X<EFBFBD>g<EFBFBD>[<5B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>t<EFBFBD><74><EFBFBD>O<EFBFBD>̏<EFBFBD><CC8F><EFBFBD><EFBFBD><EFBFBD>
<20>Ƃ肠<C682><E882A0><EFBFBD><EFBFBD><EFBFBD>S<EFBFBD><53><EFBFBD><EFBFBD><EFBFBD>s<EFBFBD><73><EFBFBD>Ԃɂ<D482><C982><EFBFBD><EFBFBD>B
*/
title_id_buf_ptr[i].install_success_flag = FALSE;
tid = title_id_buf_ptr[i].tid;
is_personalized = title_id_buf_ptr[i].is_personalized;
(void)my_fs_Tid_To_GameCode(tid, game_code_buf);
mprintf(" id %08X %08X [%s] ", (u32)(tid >> 32), (u32)tid, game_code_buf);
if( is_personalized == 1 ) {
mprintf("Pre\n"); /* <20>v<EFBFBD><76><EFBFBD>C<EFBFBD><43><EFBFBD>X<EFBFBD>g<EFBFBD>[<5B><><EFBFBD><EFBFBD> */
}
else {
mprintf("Dwn\n"); /* <20>_<EFBFBD>E<EFBFBD><45><EFBFBD><EFBFBD><EFBFBD>[<5B>h<EFBFBD><68> */
}
miya_log_fprintf(log_fd," id %08X %08X [%s] %c\n", (u32)(tid >> 32), (u32)tid, game_code_buf,
(is_personalized == 1)? 'P':'D');
}
}
else {
ret_flag = FALSE;
m_set_palette(tc[0], M_TEXT_COLOR_RED );
mprintf("NG.\n");
m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
}
}
else if( mydata.num_of_user_app == 0 ) {
miya_log_fprintf(log_fd,"Original device has no user app.\n");
mprintf("Original device has no user download app.\n");
}
else {
miya_log_fprintf(log_fd,"Original user app. list saving failed\n");
mprintf("Original user app. list saving failed\n");
}
return ret_flag;
}
static BOOL RestoreFromSDCard8(void)
{
ECError rv;
BOOL ret_flag = TRUE;
FSFile *log_fd;
int ec_download_ret;
#if 0
char game_code_buf[5];
u64 tid;
int i;
int is_personalized;
#endif
MY_USER_ETICKET_TID *eticket_only_id_buf = NULL;
int num_of_eticket_only_titles = 0;
#if 0
title_id_count = 0;
if( title_id_buf_ptr != NULL ) {
OS_Free( title_id_buf_ptr );
title_id_buf_ptr = NULL;
}
#endif
rv = EC_ERROR_OK;
/* hws_info.serialNo<4E>͖߂<CD96><DF82>Ȃ<EFBFBD> */
log_fd = hatamotolib_log_start( MyFile_GetEcDownloadLogFileName() );
#if 0
if( mydata.num_of_user_app > 0 ) {
miya_log_fprintf(log_fd,"User title list loading\n");
mprintf("User title list load ");
if( TRUE == UserTitleIDLoad( MyFile_GetUserTitleIDFileName(), &title_id_buf_ptr,
&title_id_count, MyFile_GetUserTitleIDRestoreLogFileName()) ) {
m_set_palette(tc[0], M_TEXT_COLOR_GREEN ); /* green */
mprintf("OK.\n");
m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
for( i = 0; i < title_id_count ; i++ ) {
/*
<20>C<EFBFBD><43><EFBFBD>X<EFBFBD>g<EFBFBD>[<5B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>t<EFBFBD><74><EFBFBD>O<EFBFBD>̏<EFBFBD><CC8F><EFBFBD><EFBFBD><EFBFBD>
<20>Ƃ肠<C682><E882A0><EFBFBD><EFBFBD><EFBFBD>S<EFBFBD><53><EFBFBD><EFBFBD><EFBFBD>s<EFBFBD><73><EFBFBD>Ԃɂ<D482><C982><EFBFBD><EFBFBD>B
*/
title_id_buf_ptr[i].install_success_flag = FALSE;
tid = title_id_buf_ptr[i].tid;
is_personalized = title_id_buf_ptr[i].is_personalized;
(void)my_fs_Tid_To_GameCode(tid, game_code_buf);
mprintf(" id %08X %08X [%s] ", (u32)(tid >> 32), (u32)tid, game_code_buf);
if( is_personalized == 1 ) {
mprintf("Pre\n"); /* <20>v<EFBFBD><76><EFBFBD>C<EFBFBD><43><EFBFBD>X<EFBFBD>g<EFBFBD>[<5B><><EFBFBD><EFBFBD> */
}
else {
mprintf("Dwn\n"); /* <20>_<EFBFBD>E<EFBFBD><45><EFBFBD><EFBFBD><EFBFBD>[<5B>h<EFBFBD><68> */
}
miya_log_fprintf(log_fd," id %08X %08X [%s] %c\n", (u32)(tid >> 32), (u32)tid, game_code_buf,
(is_personalized == 1)? 'P':'D');
}
}
else {
ret_flag = FALSE;
m_set_palette(tc[0], M_TEXT_COLOR_RED );
mprintf("NG.\n");
m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
}
}
else if( mydata.num_of_user_app == 0 ) {
miya_log_fprintf(log_fd,"Original device has no user app.\n");
mprintf("Original device has no user download app.\n");
}
else {
miya_log_fprintf(log_fd,"Original user app. list saving failed\n");
mprintf("Original user app. list saving failed\n");
}
#endif
/* miya 2009/5/8
<20><><EFBFBD><EFBFBD><EFBFBD>ŏ<EFBFBD><C58F><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݑ<EFBFBD><DD91>ɓ<EFBFBD><C993><EFBFBD><EFBFBD>Ă<EFBFBD><C482>v<EFBFBD><76><EFBFBD><EFBFBD><EFBFBD>C<EFBFBD><43><EFBFBD>X<EFBFBD>g<EFBFBD>[<5B><><EFBFBD><EFBFBD><EFBFBD>̂<EFBFBD><CC82>S<EFBFBD><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>I
<20><><EFBFBD><EFBFBD><EFBFBD>ƑO<C691>ł<EFBFBD><C582><EFBFBD><EFBFBD><EFBFBD> */
if( my_fs_get_print_debug_flag() == FALSE ) {
(void)pre_install_Cleanup_User_Titles( log_fd );
}
/* ECDownload <20>̑O<CC91><4F><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǁA<C781>v<EFBFBD><76><EFBFBD><EFBFBD><EFBFBD>X<EFBFBD>g<EFBFBD>[<5B><><EFBFBD>i<EFBFBD>C<EFBFBD><43><EFBFBD>|<7C>[<5B>g<EFBFBD>j<EFBFBD>̑O<CC91>ɂ<EFBFBD><C982><EFBFBD><EFBFBD>Ă<EFBFBD><C482><EFBFBD><EFBFBD>K<EFBFBD>v<EFBFBD><76><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>B*/
// <20>K<EFBFBD>{<7B>F<EFBFBD>^<5E>C<EFBFBD>g<EFBFBD><67> ID <20>̋U<CC8B><55>
SetupShopTitleId(); /* <20>G<EFBFBD><47><EFBFBD>[<5B>͂Ȃ<CD82> */
miya_log_fprintf(log_fd,"SetupShopTitleId done.\n");
// <20>H<EFBFBD>F<EFBFBD><46><EFBFBD>[<5B>U<EFBFBD>ݒ肪<DD92><E882AA><EFBFBD><EFBFBD><EFBFBD>Ă<EFBFBD><C482>Ȃ<EFBFBD><C882>Ɛڑ<C690><DA91>ł<EFBFBD><C582>Ȃ<EFBFBD><C882>̂œK<C593><4B><EFBFBD>ɐݒ<C990>
// SetupUserInfo();
// <20>K<EFBFBD>{<7B>F<EFBFBD>o<EFBFBD>[<5B>W<EFBFBD><57><EFBFBD><EFBFBD><EFBFBD>f<EFBFBD>[<5B>^<5E>̃}<7D>E<EFBFBD><45><EFBFBD>g
if( FALSE == SetupVerData() ) {
miya_log_fprintf(log_fd, "%s failed SetupVerData\n", __FUNCTION__);
mprintf("%s failed SetupVerData\n", __FUNCTION__);
ret_flag = FALSE;
goto end_log_e;
}
/*
<20>{<7B><><EFBFBD>AEC download<61>̌<EFBFBD><CC8C><EFBFBD>NAM_Import<72><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȃ<EFBFBD><C882><EFBFBD>LoadCert<72><74>SEA_Decrypt<70>ł<EFBFBD><C582><EFBFBD><EFBFBD><EFBFBD><EFBFBD>B
<20><><EFBFBD>R<EFBFBD><52>AES<45>G<EFBFBD><47><EFBFBD>W<EFBFBD><57><EFBFBD>̃X<CC83><58><EFBFBD>b<EFBFBD>g<EFBFBD><67>NAM_Import<72>ł‚Ԃ<C282><D482><EFBFBD><EFBFBD><EFBFBD>̂ŁA
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Cert<72>̕<EFBFBD><CC95><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƃ<EFBFBD><C682>B
*/
(void)SetupEC_pre();
/* ECDownload <20>̑O<CC91><4F><EFBFBD><EFBFBD>,<2C>I<EFBFBD><49><EFBFBD><EFBFBD><EFBFBD>B*/
#if 0
/* miya 2009/10/12 */
/* TitleIDLoad<61>̌<EFBFBD><CC8C>Atitle_id_buf_ptr, title_id_count<6E>ɏ<EFBFBD><C98F><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
/* title_id_buf_ptr[i].common_and_download == 1 <20>̂Ƃ<CC82><C682>̓_<CD83>E<EFBFBD><45><EFBFBD><EFBFBD><EFBFBD>[<5B>h<EFBFBD><68><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɁB */
miya_log_fprintf(log_fd,"Internal data version check.\n");
mprintf("Internal data version check.\n");
(void)pre_install_check_tad_version(log_fd, title_id_buf_ptr, title_id_count, development_console_flag );
#endif
pre_install_label:
if( (mydata.num_of_user_pre_installed_app > 0) ||
(mydata.num_of_user_pre_installed_eticket_only > 0) ) {
/* <20>v<EFBFBD><76><EFBFBD><EFBFBD><EFBFBD>X<EFBFBD>g<EFBFBD>[<5B><><EFBFBD>Ή<EFBFBD> */
miya_log_fprintf(log_fd,"Import Pre-installed apps.\n");
mprintf("Import Pre-installed apps.\n");
if( mydata.num_of_user_pre_installed_eticket_only > 0 ) {
if( FALSE == UserTitleIDLoadETicketOnly( MyFile_GetUserTitleIDTicketOnlyFileName(),
&eticket_only_id_buf, &num_of_eticket_only_titles,
MyFile_GetUserTitleIDTicketOnlyRestoreLogFileName()) ) {
;
}
}
/* pre_install_process<73>֐<EFBFBD><D690>̒<EFBFBD><CC92>łd<C582>`<60>P<EFBFBD>b<EFBFBD>g<EFBFBD><67><EFBFBD><EFBFBD><EFBFBD>̂<EFBFBD><CC82>‚<EFBFBD><C282><EFBFBD><EFBFBD><EFBFBD><E882BD><EFBFBD>B */
if( FALSE == pre_install_process( log_fd, title_id_buf_ptr, title_id_count,
eticket_only_id_buf,
mydata.num_of_user_pre_installed_eticket_only ,
development_console_flag ) ) {
ret_flag = FALSE;
}
if( eticket_only_id_buf ) {
OS_Free(eticket_only_id_buf );
eticket_only_id_buf = NULL;
}
}
if( no_network_flag == TRUE ) {
miya_log_fprintf(log_fd,"no network flag ON\n");
goto network_connection_end;
}
if( mydata.shop_record_flag == FALSE ) {
/* <20>l<EFBFBD>b<EFBFBD>g<EFBFBD><67><EFBFBD>[<5B>N<EFBFBD>ɂ‚Ȃ<C282><C882>Ȃ<EFBFBD><C882>Ă<EFBFBD><C482><EFBFBD><EFBFBD><EFBFBD><EFBFBD>H */
miya_log_fprintf(log_fd,"no shop record \n");
mprintf(" (--no shop record--)\n");
}
else {
network_connetion_start:
miya_log_fprintf(log_fd,"EC download\n");
mprintf("EC download\n");
miya_log_fprintf(log_fd,"-wireless AP conf. load.. ");
mprintf("-wireless AP conf. load ");
if( TRUE == LoadWlanConfig() ) {
miya_log_fprintf(log_fd, "OK.\n");
m_set_palette(tc[0], M_TEXT_COLOR_GREEN ); /* green */
mprintf("OK.\n");
m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
// <20>K<EFBFBD>{<7B>F<EFBFBD>l<EFBFBD>b<EFBFBD>g<EFBFBD><67><EFBFBD>[<5B>N<EFBFBD>ւ̐ڑ<CC90>
if( 0 != NcStart(SITEDEFS_DEFAULTCLASS) ) {
miya_log_fprintf(log_fd, "%s failed NcStart\n", __FUNCTION__);
ret_flag = FALSE;
goto end_log_e;
}
/******** <20>l<EFBFBD>b<EFBFBD>g<EFBFBD><67><EFBFBD>[<5B>N<EFBFBD>ɂ‚Ȃ<C282><C882><EFBFBD> *************/
// <20>K<EFBFBD>{<7B>FHTTP <20><> SSL <20>̏<EFBFBD><CC8F><EFBFBD><EFBFBD><EFBFBD>
miya_log_fprintf(log_fd,"-setup NSSL & NHTTP\n");
SetupNSSL();
if( FALSE == SetupNHTTP() ) {
ret_flag = FALSE;
miya_log_fprintf(log_fd, "%s failed SetupNHTTP\n", __FUNCTION__);
mprintf(" %s failed SetupNHTTP\n", __FUNCTION__);
goto end_nhttp;
}
/******** NHTTP & NSSL<53>ɂ‚Ȃ<C282><C882><EFBFBD> *************/
// <20>K<EFBFBD>{<7B>FEC <20>̏<EFBFBD><CC8F><EFBFBD><EFBFBD><EFBFBD>
miya_log_fprintf(log_fd,"-setup EC\n");
if( FALSE == SetupEC() ) {
ret_flag = FALSE;
miya_log_fprintf(log_fd, "%s failed SetupEC\n", __FUNCTION__);
mprintf(" %s failed SetupEC\n", __FUNCTION__);
goto end_ec;
}
// <20>K<EFBFBD>{<7B>F<EFBFBD>f<EFBFBD>o<EFBFBD>C<EFBFBD>X<EFBFBD>ؖ<EFBFBD><D896><EFBFBD><EFBFBD>̔<EFBFBD><CC94>s
if( FALSE == KPSClient() ) {
ret_flag = FALSE;
miya_log_fprintf(log_fd, "%s failed KPSClient\n", __FUNCTION__);
goto end_ec_f;
}
ec_download_ret = ECDownload((MY_USER_APP_TID *)title_id_buf_ptr , (u32)title_id_count);
if( ec_download_ret == ECDOWNLOAD_FAILURE ) {
ret_flag = FALSE;
miya_log_fprintf(log_fd, "%s failed ECDownload 1\n", __FUNCTION__);
}
else if( ec_download_ret == ECDOWNLOAD_DUMMY ) {
ret_flag = FALSE;
miya_log_fprintf(log_fd, "%s failed ECDownload 2\n", __FUNCTION__);
}
// <20>s<EFBFBD>v<EFBFBD>F<EFBFBD>Z<EFBFBD>[<5B>u<EFBFBD>f<EFBFBD>[<5B>^<5E>̈<EFBFBD><CC88><EFBFBD><EFBFBD>
// NAM_Init <20><><EFBFBD>Y<EFBFBD><59><EFBFBD>Ă<EFBFBD>
SetupTitlesDataFile((MY_USER_APP_TID *)title_id_buf_ptr , (u32)title_id_count);
end_ec_f:
// cleanup
// EC <20>̏I<CC8F><49><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
mprintf("-ec shutdown.. ");
rv = EC_Shutdown();
if( rv != EC_ERROR_OK ) {
ret_flag = FALSE;
m_set_palette(tc[0], M_TEXT_COLOR_RED );
mprintf("NG.\n");
m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
miya_log_fprintf(log_fd, "%s failed EC_Shutdown\n", __FUNCTION__);
}
else {
m_set_palette(tc[0], M_TEXT_COLOR_GREEN );
mprintf("OK.\n");
}
m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
end_ec:
// <20>l<EFBFBD>b<EFBFBD>g<EFBFBD><67><EFBFBD>[<5B>N<EFBFBD><4E><EFBFBD><EFBFBD><EFBFBD>̐ؒf
miya_log_fprintf(log_fd,"-LINK DOWN....");
mprintf("-LINK DOWN....");
NHTTP_Cleanup();
end_nhttp:
NSSL_Finish();
end_nssl:
NcFinish();
end_nc:
//miya_log_fprintf(log_fd,"NSSL_Finish() return = %d\n", NSSL_Finish());
TerminateWcmControl();
miya_log_fprintf(log_fd,"done.\n");
mprintf("done.\n");
// EC <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Title ID <20>̃f<CC83>B<EFBFBD><42><EFBFBD>N<EFBFBD>g<EFBFBD><67><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EC90AC><EFBFBD>Ă<EFBFBD><C482>܂<EFBFBD><DC82><EFBFBD><EFBFBD>߁A<DF81><EFBFBD><ED8F9C><EFBFBD><EFBFBD>
DeleteECDirectory();
end_log_e:
;
}
else {
/* mprintf("-Wireless AP conf. loading.. "); */
miya_log_fprintf(log_fd, "NG.\n");
ret_flag = FALSE;
m_set_palette(tc[0], M_TEXT_COLOR_RED );
mprintf("NG.\n");
}
m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
}
network_connection_end:
hatamotolib_log_end();
return ret_flag;
}
static BOOL RestoreFromSDCard9(void)
{
int list_count;
int error_count;
BOOL ret_flag = TRUE;
Error_Report_Init();
if( mydata.num_of_app_save_data > 0 ) {
mprintf("App. save data restore ");
if( TRUE == RestoreDirEntryList_System_And_InstallSuccessApp( MyFile_GetSaveDataListFileName() ,
MyFile_GetSaveDataRestoreLogFileName(),
&list_count, &error_count,
title_id_buf_ptr, title_id_count )) {
m_set_palette(tc[0], M_TEXT_COLOR_GREEN );
mprintf("OK.\n");
m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
}
else {
// error
m_set_palette(tc[0], M_TEXT_COLOR_RED );
mprintf("NG.\n");
m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
ret_flag = FALSE;
}
}
else if( mydata.num_of_app_save_data == 0 ) {
mprintf("Original device has no app. save data\n");
}
else {
mprintf("Original app. save data saving failed\n");
}
m_set_palette(tc[0], M_TEXT_COLOR_YELLOW );
if( TRUE == Error_Report_Display(tc[0]) ) {
mprintf("\n");
}
m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
Error_Report_End();
return ret_flag;
}
static BOOL RestoreFromSDCard10(void)
{
int i;
BOOL first_check = FALSE;
u64 tid;
char game_code_buf[5];
BOOL ret_flag = TRUE;
if( mydata.shop_record_flag == FALSE ) {
for( i = 0; i < title_id_count ; i++ ) {
if( title_id_buf_ptr[i].common_and_download == TRUE ) {
/* <20><><EFBFBD>ƂŃ_<C583>E<EFBFBD><45><EFBFBD><EFBFBD><EFBFBD>[<5B>h<EFBFBD><68><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƀ`<60>F<EFBFBD>b<EFBFBD>N<EFBFBD><4E><EFBFBD>‚<EFBFBD><C282><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
if( first_check == FALSE ) {
first_check = TRUE;
mprintf("\n");
if( mydata.dev_dot_kp_flag == TRUE ) {
/* net.log <20>͂Ȃ<CD82><C882><EFBFBD><EFBFBD>ǁAdev.kp <20>͂<EFBFBD><CD82><EFBFBD><EFBFBD>B */
m_set_palette(tc[0], M_TEXT_COLOR_PINK );
text_blink_current_line(tc[0]);
mprintf("User network account\n");
text_blink_current_line(tc[0]);
mprintf(" has been deleted!\n");
mprintf("\n");
m_set_palette(tc[0], M_TEXT_COLOR_YELLOW );
mprintf("Please update\n the following apps in the SD card\n");
mprintf(" OR, download from the Internet.\n");
m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
}
else {
m_set_palette(tc[0], M_TEXT_COLOR_YELLOW );
mprintf("Please update\n the following apps in the SD card.\n");
m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
}
}
tid = title_id_buf_ptr[i].tid;
(void)my_fs_Tid_To_GameCode(tid, game_code_buf);
mprintf(" id %08X %08X [%s]\n", (u32)(tid >> 32), (u32)tid, game_code_buf);
}
}
if( first_check == TRUE) {
mprintf("\n");
ret_flag = FALSE;
}
}
return ret_flag;
}
static BOOL RestoreFromSDCard11(void)
{
if( title_id_buf_ptr != NULL ) {
OS_Free( title_id_buf_ptr );
title_id_buf_ptr = NULL;
}
title_id_count = 0;
return TRUE;
}
typedef BOOL (*function_ptr)(void);
static function_ptr function_table[] =
{
RestoreFromSDCard1,
RestoreFromSDCard2,
RestoreFromSDCard3,
RestoreFromSDCard4,
RestoreFromSDCard5,
RestoreFromSDCard6,
RestoreFromSDCard7,
RestoreFromSDCard8,
RestoreFromSDCard9,
RestoreFromSDCard10,
RestoreFromSDCard11,
};
static int function_table_max = sizeof(function_table) / sizeof(*function_table);
static int function_counter = 0;
static int current_function_table_max = sizeof(function_table) / sizeof(*function_table);
static void MyThreadProc(void *arg)
{
#pragma unused(arg)
OSMessage message;
BOOL flag;
BOOL twl_card_validation_flag;
u32 command;
int i;
m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
while( 1 ) {
(void)OS_SendMessage(&MyMesgQueue_response, (OSMessage)0, OS_MESSAGE_NOBLOCK);
(void)OS_ReceiveMessage(&MyMesgQueue_request, &message, OS_MESSAGE_BLOCK);
flag = TRUE;
twl_card_validation_flag = TRUE;
/* MydataLoad<61>͂<EFBFBD><CD82>łɂ<C582><C982><EFBFBD><EFBFBD>Ă<EFBFBD><C482><EFBFBD><EFBFBD>̂ł<CC82><C582><EFBFBD><EFBFBD>Ȃ<EFBFBD><C882>B */
command = (u32)message;
switch( command ) {
case THREAD_COMMAND_FULL_FUNCTION:
current_function_table_max = function_table_max;
m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
if( miya_debug_level == 1 || ( my_fs_get_print_debug_flag() == TRUE )) {
m_set_palette(tc[0], M_TEXT_COLOR_PINK );
mprintf("Free mem size %d bytes\n", OS_GetTotalFreeSize(OS_ARENA_MAIN, hHeap));
m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
}
for( function_counter = 0 ; function_counter < function_table_max ; function_counter++ ) {
if( FALSE == (function_table[function_counter])() ) {
flag = FALSE;
}
if( miya_debug_level == 1 || ( my_fs_get_print_debug_flag() == TRUE )) {
m_set_palette(tc[0], M_TEXT_COLOR_PINK );
mprintf("Free mem size %d bytes\n", OS_GetTotalFreeSize(OS_ARENA_MAIN, hHeap));
m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
}
}
break;
case THREAD_COMMAND_WIFI_FUNCTION:
current_function_table_max = 1;
function_counter = 0;
if( FALSE == RestoreFromSDCard3() ) {
flag = FALSE;
}
function_counter++;
break;
case THREAD_COMMAND_USERDATA_AND_WIFI_FUNCTION:
current_function_table_max = 2;
function_counter = 0;
if( FALSE == RestoreFromSDCard4() ) {
flag = FALSE;
}
function_counter++;
if( FALSE == RestoreFromSDCard3() ) {
flag = FALSE;
}
function_counter++;
break;
case THREAD_COMMAND_REBOOT_FUNCTION:
mprintf("%s Power button pressed!\n",__FUNCTION__);
OS_TPrintf("%s Power button pressed!\n",__FUNCTION__);
MCU_SetFreeRegister( FREE_REG_POWERON_REBOOT );
PM_ReadyToExit();
OS_Sleep(100000);
break;
case THREAD_COMMAND_RESTORE_SAVEDATA_FUNCTION:
current_function_table_max = 3;
function_counter = 0;
if( FALSE == RestoreFromSDCard7() ) {
flag = FALSE;
}
function_counter++;
for( i = 0 ; i < title_id_count ; i++ ) {
title_id_buf_ptr[i].install_success_flag = TRUE;
}
if( FALSE == RestoreFromSDCard9() ) {
flag = FALSE;
}
function_counter++;
if( FALSE == RestoreFromSDCard11() ) {
flag = FALSE;
}
function_counter++;
break;
default:
current_function_table_max = 0;
function_counter = 0;
flag = FALSE;
mprintf("%s unknown command!\n",__FUNCTION__);
break;
}
mprintf("\n");
if( flag == TRUE ) {
completed_flag = TRUE;
if( TRUE == stream_play_is_end() ) {
stream_play0(); /* cursor.aiff */
}
m_set_palette(tc[0], M_TEXT_COLOR_YELLOW );
mprintf("Pull out DS(DSi) & SD CARDs!\n");
m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
while( 1 ) {
if( twl_card_validation_flag == TRUE ) {
/* <20>Ȃ<EFBFBD><C882><EFBFBD><EFBFBD><EFBFBD><EFBFBD>񂵂<EFBFBD><F182B582><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȃ<EFBFBD><C882>̂ŁE<C581>E */
if( FALSE == TWLCardValidation() ) {
twl_card_validation_flag = FALSE;
mprintf("DS(DSi)CARD pulled out\n");
}
}
if( (FALSE == twl_card_validation_flag) && (FALSE == SDCardValidation()) ) {
m_set_palette(tc[0], M_TEXT_COLOR_GREEN ); /* green */
mprintf("Restore completed.\n");
m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
if( TRUE == stream_play_is_end() ) {
stream_play1(); /* ok.aiff */
}
Gfx_Set_BG1_Color((u16)M_TEXT_COLOR_DARKGREEN);
#ifdef MIYA_SET_VOL_AND_BRIGHT
OS_Sleep(2000);
(void)MCU_SetVolume((u8)(mydata.volume));
(void)MCU_SetBackLightBrightness((u8)(mydata.backlight_brightness));
OS_TPrintf("vol = %d\n",mydata.volume );
OS_TPrintf("bright = %d\n", mydata.backlight_brightness);
OS_Sleep(20);
#endif
break;
}
if( pushed_power_button == TRUE ) {
OS_TPrintf("%s Power button pressed!\n",__FUNCTION__);
MCU_SetFreeRegister( FREE_REG_POWERON_REBOOT );
PM_ReadyToExit();
pushed_power_button = FALSE;
}
OS_Sleep(200);
}
}
else {
m_set_palette(tc[0], M_TEXT_COLOR_RED );
mprintf("Restore failed.\n");
m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
if( TRUE == stream_play_is_end() ) {
stream_play2(); /* ng.aiff */
}
Gfx_Set_BG1_Color((u16)M_TEXT_COLOR_DARKRED);
}
mprintf("\n");
/* <20>S<EFBFBD><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>t<EFBFBD>H<EFBFBD><48><EFBFBD>_<EFBFBD><5F><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
}
}
static void MyThreadProcNuc(void *arg)
{
#pragma unused(arg)
OSMessage message;
u16 keyData;
FSFile *log_fd;
BOOL ret_flag;
while( 1 ) {
(void)OS_SendMessage(&MyMesgQueue_response, (OSMessage)0, OS_MESSAGE_NOBLOCK);
(void)OS_ReceiveMessage(&MyMesgQueue_request, &message, OS_MESSAGE_BLOCK);
if( (u32)message == THREAD_COMMAND_REBOOT_FUNCTION ) {
m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
mprintf("%s Power button pressed!\n",__FUNCTION__);
OS_TPrintf("%s Power button pressed!\n",__FUNCTION__);
MCU_SetFreeRegister( FREE_REG_POWERON_REBOOT );
PM_ReadyToExit();
pushed_power_button = FALSE;
}
else if( (u32)message != THREAD_COMMAND_NUP_FUNCTION ) {
m_set_palette(tc[0], M_TEXT_COLOR_RED );
mprintf("%s unknown command!\n",__FUNCTION__);
m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
continue;
}
m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
mprintf("-Wireless AP conf. load ");
if( TRUE == LoadWlanConfig() ) {
m_set_palette(tc[0], M_TEXT_COLOR_GREEN ); /* green */
mprintf("OK.\n");
m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
if( 0 != NcStart(SITEDEFS_DEFAULTCLASS) ) {
mprintf("-connect to the AP ");
m_set_palette(tc[0], M_TEXT_COLOR_RED );
mprintf("NG.\n");
m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
Gfx_Set_BG1_Color((u16)M_TEXT_COLOR_DARKRED);
if( TRUE == stream_play_is_end() ) {
stream_play2(); /* ng.aiff */
}
mprintf("Network Update failed!\n");
OS_TPrintf("Network Update failed!\n");
while( 1 ) {
keyData = m_get_key_code();
if ( keyData & (PAD_BUTTON_A | PAD_BUTTON_START) ) {
OS_RebootSystem();
}
if( pushed_power_button == TRUE ) {
OS_TPrintf("%s Power button pressed!\n",__FUNCTION__);
MCU_SetFreeRegister( FREE_REG_POWERON_REBOOT );
PM_ReadyToExit();
pushed_power_button = FALSE;
}
OS_Sleep(20);
}
}
else {
mprintf("-connect to the AP ");
m_set_palette(tc[0], M_TEXT_COLOR_GREEN );
mprintf("OK.\n");
m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
}
RTC_NTP_SYNC();
/* NSSL_Init()<29>Ă<EFBFBD><C482>ł̓_<CD83><5F><EFBFBD>I */
log_fd = my_nuc_log_start( MyFile_GetNupLogFileName() );
ret_flag = my_numc_proc();
my_nuc_log_end();
if( TRUE == ret_flag ) {
m_set_palette(tc[0], M_TEXT_COLOR_GREEN );
OS_TPrintf("Network Update Completed!\n");
mprintf("Network Update Completed!\n");
m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
NcFinish();
TerminateWcmControl();
if( TRUE == stream_play_is_end() ) {
stream_play0(); /* cursor.aiff */
}
/* <20>n<EFBFBD>[<5B>h<EFBFBD>E<EFBFBD>F<EFBFBD>A<EFBFBD><41><EFBFBD>Z<EFBFBD>b<EFBFBD>g<EFBFBD><67><EFBFBD>s<EFBFBD><73><EFBFBD>A<EFBFBD><41><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>g<EFBFBD><67><EFBFBD>N<EFBFBD><4E><EFBFBD><EFBFBD><EFBFBD>܂<EFBFBD><DC82>B */
mprintf("\n");
text_blink_current_line(tc[0]);
mprintf("press A button to start RESTORE\n\n");
if( reboot_rtc_adjust_done_flag == TRUE ) {
MCU_SetFreeRegister( FREE_REG_RESTOREMODE_AND_RTC_DONE_REBOOT );
}
else {
MCU_SetFreeRegister( FREE_REG_RESTOREMODE_REBOOT );
}
while( 1 ) {
keyData = m_get_key_code();
if ( keyData & (PAD_BUTTON_A | PAD_BUTTON_START) ) {
OS_RebootSystem();
}
if( pushed_power_button == TRUE ) {
OS_TPrintf("%s Power button pressed!\n",__FUNCTION__);
MCU_SetFreeRegister( FREE_REG_POWERON_REBOOT );
PM_ReadyToExit();
pushed_power_button = FALSE;
}
OS_Sleep(20);
}
}
else {
// NUC_Init() failed, error code=34416 <20>͂ǂ<CD82><C782><EFBFBD><EFBFBD><EFBFBD>NSSL_Init<69><74><EFBFBD>Ă<EFBFBD><C482>ł<EFBFBD><C582>̂ŏ<CC82><C58F><EFBFBD><EFBFBD>B
m_set_palette(tc[0], M_TEXT_COLOR_RED );
mprintf("network update failed!\n");
OS_TPrintf("Network Update failed!\n");
m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
Gfx_Set_BG1_Color((u16)M_TEXT_COLOR_DARKRED);
}
}
else {
/* mprintf("-Wireless AP conf. loading.. "); */
m_set_palette(tc[0], M_TEXT_COLOR_RED );
mprintf("NG.\n");
m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
}
}
}
static void *AllocForNAM(size_t size)
{
OSIntrMode old = OS_DisableInterrupts();
void* p = OS_Alloc(size);
OS_RestoreInterrupts(old);
return p;
}
static void FreeForNAM(void* ptr)
{
if( ptr != NULL ) {
OSIntrMode old = OS_DisableInterrupts();
OS_Free(ptr);
OS_RestoreInterrupts(old);
}
}
static BOOL myTWLCardCallback( void )
{
return FALSE; // means that not terminate.
}
void TwlMain(void)
{
void* newArenaLo;
u16 keyData;
int loop_counter = 0;
int save_dir_info = 0;
MY_DIR_ENTRY_LIST *dir_entry_list_head = NULL;
RTCDate rtc_date;
RTCTime rtc_time;
int i;
int n;
u8 macAddress[6];
MY_ENTRY_LIST *mfiler_list_head = NULL;
u16 s_major, s_minor;
BOOL s_flag;
s64 sys_version_org;
s64 sys_version;
u32 s_timestamp;
ESError es_error_code;
BOOL MydataLoadDecrypt_message_flag = TRUE;
BOOL MydataLoadDecrypt_dir_flag = TRUE;
BOOL MydataLoadDecrypt_success_flag = TRUE;
BOOL dir_select_mode = FALSE;
int select_mode = 0;
u8 free_reg;
u16 BatterylevelBuf = 0;
BOOL isAcConnectedBuf = FALSE;
u32 IPADDR;
u32 NETMASK;
u32 GATEWAY;
u32 DNS1;
u32 DNS2;
#ifdef CHINA_LIMITED
BOOL isIgnoreKeyInput = FALSE;
static const char *isbn[4] = { "000-0-000000-00-0", "000-0000-000", "0000", "000" };
// static const char *isbn[4] = { "978-7-900381-62-7", "025-2004-017", "2005", "065" };
#endif
#ifdef CHINA_LIMITED
OS_InitChina(isbn, OS_CHINA_ISBN_NO_DISP);
#else
OS_Init();
#endif
OS_InitThread();
OS_InitTick();
OS_InitAlarm();
/* <20><><EFBFBD><EFBFBD><EFBFBD>k<EFBFBD>`<60>m<EFBFBD>ݒ<EFBFBD><DD92>̋<EFBFBD><CC8B><EFBFBD><EFBFBD>n<EFBFBD>m */
WLAN_FORCE_ON();
// <20>}<7D>X<EFBFBD>^<5E>[<5B><><EFBFBD><EFBFBD>݃t<DD83><74><EFBFBD>O<EFBFBD><4F><EFBFBD><EFBFBD><EFBFBD>‚<EFBFBD>
(void)OS_EnableIrq();
// IRQ <20><><EFBFBD><EFBFBD>݂<EFBFBD><DD82><EFBFBD><EFBFBD>‚<EFBFBD><C282>܂<EFBFBD>
(void)OS_EnableInterrupts();
// ARM7<4D>Ƃ̒ʐMFIFO<46><4F><EFBFBD><EFBFBD>݋<EFBFBD><DD8B><EFBFBD>
(void)OS_EnableIrqMask(OS_IE_SPFIFO_RECV);
// <20>t<EFBFBD>@<40>C<EFBFBD><43><EFBFBD>V<EFBFBD>X<EFBFBD>e<EFBFBD><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
FS_Init( FS_DMA_NOT_USE );
PM_Init();
// <20><><EFBFBD>C<EFBFBD><43><EFBFBD>A<EFBFBD><41><EFBFBD>[<5B>i<EFBFBD>̃A<CC83><41><EFBFBD>P<EFBFBD>[<5B>g<EFBFBD>V<EFBFBD>X<EFBFBD>e<EFBFBD><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
newArenaLo = OS_InitAlloc(OS_ARENA_MAIN, OS_GetMainArenaLo(), OS_GetMainArenaHi(), 1);
OS_SetMainArenaLo(newArenaLo);
// <20><><EFBFBD>C<EFBFBD><43><EFBFBD>A<EFBFBD><41><EFBFBD>[<5B>i<EFBFBD><69><EFBFBD>Ƀq<C983>[<5B>v<EFBFBD><76><EFBFBD>
hHeap = OS_CreateHeap(OS_ARENA_MAIN, OS_GetMainArenaLo(), OS_GetMainArenaHi());
OS_SetCurrentHeap(OS_ARENA_MAIN, hHeap);
allocator_total_size = OS_GetTotalFreeSize(OS_ARENA_MAIN, hHeap);
Gfx_Init();
RTC_Init();
SCFG_Init();
NVRAMi_Init();
SND_Init();
stream_main();
CARD_Init();
CARD_SetPulledOutCallback( myTWLCardCallback );
// <20>K<EFBFBD>{<7B>GSEA <20>̏<EFBFBD><CC8F><EFBFBD><EFBFBD><EFBFBD>
SEA_Init();
reboot_flag = OS_IsRebooted();
MIYA_MCU_Init();
OS_TPrintf("MCU Free Reg. 0x%02x\n", MCU_GetFreeReg());
free_reg = MCU_GetFreeReg();
if( free_reg == FREE_REG_RESTOREMODE_REBOOT ) {
reboot_flag = TRUE;
reboot_rtc_adjust_done_flag = FALSE;
}
else if( free_reg == FREE_REG_RESTOREMODE_AND_RTC_DONE_REBOOT ) {
reboot_flag = TRUE;
reboot_rtc_adjust_done_flag = TRUE;
}
else {
reboot_flag = FALSE;
reboot_rtc_adjust_done_flag = FALSE;
}
development_console_flag = IsThisDevelopmentConsole();
if(TRUE == development_console_flag ) {
mprintf("--development console--\n");
}
PM_SetAutoExit( FALSE );
PM_SetExitCallbackInfo( &pmexitcallbackinfo,pmexitcallback, NULL);
PM_PrependPreExitCallback( &pmexitcallbackinfo );
#ifdef MIYA_SET_VOL_AND_BRIGHT
MCU_SetVolume( (u8)31 );
MCU_SetBackLightBrightness( (u8)4 );
#endif
if( FALSE == SDCardValidation() ) {
sd_card_flag = FALSE;
m_set_palette(tc[0], 0x1); /* red */
mprintf("No SD card\n");
m_set_palette(tc[0], 0xF); /* white */
}
else {
sd_card_flag = TRUE;
}
FS_RegisterEventHook("sdmc", &sSDHook, SDEvents, NULL);
if( FALSE == Read_SystemMenuVersion(&s_major, &s_minor, &s_timestamp) ) {
m_set_palette(tc[0], M_TEXT_COLOR_RED );
mprintf( "system menu ver. read error!\n");
m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
s_major = 0;
s_minor = 0;
s_timestamp = 0;
s_flag = FALSE;
sys_version = -1;
}
else {
s_flag = TRUE;
sys_version = (s64)(((u32)s_major) << 16 | (u32)s_minor);
}
ES_InitLib();
if( FALSE == MiyaReadHWNormalInfo( &hwn_info ) ) {
m_set_palette(tc[0], 0x1); /* red */
mprintf("HW Normal Info. read error.\n");
m_set_palette(tc[0], 0xF);
}
// mprintf("HW Secure Info. read ");
if( FALSE == MiyaReadHWSecureInfo( &hws_info ) ) {
m_set_palette(tc[0], 0x1); /* red */
mprintf("HW Secure Info. read error.\n");
m_set_palette(tc[0], 0xF); /* white */
}
// <20>j<EFBFBD>b<EFBFBD>N<EFBFBD>l<EFBFBD>[<5B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȃ<EFBFBD><C882>K<EFBFBD><4B><EFBFBD>ɐݒ<C990>
if( *LCFG_TSD_GetNicknamePtr() == L'\0' ) {
LCFG_TSD_SetNickname((const u16*)(L"repair-tool"));
// mprintf("Set dummy Nickname\n");
}
// region
org_region = LCFG_THW_GetRegion();
#ifdef CHINA_LIMITED
mprintf("This software has limited use\n");
mprintf(" of China region. - ");
if( org_region != OS_TWL_REGION_CHINA ) {
m_set_palette(tc[0], M_TEXT_COLOR_RED );
mprintf("Invalid\n");
m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
isIgnoreKeyInput = TRUE;
}
else {
mprintf("Valid\n");
}
#endif
// <20><><EFBFBD><EFBFBD><EFBFBD>I<EFBFBD><49><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ă<EFBFBD><C482>Ȃ<EFBFBD><C882>Ȃ<EFBFBD><C882>K<EFBFBD><4B><EFBFBD>ɐݒ<C990>
if( LCFG_TSD_GetCountry() == LCFG_TWL_COUNTRY_UNDEFINED ) {
mprintf("Set dummy Country code ");
switch( org_region ) {
case OS_TWL_REGION_JAPAN:
LCFG_TSD_SetCountry(LCFG_TWL_COUNTRY_JAPAN);
mprintf("JPN");
break;
case OS_TWL_REGION_AMERICA:
LCFG_TSD_SetCountry(LCFG_TWL_COUNTRY_UNITED_STATES);
mprintf("USA");
break;
case OS_TWL_REGION_EUROPE:
LCFG_TSD_SetCountry(LCFG_TWL_COUNTRY_UNITED_KINGDOM);
mprintf("UK");
break;
case OS_TWL_REGION_AUSTRALIA:
LCFG_TSD_SetCountry(LCFG_TWL_COUNTRY_AUSTRALIA);
mprintf("AUS");
break;
case OS_TWL_REGION_CHINA:
LCFG_TSD_SetCountry(LCFG_TWL_COUNTRY_CHINA);
mprintf("CHN");
break;
case OS_TWL_REGION_KOREA:
LCFG_TSD_SetCountry(LCFG_TWL_COUNTRY_SOUTH_KOREA);
mprintf("KOR");
break;
case OS_TWL_REGION_MAX:
default:
mprintf("JPN");
LCFG_TSD_SetCountry(LCFG_TWL_COUNTRY_JAPAN);
break;
}
mprintf("\n");
}
/******************
static inline LCFGTWLCountryCode LCFG_TSD_GetCountry( void )
{
return (LCFGTWLCountryCode)LCFGi_GetTSD()->country;
}
// <20><><EFBFBD>R<EFBFBD>[<5B>h<EFBFBD>̃Z<CC83>b<EFBFBD>g<EFBFBD>B
static inline void LCFG_TSD_SetCountry( LCFGTWLCountryCode country )
{
LCFGi_GetTSD()->country = (u8)country;
LCFGi_GetTSD_OS()->country = (u8)country;
}
extern LCFGTWLSettingsData s_settings;
#define LCFGi_GetTSD() ( &s_settings )
#define LCFGi_GetTSD_OS() ( (OSTWLSettingsData*)HW_PARAM_TWL_SETTINGS_DATA )
*******************/
// ES Device ID
org_fuseId = SCFG_ReadFuseData();
OS_TPrintf("eFuseID: %08X%08X\n", (u32)(org_fuseId >> 32), (u32)(org_fuseId));
OS_GetMacAddress( macAddress );
mydata.shop_record_flag = FALSE;
es_error_code = ES_GetDeviceId(&mydata.deviceId);
if( es_error_code == ES_ERR_OK ) {
if( TRUE == CheckShopRecord( NULL ) ) {
mydata.shop_record_flag = TRUE;
}
else {
mprintf("no shop record\n");
}
}
else {
OS_TPrintf("es_error_code = %d\n", es_error_code );
}
if( TRUE == mydata.shop_record_flag ) {
snprintf(mydata.bmsDeviceId, sizeof(mydata.bmsDeviceId), "%lld", ((0x3ull << 32) | mydata.deviceId));
// OS_TPrintf("DeviceID: %08X %u\n", mydata.deviceId, mydata.deviceId);
OS_TPrintf("DeviceID: %s\n", mydata.bmsDeviceId);
}
if( FALSE == OS_IsAvailableWireless() ) {
wlan_active_flag = FALSE;
}
if( FALSE == reboot_flag ) {
mprintf("Network update mode\n");
/* <20>ŏ<EFBFBD><C58F>̓l<CD83>b<EFBFBD>g<EFBFBD><67><EFBFBD>[<5B>N<EFBFBD>A<EFBFBD>b<EFBFBD>v<EFBFBD>f<EFBFBD>[<5B>g<EFBFBD>B */
if( FALSE == wlan_active_flag ) {
// m_set_palette(tc[0], M_TEXT_COLOR_YELLOW );
mprintf("Error:WLAN Enable flag = OFF\n");
OS_TPrintf("WLAN Enable flag OFF\n");
if( TRUE == stream_play_is_end() ) {
stream_play2(); /* ng.aiff */
}
Gfx_Set_BG1_Color((u16)M_TEXT_COLOR_DARKRED);
goto loop_start;
}
// NSSL_Init(&s_sslConfig);
// SetupNSSL();
if (!NA_LoadVersionDataArchive(WorkForNA, NA_VERSION_DATA_WORK_SIZE)) {
OS_TPrintf("NA load error\n");
mprintf("NA load error\n");
}
else {
if (!NUC_LoadCert()) {
// WRAM<41>Ƀ<EFBFBD><C983>[<5B>h
OS_TPrintf("Client cert load error\n");
mprintf("Client cert load error\n");
}
(void)NA_UnloadVersionDataArchive();
}
init_my_thread_nuc();
if( sd_card_flag == TRUE ) {
text_blink_current_line(tc[0]);
/* <20><><EFBFBD><EFBFBD><EFBFBD>X<EFBFBD>^<5E>[<5B>g<EFBFBD>͂<EFBFBD><CD82><EFBFBD><EFBFBD>Ȃ<EFBFBD> */
mprintf("press A button to start UPDATE\n\n");
}
else {
text_blink_current_line(tc[0]);
mprintf("insert SD card\n");
}
}
/* FALSE == reboot_flag <20><><EFBFBD><EFBFBD><EFBFBD>܂<EFBFBD> */
else {
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>u<EFBFBD>[<5B>g<EFBFBD><67> */
if( FALSE == wlan_active_flag ) {
select_mode = 1;
no_network_flag = TRUE;
}
dir_select_mode = TRUE;
mprintf("user data restore mode\n");
// NAM <20>̏<EFBFBD><CC8F><EFBFBD><EFBFBD><EFBFBD>
NAM_Init(&AllocForNAM, &FreeForNAM);
/* <20><><EFBFBD><EFBFBD><EFBFBD>߂<EFBFBD><DF82>ߒ<EFBFBD> */
if( sd_card_flag == TRUE ) {
text_blink_current_line(tc[0]);
mprintf("press A button to start RESTORE\n\n");
}
else {
text_blink_current_line(tc[0]);
mprintf("insert SD card\n");
}
init_my_thread();
// vram_num_main = 1;
// vram_num_sub = 0;
vram_num_sub = 2;
MFILER_CurrentDir_Init();
}
if( TRUE == stream_play_is_end() ) {
stream_play0(); /* cursor.aiff */
}
loop_start:
Gfx_Set_BG1_line_Color(1, 2, (u16)M_TEXT_COLOR_ORANGE);
while( 1 ) {
Gfx_Render( vram_num_main , vram_num_sub );
OS_WaitVBlankIntr();
(void)RTC_GetDate( &rtc_date );
(void)RTC_GetTime( &rtc_time );
#ifdef CHINA_LIMITED
if( isIgnoreKeyInput == FALSE ) {
keyData = m_get_key_trigger();
}
#else
keyData = m_get_key_trigger();
#endif
// <20>`<60>q<EFBFBD>l<EFBFBD>V<EFBFBD>R<EFBFBD>}<7D><><EFBFBD>h<EFBFBD><68><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>M
while (SND_RecvCommandReply(SND_COMMAND_NOBLOCK) != NULL)
{
}
// <20>R<EFBFBD>}<7D><><EFBFBD>h<EFBFBD>t<EFBFBD><74><EFBFBD>b<EFBFBD>V<EFBFBD><56><EFBFBD>i<EFBFBD>t<EFBFBD><74><EFBFBD>b<EFBFBD>V<EFBFBD><56><EFBFBD><EFBFBD><EFBFBD>đ<EFBFBD><C491><EFBFBD><EFBFBD>Ɏ<EFBFBD><C98E>s<EFBFBD><73><EFBFBD>v<EFBFBD><76><EFBFBD>j
(void)SND_FlushCommand(SND_COMMAND_NOBLOCK | SND_COMMAND_IMMEDIATE);
if ( keyData & PAD_BUTTON_R ) {
vram_num_main++;
if( vram_num_main > (MAX_VRAM_NUM-1) ) {
vram_num_main = 0;
}
}
else if ( keyData & PAD_BUTTON_L ) {
vram_num_main--;
if( vram_num_main < 0 ) {
vram_num_main = (MAX_VRAM_NUM-1);
}
}
else if ( keyData & (PAD_BUTTON_A | PAD_BUTTON_START) ) {
if( sd_card_flag == TRUE ) {
if( FALSE == reboot_flag ) {
if( wlan_active_flag != FALSE ) {
/* <20>l<EFBFBD>b<EFBFBD>g<EFBFBD><67><EFBFBD>[<5B>N<EFBFBD>A<EFBFBD>b<EFBFBD>v<EFBFBD>f<EFBFBD>[<5B>g */
text_blink_clear(tc[0]);
start_my_thread( THREAD_COMMAND_NUP_FUNCTION );
}
}
else {
/* <20><><EFBFBD>X<EFBFBD>g<EFBFBD>A */
if( vram_num_sub == 2 ) {
MydataLoadDecrypt_dir_flag = MFILER_Is_Cursor_Dir( &mfiler_list_head );
if( TRUE == MydataLoadDecrypt_dir_flag) {
text_blink_clear(tc[0]);
MyFile_SetPathBase("sdmc:/");
MyFile_AddPathBase((const char *)MFILER_GetCursorEntryPath( &mfiler_list_head ) );
MyFile_AddPathBase("/");
if( only_wifi_config_data_trans_flag == TRUE ) {
/* <20><><EFBFBD><EFBFBD><EFBFBD>ݒ<EFBFBD><DD92>̂݃<CC82><DD83>X<EFBFBD>g<EFBFBD>A<EFBFBD><41><EFBFBD><EFBFBD> */
mydata.wireless_lan_param_flag = TRUE;
vram_num_sub = 0;
MydataLoadDecrypt_message_flag = TRUE;
// MydataLoadDecrypt_dir_flag = TRUE;
MydataLoadDecrypt_success_flag = TRUE;
start_my_thread( THREAD_COMMAND_WIFI_FUNCTION );
}
else if( user_and_wifi_config_data_trans_flag == TRUE ) {
/* <20><><EFBFBD>[<5B>U<EFBFBD>[<5B>ݒ<EFBFBD><DD92>Ɩ<EFBFBD><C696><EFBFBD><EFBFBD>ݒ<EFBFBD><DD92>̂݃<CC82><DD83>X<EFBFBD>g<EFBFBD>A<EFBFBD><41><EFBFBD><EFBFBD> */
mydata.user_settings_flag = TRUE;
mydata.wireless_lan_param_flag = TRUE;
vram_num_sub = 0;
MydataLoadDecrypt_message_flag = TRUE;
// MydataLoadDecrypt_dir_flag = TRUE;
MydataLoadDecrypt_success_flag = TRUE;
start_my_thread( THREAD_COMMAND_USERDATA_AND_WIFI_FUNCTION );
}
else if( only_restore_savedata_flag == TRUE ) {
vram_num_sub = 0;
MydataLoadDecrypt_success_flag = MydataLoadDecrypt( MyFile_GetGlobalInformationFileName(),
&mydata, sizeof(MyData), NULL);
if(TRUE == MydataLoadDecrypt_success_flag ) {
start_my_thread( THREAD_COMMAND_RESTORE_SAVEDATA_FUNCTION );
}
}
else {
mprintf("Personal data. restore ");
MydataLoadDecrypt_success_flag = MydataLoadDecrypt( MyFile_GetGlobalInformationFileName(),
&mydata, sizeof(MyData), NULL);
/*
<20><><EFBFBD><EFBFBD><EFBFBD>`<60><><EFBFBD>[<5B><><EFBFBD>Â<EFBFBD><C382>{<7B>̂ɏ<CC82><C98F><EFBFBD><EFBFBD>߂<EFBFBD><DF82><EFBFBD>ł<EFBFBD><C582><EFBFBD><EFBFBD>A<EFBFBD>l<EFBFBD>b<EFBFBD>g<EFBFBD><67><EFBFBD>[<5B>N<EFBFBD>A<EFBFBD>b<EFBFBD>v<EFBFBD>f<EFBFBD>[<5B>g<EFBFBD><67>
<20>X<EFBFBD>L<EFBFBD>b<EFBFBD>v<EFBFBD><76><EFBFBD>ă<EFBFBD><C483>X<EFBFBD>g<EFBFBD>A<EFBFBD><41><EFBFBD><EFBFBD>Ƃ<EFBFBD><C682><EFBFBD><EFBFBD>ƃf<C683>[<5B>^<5E>̐<EFBFBD><CC90><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>NG<4E>ɂȂ<C982><C882><EFBFBD>ɂ<EFBFBD><C982><EFBFBD><EFBFBD><EFBFBD>
<20><><EFBFBD><EFBFBD><EFBFBD>Ǝv<C68E><76><EFBFBD>܂<EFBFBD><DC82>B<EFBFBD>Ȃ̂ł<CC82><C582><EFBFBD><EFBFBD>A<EFBFBD><41><EFBFBD>̎<EFBFBD><CC8E>̕\<5C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƕςł<CF82><C582>B
*/
if( mydata.sys_ver_flag == TRUE ) {
sys_version_org = (s64)(((u32)(mydata.sys_ver_major)) << 16 | (u32)(mydata.sys_ver_minor));
}
else {
sys_version_org = -1;
}
if(TRUE == MydataLoadDecrypt_success_flag ) {
if( org_region != mydata.region ) {
m_set_palette(tc[0], M_TEXT_COLOR_RED );
mprintf("NG.\n");
m_set_palette(tc[0], M_TEXT_COLOR_YELLOW );
mprintf(" invalid region code.\n");
mprintf(" \n");
m_set_palette(tc[0], 0xF); /* white */
MydataLoadDecrypt_message_flag = FALSE;
if( TRUE == stream_play_is_end() ) {
stream_play2(); /* ng.aiff */
}
}
else if( mydata.version_major != MY_DATA_VERSION_MAJOR ) {
m_set_palette(tc[0], M_TEXT_COLOR_RED );
mprintf("NG.\n");
m_set_palette(tc[0], M_TEXT_COLOR_YELLOW );
mprintf(" invalid tool data format.\n");
mprintf(" %s\n version %d.%d\n",MyFile_GetGlobalInformationFileName(),
mydata.version_major,mydata.version_minor);
mprintf(" \n");
m_set_palette(tc[0], 0xF); /* white */
MydataLoadDecrypt_message_flag = FALSE;
if( TRUE == stream_play_is_end() ) {
stream_play2(); /* ng.aiff */
}
}
else if( mydata.version_minor != MY_DATA_VERSION_MINOR ) {
m_set_palette(tc[0], M_TEXT_COLOR_RED );
mprintf("NG.\n");
m_set_palette(tc[0], M_TEXT_COLOR_YELLOW );
mprintf(" invalid tool data format.\n");
mprintf(" %s\n version %d.%d\n",MyFile_GetGlobalInformationFileName(),
mydata.version_major,mydata.version_minor);
mprintf(" \n");
m_set_palette(tc[0], 0xF); /* white */
MydataLoadDecrypt_message_flag = FALSE;
if( TRUE == stream_play_is_end() ) {
stream_play2(); /* ng.aiff */
}
}
else if( s_flag && mydata.sys_ver_flag && (sys_version < sys_version_org) ) {
if(TRUE == IsThisDevelopmentConsole()) {
/* <20>J<EFBFBD><4A><EFBFBD>@<40>ł̓V<CD83>X<EFBFBD>e<EFBFBD><65><EFBFBD>o<EFBFBD>[<5B>W<EFBFBD><57><EFBFBD><EFBFBD><EFBFBD>A<EFBFBD>b<EFBFBD>v<EFBFBD><76><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȃ<EFBFBD><C882><EFBFBD> */
goto label1;
}
m_set_palette(tc[0], M_TEXT_COLOR_RED );
mprintf("NG.\n");
m_set_palette(tc[0], M_TEXT_COLOR_YELLOW );
mprintf(" invalid System menu version.\n");
mprintf(" org. version %d.%d\n", mydata.sys_ver_major,mydata.sys_ver_minor);
mprintf(" cur. version %d.%d\n", s_major,s_minor);
mprintf(" \n");
m_set_palette(tc[0], 0xF); /* white */
MydataLoadDecrypt_message_flag = FALSE;
if( TRUE == stream_play_is_end() ) {
stream_play2(); /* ng.aiff */
}
}
else {
label1:
m_set_palette(tc[0], 0x2); /* green */
mprintf("OK.\n");
m_set_palette(tc[0], 0xF); /* white */
if(TRUE == development_console_flag ) {
mprintf("--development console--\n");
}
vram_num_sub = 0;
MydataLoadDecrypt_message_flag = TRUE;
MydataLoadDecrypt_dir_flag = TRUE;
MydataLoadDecrypt_success_flag = TRUE;
dir_select_mode = FALSE;
start_my_thread( THREAD_COMMAND_FULL_FUNCTION );
}
}
else {
m_set_palette(tc[0], 0x1); /* red */
mprintf("NG.\n");
m_set_palette(tc[0], 0xF); /* white */
MydataLoadDecrypt_message_flag = FALSE;
if( TRUE == stream_play_is_end() ) {
stream_play2(); /* ng.aiff */
}
}
}
}
else {
mprintf("Not a backup data directory\n");
if( TRUE == stream_play_is_end() ) {
stream_play2(); /* ng.aiff */
}
MydataLoadDecrypt_message_flag = FALSE;
}
}
}
}
else {
text_blink_clear(tc[0]);
text_blink_current_line(tc[0]);
mprintf("insert SD card\n");
}
}
else if ( keyData & PAD_BUTTON_B ) {
}
#if 0
/* <20>X<EFBFBD>^<5E>[<5B>g<EFBFBD>{<7B>^<5E><><EFBFBD>͂`<60>{<7B>^<5E><><EFBFBD>Ɠ<EFBFBD><C693><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
else if ( keyData & PAD_BUTTON_START ) {
}
#endif
else if ( keyData & PAD_BUTTON_SELECT ) {
miya_debug_level ^= 1;
mprintf("debug level %d\n", miya_debug_level );
}
else if ( keyData & PAD_BUTTON_X ) {
if( FALSE == reboot_flag ) {
// nishimura 20100422
#if 0
//miya 20091116
int slot_no = 0;
char *ssid_str;
u8 key_bin_buf[0x40];
int key_bin_len;
int wlan_mode;
m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
mprintf("-wlan settings read ");
if( TRUE == wifi_config_nvram_get() ) {
m_set_palette(tc[0], M_TEXT_COLOR_GREEN ); /* green */
mprintf("OK.\n");
m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
}
else {
m_set_palette(tc[0], M_TEXT_COLOR_RED );
mprintf("NG.\n");
m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
}
mprintf("-Wireless AP conf. load ");
if( FALSE == LoadWlanConfigFile("sdmc:/wlan_cfg.txt") ) {
m_set_palette(tc[0], M_TEXT_COLOR_RED );
mprintf("NG.\n");
m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
}
else {
m_set_palette(tc[0], M_TEXT_COLOR_GREEN ); /* green */
mprintf("OK.\n");
m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
// wifi_config_print();
if( FALSE == wifi_config_clear_slot(slot_no) ) {
OS_TPrintf("Error: wifi_config_clear_slot\n");
}
m_set_palette(tc[0], M_TEXT_COLOR_BLUE );
ssid_str = GetWlanSSID();
if( ssid_str ) {
mprintf(" ssid = %s\n",ssid_str);
}
if( FALSE == wifi_config_set_ssid(slot_no, ssid_str, STD_StrLen(ssid_str) ) ) {
OS_TPrintf("Error: wifi_config_set_ssid\n");
}
mprintf(" MODE = ");
wlan_mode = GetWlanMode();
switch( wlan_mode ) {
case WCM_WEPMODE_NONE:
mprintf("NONE\n");
break;
case WM_WEPMODE_40BIT:
mprintf("WEP40\n");
break;
case WM_WEPMODE_104BIT:
mprintf("WEP104\n");
break;
case WM_WEPMODE_128BIT:
mprintf("WEP128\n");
break;
case WCM_WEPMODE_WPA_TKIP:
mprintf("WPA-TKIP\n");
break;
case WCM_WEPMODE_WPA2_TKIP:
mprintf("WPA2-TKIP\n");
break;
case WCM_WEPMODE_WPA_AES:
mprintf("WPA-AES\n");
break;
case WCM_WEPMODE_WPA2_AES :
mprintf("WPA2-AES\n");
break;
defalut:
mprintf("Unknow mode..\n");
break;
}
switch( wlan_mode ) {
case WM_WEPMODE_40BIT:
case WM_WEPMODE_104BIT:
case WM_WEPMODE_128BIT:
if( TRUE == GetKeyModeStr() ) {
if( FALSE == wifi_config_set_wep_key_str(slot_no, wlan_mode, GetWlanKEYSTR() )) {
mprintf("Error: wifi_config_wep_key_str\n");
}
else {
mprintf(" key = %s\n", GetWlanKEYSTR());
}
}
else {
key_bin_len = GetWlanKEYBIN(key_bin_buf);
if( FALSE == wifi_config_set_wep_key_bin(slot_no, wlan_mode, key_bin_buf, key_bin_len)){
mprintf("Error: wifi_config_wep_key_bin\n");
}
}
break;
case WCM_WEPMODE_WPA_TKIP:
case WCM_WEPMODE_WPA2_TKIP:
case WCM_WEPMODE_WPA_AES:
case WCM_WEPMODE_WPA2_AES:
if( TRUE == GetKeyModeStr() ) {
if( FALSE == wifi_config_set_wpa_key_str(slot_no, wlan_mode, GetWlanKEYSTR() )) {
mprintf("Error: wifi_config_wpa_key_str\n");
}
else {
mprintf(" key = %s\n", GetWlanKEYSTR());
}
}
else {
key_bin_len = GetWlanKEYBIN(key_bin_buf);
if( FALSE == wifi_config_set_wpa_key_bin(slot_no, wlan_mode, key_bin_buf, key_bin_len)){
mprintf("Error: wifi_config_wpa_key_bin\n");
}
}
break;
}
// SSID:
// MODE:"WPA2-AES"
// KEY-STR:
// DHCP:"ON"
// DNS auto
// IP auto
if( TRUE == GetDhcpMODE() ) {
mprintf(" DHCP client\n");
}
else {
IPADDR = GetIPAddr();
NETMASK = GetNetmask();
GATEWAY = GetGateway();
if( FALSE == wifi_config_set_ip_addr(slot_no, IPADDR) ) {
}
else {
mprintf(" IPADDR %3d.%3d.%3d.%3d\n", (u32)((IPADDR >> 24) & 0xff),(u32)((IPADDR >> 16) & 0xff),
(u32)((IPADDR >> 8) & 0xff),(u32)(IPADDR & 0xff) );
}
if( FALSE == wifi_config_set_netmask(slot_no, NETMASK) ) {
}
else {
mprintf(" NETMASK %3d.%3d.%3d.%3d\n", (u32)((NETMASK >> 24) & 0xff),(u32)((NETMASK >> 16) & 0xff),
(u32)((NETMASK >> 8) & 0xff),(u32)(NETMASK & 0xff) );
}
if( FALSE == wifi_config_set_gateway(slot_no, GATEWAY) ) {
}
else {
mprintf(" GATEWAY %3d.%3d.%3d.%3d\n", (u32)((GATEWAY >> 24) & 0xff),(u32)((GATEWAY >> 16) & 0xff),
(u32)((GATEWAY >> 8) & 0xff),(u32)(GATEWAY & 0xff) );
}
}
DNS1 = GetDNS1();
DNS2 = GetDNS2();
if( FALSE == wifi_config_set_dns(slot_no, 0, DNS1) ) {
}
else {
mprintf(" DNS1 %3d.%3d.%3d.%3d\n", (u32)((DNS1 >> 24) & 0xff),(u32)((DNS1 >> 16) & 0xff),
(u32)((DNS1 >> 8) & 0xff),(u32)(DNS1 & 0xff) );
}
if( FALSE == wifi_config_set_dns(slot_no, 1, DNS2) ) {
}
else {
mprintf(" DNS2 %3d.%3d.%3d.%3d\n", (u32)((DNS2 >> 24) & 0xff),(u32)((DNS2 >> 16) & 0xff),
(u32)((DNS2 >> 8) & 0xff),(u32)(DNS2 & 0xff) );
}
m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
// wifi_config_print();
mprintf("-wlan settings write ");
if( TRUE == wifi_config_nvram_set() ) {
m_set_palette(tc[0], M_TEXT_COLOR_GREEN ); /* green */
mprintf("OK.\n");
m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
}
else {
m_set_palette(tc[0], M_TEXT_COLOR_RED );
mprintf("NG.\n");
m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
}
}
#endif
}
else {
no_network_flag = FALSE;
only_wifi_config_data_trans_flag = FALSE;
user_and_wifi_config_data_trans_flag = FALSE;
only_restore_savedata_flag = FALSE;
Miya_debug_OFF();
my_fs_print_debug_OFF();
select_mode++;
select_mode %= 7;
switch( select_mode ) {
case 0:
/* restore mode : default */
break;
case 1:
no_network_flag = TRUE;
break;
case 2:
only_wifi_config_data_trans_flag = TRUE;
break;
case 3:
user_and_wifi_config_data_trans_flag = TRUE;
break;
case 4:
Miya_debug_ON();
break;
case 5:
my_fs_print_debug_ON();
break;
case 6:
only_restore_savedata_flag = TRUE;
break;
default:
break;
}
}
}
else if ( keyData & PAD_BUTTON_Y ) {
if( FALSE == reboot_flag ) {
if( reboot_rtc_adjust_done_flag == TRUE ) {
MCU_SetFreeRegister( FREE_REG_RESTOREMODE_AND_RTC_DONE_REBOOT );
}
else {
MCU_SetFreeRegister( FREE_REG_RESTOREMODE_REBOOT );
}
OS_RebootSystem();
}
}
else if ( keyData & PAD_KEY_RIGHT ) {
n = m_get_display_offset_x(tc[0]);
n++;
m_set_display_offset_x(tc[0], n);
}
else if ( keyData & PAD_KEY_LEFT ) {
n = m_get_display_offset_x(tc[0]);
n--;
m_set_display_offset_x(tc[0], n);
}
else if ( keyData & PAD_KEY_UP ) {
if( FALSE == reboot_flag ) {
n = m_get_display_offset_y(tc[0]);
n++;
m_set_display_offset_y(tc[0], n);
}
else {
if( dir_select_mode == TRUE ) {
if( vram_num_sub == 2 ) {
MFILER_CursorY_Up();
}
}
else {
n = m_get_display_offset_y(tc[0]);
n++;
m_set_display_offset_y(tc[0], n);
}
}
}
else if ( keyData & PAD_KEY_DOWN ) {
if( FALSE == reboot_flag ) {
n = m_get_display_offset_y(tc[0]);
n--;
m_set_display_offset_y(tc[0], n);
}
else {
if( dir_select_mode == TRUE ) {
if( vram_num_sub == 2 ) {
MFILER_CursorY_Down();
}
}
else {
n = m_get_display_offset_y(tc[0]);
n--;
m_set_display_offset_y(tc[0], n);
}
}
}
/* <20><><EFBFBD>C<EFBFBD><43><EFBFBD>\<5C><><EFBFBD><EFBFBD> */
m_set_palette(tc[1], M_TEXT_COLOR_LIGHTBLUE );
mfprintf(tc[1], "\fRepaire Tool RESTORE");
m_set_palette(tc[1], M_TEXT_COLOR_WHITE );
mfprintf(tc[1], " ver.%d.%d \n",MY_DATA_VERSION_MAJOR , MY_DATA_VERSION_MINOR );
mfprintf(tc[1], " build:%s %s\n\n",__DATE__,__TIME__);
m_set_palette(tc[1], M_TEXT_COLOR_LIGHTBLUE );
mfprintf(tc[1],"Sys-menu ver." );
m_set_palette(tc[1], M_TEXT_COLOR_WHITE );
mfprintf(tc[1],"%d.%d", s_major, s_minor );
mfprintf(tc[1]," (%08x)\n\n", s_timestamp );
/* <20><><EFBFBD>j<EFBFBD>[<5B>N<EFBFBD>h<EFBFBD>c<EFBFBD>͕\<5C><><EFBFBD><EFBFBD><EFBFBD>Ȃ<EFBFBD><C882>Ă<EFBFBD><C482><EFBFBD><EFBFBD>H */
m_set_palette(tc[1], M_TEXT_COLOR_LIGHTBLUE );
mfprintf(tc[1], "Unique ID:\n");
m_set_palette(tc[1], M_TEXT_COLOR_WHITE );
mfprintf(tc[1], " ");
for( i = 0; i < LCFG_TWL_HWINFO_MOVABLE_UNIQUE_ID_LEN/2 ; i++ ) {
mfprintf(tc[1], "%02X:", hwn_info.movableUniqueID[i]);
}
mfprintf(tc[1], "\n ");
for( ; i < LCFG_TWL_HWINFO_MOVABLE_UNIQUE_ID_LEN ; i++ ) {
mfprintf(tc[1], "%02X:", hwn_info.movableUniqueID[i]);
}
mfprintf(tc[1], "\n\n");
m_set_palette(tc[1], M_TEXT_COLOR_LIGHTBLUE );
mfprintf(tc[1], "Serial No. ");
m_set_palette(tc[1], M_TEXT_COLOR_WHITE );
mfprintf(tc[1], "%s\n", hws_info.serialNo);
mfprintf(tc[1], "\n");
m_set_palette(tc[1], M_TEXT_COLOR_LIGHTBLUE );
mfprintf(tc[1], "eFuse ID: ");
m_set_palette(tc[1], M_TEXT_COLOR_WHITE );
mfprintf(tc[1],"%08X%08X\n\n", (u32)(org_fuseId >> 32), (u32)(org_fuseId));
m_set_palette(tc[1], M_TEXT_COLOR_LIGHTBLUE );
mfprintf(tc[1],"MAC add.: ");
m_set_palette(tc[1], M_TEXT_COLOR_WHITE );
mfprintf(tc[1],"%02X:%02X:%02X:%02X:%02X:%02X", macAddress[0],macAddress[1],
macAddress[2], macAddress[3], macAddress[4], macAddress[5]);
mfprintf(tc[1],"\n\n");
m_set_palette(tc[1], M_TEXT_COLOR_LIGHTBLUE );
mfprintf(tc[1],"Device ID: ");
m_set_palette(tc[1], M_TEXT_COLOR_WHITE );
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> mydata.shop_record_flag<61>@<40>Ƃ<EFBFBD><C682><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
if( TRUE == mydata.shop_record_flag ) {
mfprintf(tc[1],"%s\n", mydata.bmsDeviceId);
}
else {
m_set_palette(tc[1], M_TEXT_COLOR_YELLOW );
mfprintf(tc[1],"-----------\n");
m_set_palette(tc[1], M_TEXT_COLOR_WHITE );
}
mfprintf(tc[1],"\n");
if( (loop_counter % 60) == 0 ) {
// PM_RESULT_SUCCESS
(void)PM_GetACAdapter( &isAcConnectedBuf );
(void)PM_GetBatteryLevel( &BatterylevelBuf );
}
mfprintf(tc[1], "%4d/%02d/%02d %02d:%02d:%02d ",
rtc_date.year + 2000, rtc_date.month , rtc_date.day,
rtc_time.hour , rtc_time.minute , rtc_time.second );
if( isAcConnectedBuf == TRUE ) {
m_set_palette(tc[1], M_TEXT_COLOR_BLUE );
mfprintf(tc[1], "AC. \n\n");
m_set_palette(tc[1], M_TEXT_COLOR_WHITE );
}
else {
mfprintf(tc[1], "Batt.Lv ");
switch( BatterylevelBuf ) {
case 0:
case 1:
m_set_palette(tc[1], M_TEXT_COLOR_RED );
break;
case 2:
case 3:
case 4:
m_set_palette(tc[1], M_TEXT_COLOR_YELLOW );
break;
default:
m_set_palette(tc[1], M_TEXT_COLOR_GREEN );
break;
}
mfprintf(tc[1], "%d/5\n\n" , BatterylevelBuf);
m_set_palette(tc[1], M_TEXT_COLOR_WHITE );
}
if( FALSE == reboot_flag ) {
mfprintf(tc[1], "press Y to RESTORE mode\n");
// nishimura 20100422
#if 0
mfprintf(tc[1], "press X to OVERWRITE the Net setting\n");
#endif
}
else {
switch( select_mode ) {
case 0:
/* restore mode : default */
mfprintf(tc[1],"-- normal mode --\n");
break;
case 1:
m_set_palette(tc[1], M_TEXT_COLOR_YELLOW );
mfprintf(tc[1],"-- no network connection mode --\n");
break;
case 2:
m_set_palette(tc[1], M_TEXT_COLOR_YELLOW );
mfprintf(tc[1],"-- only wifi data mode --\n");
break;
case 3:
m_set_palette(tc[1], M_TEXT_COLOR_YELLOW );
mfprintf(tc[1],"-- only user data mode --\n");
break;
case 4:
m_set_palette(tc[1], M_TEXT_COLOR_RED ); /* red */
mfprintf(tc[1],"-- NG mode --\n");
break;
case 5:
m_set_palette(tc[1], M_TEXT_COLOR_YELLOW ); /* red */
mfprintf(tc[1],"-- debug mode --\n");
break;
case 6:
m_set_palette(tc[1], M_TEXT_COLOR_YELLOW ); /* red */
mfprintf(tc[1],"-- savedata restore mode --\n");
break;
default:
break;
}
m_set_palette(tc[1], M_TEXT_COLOR_WHITE );
mfprintf(tc[1],"\n");
mfprintf(tc[1], "function no.%d/%d\n", function_counter, current_function_table_max);
mfprintf(tc[2],"\f");
if( MydataLoadDecrypt_dir_flag == FALSE ) {
mfprintf(tc[2], "Not a backup data directory\n");
mfprintf(tc[2],"\n\n\n");
}
else if( MydataLoadDecrypt_success_flag == FALSE ) {
mfprintf(tc[2], "file load error\n");
mfprintf(tc[2],"\n\n\n");
}
else if( MydataLoadDecrypt_message_flag == FALSE ) {
if( s_flag && mydata.sys_ver_flag && (sys_version < sys_version_org) ) {
m_set_palette(tc[2], M_TEXT_COLOR_YELLOW );
mfprintf(tc[2], " invalid System menu version.\n");
mfprintf(tc[2], " org. version %d.%d\n", mydata.sys_ver_major,mydata.sys_ver_minor);
mfprintf(tc[2], " cur. version %d.%d\n", s_major,s_minor);
mfprintf(tc[2], " \n");
m_set_palette(tc[2], 0xF); /* white */
}
else if( org_region != mydata.region ) {
mfprintf(tc[2]," invalid region code.\n");
mfprintf(tc[2]," \n");
mfprintf(tc[2]," \n");
mfprintf(tc[2]," \n");
m_set_palette(tc[2], 0xF); /* white */
}
else if( mydata.version_major != MY_DATA_VERSION_MAJOR ) {
mfprintf(tc[2]," invalid format version.\n");
mfprintf(tc[2]," %s\n",MyFile_GetGlobalInformationFileName());
mfprintf(tc[2]," version %d.%d\n", mydata.version_major,mydata.version_minor);
m_set_palette(tc[2], 0xF); /* white */
mfprintf(tc[2],"\n");
}
else if( mydata.version_minor != MY_DATA_VERSION_MINOR ) {
mfprintf(tc[2]," invalid format version.\n");
mfprintf(tc[2]," %s\n",MyFile_GetGlobalInformationFileName());
mfprintf(tc[2]," version %d.%d\n", mydata.version_major,mydata.version_minor);
m_set_palette(tc[1], 0xF); /* white */
mfprintf(tc[2],"\n");
}
}
else {
mfprintf(tc[2],"\n\n\n\n");
}
MFILER_ClearDir(&mfiler_list_head);
MFILER_ReadDir(&mfiler_list_head, MFILER_Get_CurrentDir());
MFILER_DisplayDir(tc[2], &mfiler_list_head, 0 );
}
if( (pushed_power_button == TRUE) && (throw_pushed_power_button == FALSE) ) {
if( FALSE == start_my_thread((u32)THREAD_COMMAND_REBOOT_FUNCTION) ) {
}
else {
throw_pushed_power_button = TRUE;
}
}
loop_counter++;
}
OS_Terminate();
}
//#define ENABLE_PROXY 1
#ifdef ENABLE_PROXY
// DWC_GetProxySetting <20>֐<EFBFBD><D690>ŁA<C581>ڑ<EFBFBD><DA91><EFBFBD><EFBFBD>Ă<EFBFBD><C482><EFBFBD><EFBFBD>ݒ<EFBFBD><DD92><EFBFBD>proxy<78>ݒ<EFBFBD><DD92><EFBFBD><EFBFBD>i<EFBFBD>[<5B><><EFBFBD><EFBFBD><EFBFBD>\<5C><><EFBFBD><EFBFBD>
typedef struct DWCstProxySetting // Proxy <20>ݒ<EFBFBD><DD92><EFBFBD><EFBFBD><EFBFBD>
{
u16 authType; // Proxy <20>F<EFBFBD>،`<60><>
u16 port; // Proxy port
u8 hostName [ 0x64 ]; // Proxy hostname
u8 authId [ 0x20 ]; // proxy basic<69>F<EFBFBD>ؗp ID
u8 authPass [ 0x20 ]; // proxy basic<69>F<EFBFBD>ؗp <20>p<EFBFBD>X<EFBFBD><58><EFBFBD>[<5B>h
} DWCProxySetting;
BOOL DWC_GetProxySetting( DWCProxySetting* proxy );
BOOL DWC_GetProxySetting( DWCProxySetting* proxy )
{
MI_CpuClear8(proxy, sizeof(proxy));
STD_StrCpy((char*)proxy->hostName, "proxy.testbox");
proxy->port = 8080;
return TRUE;
}
#endif
#include <twl/ltdmain_end.h>
/*====== End of main.c ======*/