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

This commit is contained in:
miya 2008-10-23 09:12:50 +00:00
parent 74963c2299
commit fa44493071
7 changed files with 351 additions and 266 deletions

View File

@ -22,6 +22,7 @@
#include "font.h"
#include "text.h"
#include "mprintf.h"
#include "my_fs_util.h"
/*
@ -111,7 +112,12 @@ BOOL MiyaBackupTWLSettings(const char *path)
return FALSE;
}
#if 0
writtenSize = FS_WriteFile(&f, (void *)&cfg_data, (s32)sizeof(LCFGTWLSettingsData) );
#else
writtenSize = my_fs_crypto_write(&f, (void *)&cfg_data, (s32)sizeof(LCFGTWLSettingsData) );
#endif
if( writtenSize != sizeof(LCFGTWLSettingsData) ) {
fsResult = FS_GetArchiveResultCode(path);
mprintf("Failed write file 1 - HWNormal Info.:%d\n", fsResult );
@ -156,7 +162,12 @@ BOOL MiyaRestoreTWLSettings(const char *path)
mprintf("Failed open file 2 - HWNormal Info.:%d\n", fsResult );
return FALSE;
}
#if 0
readSize = FS_ReadFile(&f, (void *)&cfg_data, (s32)sizeof(LCFGTWLSettingsData) );
#else
readSize = my_fs_crypto_read(&f, (void *)&cfg_data, (s32)sizeof(LCFGTWLSettingsData) );
#endif
if( readSize != sizeof(LCFGTWLSettingsData) ) {
fsResult = FS_GetArchiveResultCode(path);
mprintf("Failed read file 2 - HWNormal Info.:%d\n", fsResult );
@ -170,16 +181,11 @@ BOOL MiyaRestoreTWLSettings(const char *path)
return FALSE;
}
/* ŽÀ<C5BD>ÛÉ<E2809A>«<E2809A>oµ */
if( FALSE == WriteTWLSettings( &cfg_data ) ) {
return FALSE;
}
return TRUE;
}
@ -194,8 +200,8 @@ BOOL MiyaReadHWSecureInfo( LCFGTWLHWSecureInfo *Info )
retval = LCFGi_THW_ReadSecureInfo();
if( retval != LCFG_TSF_READ_RESULT_SUCCEEDED ) {
OS_TPrintf( "HW Normal Info read failed.\n" );
mprintf( "HW Normal Info read failed.\n" );
OS_TPrintf( "HW Secure Info read failed.\n" );
mprintf( "HW Secure Info read failed.\n" );
return FALSE;
}
@ -238,160 +244,3 @@ BOOL MiyaReadHWNormalInfo( LCFGTWLHWNormalInfo *Info )
}
/*---------------------------------------------------------------------------*
Name: HWI_WriteHWNormalInfoFile
Description: HWーマルInfoファイルのライト
Arguments:
Returns: None.
*---------------------------------------------------------------------------*/
static BOOL MiyaWriteHWNormalInfoFile( LCFGTWLHWNormalInfo *Info )
{
/*
typedef struct LCFGTWLHWNormalInfo {
u8 rtcAdjust; // RTC調整値
u8 rsv[ 3 ];
u8 movableUniqueID[ LCFG_TWL_HWINFO_MOVABLE_UNIQUE_ID_LEN ]; // 移行可能なユニークID
} LCFGTWLHWNormalInfo; // 20byte
*/
if (!LCFGi_THW_WriteNormalInfoDirect( Info )) {
OS_TPrintf( "HW Normal Info Write failed.\n" );
mprintf( "HW Normal Info Write failed.\n" );
return FALSE;
}
return TRUE;
}
BOOL MiyaBackupHWNormalInfo(const char *path)
{
FSFile f;
BOOL bSuccess;
FSResult fsResult;
s32 writtenSize;
LCFGTWLHWNormalInfo info;
if( FALSE == MiyaReadHWNormalInfo( &info ) ) {
return FALSE;
}
FS_InitFile(&f);
FS_CreateFileAuto(path, (FS_PERMIT_R|FS_PERMIT_W));
bSuccess = FS_OpenFileEx(&f, path, (FS_FILEMODE_R|FS_FILEMODE_W));
if (bSuccess == FALSE) {
fsResult = FS_GetArchiveResultCode(path);
mprintf("Failed open file 1 - HWNormal Info.:%d\n", fsResult );
return FALSE;
}
writtenSize = FS_WriteFile(&f, (void *)&info, (s32)sizeof(LCFGTWLHWNormalInfo) );
if( writtenSize != sizeof(LCFGTWLHWNormalInfo) ) {
fsResult = FS_GetArchiveResultCode(path);
mprintf("Failed write file 1 - HWNormal Info.:%d\n", fsResult );
return FALSE;
}
bSuccess = FS_CloseFile(&f);
if (bSuccess == FALSE) {
fsResult = FS_GetArchiveResultCode(path);
mprintf("Failed close file 1 - HWNormal Info.:%d\n", fsResult );
return FALSE;
}
return TRUE;
}
BOOL MiyaReadHWNormalInfo_From_SD(const char *path, LCFGTWLHWNormalInfo *info)
{
FSFile f;
BOOL bSuccess;
FSResult fsResult;
s32 readSize;
if( info == NULL ) {
return FALSE;
}
FS_InitFile(&f);
bSuccess = FS_OpenFileEx(&f, path, FS_FILEMODE_R);
if (bSuccess == FALSE) {
fsResult = FS_GetArchiveResultCode(path);
mprintf("Failed open file 2 - HWNormal Info.:%d\n", fsResult );
return FALSE;
}
readSize = FS_ReadFile(&f, (void *)info, (s32)sizeof(LCFGTWLHWNormalInfo) );
if( readSize != sizeof(LCFGTWLHWNormalInfo) ) {
fsResult = FS_GetArchiveResultCode(path);
mprintf("Failed read file 2 - HWNormal Info.:%d\n", fsResult );
return FALSE;
}
bSuccess = FS_CloseFile(&f);
if (bSuccess == FALSE) {
fsResult = FS_GetArchiveResultCode(path);
mprintf("Failed close file 2 - HWNormal Info.:%d\n", fsResult );
return FALSE;
}
return TRUE;
}
BOOL MiyaRestoreHWNormalInfo(const char *path)
{
FSFile f;
BOOL bSuccess;
FSResult fsResult;
s32 readSize;
LCFGTWLHWNormalInfo info;
LCFGTWLHWNormalInfo info_temp;
FS_InitFile(&f);
bSuccess = FS_OpenFileEx(&f, path, FS_FILEMODE_R);
if (bSuccess == FALSE) {
fsResult = FS_GetArchiveResultCode(path);
mprintf("Failed open file 2 - HWNormal Info.:%d\n", fsResult );
return FALSE;
}
readSize = FS_ReadFile(&f, (void *)&info, (s32)sizeof(LCFGTWLHWNormalInfo) );
if( readSize != sizeof(LCFGTWLHWNormalInfo) ) {
fsResult = FS_GetArchiveResultCode(path);
mprintf("Failed read file 2 - HWNormal Info.:%d\n", fsResult );
return FALSE;
}
bSuccess = FS_CloseFile(&f);
if (bSuccess == FALSE) {
fsResult = FS_GetArchiveResultCode(path);
mprintf("Failed close file 2 - HWNormal Info.:%d\n", fsResult );
return FALSE;
}
/* RTCの補正値だけはそのまま使う */
if( FALSE == MiyaReadHWNormalInfo( &info_temp ) ) {
return FALSE;
}
info.rtcAdjust = info_temp.rtcAdjust;
/* 実際に書き出し */
if( FALSE == MiyaWriteHWNormalInfoFile( &info ) ) {
return FALSE;
}
return TRUE;
}

