diff --git a/build/tools/sctools/common/src/menu_version.c b/build/tools/sctools/common/src/menu_version.c new file mode 100644 index 0000000..336b6fd --- /dev/null +++ b/build/tools/sctools/common/src/menu_version.c @@ -0,0 +1,89 @@ +#include +#include "menu_version.h" + + +#define TWL_SYSMENU_VER_STR_LEN 28 // システムメニューバージョン文字列MAX bytes +#define FS_VERSION_FILE "verdata:/version.bin" +#define FS_TIMESTAMP_FILE "verdata:/time_stamp.bin" + + +#if 0 + typedef struct SystemMenuVersion { + u16 major; + u16 minor; + u16 str[ TWL_SYSMENU_VER_STR_LEN / sizeof(u16) ]; + } SystemMenuVersion; + + SystemMenuVersion s_version; + u32 s_timestamp; + char str_ver[ TWL_SYSMENU_VER_STR_LEN / sizeof(u16) ]; + int len = sizeof(str_ver); + // STD_MemSet((void *)s_version, 0, sizeof(TWL_SYSMENU_VER_STR_LEN); + STD_MemSet((void *)str_ver, 0, TWL_SYSMENU_VER_STR_LEN); +#endif + +typedef struct SystemMenuVersion { + u16 major; + u16 minor; + u16 str[ TWL_SYSMENU_VER_STR_LEN / sizeof(u16) ]; +} SystemMenuVersion; + +BOOL Read_SystemMenuVersion(u16 *major, u16 *minor, u32 *ts) +{ + + FSFile file; + BOOL retval = TRUE; + SystemMenuVersion s_version; + u32 s_timestamp; + char str_ver[ TWL_SYSMENU_VER_STR_LEN / sizeof(u16) ]; + int file_len; + int len = sizeof(str_ver); + + if( major == NULL || minor == NULL || ts == NULL ) { + return FALSE; + } + // STD_MemSet((void *)s_version, 0, sizeof(TWL_SYSMENU_VER_STR_LEN); + STD_MemSet((void *)str_ver, 0, TWL_SYSMENU_VER_STR_LEN); + + FS_InitFile(&file); + + if (!FS_OpenFileEx(&file, FS_VERSION_FILE, FS_FILEMODE_R)) { + retval = FALSE; + } + + file_len = FS_ReadFile(&file, &s_version, (s32)sizeof(s_version)); + if (file_len < 0) { + retval = FALSE; + *major = 0; + *minor = 0; + } + else { + *major = s_version.major; + *minor = s_version.minor; + } + FS_CloseFile(&file); + + + if( STD_ConvertStringUnicodeToSjis( str_ver, &len, s_version.str, NULL, NULL ) != STD_RESULT_SUCCESS ) { + retval = FALSE; + } + + + if (!FS_OpenFileEx(&file, FS_TIMESTAMP_FILE, FS_FILEMODE_R)) { + retval = FALSE; + } + + file_len = FS_ReadFile(&file, &s_timestamp, (s32)sizeof(s_timestamp)); + if (file_len < 0) { + retval = FALSE; + *ts = 0; + } + else { + *ts = s_timestamp; + } + + FS_CloseFile(&file); + + return retval; +} + diff --git a/build/tools/sctools/common/src/menu_version.h b/build/tools/sctools/common/src/menu_version.h new file mode 100644 index 0000000..b133ab4 --- /dev/null +++ b/build/tools/sctools/common/src/menu_version.h @@ -0,0 +1,14 @@ +#ifndef _MENU_VERSION_H_ +#define _MENU_VERSION_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +BOOL Read_SystemMenuVersion(u16 *major, u16 *minor, u32 *ts); + +#ifdef __cplusplus +} /* extern "C" */ +#endif + +#endif /* _MENU_VERSION_H_ */ diff --git a/build/tools/sctools/common/src/my_fs_util.c b/build/tools/sctools/common/src/my_fs_util.c index fb07ada..0d7fc2d 100644 --- a/build/tools/sctools/common/src/my_fs_util.c +++ b/build/tools/sctools/common/src/my_fs_util.c @@ -1322,8 +1322,27 @@ BOOL SDCardValidation(void) } -/* 過去にショップに接続したかどうか */ -BOOL CheckShopRecord(FSFile *log_fd) + + + +/* + 過去にショップに接続したかどうか + リージョンコードは以下のファイルで定義 + c:/twlsdk/include/twl/os/common/ownerInfoEx.h + typedef enum OSTWLRegionCode + { + OS_TWL_REGION_JAPAN = 0, + OS_TWL_REGION_AMERICA = 1, + OS_TWL_REGION_EUROPE = 2, + OS_TWL_REGION_AUSTRALIA = 3, + OS_TWL_REGION_CHINA = 4, + OS_TWL_REGION_KOREA = 5, + OS_TWL_REGION_MAX + } OSTWLRegion; +*/ + + +BOOL CheckShopRecord(u8 region, FSFile *log_fd) { #pragma unused(log_fd) @@ -1338,6 +1357,7 @@ BOOL CheckShopRecord(FSFile *log_fd) if( ! bSuccess ) { if( FS_RESULT_NO_ENTRY == FS_GetArchiveResultCode(path) ) { } + /* キーペアファイルがない */ return FALSE; } (void)FS_CloseFile(&f); @@ -1353,19 +1373,58 @@ BOOL CheckShopRecord(FSFile *log_fd) (void)FS_CloseFile(&f); #endif - // STD_StrCpy(path, "nand:/title/00030015/484e4641/data/ec.cfg"); /* ショップアカウント情報 */ - STD_StrCpy(path, "nand:/title/00030015/484e464a/data/ec.cfg"); /* ショップアカウント情報 */ + // STD_StrCpy(path, "nand:/title/00030015/484e464a/data/ec.cfg"); /* ショップアカウント情報 */ + /* 海外だと変わってくる・・ */ + /* リージョンコードと合わせる-> リージョンコードは変えられないから。 */ + /* + J(0x4a) - Japan + E(0x45) - America + P(0x50) - Europe + U(0x41) - Australia + C(0x43) - China + K(0x4b) - Korea + */ + + // STD_StrCpy(path, "nand:/title/00030015/484e4641/data/ec.cfg"); + switch( region ) { + case OS_TWL_REGION_JAPAN: + /* J(0x4a) - Japan */ + STD_StrCpy(path, "nand:/title/00030015/484e464a/data/ec.cfg"); + break; + case OS_TWL_REGION_AMERICA: + /* E(0x45) - America */ + STD_StrCpy(path, "nand:/title/00030015/484e4645/data/ec.cfg"); + break; + case OS_TWL_REGION_EUROPE: + /* P(0x50) - Europe */ + STD_StrCpy(path, "nand:/title/00030015/484e4650/data/ec.cfg"); + break; + case OS_TWL_REGION_AUSTRALIA: + /* U(0x41) - Australia */ + STD_StrCpy(path, "nand:/title/00030015/484e4641/data/ec.cfg"); + break; + case OS_TWL_REGION_CHINA: + /* C(0x43) - China */ + STD_StrCpy(path, "nand:/title/00030015/484e4643/data/ec.cfg"); + break; + case OS_TWL_REGION_KOREA: + /* K(0x4b) - Korea */ + STD_StrCpy(path, "nand:/title/00030015/484e464b/data/ec.cfg"); + break; + default: + return FALSE; + } + bSuccess = FS_OpenFileEx(&f, path, (FS_FILEMODE_R)); if( ! bSuccess ) { if( FS_RESULT_NO_ENTRY == FS_GetArchiveResultCode(path) ) { } + /* ショップアカウント情報ファイルがない */ return FALSE; } (void)FS_CloseFile(&f); - return TRUE; - } int get_title_id(MY_DIR_ENTRY_LIST **headp, const char *path_src, int *save_parent_dir_info_flag, char *log_file_name, int level ) @@ -1914,44 +1973,40 @@ int copy_r( MY_DIR_ENTRY_LIST **headp, const char *path_dst, const char *path_sr void write_debug_data(void) { // CopyFile( dst <= src ); - CopyFile("nand:/tmp/m00.sav" , "nand:/sys/log/sysmenu.log", NULL); - CopyFile("nand:/tmp/m01.sav" , "nand:/sys/log/sysmenu.log", NULL); - CopyFile("nand:/tmp/m02.sav" , "nand:/sys/log/sysmenu.log", NULL); - CopyFile("nand:/tmp/m03.sav" , "nand:/sys/log/sysmenu.log", NULL); - CopyFile("nand:/tmp/m04.sav" , "nand:/sys/log/sysmenu.log", NULL); - CopyFile("nand:/tmp/m05.sav" , "nand:/sys/log/sysmenu.log", NULL); - CopyFile("nand:/tmp/m06.sav" , "nand:/sys/log/sysmenu.log", NULL); - CopyFile("nand:/tmp/m07.sav" , "nand:/sys/log/sysmenu.log", NULL); - CopyFile("nand:/tmp/m08.sav" , "nand:/sys/log/sysmenu.log", NULL); - CopyFile("nand:/tmp/m09.sav" , "nand:/sys/log/sysmenu.log", NULL); - CopyFile("nand:/tmp/m10.sav" , "nand:/sys/log/sysmenu.log", NULL); - CopyFile("nand:/tmp/m11.sav" , "nand:/sys/log/sysmenu.log", NULL); - CopyFile("nand:/tmp/m12.sav" , "nand:/sys/log/sysmenu.log", NULL); - CopyFile("nand:/tmp/m13.sav" , "nand:/sys/log/sysmenu.log", NULL); - CopyFile("nand:/tmp/m14.sav" , "nand:/sys/log/sysmenu.log", NULL); - CopyFile("nand:/tmp/m15.sav" , "nand:/sys/log/sysmenu.log", NULL); - CopyFile("nand:/tmp/m16.sav" , "nand:/sys/log/sysmenu.log", NULL); - CopyFile("nand:/tmp/m17.sav" , "nand:/sys/log/sysmenu.log", NULL); - CopyFile("nand:/tmp/m18.sav" , "nand:/sys/log/sysmenu.log", NULL); - CopyFile("nand:/tmp/m19.sav" , "nand:/sys/log/sysmenu.log", NULL); - CopyFile("nand:/tmp/m20.sav" , "nand:/sys/log/sysmenu.log", NULL); - CopyFile("nand:/tmp/m22.sav" , "nand:/sys/log/sysmenu.log", NULL); - CopyFile("nand:/tmp/m23.sav" , "nand:/sys/log/sysmenu.log", NULL); - CopyFile("nand:/tmp/m24.sav" , "nand:/sys/log/sysmenu.log", NULL); - CopyFile("nand:/tmp/m25.sav" , "nand:/sys/log/sysmenu.log", NULL); - CopyFile("nand:/tmp/m26.sav" , "nand:/sys/log/sysmenu.log", NULL); - CopyFile("nand:/tmp/m27.sav" , "nand:/sys/log/sysmenu.log", NULL); - CopyFile("nand:/tmp/m28.sav" , "nand:/sys/log/sysmenu.log", NULL); - CopyFile("nand:/tmp/m29.sav" , "nand:/sys/log/sysmenu.log", NULL); - CopyFile("nand:/tmp/m30.sav" , "nand:/sys/log/sysmenu.log", NULL); - CopyFile("nand:/tmp/m31.sav" , "nand:/sys/log/sysmenu.log", NULL); - CopyFile("nand:/tmp/m32.sav" , "nand:/sys/log/sysmenu.log", NULL); - CopyFile("nand:/tmp/m33.sav" , "nand:/sys/log/sysmenu.log", NULL); - CopyFile("nand:/tmp/m34.sav" , "nand:/sys/log/sysmenu.log", NULL); - CopyFile("nand:/sys/miya.log", "sdmc:/miya.log", NULL); - CopyFile("nand:/shared1/miya.log", "sdmc:/miya.log", NULL); - - + CopyFile("sdmc:/m00.sav" , "nand:/sys/log/sysmenu.log", NULL); + CopyFile("sdmc:/m01.sav" , "nand:/sys/log/sysmenu.log", NULL); + CopyFile("sdmc:/m02.sav" , "nand:/sys/log/sysmenu.log", NULL); + CopyFile("sdmc:/m03.sav" , "nand:/sys/log/sysmenu.log", NULL); + CopyFile("sdmc:/m04.sav" , "nand:/sys/log/sysmenu.log", NULL); + CopyFile("sdmc:/m05.sav" , "nand:/sys/log/sysmenu.log", NULL); + CopyFile("sdmc:/m06.sav" , "nand:/sys/log/sysmenu.log", NULL); + CopyFile("sdmc:/m07.sav" , "nand:/sys/log/sysmenu.log", NULL); + CopyFile("sdmc:/m08.sav" , "nand:/sys/log/sysmenu.log", NULL); + CopyFile("sdmc:/m09.sav" , "nand:/sys/log/sysmenu.log", NULL); + CopyFile("sdmc:/m10.sav" , "nand:/sys/log/sysmenu.log", NULL); + CopyFile("sdmc:/m11.sav" , "nand:/sys/log/sysmenu.log", NULL); + CopyFile("sdmc:/m12.sav" , "nand:/sys/log/sysmenu.log", NULL); + CopyFile("sdmc:/m13.sav" , "nand:/sys/log/sysmenu.log", NULL); + CopyFile("sdmc:/m14.sav" , "nand:/sys/log/sysmenu.log", NULL); + CopyFile("sdmc:/m15.sav" , "nand:/sys/log/sysmenu.log", NULL); + CopyFile("sdmc:/m16.sav" , "nand:/sys/log/sysmenu.log", NULL); + CopyFile("sdmc:/m17.sav" , "nand:/sys/log/sysmenu.log", NULL); + CopyFile("sdmc:/m18.sav" , "nand:/sys/log/sysmenu.log", NULL); + CopyFile("sdmc:/m19.sav" , "nand:/sys/log/sysmenu.log", NULL); + CopyFile("sdmc:/m20.sav" , "nand:/sys/log/sysmenu.log", NULL); + CopyFile("sdmc:/m22.sav" , "nand:/sys/log/sysmenu.log", NULL); + CopyFile("sdmc:/m23.sav" , "nand:/sys/log/sysmenu.log", NULL); + CopyFile("sdmc:/m24.sav" , "nand:/sys/log/sysmenu.log", NULL); + CopyFile("sdmc:/m25.sav" , "nand:/sys/log/sysmenu.log", NULL); + CopyFile("sdmc:/m26.sav" , "nand:/sys/log/sysmenu.log", NULL); + CopyFile("sdmc:/m27.sav" , "nand:/sys/log/sysmenu.log", NULL); + CopyFile("sdmc:/m28.sav" , "nand:/sys/log/sysmenu.log", NULL); + CopyFile("sdmc:/m29.sav" , "nand:/sys/log/sysmenu.log", NULL); + CopyFile("sdmc:/m30.sav" , "nand:/sys/log/sysmenu.log", NULL); + CopyFile("sdmc:/m31.sav" , "nand:/sys/log/sysmenu.log", NULL); + CopyFile("sdmc:/m32.sav" , "nand:/sys/log/sysmenu.log", NULL); + CopyFile("sdmc:/m33.sav" , "nand:/sys/log/sysmenu.log", NULL); + CopyFile("sdmc:/m34.sav" , "nand:/sys/log/sysmenu.log", NULL); /* PrintDirEntryListBackword-----Start diff --git a/build/tools/sctools/common/src/my_fs_util.h b/build/tools/sctools/common/src/my_fs_util.h index 0a8a323..3de4687 100644 --- a/build/tools/sctools/common/src/my_fs_util.h +++ b/build/tools/sctools/common/src/my_fs_util.h @@ -35,7 +35,7 @@ BOOL RestoreDirEntryList( char *path, char *log_file_name); BOOL ClearDirEntryList( MY_DIR_ENTRY_LIST **headp ); void write_debug_data(void); BOOL SDCardValidation(void); -BOOL CheckShopRecord(FSFile *log_fd); +BOOL CheckShopRecord(u8 region, FSFile *log_fd); BOOL MydataSave(const char *path, void *pData, int size, FSFile *log_fd); BOOL MydataLoad(const char *path, void *pBuffer, int size, FSFile *log_fd); void GetDirEntryList( MY_DIR_ENTRY_LIST *head, u64 **pBuffer, int *size); diff --git a/build/tools/sctools/common/src/nuc.c b/build/tools/sctools/common/src/nuc.c deleted file mode 100644 index 4bfbbe7..0000000 --- a/build/tools/sctools/common/src/nuc.c +++ /dev/null @@ -1,503 +0,0 @@ -#include -#include -#include -// #include - -#include "netconnect.h" -#include "sitedefs.h" -#include "nuc.h" -#include "nuc_error_msg.h" - -// Network Updateのフェーズを表す -typedef enum{ - - PHASE_INIT, // 初期状態 - PHASE_READY, // 開始 - PHASE_CONNECTING_NETWORK, // ネットワーク接続中 - PHASE_TEST_READY, // 接続テスト開始 - PHASE_TEST_PROCESS, // 接続テスト中 - PHASE_TEST_GETTING_WII_ID, // Wii ID取得処理 - PHASE_TEST_FINISHED, // 接続テスト完了 - PHASE_TEST_CLEANUP, // 接続テスト後処理 - PHASE_NUP_BREAK, // <キー入力待ち>アップデート前確認待ち - PHASE_NUP_READY, // ネットワークアップデート開始 - PHASE_NUP_CHECK, // ネットワークアップデート更新情報取得中 - PHASE_NUP_DOWNLOAD, // ネットワークアップデート ダウンロード開始 - PHASE_NUP_PROCESS, // ネットワークアップデート中 - PHASE_NUP_FINISHED, // ネットワークアップデート完了 - PHASE_NUP_CLEANUP, // ネットワークアップデート後処理 - PHASE_NUP_SKIPPED, // ネットワークアップデートがスキップされた - PHASE_CLEANING_UP, // 後処理 - PHASE_FINISHED, // 完了 - PHASE_ERROR_OCCURRED // エラー発生 -} NucPhaseState; - - -// ネットワーク接続状態 -typedef enum{ - NET_CONNECT_NONE, - NET_CONNECT_OK, - NET_CONNECT_ERROR -} NetConnectState; - -static volatile NetConnectState NetConnect = NET_CONNECT_NONE; - -// state管理 -static struct -{ - NucPhaseState state; - u32 count; -} TestState; - -static inline void ChangeState(NucPhaseState state) -{ - TestState.state = state; - TestState.count = 0; -} - -// titleID 取得用 -static NUCTitleId TitleIds[NUC_MAX_TITLE_UPDATE_COUNT]; -static u32 TitleIdNum; - -static u8 WorkForNA[NA_VERSION_DATA_WORK_SIZE]; - -static BOOL AllocFailTest = FALSE; - -static void *alloc(u32 size, int align) -{ - u32 *ptr = NULL, *realPtr = NULL; - u32 realSize; - OSIntrMode old; - - old = OS_DisableInterrupts(); - - /* realSize is size plus alignment and header */ - if (align < 4) - { - align = 4; - } - realSize = size + align + 4; - - realPtr = (u32 *) OS_Alloc(realSize); - ptr = (u32 *)((((u32) realPtr) + 4 + align - 1) & ~(align - 1)); - - *((u32 *)(((u32)ptr) - 4)) = (u32) realPtr; - (void)OS_RestoreInterrupts( old ); - - end: - SDK_ASSERT(((u32)ptr & (align - 1)) == 0); - return (void *) ptr; -} - -static void free(void *p) -{ - u32 realPtr = *((u32 *)(((u32)p) - 4)); - OS_Free((void *) realPtr); -} - -/*---------------------------------------------------------------------------* - Name: InitNupLib - Description: NUCライブラリを開始します。 - *---------------------------------------------------------------------------*/ -static BOOL InitNupLib() -{ - BOOL ret; - - ret = NUC_Init(alloc, free); - - if (ret == FALSE) { - OS_TPrintf("NUC_Init() failed, error code=%d\n", NUC_GetLastError()); - } - return ret; -} - -/*---------------------------------------------------------------------------* - Name: StartNupCheck - Description: ダウンロードリスト一覧の取得を開始します。 - *---------------------------------------------------------------------------*/ -static BOOL StartNupCheck(void) -{ - BOOL ret; - TitleIdNum = sizeof(TitleIds) / sizeof(TitleIds[0]); - - ret = NUC_CheckAsync(TitleIds, &TitleIdNum); - if (ret == FALSE) - { - OS_TPrintf("NUC_CheckAsync() failed, error code=%d\n", NUC_GetLastError()); - } - - return ret; -} - - -/*---------------------------------------------------------------------------* - Name: ProgressNupCheck - Description: ダウンロードリスト一覧の取得状況を確認します - *---------------------------------------------------------------------------*/ -static NucStatus ProgressNupCheck(void) -{ - u64 CurrentSize, TotalSize; - NucStatus status; - - NUC_GetProgress(&CurrentSize, &TotalSize, &status); - if (status == NUC_STATUS_ERROR) - { - OS_TPrintf("NUC_GetProgress() failed in checking, error code=%d\n", NUC_GetLastError()); - } -#if 0 - if (TestState.count++ % STRING_ANIM_CNT == 0) - { - u32 num = (TestState.count / STRING_ANIM_CNT) % 3; - const char* msg[] = { - "Now checking list. ", - "Now checking list.. ", - "Now checking list... "}; - - PrintString(TEXT_X, TEXT_Y, COLOR_WHITE, msg[num]); - } -#endif - return status; -} - -/*---------------------------------------------------------------------------* - Name: StartNupDownload - Description: ダウンロードを開始します。 - *---------------------------------------------------------------------------*/ -static BOOL StartNupDownload(void) -{ - /* こいつが呼ばれたらFSが切り離されてしまうのでリブートが必要 */ - BOOL ret = NUC_DownloadAsync(TitleIds, TitleIdNum); - - if (ret == FALSE) - { - OS_TPrintf("NUP_DownloadAsync() failed, error code=%d\n", NUC_GetLastError()); - } - - return ret; -} - -/*---------------------------------------------------------------------------* - Name: ProgressNupDownload - Description: ダウンロードの進行状況を表示します。 - *---------------------------------------------------------------------------*/ -static NucStatus ProgressNupDownload(void) -{ - u64 CurrentSize, TotalSize; - NucStatus status; - - NUC_GetProgress(&CurrentSize, &TotalSize, &status); - if (status == NUC_STATUS_ERROR) - { // エラー発生 - OS_TPrintf("NUC_GetProgress() failed in download, error code=%d\n", NUC_GetLastError()); - } - else { -#if 0 - // ダウンロード状況を描画 - int dw = (int)((CurrentSize * BAR_W)/TotalSize); - FillRect(BAR_X, BAR_Y, dw, BAR_H, GX_RGBA(31, 16, 16, 1)); -#endif - } - -#if 0 - if (TestState.count++ % STRING_ANIM_CNT == 0) - { - u32 num = (TestState.count / STRING_ANIM_CNT) % 3; - const char* msg[] = { - "Now downloading. ", - "Now downloading.. ", - "Now downloading... "}; - PrintString(TEXT_X, TEXT_Y, COLOR_WHITE, msg[num]); - } -#endif - return status; -} - -/*---------------------------------------------------------------------------* - Name: CleanNupLib - Description: NUCライブラリを終了します。 - *---------------------------------------------------------------------------*/ -static BOOL CleanNupLib() -{ - BOOL ret = NUC_Cleanup(TitleIds, TitleIdNum); - if (ret == FALSE) - { - OS_TPrintf("NUP_CleanUp() failed, error code=%d\n", NUC_GetLastError()); - } - return ret; -} - -/*---------------------------------------------------------------------------* - Name: ProgressNetConnect - Description: ネットワーク接続を待ちます。 - *---------------------------------------------------------------------------*/ -static void ProgressNetConnect(void) -{ -#if 0 - if (TestState.count++ % STRING_ANIM_CNT == 0) - { - u32 num = (TestState.count / STRING_ANIM_CNT) % 3; - const char* msg[] = { - "Connecting network. ", - "Connecting network.. ", - "Connecting network..."}; - PrintString(TEXT_X, TEXT_Y, COLOR_WHITE, msg[num]); - } -#endif -} - - - -static void ShowErrorMsg(int error_code) -{ -#if 0 - PrintString(TEXT_X, TEXT_Y, COLOR_WHITE, "Error Occurred "); -#endif - if (error_code > 0) - { -#if 0 - PrintString(TEXT_X, TEXT_Y + 10, COLOR_WHITE, "Error Code:%d", error_code); - PrintString(TEXT_X, TEXT_Y + 12, COLOR_WHITE, "%s", GetPublicMsg(error_code)); - PrintString(TEXT_X, TEXT_Y + 15, COLOR_WHITE, "%s", GetPrivateMsg(error_code)); -#endif - OS_TPrintf( "Error Code:%d\n", error_code); - OS_TPrintf( "%s\n", GetPublicMsg(error_code)); - OS_TPrintf( "%s\n", GetPrivateMsg(error_code)); - } - else - { - OS_TPrintf( "%s\n", "Network Error occurred.\nTry again later."); -#if 0 - // ネットワークエラー時の表示メッセージ(暫定) - PrintString(TEXT_X, TEXT_Y + 10, COLOR_WHITE, "%s", "Network Error occurred.\nTry again later."); -#endif - } -} - -// ネットワーク接続関連 -#define STACK_SIZE (1024*4) -static OSThread NetThread; -static u64 NetStack[STACK_SIZE / sizeof(u64)]; -#define THREAD1_PRIO 24 -static volatile BOOL NetHTTPEnd = FALSE; - - -static void NetConnectProc(void *arg) -{ -#pragma unused(arg) - BOOL ret; - NucStatus status; - int error_code = 0; - - - /* Start networking */ - NcStart(SITEDEFS_DEFAULTCLASS); - - NetConnect = NET_CONNECT_OK; - //OS_TPrintf("%s %d\n",__FUNCTION__,__LINE__); - // 終了の呼び出しを待つ -// OS_SleepThread(NULL); - - while(1) { - OS_Sleep( 16 ); /* OS_WaitVBlankIntrの代わり */ - - switch ( TestState.state ) { - case PHASE_CONNECTING_NETWORK: - ProgressNetConnect(); - if (NetConnect == NET_CONNECT_OK) - { - ChangeState(PHASE_NUP_BREAK); - } - else if (NetConnect == NET_CONNECT_ERROR) - { // ネットワーク接続エラー - error_code = -1; - ChangeState(PHASE_ERROR_OCCURRED); - } - break; - case PHASE_NUP_BREAK: // AボタンでNUPライブラリを初期化します。 - ret = InitNupLib(); - if (ret == FALSE) - { // エラー発生 - ChangeState(PHASE_ERROR_OCCURRED); - error_code = NUC_GetLastError(); - } - else - { - ChangeState(PHASE_NUP_READY); - } - break; - - case PHASE_NUP_READY: // 更新情報の取得を開始します。 - ret = StartNupCheck(); - if (ret == FALSE) - { // エラー発生 - error_code = NUC_GetLastError(); - ChangeState(PHASE_NUP_CLEANUP); - } - else - { - ChangeState(PHASE_NUP_CHECK); - } - break; - - case PHASE_NUP_CHECK: // 更新情報の取得状況を表示します。 - status = ProgressNupCheck(); - if (status == NUC_STATUS_ERROR) - { // エラー発生 - ChangeState(PHASE_NUP_CLEANUP); - error_code = NUC_GetLastError(); - } - else if (status == NUC_STATUS_COMPLETED) - { // 更新リスト 取得終了 - if (TitleIdNum > 0 ) - { // ダウンロードへ - int i; - for (i = 0; i < TitleIdNum; i++) - { - OS_TPrintf("DL list:%3d:0x%llx", i, TitleIds[i]); - } - ChangeState(PHASE_NUP_DOWNLOAD); - } - else - { // 更新すべきものがない - OS_TPrintf("No title to update\n"); - ChangeState(PHASE_NUP_CLEANUP); - } - } - break; - - case PHASE_NUP_DOWNLOAD: // ダウンロードを開始します。 - ret = StartNupDownload(); - if (ret == FALSE) - { // エラー発生 - ChangeState(PHASE_NUP_CLEANUP); - error_code = NUC_GetLastError(); - } - else - { - ChangeState(PHASE_NUP_PROCESS); - } - break; - - case PHASE_NUP_PROCESS: // ダウンロードの進行状況を表示します。 - status = ProgressNupDownload(); - if (status == NUC_STATUS_ERROR) - { // エラー発生 - ChangeState(PHASE_NUP_CLEANUP); - error_code = NUC_GetLastError(); - } - else if (status == NUC_STATUS_COMPLETED) - { // ダウンロード完了 - ChangeState(PHASE_NUP_CLEANUP); - } - break; - - case PHASE_NUP_CLEANUP: // NUPライブラリのクリーンアップ - ret = CleanNupLib(); - if (ret == FALSE && error_code == 0) - { // 他でエラーが起こっていない場合のみ上書きします。 - error_code = NUC_GetLastError(); - } - // ネットの切断と後始末 - OS_WakeupThreadDirect(&NetThread); - ChangeState(PHASE_CLEANING_UP); - break; - - case PHASE_CLEANING_UP: // ネットの切断終了を待ちます - if (NetConnect == NET_CONNECT_NONE) - { // 切断終了 - if (error_code == 0) - { // 正常終了 - ChangeState(PHASE_FINISHED); - } - else - { - ChangeState(PHASE_ERROR_OCCURRED); - } - } - break; - - case PHASE_FINISHED: // ネットワークアップデートが正常終了しました。 - OS_TPrintf("Network Update Completed\n"); - if (TitleIdNum > 0) - { - OS_TPrintf("%d file is updated\n", TitleIdNum); - } - else - { - OS_TPrintf("Nothing is updated\n"); - } - - if (TitleIdNum > 0) - { // 再起動する - OS_TPrintf("再起動します\n"); - } - else - { // メッセージを表示して戻る - OS_TPrintf("アップデートするものがなかったので戻ります\n"); - } - goto end; - - break; - - case PHASE_ERROR_OCCURRED: // エラーが発生しています。 - - ShowErrorMsg(error_code); - goto end; -#if 0 - if (Trg == PAD_BUTTON_A) - { - OS_TPrintf("エラーが発生したので戻ります\n"); - goto end; - } -#endif - break; - - default: -OS_TPrintf("%s %d\n",__FUNCTION__,__LINE__); - - break; - } - } - - end: - NcFinish(); - NetConnect = NET_CONNECT_NONE; - - OS_TPrintf("Network Connection ended\n"); -} - - -/* ********************** */ -void nuc_main(void) -{ - - ChangeState(PHASE_INIT); - // NcGlobalInit(); in netconnect.c - - /* クライアント証明書の初期化 */ - SEA_Init(); - // あらかじめWRAMにロードしておきます - if (!NA_LoadVersionDataArchive(WorkForNA, NA_VERSION_DATA_WORK_SIZE)) { - OS_TPrintf("NA load error\n"); - goto end; - } - - if (!NUC_LoadCert()) { - // WRAMにロード - OS_TPrintf("Client cert load error\n"); - goto end; - } - - (void)NA_UnloadVersionDataArchive(); - - - /* 接続設定スレッドの作成 */ - OS_CreateThread(&NetThread, NetConnectProc, - NULL, NetStack + STACK_SIZE / sizeof(u64), - STACK_SIZE, THREAD1_PRIO); - OS_WakeupThreadDirect(&NetThread); - ChangeState(PHASE_CONNECTING_NETWORK); - - end: - return; -} diff --git a/build/tools/sctools/copy_dst/Makefile b/build/tools/sctools/copy_dst/Makefile index 95601f3..fac2644 100644 --- a/build/tools/sctools/copy_dst/Makefile +++ b/build/tools/sctools/copy_dst/Makefile @@ -26,7 +26,7 @@ SRCS = main.c mfiler.c key.c font.c text.c mprintf.c logprintf.c \ gfx.c hwi.c mynvram.c my_fs_util.c \ hatamotolib.cpp \ sitedefs.c wcm_control.c netconnect.c mywlan.c \ - mynuc.c nuc_error_msg.c stream.c myfilename.c + mynuc.c nuc_error_msg.c stream.c myfilename.c menu_version.c TARGET_BIN = copy_dst.srl ROM_SPEC = copy_dst.rsf diff --git a/build/tools/sctools/copy_dst/banner/banner_v3.bsf b/build/tools/sctools/copy_dst/banner/banner_v3.bsf index b949c17..83ddd0a 100644 Binary files a/build/tools/sctools/copy_dst/banner/banner_v3.bsf and b/build/tools/sctools/copy_dst/banner/banner_v3.bsf differ diff --git a/build/tools/sctools/copy_dst/src/main.c b/build/tools/sctools/copy_dst/src/main.c index bdf2305..f9f2c08 100644 --- a/build/tools/sctools/copy_dst/src/main.c +++ b/build/tools/sctools/copy_dst/src/main.c @@ -42,6 +42,7 @@ #include "myfilename.h" #include "mfiler.h" +#include "menu_version.h" //================================================================================ @@ -51,6 +52,9 @@ static BOOL sd_card_flag = FALSE; static u8 WorkForNA[NA_VERSION_DATA_WORK_SIZE]; + + + static void SDEvents(void *userdata, FSEvent event, void *arg) { (void)userdata; @@ -703,6 +707,20 @@ void TwlMain(void) mprintf("NA load error\n"); } else { + + { + u16 s_major, s_minor; + u32 s_timestamp; + if( TRUE == Read_SystemMenuVersion(&s_major, &s_minor, &s_timestamp) ) { + OS_TPrintf( "SystemMenuVersionData\n" ); + // 文字列 + // 数値 + OS_TPrintf( " Version(num) : %d.%d\n", s_major, s_minor ); + // OS_TPrintf( " Version(str) : %s\n", s_version.str_ver ); + OS_TPrintf( " Timestamp : %08x\n", s_timestamp ); + } + } + if (!NUC_LoadCert()) { // WRAMにロード OS_TPrintf("Client cert load error\n"); diff --git a/build/tools/sctools/common/src/nuc_error_msg.c b/build/tools/sctools/copy_dst/src/nuc_error_msg.c similarity index 100% rename from build/tools/sctools/common/src/nuc_error_msg.c rename to build/tools/sctools/copy_dst/src/nuc_error_msg.c diff --git a/build/tools/sctools/common/src/nuc_error_msg.h b/build/tools/sctools/copy_dst/src/nuc_error_msg.h similarity index 100% rename from build/tools/sctools/common/src/nuc_error_msg.h rename to build/tools/sctools/copy_dst/src/nuc_error_msg.h diff --git a/build/tools/sctools/copy_org/Makefile b/build/tools/sctools/copy_org/Makefile index a92d19d..ede5d5e 100644 --- a/build/tools/sctools/copy_org/Makefile +++ b/build/tools/sctools/copy_org/Makefile @@ -25,7 +25,7 @@ SRCDIR = ../common/src ./src SRCS = main.c key.c font.c text.c mprintf.c logprintf.c \ gfx.c hwi.c mynvram.c my_fs_util.c \ sitedefs.c wcm_control.c netconnect.c mywlan.c \ - nuc_error_msg.c stream.c myfilename.c + stream.c myfilename.c menu_version.c TARGET_BIN = copy_org.srl ROM_SPEC = copy_org.rsf diff --git a/build/tools/sctools/copy_org/banner/banner_v3.bsf b/build/tools/sctools/copy_org/banner/banner_v3.bsf index 3d8c094..1f83c8b 100644 Binary files a/build/tools/sctools/copy_org/banner/banner_v3.bsf and b/build/tools/sctools/copy_org/banner/banner_v3.bsf differ diff --git a/build/tools/sctools/copy_org/src/main.c b/build/tools/sctools/copy_org/src/main.c index aa11227..6b68bd4 100644 --- a/build/tools/sctools/copy_org/src/main.c +++ b/build/tools/sctools/copy_org/src/main.c @@ -28,7 +28,6 @@ #include "mynvram.h" #include "stream.h" #include "hwi.h" -// #include "hatamotolib.h" #include "ecdl.h" #include "mywlan.h" #include "mydata.h" @@ -144,7 +143,9 @@ static BOOL SDBackupToSDCard4(void) nand:/shared2/* */ mprintf("App. shared files backup "); - if( 0 == copy_r( &dir_entry_list_head, MyFile_GetAppSharedSaveDirName() , "nand:/shared2" , MyFile_GetAppSharedLogFileName(), 0) ) { + if( 0 == copy_r( &dir_entry_list_head, MyFile_GetAppSharedSaveDirName() , + "nand:/shared2" , MyFile_GetAppSharedLogFileName(), 0) ) { + // PrintDirEntryListBackward( dir_entry_list_head, NULL ); mydata.num_of_shared2_files = SaveDirEntryList( dir_entry_list_head, MyFile_GetAppSharedListFileName() ); m_set_palette(tc[0], 0x2); /* green */ @@ -170,7 +171,9 @@ static BOOL SDBackupToSDCard5(void) nand2:/photo/*.* */ mprintf("Photo files backup "); - if( 0 == copy_r( &dir_entry_list_head, MyFile_GetPhotoSaveDirName() , "nand2:/photo" , MyFile_GetPhotoLogFileName(),0 ) ) { + if( 0 == copy_r( &dir_entry_list_head, MyFile_GetPhotoSaveDirName() , + "nand2:/photo" , MyFile_GetPhotoLogFileName(),0 ) ) { + // PrintDirEntryListBackward( dir_entry_list_head, NULL ); mydata.num_of_photo_files = SaveDirEntryList( dir_entry_list_head, MyFile_GetPhotoListFileName() ); m_set_palette(tc[0], 0x2); /* green */ @@ -298,7 +301,7 @@ static BOOL SDBackupToSDCard8(void) RTCTime rtc_time; /* オリジナルのデータのバックアップ */ - if( TRUE == CheckShopRecord(NULL) ) { + if( TRUE == CheckShopRecord( hws_info.region, NULL ) ) { mydata.shop_record_flag = TRUE; OS_TPrintf("shop record exist - you don't have to connect the network.\n"); mprintf(" (--shop record exist--)\n");