git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlToolsRED@23 7061adef-622a-194b-ae81-725974e89856

This commit is contained in:
miya 2008-10-23 01:31:56 +00:00
parent 82b6e48205
commit 74963c2299
13 changed files with 230 additions and 554 deletions

View File

@ -0,0 +1,89 @@
#include <twl.h>
#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;
}

View File

@ -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_ */

View File

@ -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

View File

@ -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);

View File

@ -1,503 +0,0 @@
#include <twl.h>
#include <twl/sea.h>
#include <twl/na.h>
// #include <TwlWiFi/nuc.h>
#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;
}

View File

@ -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

View File

@ -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" );
// •¶Žš—ñ
// <20>l
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Ƀ<C389><C692>[ƒh
OS_TPrintf("Client cert load error\n");

View File

@ -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

View File

@ -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");