View File

@ -1,4 +1,5 @@
#include <twl.h>
#include <twl/na.h>
#include "menu_version.h"
@ -28,6 +29,8 @@ typedef struct SystemMenuVersion {
u16 str[ TWL_SYSMENU_VER_STR_LEN / sizeof(u16) ];
} SystemMenuVersion;
static u8 WorkForNA[NA_VERSION_DATA_WORK_SIZE];
BOOL Read_SystemMenuVersion(u16 *major, u16 *minor, u32 *ts)
{
@ -44,6 +47,13 @@ BOOL Read_SystemMenuVersion(u16 *major, u16 *minor, u32 *ts)
}
// STD_MemSet((void *)s_version, 0, sizeof(TWL_SYSMENU_VER_STR_LEN);
STD_MemSet((void *)str_ver, 0, TWL_SYSMENU_VER_STR_LEN);
if (!NA_LoadVersionDataArchive(WorkForNA, NA_VERSION_DATA_WORK_SIZE)) {
OS_TPrintf("NA load error\n");
return FALSE;
}
FS_InitFile(&file);
@ -83,6 +93,8 @@ BOOL Read_SystemMenuVersion(u16 *major, u16 *minor, u32 *ts)
}
FS_CloseFile(&file);
(void)NA_UnloadVersionDataArchive();
return retval;
}

View File

@ -1,4 +1,5 @@
#include <twl.h>
#include <nitro/crypto.h>
#include "text.h"
#include "mprintf.h"
#include "my_fs_util.h"
@ -1115,6 +1116,155 @@ static void Path_Buffers_Clean( char *path_src_dir, char *path_src_full,
}
}
/*
void CRYPTO_RC4Encrypt(CRYPTORC4Context* context, const void* in, u32 length, void* out);
context - CRYPTO_RC4Init() CRYPTORC4Context
in - RC4 /
length - in
out - /
*/
static u32 my_fs_GetStringLength(char* str)
{
u32 i;
for (i = 0; ; i++) {
if (*(str++) == '\0') {
return i;
}
}
}
static char *my_fs_key = "twl-repair-tool";
s32 my_fs_crypto_read(FSFile *f, void *ptr, s32 size)
{
s32 readSize;
CRYPTORC4FastContext context;
u8 *crypt_buf;
crypt_buf = (u8 *)OS_Alloc( (u32)size );
if(crypt_buf == NULL ) {
return -1;
}
readSize = FS_ReadFile(f, (void *)crypt_buf, size);
if( readSize != size ) {
/* error! */
goto end;
}
CRYPTO_RC4FastInit(&context, my_fs_key, my_fs_GetStringLength(my_fs_key));
CRYPTO_RC4FastEncrypt(&context, (char *)crypt_buf, (u32)size, ptr);
end:
if( crypt_buf != NULL ) {
OS_Free(crypt_buf);
}
return readSize;
}
s32 my_fs_crypto_write(FSFile *f, void *ptr, s32 size)
{
s32 writtenSize;
CRYPTORC4FastContext context;
u8 *crypt_buf;
crypt_buf = (u8 *)OS_Alloc( (u32)size );
if(crypt_buf == NULL ) {
return -1;
}
CRYPTO_RC4FastInit(&context, my_fs_key, my_fs_GetStringLength(my_fs_key));
CRYPTO_RC4FastEncrypt(&context, (char *)ptr, (u32)size, crypt_buf);
writtenSize = FS_WriteFile(f, crypt_buf, size);
if( writtenSize != size ) {
/* error */
}
if( crypt_buf != NULL ) {
OS_Free(crypt_buf);
}
return writtenSize;
}
BOOL MydataLoadDecrypt(const char *path, void *pBuffer, int size, FSFile *log_fd)
{
FSFile f;
BOOL bSuccess;
// u32 fileSize;
s32 readSize = 0;
FS_InitFile(&f);
bSuccess = FS_OpenFileEx(&f, path, FS_FILEMODE_R);
if( ! bSuccess ) {
miya_log_fprintf(log_fd, "Failed Open File %s\n",__FUNCTION__);
miya_log_fprintf(log_fd, " path=%s\n", path );
miya_log_fprintf(log_fd, " res=%s\n", my_fs_util_get_fs_result_word( FS_GetArchiveResultCode(path) ));
return FALSE;
}
readSize = my_fs_crypto_read(&f, pBuffer, (s32)size);
if( readSize != size ) {
miya_log_fprintf(log_fd, "Failed Read File: %s\n",path);
}
bSuccess = FS_CloseFile(&f);
if( ! bSuccess ) {
miya_log_fprintf(log_fd, "Failed Close File\n");
miya_log_fprintf(log_fd, " %s\n", my_fs_util_get_fs_result_word( FS_GetArchiveResultCode(path)));
}
return TRUE;
}
BOOL MydataSaveEncrypt(const char *path, void *pData, int size, FSFile *log_fd)
{
#pragma unused(log_fd)
FSFile f;
// BOOL flag;
BOOL bSuccess;
FSResult res;
FSResult fsResult;
s32 writtenSize;
FS_InitFile(&f);
bSuccess = FS_OpenFileEx(&f, path, FS_FILEMODE_W);
if( ! bSuccess ) {
FS_CreateFileAuto( path, FS_PERMIT_W|FS_PERMIT_R);
bSuccess = FS_OpenFileEx(&f, path , FS_FILEMODE_W );
if( ! bSuccess ) {
res = FS_GetArchiveResultCode( path );
miya_log_fprintf(NULL, "%s file open error %s\n", __FUNCTION__,path );
miya_log_fprintf(NULL, " Failed open file:%s\n", my_fs_util_get_fs_result_word( res ));
return FALSE;
}
}
fsResult = FS_SetFileLength(&f, 0);
if( fsResult != FS_RESULT_SUCCESS ) {
}
writtenSize = my_fs_crypto_write(&f, pData, (s32)size);
if( writtenSize != size ) {
return FALSE;
}
FS_FlushFile(&f);
bSuccess = FS_CloseFile(&f);
if( bSuccess ) {
}
return TRUE;
}
BOOL MydataLoad(const char *path, void *pBuffer, int size, FSFile *log_fd)
{
FSFile f;
@ -1176,6 +1326,7 @@ BOOL MydataSave(const char *path, void *pData, int size, FSFile *log_fd)
writtenSize = FS_WriteFile(&f, pData, (s32)size);
if( writtenSize != size ) {
return FALSE;
}
FS_FlushFile(&f);

View File

@ -17,6 +17,8 @@ extern "C" {
#endif
char *my_fs_util_get_fs_result_word( FSResult res );
s32 my_fs_crypto_write(FSFile *f, void *ptr, s32 size);
s32 my_fs_crypto_read(FSFile *f, void *ptr, s32 size);
int find_title_save_data(MY_DIR_ENTRY_LIST **headp, const char *path_dst,
const char *path_src, int *save_dir_info, char *log_file_name , int level);
@ -38,6 +40,10 @@ BOOL SDCardValidation(void);
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);
BOOL MydataLoadDecrypt(const char *path, void *pBuffer, int size, FSFile *log_fd);
BOOL MydataSaveEncrypt(const char *path, void *pData, int size, FSFile *log_fd);
void GetDirEntryList( MY_DIR_ENTRY_LIST *head, u64 **pBuffer, int *size);
BOOL TitleIDSave(const char *path, u64 *pData, int count, FSFile *log_fd);
BOOL TitleIDLoad(const char *path, u64 **pBuffer, int *count, FSFile *log_fd);

View File

@ -6,6 +6,7 @@
#include "text.h"
#include "mprintf.h"
#include "mynvram.h"
#include "my_fs_util.h"
#define NVRAM_PERSONAL_DATA_OFFSET 0x20
@ -18,8 +19,6 @@
#define NVRAM_INTERNAL_BUF_SIZE 0x100
static u8 nvram_buffer[NVRAM_INTERNAL_BUF_SIZE] ATTRIBUTE_ALIGN(32);
//static char nor_file_path[FS_FILE_NAME_MAX];
static BOOL my_nvram_read( u32 offset, u32 size, void *buf)
{
@ -138,7 +137,7 @@ BOOL nvram_backup(char *path)
{
BOOL bSuccess;
FSFile nor_fd;
u16 offset;
u32 offset;
u32 vol;
int len;
#define BUF_SIZE 0x100
@ -177,13 +176,19 @@ BOOL nvram_backup(char *path)
offset *= 8;
offset -= 0xA00;
OS_TPrintf( "nvram %d: offset = 0x%02x\n",__LINE__, offset);
for( vol = 0 ; vol < NVRAM_PERSONAL_DATA_SIZE ; vol += BUF_SIZE ) {
OS_TPrintf(".");
if( TRUE != my_nvram_read( offset+vol , BUF_SIZE, (void* )nor_buf) ) {
OS_TPrintf( "nvram error: %s %s %d\n",__FILE__,__FUNCTION__,__LINE__);
}
else {
OS_TPrintf( " --: offset = 0x%02x\n", offset+vol);
#if 0
len = FS_WriteFile(&nor_fd, nor_buf, BUF_SIZE);
#else
len = my_fs_crypto_write(&nor_fd, nor_buf, BUF_SIZE);
#endif
if (len != BUF_SIZE)
{
OS_TPrintf("FS_WriteFile() failed.");
@ -205,7 +210,7 @@ BOOL nvram_restore(char *path)
{
BOOL bSuccess;
FSFile nor_fd;
u16 offset;
u32 offset;
u32 vol;
int len;
// char nor_file_path[FS_FILE_NAME_MAX];
@ -241,7 +246,11 @@ BOOL nvram_restore(char *path)
for( vol = 0 ; vol < NVRAM_PERSONAL_DATA_SIZE ; vol += BUF_SIZE ) {
OS_TPrintf(".");
#if 0
len = FS_ReadFile(&nor_fd, nor_buf, BUF_SIZE);
#else
len = my_fs_crypto_read(&nor_fd, nor_buf, BUF_SIZE);
#endif
if (len != BUF_SIZE) {
OS_TPrintf("FS_ReadFile() failed.");
break;
@ -257,10 +266,8 @@ BOOL nvram_restore(char *path)
OS_TPrintf("\n");
bSuccess = FS_CloseFile(&nor_fd);
// mprintf("nvram write completed.\n");
OS_TPrintf( "nvram write completed.\n");
return TRUE;
}

View File

@ -71,7 +71,7 @@ static void SDEvents(void *userdata, FSEvent event, void *arg)
m_set_palette(tc[0], M_TEXT_COLOR_YELLOW );
mprintf("SD card:inserted!\n");
m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
mprintf("Push A button to start\n");
mprintf("Push A button to start RESTORE\n");
}
}
@ -134,7 +134,7 @@ static BOOL RestoreFromSDCard1(void)
MyData mydata
*/
// static BOOL SDBackupToSDCard8(void)
mprintf("RTC data restore ");
mprintf("RTC data restore ");
if( RTC_RESULT_SUCCESS != RTC_SetDate( &(mydata.rtc_date) ) ) {
flag = FALSE;
}
@ -165,24 +165,19 @@ static BOOL RestoreFromSDCard2(void)
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;
}
m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
#if 0
// いらんやんか・・
// static BOOL SDBackupToSDCard1(void)
mprintf("Unique ID backup ");
if( TRUE == MiyaBackupHWNormalInfo( MyFile_GetUniqueIDFileName() ) ) {
}
#endif
return TRUE;
}
static BOOL RestoreFromSDCard3(void)
{
// static BOOL SDBackupToSDCard2(void)
@ -190,13 +185,15 @@ static BOOL RestoreFromSDCard3(void)
if( TRUE == nvram_restore( MyFile_GetWifiParamFileName() ) ) {
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;
}
m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
return TRUE;
}
@ -208,13 +205,15 @@ static BOOL RestoreFromSDCard4(void)
if( TRUE == MiyaRestoreTWLSettings( MyFile_GetUserSettingsFileName() ) ) {
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;
}
m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
return TRUE;
}
@ -226,14 +225,15 @@ static BOOL RestoreFromSDCard5(void)
if( TRUE == RestoreDirEntryList( MyFile_GetAppSharedListFileName(), MyFile_GetAppSharedRestoreLogFileName() )) {
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;
}
m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
return TRUE;
}
@ -244,14 +244,15 @@ static BOOL RestoreFromSDCard6(void)
if( TRUE == RestoreDirEntryList( MyFile_GetPhotoListFileName() , MyFile_GetPhotoRestoreLogFileName() )) {
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;
}
m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
return TRUE;
}
@ -264,67 +265,79 @@ static BOOL RestoreFromSDCard8(void)
if( TRUE == RestoreDirEntryList( MyFile_GetAppDataListFileName() , MyFile_GetAppDataRestoreLogFileName() )) {
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;
}
m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
return TRUE;
}
static BOOL LoadWlanConfig(void)
{
/* ユーザーデータ書き込みモード */
u8 buf[256];
int len;
int i; /* ユーザーデータ書き込みモード */
if( TRUE == LoadWlanConfigFile("sdmc:/wlan_cfg.txt") ) {
OS_TPrintf("SSID = %s\n", GetWlanSSID());
mfprintf(tc[3],"SSID = %s\n", GetWlanSSID());
OS_TPrintf("MODE = ");
mfprintf(tc[3],"MODE = ");
switch( GetWlanMode() ) {
case 1:
OS_TPrintf("NONE\n");
mfprintf(tc[3],"NONE\n");
break;
case 2:
OS_TPrintf("WEP128\n");
mfprintf(tc[3],"WEP128\n");
break;
case 3:
OS_TPrintf("WPA-TKIP\n");
mfprintf(tc[3],"WPA-TKIP\n");
break;
case 4:
OS_TPrintf("WPA2-TKIP\n");
mfprintf(tc[3],"WPA2-TKIP\n");
break;
case 5:
OS_TPrintf("WPA-AES\n");
mfprintf(tc[3],"WPA-AES\n");
break;
case 6:
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;
}
OS_TPrintf("KEY STR = %s\n", GetWlanKEYSTR());
{
u8 buf[256];
int len;
int i;
len = GetWlanKEYBIN(buf);
if( len ) {
OS_TPrintf("KEY BIN = 0x");
for( i = 0 ; i < len ; i++ ) {
OS_TPrintf("%02X",buf[i]);
}
OS_TPrintf("\n");
mfprintf(tc[3],"KEY STR = %s\n", GetWlanKEYSTR());
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");
}
}
else {
OS_TPrintf("Invalid wlan cfg file\n");
mfprintf(tc[3],"Invalid wlan cfg file\n");
return FALSE;
}
return TRUE;
}
@ -359,7 +372,6 @@ static BOOL RestoreFromSDCard7(void)
mprintf("-user title list loading.. ");
OS_TPrintf("user title list loading\n");
// (void)TitleIDSave( MyFile_GetDownloadTitleIDFileName(), pBuffer, count, NULL);
if( TRUE == TitleIDLoad( MyFile_GetDownloadTitleIDFileName(), &title_id_buf_ptr,
&title_id_count, NULL) ) {
@ -384,7 +396,6 @@ static BOOL RestoreFromSDCard7(void)
mprintf("OK.\n");
m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
/* nand:/ticketはチケット同期でダウンロード */
// 不要:デバイス情報の表示
PrintDeviceInfo();
@ -414,7 +425,7 @@ static BOOL RestoreFromSDCard7(void)
m_set_palette(tc[0], M_TEXT_COLOR_RED );
mprintf("NG.\n");
m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
return FALSE;
goto end_nhttp;
}
else {
m_set_palette(tc[0], M_TEXT_COLOR_GREEN ); /* green */
@ -431,7 +442,7 @@ static BOOL RestoreFromSDCard7(void)
m_set_palette(tc[0], M_TEXT_COLOR_RED );
mprintf("NG.\n");
m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
return FALSE;
goto end_ec;
}
else {
m_set_palette(tc[0], M_TEXT_COLOR_GREEN ); /* green */
@ -441,21 +452,18 @@ static BOOL RestoreFromSDCard7(void)
// 必須:デバイス証明書の発行
if( FALSE == KPSClient() ) {
return FALSE;
goto end_ec_f;
}
if( FALSE == ECDownload((NAMTitleId *)title_id_buf_ptr , (u32)title_id_count) ) {
return FALSE;
goto end_ec_f;
}
// 不要:セーブデータ領域を作成
// NAM_Init を忘れてた
SetupTitlesDataFile((NAMTitleId *)title_id_buf_ptr , (u32)title_id_count);
if( title_id_buf_ptr != NULL && title_id_count != 0 ) {
OS_Free( title_id_buf_ptr );
}
end_ec_f:
// cleanup
// EC の終了処理
mprintf("-EC_Shutdown.. ");
@ -471,6 +479,7 @@ static BOOL RestoreFromSDCard7(void)
mprintf("OK.\n");
}
m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
end_ec:
// ネットワークからの切断
@ -478,16 +487,21 @@ static BOOL RestoreFromSDCard7(void)
mprintf("-disconnecting... ");
NHTTP_Cleanup();
end_nhttp:
NSSL_Finish();
end_nssl:
NcFinish();
end_nc:
//OS_TPrintf("NSSL_Finish() return = %d\n", NSSL_Finish());
TerminateWcmControl();
OS_TPrintf("done.\n");
mprintf("done.\n");
if( title_id_buf_ptr != NULL && title_id_count != 0 ) {
OS_Free( title_id_buf_ptr );
}
// EC が自分の Title ID のディレクトリを作成してしまうため、削除する
DeleteECDirectory();
@ -636,6 +650,8 @@ void TwlMain(void)
u8 macAddress[6];
MY_ENTRY_LIST *mfiler_list_head = NULL;
BOOL reboot_flag;
u16 s_major, s_minor;
u32 s_timestamp;
OS_Init();
OS_InitThread();
@ -679,10 +695,30 @@ void TwlMain(void)
// 必須SEA の初期化
SEA_Init();
m_set_palette(tc[0], M_TEXT_COLOR_YELLOW );
mprintf( "Sys-menu ver." );
m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
if( TRUE == Read_SystemMenuVersion(&s_major, &s_minor, &s_timestamp) ) {
mprintf( "%d.%d", s_major, s_minor );
mprintf( " (%08x)\n", s_timestamp );
}
else {
m_set_palette(tc[0], M_TEXT_COLOR_RED );
mprintf( "read error!\n");
m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
}
mprintf( "\n");
reboot_flag = OS_IsRebooted();
/* デバッグのために強制的に */
// reboot_flag = TRUE;
(void)m_get_key_trigger();
keyData = m_get_key_code();
if ( keyData & PAD_BUTTON_X ) {
reboot_flag = TRUE;
}
if( FALSE == reboot_flag ) {
@ -695,7 +731,6 @@ void TwlMain(void)
else {
sd_card_flag = TRUE;
}
FS_RegisterEventHook("sdmc", &sSDHook, SDEvents, NULL);
@ -707,20 +742,6 @@ 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");
@ -910,7 +931,7 @@ void TwlMain(void)
MyFile_SetPathBase("sdmc:/");
MyFile_AddPathBase((const char *)MFILER_GetCursorEntryPath( &mfiler_list_head ) );
MyFile_AddPathBase("/");
if(TRUE == MydataLoad( MyFile_GetGlobalInformationFileName(), &mydata, sizeof(MyData), NULL) ) {
if(TRUE == MydataLoadDecrypt( MyFile_GetGlobalInformationFileName(), &mydata, sizeof(MyData), NULL) ) {
mprintf("Personal data. restore ");
m_set_palette(tc[0], 0x2); /* green */
mprintf("OK.\n");
@ -918,7 +939,9 @@ void TwlMain(void)
start_my_thread();
}
else {
mprintf("Not a backup data directory\n");
m_set_palette(tc[0], 0x1); /* red */
mprintf("NG.\n");
m_set_palette(tc[0], 0xF); /* white */
}
}
else {
@ -971,7 +994,7 @@ void TwlMain(void)
n--;
m_set_display_offset_x(tc[0], n);
}
label:
mfprintf(tc[1], "\f%4d/%02d/%02d %02d:%02d:%02d\n\n",
rtc_date.year + 2000, rtc_date.month , rtc_date.day,
rtc_time.hour , rtc_time.minute , rtc_time.second );

View File

@ -34,6 +34,7 @@
#include "nuc.h"
#include "myfilename.h"
#include "menu_version.h"
//================================================================================
@ -57,6 +58,7 @@ static void SDEvents(void *userdata, FSEvent event, void *arg)
m_set_palette(tc[0], M_TEXT_COLOR_YELLOW );
mprintf("SD card:inserted!\n");
m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
mprintf("push A button to start BACKUP\n");
}
}
@ -104,14 +106,16 @@ static BOOL SDBackupToSDCard2(void)
/* Wifi設定の保存 */
mprintf("WirelessLAN param. backup ");
if( TRUE == nvram_backup( MyFile_GetWifiParamFileName() ) ) {
m_set_palette(tc[0], 0x2); /* green */
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], 0x1); /* red */
m_set_palette(tc[0], M_TEXT_COLOR_RED );
mprintf("NG.\n");
m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
return FALSE;
}
m_set_palette(tc[0], 0xF); /* white */
return TRUE;
}
@ -121,14 +125,16 @@ static BOOL SDBackupToSDCard3(void)
/* nand:/shared1ディレクトリまわりの保存 */
mprintf("User setting param. backup ");
if( TRUE == MiyaBackupTWLSettings( MyFile_GetUserSettingsFileName() ) ) {
m_set_palette(tc[0], 0x2); /* green */
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], 0x1); /* red */
m_set_palette(tc[0], M_TEXT_COLOR_RED );
mprintf("NG.\n");
m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
return FALSE;
}
m_set_palette(tc[0], 0xF); /* white */
return TRUE;
}
@ -150,12 +156,14 @@ static BOOL SDBackupToSDCard4(void)
mydata.num_of_shared2_files = SaveDirEntryList( dir_entry_list_head, MyFile_GetAppSharedListFileName() );
m_set_palette(tc[0], 0x2); /* green */
mprintf("OK.\n");
m_set_palette(tc[0], 0xF); /* white */
}
else {
m_set_palette(tc[0], 0x1); /* red */
m_set_palette(tc[0], M_TEXT_COLOR_RED );
mprintf("NG.\n");
m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
return FALSE;
}
m_set_palette(tc[0], 0xF); /* white */
(void)ClearDirEntryList( &dir_entry_list_head );
return TRUE;
}
@ -164,7 +172,6 @@ static BOOL SDBackupToSDCard5(void)
{
MY_DIR_ENTRY_LIST *dir_entry_list_head = NULL;
int save_dir_info = 0;
/*
nand2:/photoディレクトリまわりの保存
JPEGファイル
@ -176,17 +183,18 @@ static BOOL SDBackupToSDCard5(void)
// 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 */
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], 0x1); /* red */
m_set_palette(tc[0], M_TEXT_COLOR_RED );
mprintf("NG.\n");
m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
return FALSE;
}
m_set_palette(tc[0], 0xF); /* white */
(void)ClearDirEntryList( &dir_entry_list_head );
return TRUE;
}
@ -204,18 +212,20 @@ static BOOL SDBackupToSDCard6(void)
mprintf("App. save data backup ");
if( 0 == find_title_save_data( &dir_entry_list_head, MyFile_GetAppDataSaveDirName(), "nand:/title",
&save_dir_info, MyFile_GetAppDataLogFileName(),0 ) )
{
// PrintDirEntryListBackward( dir_entry_list_head, NULL );
mydata.num_of_app_save_data = SaveDirEntryList( dir_entry_list_head , MyFile_GetAppDataListFileName() );
m_set_palette(tc[0], 0x2); /* green */
mprintf("OK.\n");
}
else {
m_set_palette(tc[0], 0x1); /* red */
mprintf("NG.\n");
&save_dir_info, MyFile_GetAppDataLogFileName(),0 ) ) {
// PrintDirEntryListBackward( dir_entry_list_head, NULL );
mydata.num_of_app_save_data = SaveDirEntryList( dir_entry_list_head , MyFile_GetAppDataListFileName() );
m_set_palette(tc[0], M_TEXT_COLOR_GREEN ); /* green */
mprintf("OK.\n");
m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
}
m_set_palette(tc[0], 0xF); /* white */
else {
m_set_palette(tc[0], M_TEXT_COLOR_RED );
mprintf("NG.\n");
m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
return FALSE;
}
(void)ClearDirEntryList( &dir_entry_list_head );
return TRUE;
@ -229,6 +239,7 @@ static BOOL SDBackupToSDCard7(void)
int count;
int j;
u64 *ptr;
BOOL flag = TRUE;
/* タイトルリストの生成 */
/*
@ -274,12 +285,16 @@ static BOOL SDBackupToSDCard7(void)
if( TRUE == TitleIDSave( MyFile_GetDownloadTitleIDFileName(), pBuffer, count, NULL) ) {
//MyFile_GetDownloadTitleIDLogFileName()
m_set_palette(tc[0], 0x2); /* green */
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], 0x1); /* red */
m_set_palette(tc[0], M_TEXT_COLOR_RED );
mprintf("NG.(save ids)\n");
m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
flag = FALSE;
// return FALSE;
}
if( pBuffer ) {
OS_Free(pBuffer);
@ -288,11 +303,13 @@ static BOOL SDBackupToSDCard7(void)
else {
m_set_palette(tc[0], 0x1); /* red */
mprintf("NG.(get ids)\n");
m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
flag = FALSE;
// return FALSE;
}
m_set_palette(tc[0], 0xF); /* white */
(void)ClearDirEntryList( &dir_entry_list_head );
return TRUE;
return flag;
}
static BOOL SDBackupToSDCard8(void)
@ -325,15 +342,17 @@ static BOOL SDBackupToSDCard8(void)
LCFG_TWL_HWINFO_MOVABLE_UNIQUE_ID_LEN );
mprintf("Personal data backup ");
if( TRUE == MydataSave( MyFile_GetGlobalInformationFileName(), (void *)&mydata, sizeof(MyData), NULL) ) {
m_set_palette(tc[0], 0x2); /* green */
if( TRUE == MydataSaveEncrypt( MyFile_GetGlobalInformationFileName(), (void *)&mydata, sizeof(MyData), NULL) ) {
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], 0x1); /* red */
m_set_palette(tc[0], M_TEXT_COLOR_RED );
mprintf("NG.\n");
m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
return FALSE;
}
m_set_palette(tc[0], 0xF); /* white */
return TRUE;
}
@ -404,6 +423,8 @@ void TwlMain(void)
int i;
int n;
u8 macAddress[6];
u16 s_major, s_minor;
u32 s_timestamp;
OS_Init();
OS_InitThread();
@ -448,6 +469,22 @@ void TwlMain(void)
// 必須SEA の初期化
SEA_Init();
m_set_palette(tc[0], M_TEXT_COLOR_LIGHTBLUE );
mprintf( "Sys-menu ver." );
m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
if( TRUE == Read_SystemMenuVersion(&s_major, &s_minor, &s_timestamp) ) {
mprintf( "%d.%d", s_major, s_minor );
mprintf( " (%08x)\n", s_timestamp );
}
else {
m_set_palette(tc[0], M_TEXT_COLOR_RED );
mprintf( "read error!\n");
m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
}
mprintf( "\n");
// 不要NAM の初期化
// NAM_Init(&AllocForNAM, &FreeForNAM);