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

This commit is contained in:
miya 2008-11-03 23:51:34 +00:00
parent 1365476d69
commit fa7c5fcb6f
25 changed files with 2565 additions and 1263 deletions

View File

@ -0,0 +1,112 @@
#include <twl.h>
#include "text.h"
#include "mprintf.h"
#include "logprintf.h"
#include "error_report.h"
typedef struct _ERROR_REPORT {
struct _ERROR_REPORT *next;
char *report_str;
} ERROR_REPORT;
static ERROR_REPORT *er_head;
static BOOL er_active = FALSE;
void Error_Report_Init(void)
{
er_active = TRUE;
er_head = NULL;
}
void Error_Report_End(void)
{
ERROR_REPORT *er_temp;
ERROR_REPORT *er_next;
er_temp = er_head;
while( er_temp != NULL ) {
if( er_temp->report_str ) {
OS_Free( (void *)(er_temp->report_str) );
}
er_next = er_temp->next;
OS_Free( er_temp );
er_temp = er_next;
}
er_head = NULL;
er_active = FALSE;
}
BOOL Error_Report_Display(TEXT_CTRL *tc)
{
ERROR_REPORT *er_temp;
if( er_active == FALSE ) {
return FALSE;
}
if( er_head == NULL ) {
return FALSE;
}
er_temp = er_head;
while( er_temp != NULL ) {
if( er_temp->report_str ) {
mfprintf(tc, "%s", er_temp->report_str );
}
er_temp = er_temp->next;
}
return TRUE;
}
BOOL Error_Report_Add(char *str)
{
ERROR_REPORT *er_temp;
ERROR_REPORT **er_next;
char *str_buf;
u32 str_len;
if( er_active == FALSE ) {
return FALSE;
}
if( str == NULL ) {
return FALSE;
}
er_temp = (ERROR_REPORT *)OS_Alloc( sizeof(ERROR_REPORT) );
if( er_temp == NULL ) {
return FALSE;
}
str_len = (u32)STD_StrLen(str);
str_buf = (char *)OS_Alloc( str_len + 1 );
if( str_buf == NULL ) {
return FALSE;
}
STD_StrCpy(str_buf , str);
er_temp->report_str = str_buf;
str_buf += str_len;
*str_buf = '\0';
er_temp->next = NULL;
er_next = &er_head;
while( 1 ) {
if( *er_next == NULL ) {
*er_next = er_temp;
return TRUE;
}
er_next = &((*er_next)->next);
}
return FALSE;
}
BOOL Error_Report_Printf(const char *fmt, ...)
{
#define STR_BUF_LEN 200
char str_buf[STR_BUF_LEN];
int ret;
va_list vlist;
va_start(vlist, fmt);
ret = STD_TVSNPrintf(str_buf, STR_BUF_LEN, fmt, vlist);
va_end(vlist);
OS_TPrintf( "%s len = %d\n",__FUNCTION__,ret);
// return ret;
return Error_Report_Add(str_buf);
}

View File

@ -0,0 +1,22 @@
#ifndef _ERROR_REPORT_H_
#define _ERROR_REPORT_H_
#ifdef __cplusplus
extern "C" {
#endif
void Error_Report_Init(void);
void Error_Report_End(void);
BOOL Error_Report_Add(char *str);
BOOL Error_Report_Printf(const char *fmt, ...);
BOOL Error_Report_Display(TEXT_CTRL *tc);
#ifdef __cplusplus
}
#endif
#endif /* _ERROR_REPORT_H_ */

View File

@ -142,6 +142,7 @@ BOOL MiyaRestoreTWLSettings(const char *path)
s32 readSize; s32 readSize;
LCFGTWLSettingsData cfg_data; LCFGTWLSettingsData cfg_data;
LCFGReadResult retval; LCFGReadResult retval;
LCFGTWLTPCalibData tp_cal_data;
retval = LCFGi_THW_ReadSecureInfo(); retval = LCFGi_THW_ReadSecureInfo();
if( retval != LCFG_TSF_READ_RESULT_SUCCEEDED ) { if( retval != LCFG_TSF_READ_RESULT_SUCCEEDED ) {
@ -151,9 +152,13 @@ BOOL MiyaRestoreTWLSettings(const char *path)
} }
if( FALSE == ReadTWLSettings( &cfg_data ) ) { if( FALSE == ReadTWLSettings( &cfg_data ) ) {
mprintf("Failed read cfg file 2.\n" ); mprintf("Failed read TWLSettings 2.\n" );
return FALSE;
} }
/* とりあえず別でTPキャリブレーションデータだけ置いとく */
LCFG_TSD_GetTPCalibration( &tp_cal_data );
FS_InitFile(&f); FS_InitFile(&f);
bSuccess = FS_OpenFileEx(&f, path, FS_FILEMODE_R); bSuccess = FS_OpenFileEx(&f, path, FS_FILEMODE_R);
@ -162,11 +167,9 @@ BOOL MiyaRestoreTWLSettings(const char *path)
mprintf("Failed open file 2 - HWNormal Info.:%d\n", fsResult ); mprintf("Failed open file 2 - HWNormal Info.:%d\n", fsResult );
return FALSE; 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) ); readSize = my_fs_crypto_read(&f, (void *)&cfg_data, (s32)sizeof(LCFGTWLSettingsData) );
#endif
if( readSize != sizeof(LCFGTWLSettingsData) ) { if( readSize != sizeof(LCFGTWLSettingsData) ) {
fsResult = FS_GetArchiveResultCode(path); fsResult = FS_GetArchiveResultCode(path);
@ -181,6 +184,9 @@ BOOL MiyaRestoreTWLSettings(const char *path)
return FALSE; return FALSE;
} }
/* さっき置いといたTPキャリブレーションデータを上書き */
STD_CopyMemory( (void *)&cfg_data.tp, (void *)&tp_cal_data ,sizeof(LCFGTWLTPCalibData) );
/* ŽÀ<C5BD>ÛÉ<E2809A>«<E2809A>oµ */ /* ŽÀ<C5BD>ÛÉ<E2809A>«<E2809A>oµ */
if( FALSE == WriteTWLSettings( &cfg_data ) ) { if( FALSE == WriteTWLSettings( &cfg_data ) ) {
return FALSE; return FALSE;
@ -205,11 +211,6 @@ BOOL MiyaReadHWSecureInfo( LCFGTWLHWSecureInfo *Info )
return FALSE; return FALSE;
} }
/*
c:/twlsdk/include/twl/lcfg/common/TWLHWInfo.h
#define LCFGi_GetHWN() ( &s_hwInfoN )
*/
STD_CopyMemory( (void *)Info, (void *)LCFGi_GetHWS() , sizeof(LCFGTWLHWSecureInfo) ); STD_CopyMemory( (void *)Info, (void *)LCFGi_GetHWS() , sizeof(LCFGTWLHWSecureInfo) );
OS_TPrintf( "HW Secure Info read succeeded.\n" ); OS_TPrintf( "HW Secure Info read succeeded.\n" );

View File

@ -43,6 +43,88 @@ BOOL MiyaReadHWSecureInfo( LCFGTWLHWSecureInfo *Info );
BOOL MiyaReadHWNormalInfo_From_SD(const char *path, LCFGTWLHWNormalInfo *info); BOOL MiyaReadHWNormalInfo_From_SD(const char *path, LCFGTWLHWNormalInfo *info);
#if 0
typedef struct LCFGTWLHWNormalInfo
{
u8 rtcAdjust; // RTC調整値
u8 rsv[ 3 ];
u8 movableUniqueID[ LCFG_TWL_HWINFO_MOVABLE_UNIQUE_ID_LEN ]; // 移行可能なユニークID
} LCFGTWLHWNormalInfo; // 20byte
typedef struct LCFGTWLHWSecureInfo
{
u32 validLanguageBitmap; // 本体で有効な言語コードをビット列で表現
struct {
u8 forceDisableWireless :1;
u8 :7;
}flags;
u8 pad[ 3 ];
u8 region; // リージョン
u8 serialNo[ LCFG_TWL_HWINFO_SERIALNO_LEN_MAX ]; // シリアルNo.終端付きASCII文字列
//-------------------------------------------------------------
// [TODO:]ランチャーでここまでの24bytesをSystemSharedにコピー。
//-------------------------------------------------------------
u8 launcherTitleID_Lo[ 4 ]; // NANDファームがリージョンによって異なる可能性のあるランチャーのTitleIDを識別するために使用
} LCFGTWLHWSecureInfo; // 28bytes
static inline void LCFG_TSD_GetTPCalibration( LCFGTWLTPCalibData *pDst )
{
MI_CpuCopy8( &LCFGi_GetTSD()->tp, pDst, sizeof(LCFGTWLTPCalibData) );
}
// タッチパネルキャリブレーションデータのセット。
static inline void LCFG_TSD_SetTPCalibration( const LCFGTWLTPCalibData *pTPCalib )
{
MI_CpuCopy16( pTPCalib, &LCFGi_GetTSD()->tp, sizeof(LCFGTWLTPCalibData) );
// MI_CpuCopy16( pTPCalib, &LCFGi_GetTSD_OS()->tp, sizeof(LCFGTWLTPCalibData) );
}
typedef struct LCFGTWLSettingsData
{
union {
struct {
u32 isFinishedInitialSetting : 1; // 初回設定終了?
u32 isFinishedInitialSetting_Launcher : 1; // ランチャーの初回設定終了?
u32 isSetLanguage : 1; // 言語コード設定済み?
u32 isAvailableWireless : 1; // 無線モジュールのRFユニットの有効化無効化
u32 isBrokenTWLSettings : 1; // フラッシュ壊れシーケンス中?
u32 rsv : 19; // 予約
u32 isAgreeEULAFlagList : 8; // EULA同意フラグリスト(最下位ビットしか使用していない)
// WiFi設定は別データなので、ここに設定済みフラグは用意しない。
};
u32 raw;
} flags;
u8 rsv[ 1 ]; // 予約
u8 country; // 国コード
u8 language; // 言語(NTRとの違いは、データサイズ8bit)
u8 rtcLastSetYear; // RTCの前回設定年
s64 rtcOffset; // RTC設定時のオフセット値ユーザーがRTC設定を変更する度にその値に応じて増減します。
// 16bytes ここまでのパラメータサイズ
u8 agreeEulaVersion[ EULA_VERSION_LIST_NUM ]; // 8bytes 同意したEULAのバージョン
u8 pad[2];
LCFGTWLAlarm alarm; // 6bytes アラーム
LCFGTWLLauncherStatus launcherStatus; // 16bytes ランチャーステータス情報
LCFGTWLTPCalibData tp; // 20bytes タッチパネルキャリブレーションデータ
LCFGTWLOwnerInfo owner; // 80bytes オーナー情報
LCFGTWLParentalControl parental; // 148bytes ペアレンタルコントロール情報
} LCFGTWLSettingsData; // 296bytes
#define LCFG_TWL_FLAG_SET_LANGUAGE ( 1 << LCFG_TWL_FLAG_SET_LANGUAGE_SHIFT )
#define LCFG_TWL_FLAG_SET_DATE_TIME ( 1 << LCFG_TWL_FLAG_SET_DATE_TIME_SHIFT )
#define LCFG_TWL_FLAG_SET_COUNTRY ( 1 << LCFG_TWL_FLAG_SET_COUNTRY_SHIFT )
#define LCFG_TWL_FLAG_SET_FACE_PHOTO ( 1 << LCFG_TWL_FLAG_SET_FACE_PHOTO_SHIFT )
#define LCFG_TWL_FLAG_SET_NICKNAME ( 1 << LCFG_TWL_FLAG_SET_NICKNAME_SHIFT )
#define LCFG_TWL_FLAG_SET_COMMENT ( 1 << LCFG_TWL_FLAG_SET_COMMENT_SHIFT )
#define LCFG_TWL_FLAG_SET_BIRTHDAY ( 1 << LCFG_TWL_FLAG_SET_BIRTHDAY_SHIFT )
#define LCFG_TWL_FLAG_SET_USER_COLOR ( 1 << LCFG_TWL_FLAG_SET_USER_COLOR_SHIFT )
#define LCFG_TWL_FLAG_SET_TP
#endif
#ifdef __cplusplus #ifdef __cplusplus
} }

View File

@ -1,7 +1,15 @@
#ifndef _LOGPRINT_ #ifndef _LOGPRINT_
#define _LOGPRINT_ #define _LOGPRINT_
#ifdef __cplusplus
extern "C" {
#endif
void miya_log_fprintf(FSFile *fd, const char *fmt, ...); void miya_log_fprintf(FSFile *fd, const char *fmt, ...);
#ifdef __cplusplus
}
#endif
#endif /* _LOGPRINT_ */ #endif /* _LOGPRINT_ */

View File

@ -19,6 +19,8 @@ static void miya_mcu_free_reg_pxi_callback(PXIFifoTag tag, u32 data, BOOL err)
#pragma unused(err) #pragma unused(err)
switch( my_mcu_command ) { switch( my_mcu_command ) {
case MIYA_MCU_COMMAND_SET_FREE_REG:
break;
case MIYA_MCU_COMMAND_GET_FREE_REG: case MIYA_MCU_COMMAND_GET_FREE_REG:
miya_mcu_free_register = (u8)(0xff & data); miya_mcu_free_register = (u8)(0xff & data);
break; break;
@ -63,6 +65,17 @@ static void miya_mcu_get_free_reg(void)
miya_mcu_send_pxi_data(MIYA_MCU_COMMAND_GET_FREE_REG); miya_mcu_send_pxi_data(MIYA_MCU_COMMAND_GET_FREE_REG);
} }
// miya_mcu_set_free_reg( u8 number, u8 value );
static void miya_mcu_set_free_reg( u8 value )
{
u32 data;
data = MIYA_MCU_COMMAND_SET_FREE_REG;
data |= ((u32)value << 4);
miya_mcu_send_pxi_data(data);
}
static void miya_mcu_get_volume(void) static void miya_mcu_get_volume(void)
{ {
miya_mcu_send_pxi_data(MIYA_MCU_COMMAND_GET_VOLUME); miya_mcu_send_pxi_data(MIYA_MCU_COMMAND_GET_VOLUME);
@ -91,6 +104,25 @@ static void miya_mcu_set_brightness(u8 brightness)
u8 MCU_GetFreeRegister( void )
{
OSMessage message;
miya_mcu_get_free_reg();
if( TRUE == OS_ReceiveMessage(&MyMesgQueue, &message, OS_MESSAGE_BLOCK) ) {
}
return miya_mcu_free_register;
}
BOOL MCU_SetFreeRegister( u8 value )
{
OSMessage message;
miya_mcu_set_free_reg( value );
if( TRUE == OS_ReceiveMessage(&MyMesgQueue, &message, OS_MESSAGE_BLOCK) ) {
}
return TRUE;
}
u8 MCU_GetFreeReg( void ) u8 MCU_GetFreeReg( void )
{ {
OSMessage message; OSMessage message;

View File

@ -6,7 +6,7 @@
#define MIYA_MCU_COMMAND_GET_BRIGHTNESS 3 #define MIYA_MCU_COMMAND_GET_BRIGHTNESS 3
#define MIYA_MCU_COMMAND_SET_VOLUME 4 #define MIYA_MCU_COMMAND_SET_VOLUME 4
#define MIYA_MCU_COMMAND_SET_BRIGHTNESS 5 #define MIYA_MCU_COMMAND_SET_BRIGHTNESS 5
#define MIYA_MCU_COMMAND_SET_FREE_REG 6
#ifdef __cplusplus #ifdef __cplusplus
@ -15,6 +15,8 @@ extern "C" {
void MIYA_MCU_Init(void); void MIYA_MCU_Init(void);
u8 MCU_GetFreeReg( void ); u8 MCU_GetFreeReg( void );
u8 MCU_GetFreeRegister( void );
BOOL MCU_SetFreeRegister( u8 value );
BOOL MCU_SetBackLightBrightness( u8 brightness ); BOOL MCU_SetBackLightBrightness( u8 brightness );
BOOL MCU_SetVolume( u8 vol ); BOOL MCU_SetVolume( u8 vol );
u8 MCU_GetBackLightBrightness( void ); u8 MCU_GetBackLightBrightness( void );

File diff suppressed because it is too large Load Diff

View File

@ -22,8 +22,6 @@ 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, 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); const char *path_src, int *save_dir_info, char *log_file_name , int level);
int find_copy( MY_DIR_ENTRY_LIST **headp, const char *path_dst, const char *path_src,
char *extension, int max_level, int *save_info, char *log_file_name , int level);
int copy_r( MY_DIR_ENTRY_LIST **headp, const char *path_dst, const char *path_src, char *log_file_name, int level ); int copy_r( MY_DIR_ENTRY_LIST **headp, const char *path_dst, const char *path_src, char *log_file_name, int level );
int get_title_id(MY_DIR_ENTRY_LIST **headp, const char *path_src, 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 ); int *save_parent_dir_info_flag, char *log_file_name, int level );
@ -32,25 +30,38 @@ void PrintDirEntryListForward( MY_DIR_ENTRY_LIST *head, FSFile *log_fd );
void PrintDirEntryListBackward( MY_DIR_ENTRY_LIST *head, FSFile *log_fd ); void PrintDirEntryListBackward( MY_DIR_ENTRY_LIST *head, FSFile *log_fd );
void PrintSrcDirEntryListBackward( MY_DIR_ENTRY_LIST *head, FSFile *log_fd); void PrintSrcDirEntryListBackward( MY_DIR_ENTRY_LIST *head, FSFile *log_fd);
int SaveDirEntryList( MY_DIR_ENTRY_LIST *head , char *path ); BOOL SaveDirEntryList( MY_DIR_ENTRY_LIST *head , char *path, int *list_count, int *error_count, char *log_file_name);
BOOL RestoreDirEntryList( char *path, char *log_file_name); BOOL RestoreDirEntryList( char *path , char *log_file_name, int *list_count, int *error_count);
BOOL RestoreDirEntryListSystemBackupOnly( char *path , char *log_file_name, int *list_count, int *error_count);
BOOL GetUserAppTitleList( MY_DIR_ENTRY_LIST *head, u64 **pBuffer, int *size, char *log_file_name);
BOOL ClearDirEntryList( MY_DIR_ENTRY_LIST **headp ); BOOL ClearDirEntryList( MY_DIR_ENTRY_LIST **headp );
void write_debug_data(void); void write_debug_data(void);
BOOL SDCardValidation(void); BOOL SDCardValidation(void);
BOOL TWLCardValidation(void); BOOL TWLCardValidation(void);
BOOL CheckShopRecord(u8 region, FSFile *log_fd); BOOL CheckShopRecord(u8 region, FSFile *log_fd);
BOOL MydataSave(const char *path, void *pData, int size, 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 MydataLoad(const char *path, void *pBuffer, int size, FSFile *log_fd);
BOOL MydataLoadDecrypt(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); 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 TitleIDSave(const char *path, u64 *pData, int count, char *log_file_name);
BOOL TitleIDLoad(const char *path, u64 **pBuffer, int *count, FSFile *log_fd); BOOL TitleIDLoad(const char *path, u64 **pBuffer, int *count, char *log_file_name);
BOOL CopyFile(const char *dst_path, const char *src_path, FSFile *log_fd ); BOOL CopyFile(const char *dst_path, const char *src_path, FSFile *log_fd );
void Log_File_Close(FSFile *log_fd);
BOOL Log_File_Open(FSFile *log_fd, const char *log_file_name);
void Miya_debug_OFF(void);
void Miya_debug_ON(void);
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif

View File

@ -3,7 +3,7 @@
#define MY_DATA_VERSION_MAJOR 0 #define MY_DATA_VERSION_MAJOR 0
#define MY_DATA_VERSION_MINOR 2 #define MY_DATA_VERSION_MINOR 5
typedef struct { typedef struct {
u8 version_major; u8 version_major;
@ -12,11 +12,19 @@ typedef struct {
BOOL rtc_time_flag; BOOL rtc_time_flag;
RTCDate rtc_date; RTCDate rtc_date;
RTCTime rtc_time; RTCTime rtc_time;
BOOL wireless_lan_param_flag;
BOOL user_settings_flag;
BOOL shop_record_flag; BOOL shop_record_flag;
int num_of_user_download_app; int num_of_user_download_app;
int num_of_app_save_data; int num_of_app_save_data;
int num_of_photo_files; int num_of_photo_files;
int num_of_shared2_files; int num_of_shared2_files;
int num_of_error_user_download_app; /* unused */
int num_of_error_app_save_data;
int num_of_error_photo_files;
int num_of_error_shared2_files;
BOOL uniqueid_flag; BOOL uniqueid_flag;
u8 movableUniqueID[ LCFG_TWL_HWINFO_MOVABLE_UNIQUE_ID_LEN ]; // 移行可能なユニークID 16byte u8 movableUniqueID[ LCFG_TWL_HWINFO_MOVABLE_UNIQUE_ID_LEN ]; // 移行可能なユニークID 16byte
u32 deviceId; u32 deviceId;

View File

@ -58,6 +58,30 @@ char *MyFile_GetUserSettingsFileName(void)
return path; return path;
} }
char *MyFile_GetUserAppTitleListLogFileName(void)
{
STD_StrCpy( path , path_base );
STD_StrCat( path , MY_FILE_NAME_USER_APP_TITLE_LIST_LOG );
return path;
}
char *MyFile_GetNupLogFileName(void)
{
STD_StrCpy( path , "sdmc:/" );
STD_StrCat( path , MY_FILE_NAME_NUP_LOG);
return path;
}
char *MyFile_GetEcDownloadLogFileName(void)
{
STD_StrCpy( path , path_base );
STD_StrCat( path , MY_FILE_NAME_EC_DOWNLOAD_LOG );
return path;
}
char *MyFile_GetAppSharedSaveDirName(void) char *MyFile_GetAppSharedSaveDirName(void)
{ {
STD_StrCpy( path , path_base ); STD_StrCpy( path , path_base );
@ -79,6 +103,14 @@ char *MyFile_GetAppSharedRestoreLogFileName(void)
return path_log; return path_log;
} }
char *MyFile_GetAppSharedSaveLogFileName(void)
{
STD_StrCpy( path_log , path_base );
STD_StrCat( path_log , MY_FILE_NAME_APP_SHARED_SAVE_LOG );
return path_log;
}
char *MyFile_GetAppSharedListFileName(void) char *MyFile_GetAppSharedListFileName(void)
{ {
STD_StrCpy( path , path_base ); STD_StrCpy( path , path_base );
@ -107,6 +139,13 @@ char *MyFile_GetPhotoRestoreLogFileName(void)
return path_log; return path_log;
} }
char *MyFile_GetPhotoSaveLogFileName(void)
{
STD_StrCpy( path_log , path_base );
STD_StrCat( path_log , MY_FILE_NAME_PHOTO_SAVE_LOG );
return path_log;
}
char *MyFile_GetPhotoListFileName(void) char *MyFile_GetPhotoListFileName(void)
{ {
STD_StrCpy( path , path_base ); STD_StrCpy( path , path_base );
@ -114,31 +153,46 @@ char *MyFile_GetPhotoListFileName(void)
return path; return path;
} }
char *MyFile_GetAppDataSaveDirName(void) char *MyFile_GetSaveDataSaveDirName(void)
{ {
STD_StrCpy( path , path_base ); STD_StrCpy( path , path_base );
STD_StrCat( path , MY_DIR_NAME_TITLE ); STD_StrCat( path , MY_DIR_NAME_SAVE_DATA );
return path; return path;
} }
char *MyFile_GetAppDataLogFileName(void) char *MyFile_GetSaveDataLogFileName(void)
{ {
STD_StrCpy( path_log , path_base ); STD_StrCpy( path_log , path_base );
STD_StrCat( path_log , MY_FILE_NAME_TITLE_LOG ); STD_StrCat( path_log , MY_FILE_NAME_SAVE_DATA_LOG );
return path_log; return path_log;
} }
char *MyFile_GetAppDataRestoreLogFileName(void) char *MyFile_GetSaveDataRestoreLogFileName(void)
{ {
STD_StrCpy( path_log , path_base ); STD_StrCpy( path_log , path_base );
STD_StrCat( path_log , MY_FILE_NAME_TITLE_RESTORE_LOG ); STD_StrCat( path_log , MY_FILE_NAME_SAVE_DATA_RESTORE_LOG );
return path_log; return path_log;
} }
char *MyFile_GetAppDataListFileName(void) char *MyFile_GetSaveDataSaveLogFileName(void)
{
STD_StrCpy( path_log , path_base );
STD_StrCat( path_log , MY_FILE_NAME_SAVE_DATA_SAVE_LOG );
return path_log;
}
char *MyFile_GetSaveDataListFileName(void)
{ {
STD_StrCpy( path , path_base ); STD_StrCpy( path , path_base );
STD_StrCat( path , MY_FILE_NAME_TITLE_LIST ); STD_StrCat( path , MY_FILE_NAME_SAVE_DATA_LIST );
return path;
}
char *MyFile_GetSaveDataListLogFileName(void)
{
STD_StrCpy( path , path_base );
STD_StrCat( path , MY_FILE_NAME_SAVE_DATA_LIST_LOG );
return path; return path;
} }
@ -156,6 +210,13 @@ char *MyFile_GetDownloadTitleIDRestoreLogFileName(void)
return path_log; return path_log;
} }
char *MyFile_GetDownloadTitleIDSaveLogFileName(void)
{
STD_StrCpy( path_log , path_base );
STD_StrCat( path_log , MY_FILE_NAME_DOWNLOAD_TITLE_ID_RESTORE_LOG );
return path_log;
}
char *MyFile_GetDownloadTitleIDFileName(void) char *MyFile_GetDownloadTitleIDFileName(void)
{ {
STD_StrCpy( path , path_base ); STD_StrCpy( path , path_base );
@ -184,4 +245,9 @@ char *MyFile_GetGlobalInformationRestoreFileName(void)
return path; return path;
} }
char *MyFile_GetGlobalInformationSaveFileName(void)
{
STD_StrCpy( path , path_base );
STD_StrCat( path , MY_FILE_NAME_ORG_SAVE_LOG );
return path;
}

View File

@ -2,34 +2,47 @@
#define _MY_FILE_NAME_H_ #define _MY_FILE_NAME_H_
#define MY_FILE_NAME_UNIQUE_ID ("twl_unique.dat") #define MY_FILE_NAME_UNIQUE_ID ("twl_unique.dat")
#define MY_FILE_NAME_WIFI_PARAM ("twl_wifi.bin") #define MY_FILE_NAME_WIFI_PARAM ("twl_wifi.bin")
#define MY_FILE_NAME_USER_SETTINGS ("twl_user.dat") #define MY_FILE_NAME_USER_SETTINGS ("twl_user.dat")
#define MY_FILE_NAME_USER_APP_TITLE_LIST_LOG ("user_app_lst.txt")
#define MY_FILE_NAME_NUP_LOG ("nup_log.txt")
#define MY_FILE_NAME_EC_DOWNLOAD_LOG ("ecdown.txt")
#define MY_DIR_NAME_APP_SHARED ("shared2") #define MY_DIR_NAME_APP_SHARED ("shared2")
#define MY_FILE_NAME_APP_SHARED_LOG ("shared2.txt") #define MY_FILE_NAME_APP_SHARED_LOG ("shared2.txt")
#define MY_FILE_NAME_APP_SHARED_LIST ("shared2.lst") #define MY_FILE_NAME_APP_SHARED_LIST ("shared2.lst")
#define MY_FILE_NAME_APP_SHARED_RESTORE_LOG ("shared2_rst.txt") #define MY_FILE_NAME_APP_SHARED_RESTORE_LOG ("shared2_rst.txt")
#define MY_FILE_NAME_APP_SHARED_SAVE_LOG ("shared2_sv.txt")
#define MY_DIR_NAME_PHOTO ("photo") #define MY_DIR_NAME_PHOTO ("photo")
#define MY_FILE_NAME_PHOTO_LOG ("photo.txt") #define MY_FILE_NAME_PHOTO_LOG ("photo.txt")
#define MY_FILE_NAME_PHOTO_LIST ("photo.lst") #define MY_FILE_NAME_PHOTO_LIST ("photo.lst")
#define MY_FILE_NAME_PHOTO_RESTORE_LOG ("photo_rst.txt") #define MY_FILE_NAME_PHOTO_RESTORE_LOG ("photo_rst.txt")
#define MY_FILE_NAME_PHOTO_SAVE_LOG ("photo_sv.txt")
#define MY_DIR_NAME_TITLE ("title") #define MY_DIR_NAME_SAVE_DATA ("save")
#define MY_FILE_NAME_TITLE_LOG ("title.txt")
#define MY_FILE_NAME_TITLE_LIST ("title.lst")
#define MY_FILE_NAME_TITLE_RESTORE_LOG ("title_rst.txt")
#define MY_DIR_NAME_DOWNLOAD_TITLE_ID ("title") #define MY_FILE_NAME_SAVE_DATA_LIST ("save.lst")
#define MY_FILE_NAME_SAVE_DATA_LOG ("save.txt")
#define MY_FILE_NAME_SAVE_DATA_LIST_LOG ("save_lst.txt")
#define MY_FILE_NAME_SAVE_DATA_RESTORE_LOG ("save_rst.txt")
#define MY_FILE_NAME_SAVE_DATA_SAVE_LOG ("save_sv.txt")
#define MY_DIR_NAME_DOWNLOAD_TITLE_ID ("title_id")
#define MY_FILE_NAME_DOWNLOAD_TITLE_ID_DATA ("title_id.dat") #define MY_FILE_NAME_DOWNLOAD_TITLE_ID_DATA ("title_id.dat")
#define MY_FILE_NAME_DOWNLOAD_TITLE_ID_LOG ("title_id.txt" ) #define MY_FILE_NAME_DOWNLOAD_TITLE_ID_LOG ("title_id.txt" )
#define MY_FILE_NAME_DOWNLOAD_TITLE_ID_RESTORE_LOG ("title_id_rst.txt" ) #define MY_FILE_NAME_DOWNLOAD_TITLE_ID_RESTORE_LOG ("title_id_rst.txt" )
#define MY_FILE_NAME_DOWNLOAD_TITLE_ID_SAVE_LOG ("title_id_sv.txt" )
#define MY_FILE_NAME_ORG_DATA ("personal.dat") #define MY_FILE_NAME_ORG_DATA ("personal.dat")
#define MY_FILE_NAME_ORG_LOG ("personal.txt") #define MY_FILE_NAME_ORG_LOG ("personal.txt")
#define MY_FILE_NAME_ORG_RESTORE_LOG ("personal_rst.txt") #define MY_FILE_NAME_ORG_RESTORE_LOG ("personal_rst.txt")
#define MY_FILE_NAME_ORG_SAVE_LOG ("personal_sv.txt")
#define MY_FILE_NAME_PRODUCT_LOG "product.log" #define MY_FILE_NAME_PRODUCT_LOG "product.log"
@ -53,29 +66,38 @@ char *MyFile_GetUniqueIDFileName(void);
char *MyFile_GetWifiParamFileName(void); char *MyFile_GetWifiParamFileName(void);
char *MyFile_GetUserSettingsFileName(void); char *MyFile_GetUserSettingsFileName(void);
char *MyFile_GetUserAppTitleListLogFileName(void);
char *MyFile_GetEcDownloadLogFileName(void);
char *MyFile_GetNupLogFileName(void);
char *MyFile_GetAppSharedSaveDirName(void); char *MyFile_GetAppSharedSaveDirName(void);
char *MyFile_GetAppSharedLogFileName(void); char *MyFile_GetAppSharedLogFileName(void);
char *MyFile_GetAppSharedListFileName(void); char *MyFile_GetAppSharedListFileName(void);
char *MyFile_GetAppSharedRestoreLogFileName(void); char *MyFile_GetAppSharedRestoreLogFileName(void);
char *MyFile_GetAppSharedSaveLogFileName(void);
char *MyFile_GetPhotoListFileName(void); char *MyFile_GetPhotoListFileName(void);
char *MyFile_GetPhotoSaveDirName(void); char *MyFile_GetPhotoSaveDirName(void);
char *MyFile_GetPhotoLogFileName(void); char *MyFile_GetPhotoLogFileName(void);
char *MyFile_GetPhotoRestoreLogFileName(void); char *MyFile_GetPhotoRestoreLogFileName(void);
char *MyFile_GetPhotoSaveLogFileName(void);
char *MyFile_GetAppDataSaveDirName(void); char *MyFile_GetSaveDataSaveDirName(void);
char *MyFile_GetAppDataLogFileName(void); char *MyFile_GetSaveDataLogFileName(void);
char *MyFile_GetAppDataListFileName(void); char *MyFile_GetSaveDataListFileName(void);
char *MyFile_GetAppDataRestoreLogFileName(void); char *MyFile_GetSaveDataListLogFileName(void);
char *MyFile_GetSaveDataRestoreLogFileName(void);
char *MyFile_GetSaveDataSaveLogFileName(void);
char *MyFile_GetDownloadTitleIDLogFileName(void); char *MyFile_GetDownloadTitleIDLogFileName(void);
char *MyFile_GetDownloadTitleIDFileName(void); char *MyFile_GetDownloadTitleIDFileName(void);
char *MyFile_GetDownloadTitleIDRestoreLogFileName(void); char *MyFile_GetDownloadTitleIDRestoreLogFileName(void);
char *MyFile_GetDownloadTitleIDSaveLogFileName(void);
char *MyFile_GetGlobalInformationFileName(void); char *MyFile_GetGlobalInformationFileName(void);
char *MyFile_GetGlobalInformationRestoreFileName(void); char *MyFile_GetGlobalInformationRestoreFileName(void);
char *MyFile_GetGlobalInformationLogFileName(void); char *MyFile_GetGlobalInformationLogFileName(void);
char *MyFile_GetGlobalInformationSaveFileName(void);
#ifdef __cplusplus #ifdef __cplusplus
} }

View File

@ -37,16 +37,18 @@ static void* myAlloc_SOCL(u32 size);
static void myFree_SOCL(void* ptr); static void myFree_SOCL(void* ptr);
#endif // SDK_TWL #endif // SDK_TWL
static void ncStartWiFi(void); static int ncStartWiFi(void);
static void ncFinishWiFi(void); static void ncFinishWiFi(void);
static void ncStartInet(void);
static void ncFinishInet(void);
static WcmControlApInfo apInfo; static WcmControlApInfo apInfo;
static s32 previousAddr = 0; static s32 previousAddr = 0;
static u8 g_deviceId = WCM_DEVICEID_DEFAULT; static u8 g_deviceId = WCM_DEVICEID_DEFAULT;
static BOOL g_started = FALSE; static BOOL g_started = FALSE;
static int nc_error_code = 0;
/*---------------------------------------------------------------------------* /*---------------------------------------------------------------------------*
Name : NcGlobalInit Name : NcGlobalInit
Description : Description :
@ -93,9 +95,11 @@ typedef struct
#endif #endif
static void ncStartWiFi(void) static int ncStartWiFi(void)
{ {
int result; int result;
int timeout_counter;
if (previousAddr != 0) if (previousAddr != 0)
{ {
/* /*
@ -152,14 +156,32 @@ static void ncStartWiFi(void)
{ {
OS_TPrintf("SOC_Startup failed (%d)", result); OS_TPrintf("SOC_Startup failed (%d)", result);
mprintf("SOC_Startup failed (%d)", result); mprintf("SOC_Startup failed (%d)", result);
return; return -2;
} }
g_started = TRUE; g_started = TRUE;
OS_TPrintf("DHCP....\n"); OS_TPrintf("DHCP....\n");
timeout_counter = 0;
while (SOC_GetHostID() == 0) while (SOC_GetHostID() == 0)
{ {
OS_Sleep(100); s32 err_code = SOC_GetConfigError(NULL);
if( err_code == SOC_IP_ERR_DHCP_TIMEOUT ) {
mprintf("%s -dhcp timeout\n",__FUNCTION__);
return NC_ERROR_TIMEOUT;
}
else if(err_code == SOC_IP_ERR_LINK_DOWN ) {
mprintf("%s -link down\n",__FUNCTION__);
return NC_ERROR_LINKDOWN;
}
else {
OS_Sleep(100);
timeout_counter++;
if( timeout_counter > (60 * 1000 / 100) ) {
mprintf("%s -timeout\n",__FUNCTION__);
return NC_ERROR_TIMEOUT;
}
}
} }
OS_TPrintf("IP addr = %3d.%3d.%3d.%3d\n", CPS_CV_IPv4(CPSMyIp)); OS_TPrintf("IP addr = %3d.%3d.%3d.%3d\n", CPS_CV_IPv4(CPSMyIp));
@ -167,6 +189,7 @@ static void ncStartWiFi(void)
OS_TPrintf("GW addr = %3d.%3d.%3d.%3d\n", CPS_CV_IPv4(CPSGatewayIp)); OS_TPrintf("GW addr = %3d.%3d.%3d.%3d\n", CPS_CV_IPv4(CPSGatewayIp));
OS_TPrintf("DNS[0] = %3d.%3d.%3d.%3d\n", CPS_CV_IPv4(CPSDnsIp[0])); OS_TPrintf("DNS[0] = %3d.%3d.%3d.%3d\n", CPS_CV_IPv4(CPSDnsIp[0]));
OS_TPrintf("DNS[1] = %3d.%3d.%3d.%3d\n", CPS_CV_IPv4(CPSDnsIp[1])); OS_TPrintf("DNS[1] = %3d.%3d.%3d.%3d\n", CPS_CV_IPv4(CPSDnsIp[1]));
return 0;
} }
static void ncFinishWiFi(void) static void ncFinishWiFi(void)
@ -187,62 +210,73 @@ static void ncFinishWiFi(void)
Arguments : apClass - SitDefsに定義されているアクセスポイントのクラス名 Arguments : apClass - SitDefsに定義されているアクセスポイントのクラス名
Returns : Returns :
*---------------------------------------------------------------------------*/ *---------------------------------------------------------------------------*/
void NcStart(const char* apClass) int NcStart(const char* apClass)
{ {
int counter = 0; int counter = 0;
s32 wcm_phase; s32 wcm_phase;
int len; int len;
u8 key_bin_buf[MAX_KEY_BIN_BUF]; u8 key_bin_buf[MAX_KEY_BIN_BUF];
int timeout_counter;
SiteDefs_Init(); SiteDefs_Init();
if( TRUE == GetKeyModeStr() ) { if( TRUE == GetKeyModeStr() ) {
if( FALSE == ENV_SetBinary("WiFi.LAN.1.AP.1.WEP.KEY", (void *)GetWlanKEYSTR()) ) { if( FALSE == ENV_SetBinary("WiFi.LAN.1.AP.1.WEP.KEY", (void *)GetWlanKEYSTR()) ) {
OS_TPrintf("Error %s %d\n", __FUNCTION__,__LINE__); OS_TPrintf("Error %s %d\n", __FUNCTION__,__LINE__);
}
}
else {
STD_MemSet((void *)key_bin_buf, 0, MAX_KEY_BIN_BUF );
len = GetWlanKEYBIN(key_bin_buf);
if( len ) {
if( FALSE == ENV_SetBinary2("WiFi.LAN.1.AP.1.WEP.KEY", (void *)key_bin_buf, (u32)len) ) {
OS_TPrintf("Error %s %d\n", __FUNCTION__,__LINE__);
}
}
}
if( FALSE == ENV_SetString("WiFi.LAN.1.AP.1.ESSID", GetWlanSSID()) ) {
OS_TPrintf("Error %s %d\n", __FUNCTION__,__LINE__);
}
if( FALSE == ENV_SetU8("WiFi.LAN.1.AP.1.WEP.MODE", (u8)GetWlanMode() ) ) {
OS_TPrintf("Error %s %d\n", __FUNCTION__,__LINE__);
}
if (!InitWcmApInfo(&apInfo, apClass))
{
mprintf("Invalid AP Class....");
OS_TPrintf("Invalid AP Class....");
} }
}
while (1) { else {
wcm_phase = WCM_GetPhase(); STD_MemSet((void *)key_bin_buf, 0, MAX_KEY_BIN_BUF );
if( wcm_phase == WCM_PHASE_NULL) { len = GetWlanKEYBIN(key_bin_buf);
break; if( len ) {
if( FALSE == ENV_SetBinary2("WiFi.LAN.1.AP.1.WEP.KEY", (void *)key_bin_buf, (u32)len) ) {
OS_TPrintf("Error %s %d\n", __FUNCTION__,__LINE__);
} }
// OS_TPrintf("%s %d phase = %d\n", __FUNCTION__,__LINE__,wcm_phase);
OS_Sleep(100);
} }
}
InitWcmControlByApInfoEx(&apInfo, g_deviceId); if( FALSE == ENV_SetString("WiFi.LAN.1.AP.1.ESSID", GetWlanSSID()) ) {
OS_TPrintf("Error %s %d\n", __FUNCTION__,__LINE__);
}
OS_TPrintf("LINK UP....\n"); if( FALSE == ENV_SetU8("WiFi.LAN.1.AP.1.WEP.MODE", (u8)GetWlanMode() ) ) {
mprintf("-LINK UP"); OS_TPrintf("Error %s %d\n", __FUNCTION__,__LINE__);
while ( 1 ) { }
wcm_phase = WCM_GetPhase();
if( wcm_phase == WCM_PHASE_DCF ) { if (!InitWcmApInfo(&apInfo, apClass)) {
break; mprintf("Invalid AP Class....");
} OS_TPrintf("Invalid AP Class....");
return NC_ERROR_INVALID_AP_CLASS;
}
timeout_counter = 0;
while (1) {
wcm_phase = WCM_GetPhase();
if( wcm_phase == WCM_PHASE_NULL) {
break;
}
timeout_counter++;
if( timeout_counter > (60 * 1000 / 100) ) {
mprintf("%s -timeout\n",__FUNCTION__);
return NC_ERROR_TIMEOUT;
}
OS_Sleep(100);
}
InitWcmControlByApInfoEx(&apInfo, g_deviceId);
OS_TPrintf("LINK UP....\n");
mprintf("-LINK UP");
timeout_counter = 0;
while ( 1 ) {
wcm_phase = WCM_GetPhase();
if( wcm_phase == WCM_PHASE_DCF ) {
break;
}
#if 0 #if 0
#define WCM_PHASE_NULL 0 // 初期化前 #define WCM_PHASE_NULL 0 // 初期化前
#define WCM_PHASE_WAIT 1 // 初期化直後の状態( 要求待ち ) #define WCM_PHASE_WAIT 1 // 初期化直後の状態( 要求待ち )
@ -260,47 +294,42 @@ void NcStart(const char* apClass)
#define WCM_PHASE_TERMINATING 13 // WCM ライブラリの強制停止シーケンス中 #define WCM_PHASE_TERMINATING 13 // WCM ライブラリの強制停止シーケンス中
#endif #endif
#if 0 switch( counter ) {
case 0:
mprintf("\r-LINK UP. "); mprintf("\r-LINK UP. ");
for( i = 0 ; i < counter ; i++ ) { break;
m_putchar(tc[0], '.'); case 1:
} mprintf("\r-LINK UP.. ");
for( ; i < 6 ; i++ ) { break;
m_putchar(tc[0], ' '); case 2:
} mprintf("\r-LINK UP... ");
i %= 6; break;
#else case 3:
switch( counter ) { mprintf("\r-LINK UP.... ");
case 0: break;
mprintf("\r-LINK UP. "); case 5:
break; mprintf("\r-LINK UP..... ");
case 1: break;
mprintf("\r-LINK UP.. "); case 6:
break; mprintf("\r-LINK UP......");
case 2: counter = -1;
mprintf("\r-LINK UP... "); break;
break;
case 3:
mprintf("\r-LINK UP.... ");
break;
case 5:
mprintf("\r-LINK UP..... ");
break;
case 6:
mprintf("\r-LINK UP......");
counter = -1;
break;
}
#endif
OS_Sleep(200);
counter++;
} }
OS_TPrintf("connected\n"); timeout_counter++;
mprintf(" connected\n"); if( timeout_counter > (60 * 1000 / 200) ) {
mprintf("%s -timeout\n",__FUNCTION__);
return NC_ERROR_TIMEOUT;
}
OS_Sleep(200);
counter++;
}
ncStartWiFi(); OS_TPrintf("connected\n");
mprintf(" connected\n");
return ncStartWiFi();
// return 0; /* 0 means success */
} }
void NcFinish() void NcFinish()

View File

@ -18,6 +18,11 @@
#ifndef NITROWIFI_DEMOS_NETCONNECT_H_ #ifndef NITROWIFI_DEMOS_NETCONNECT_H_
#define NITROWIFI_DEMOS_NETCONNECT_H_ #define NITROWIFI_DEMOS_NETCONNECT_H_
#define NC_ERROR_TIMEOUT 1
#define NC_ERROR_INVALID_AP_CLASS 2
#define NC_ERROR_LINKDOWN 3
#ifdef __cplusplus #ifdef __cplusplus
extern "C" extern "C"
@ -25,7 +30,7 @@ extern "C"
#endif #endif
void NcGlobalInit(void); void NcGlobalInit(void);
void NcStart(const char* apClass); int NcStart(const char* apClass);
void NcFinish(void); void NcFinish(void);
void NcSetDevice(u8 deviceId); void NcSetDevice(u8 deviceId);
void* NcAlloc(u32 name, s32 size); void* NcAlloc(u32 name, s32 size);

View File

@ -3,6 +3,7 @@
#include "text.h" #include "text.h"
#define TAB_SIZE 8 #define TAB_SIZE 8
#define Y_LINE_VIRTUAL_MAX (Y_LINE_MAX*10)
/*****************************************************/ /*****************************************************/
static LINE_BUF *lb_free_ptr; static LINE_BUF *lb_free_ptr;
@ -125,7 +126,8 @@ static void init_text_buf(TEXT_BUF *tb)
tb->num_y = &y_size; tb->num_y = &y_size;
tb->num_x = &x_size; tb->num_x = &x_size;
tb->virtual_x = LINE_BUF_X_SIZE - X_LINE_MAX - 1; tb->virtual_x = LINE_BUF_X_SIZE - X_LINE_MAX - 1;
tb->virtual_y = Y_LINE_MAX * 4; // tb->virtual_y = Y_LINE_MAX * 4;
tb->virtual_y = Y_LINE_VIRTUAL_MAX;
tb->start = tb->cur = alloc_line_buf(); tb->start = tb->cur = alloc_line_buf();
tb->display_offset_y = 0; tb->display_offset_y = 0;
tb->display_offset_x = 0; tb->display_offset_x = 0;

View File

@ -24,7 +24,7 @@ SRCDIR = ../common/src ./src
SRCS = main.c mfiler.c key.c font.c text.c mprintf.c logprintf.c \ 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 \ gfx.c hwi.c mynvram.c my_fs_util.c \
hatamotolib.cpp miya_mcu.c \ hatamotolib.cpp miya_mcu.c error_report.c \
sitedefs.c wcm_control.c netconnect.c mywlan.c \ sitedefs.c wcm_control.c netconnect.c mywlan.c \
mynuc.c nuc_error_msg.c stream.c myfilename.c menu_version.c mynuc.c nuc_error_msg.c stream.c myfilename.c menu_version.c

View File

@ -19,7 +19,7 @@
#include "mprintf.h" #include "mprintf.h"
#include "logprintf.h" #include "logprintf.h"
#include "my_fs_util.h"
#ifdef SDK_DEBUG #ifdef SDK_DEBUG
#define ECDL_LOG(msg) OS_TPrintf("----\nECDL-LOG: %s\n----\n", msg); #define ECDL_LOG(msg) OS_TPrintf("----\nECDL-LOG: %s\n----\n", msg);
@ -32,6 +32,11 @@
#endif #endif
static BOOL log_active = FALSE;
static FSFile *log_fd;
static FSFile log_fd_real;
static void *Alloc(size_t size) static void *Alloc(size_t size)
{ {
@ -39,6 +44,7 @@ static void *Alloc(size_t size)
void* p = OS_Alloc(size); void* p = OS_Alloc(size);
if( p == NULL ) { if( p == NULL ) {
OS_TPrintf("Alloc error %s %d\n",__FUNCTION__,__LINE__); OS_TPrintf("Alloc error %s %d\n",__FUNCTION__,__LINE__);
mprintf("Alloc error %s %d\n",__FUNCTION__,__LINE__);
} }
OS_RestoreInterrupts(old); OS_RestoreInterrupts(old);
return p; return p;
@ -55,8 +61,21 @@ static void Free(void* ptr)
} }
static void* AllocForNHTTP(u32 size, int align) { SDK_ASSERT(align <= 32);(void)align; return Alloc(size); } static void* AllocForNHTTP(u32 size, int align)
static void* AllocForEC (u32 size, int align) { SDK_ASSERT(align <= 32);(void)align; return Alloc(size); } {
if(align <= 32) {
return Alloc(size);
}
return Alloc(size);
}
static void* AllocForEC(u32 size, int align)
{
if(align <= 32) {
return Alloc(size);
}
return NULL;
}
static void* AllocForNSSL (u32 size) { return Alloc(size); } static void* AllocForNSSL (u32 size) { return Alloc(size); }
static void* AllocForNAM (u32 size) { return Alloc(size); } static void* AllocForNAM (u32 size) { return Alloc(size); }
@ -80,17 +99,6 @@ static void* ReallocForNSSL(void* p, u32 size)
} }
static void PrintBytes(const void* pv, u32 size)
{
const u8* p = reinterpret_cast<const u8*>(pv);
for( u32 i = 0; i < size; i++ )
{
OS_TPrintf("%02X", p[i]);
}
}
struct StringMap struct StringMap
{ {
int value; int value;
@ -169,129 +177,27 @@ GetOSTWLRegionString(u8 x)
} }
void SetupUserInfo(void) BOOL SetupVerData(void)
{ {
BOOL bSuccess; BOOL bSuccess;
BOOL bModified = FALSE;
void* pWork;
// LCFG_ReadTWLSettings を行う前に LCFG_ReadHWSecureInfo が必要
{
bSuccess = LCFG_ReadHWSecureInfo();
SDK_ASSERT(bSuccess);
}
// 設定の読み込み
{
pWork = Alloc(LCFG_READ_TEMP);
SDK_POINTER_ASSERT(pWork);
bSuccess = LCFG_ReadTWLSettings(reinterpret_cast<u8 (*)[LCFG_READ_TEMP]>(pWork));
SDK_ASSERT(bSuccess);
Free(pWork);
}
{
// ニックネームが空なら適当に設定
if( *LCFG_TSD_GetNicknamePtr() == L'\0' )
{
LCFG_TSD_SetNickname(reinterpret_cast<const u16*>(L"ecdl"));
bModified = TRUE;
}
// 国が選択されていないなら適当に設定
if( LCFG_TSD_GetCountry() == LCFG_TWL_COUNTRY_UNDEFINED )
{
LCFG_TSD_SetCountry(LCFG_TWL_COUNTRY_JAPAN);
bModified = TRUE;
}
}
// 設定が変更されているなら書き出す
if( bModified )
{
pWork = Alloc(LCFG_WRITE_TEMP);
SDK_POINTER_ASSERT(pWork);
bSuccess = LCFG_WriteTWLSettings(reinterpret_cast<u8 (*)[LCFG_WRITE_TEMP]>(pWork));
SDK_ASSERT(bSuccess);
Free(pWork);
}
}
void SetupVerData(void)
{
BOOL bSuccess;
void* pWork = Alloc(NA_VERSION_DATA_WORK_SIZE); void* pWork = Alloc(NA_VERSION_DATA_WORK_SIZE);
SDK_POINTER_ASSERT(pWork); if( pWork == NULL ) {
miya_log_fprintf(log_fd, "%s Error memory alloc\n", __FUNCTION__);
return FALSE;
}
bSuccess = NA_LoadVersionDataArchive(pWork, NA_VERSION_DATA_WORK_SIZE); bSuccess = NA_LoadVersionDataArchive(pWork, NA_VERSION_DATA_WORK_SIZE);
return bSuccess;
SDK_ASSERT(bSuccess);
} }
void PrintDeviceInfo(void)
{
ESId deviceId;
u8 region;
u32 launcherInitialCode;
const u8* pSerial;
const u8* pMovable;
u32 movableLen1;
u32 movableLen2;
u64 fuseId;
char bmsDeviceId[32];
LCFG_ReadHWNormalInfo();
LCFG_ReadHWSecureInfo();
// region
region = LCFG_THW_GetRegion();
// launcher initial code
LCFG_THW_GetLauncherTitleID_Lo(reinterpret_cast<u8*>(&launcherInitialCode));
// ES Device ID
ES_GetDeviceId(&deviceId);
snprintf(bmsDeviceId, sizeof(bmsDeviceId), "%lld", ((0x3ull << 32) | deviceId));
// serial
pSerial = LCFG_THW_GetSerialNoPtr();
// movable id
pMovable = LCFG_THW_GetMovableUniqueIDPtr();
movableLen1 = LCFG_TWL_HWINFO_MOVABLE_UNIQUE_ID_LEN / 2;
movableLen2 = LCFG_TWL_HWINFO_MOVABLE_UNIQUE_ID_LEN - movableLen1;
// fuse id
fuseId = SCFG_ReadFuseData();
OS_TPrintf("Region: %-10s %08X\n", GetOSTWLRegionString(region), launcherInitialCode);
OS_TPrintf("DeviceID: %08X %u\n", deviceId, deviceId);
OS_TPrintf(" %s\n", bmsDeviceId);
OS_TPrintf("Serial: %s\n", pSerial);
OS_TPrintf("MovableID: "); PrintBytes(pMovable, movableLen1); OS_TPrintf("\n");
OS_TPrintf(" "); PrintBytes(pMovable + movableLen1, movableLen2); OS_TPrintf("\n");
OS_TPrintf("FuseID: %08X%08X\n", static_cast<u32>(fuseId >> 32), static_cast<u32>(fuseId));
}
void SetupTitlesDataFile(const NAMTitleId* pTitleIds, u32 numTitleIds) void SetupTitlesDataFile(const NAMTitleId* pTitleIds, u32 numTitleIds)
{ {
NAMTitleId tid; NAMTitleId tid;
// OS_TPrintf("%s %d num=%d\n",__FUNCTION__,__LINE__,numTitleIds);
for( u32 i = 0; i < numTitleIds; i++ ) for( u32 i = 0; i < numTitleIds; i++ )
{ {
tid = pTitleIds[i]; tid = pTitleIds[i];
// OS_TPrintf("%s %d 0x%016X\n",__FUNCTION__,__LINE__,(u64)tid);
NAM_SetupTitleDataFile(tid); NAM_SetupTitleDataFile(tid);
//OS_TPrintf("%s %d\n",__FUNCTION__,__LINE__);
} }
} }
@ -308,6 +214,8 @@ void DeleteECDirectory(void)
void SetupShopTitleId(void) void SetupShopTitleId(void)
{ {
// はたもとくんに確認->ショップのオールリージョンでOK
// *(u64 *)(HW_TWL_ROM_HEADER_BUF + 0x230) = 0x00030015 48-4E-46-41-ull;
*(u64 *)(HW_TWL_ROM_HEADER_BUF + 0x230) = 0x00030015484E4641ull; *(u64 *)(HW_TWL_ROM_HEADER_BUF + 0x230) = 0x00030015484E4641ull;
} }
@ -334,7 +242,8 @@ BOOL SetupNHTTP(void)
if (rv != NHTTP_ERROR_NONE) if (rv != NHTTP_ERROR_NONE)
{ {
OS_TPrintf("Failed to start NHTTP, rv=%d\n", rv); miya_log_fprintf(log_fd, "Failed to start NHTTP, rv=%d\n", rv);
mprintf("Failed to start NHTTP, rv=%d\n", rv);
return FALSE; return FALSE;
} }
return TRUE; return TRUE;
@ -386,7 +295,8 @@ LoadCert(void** ppCert, u32* pSize, const char* name)
bSuccess = FS_OpenFile(&f, path); bSuccess = FS_OpenFile(&f, path);
if( ! bSuccess ) if( ! bSuccess )
{ {
OS_TPrintf("Cannot open %s\n", path); miya_log_fprintf(log_fd, "Cannot open %s\n", path);
mprintf("Cannot open %s\n", path);
return FALSE; return FALSE;
} }
@ -394,14 +304,16 @@ LoadCert(void** ppCert, u32* pSize, const char* name)
pCert = OS_Alloc(certSize); pCert = OS_Alloc(certSize);
if ( pCert == NULL ) if ( pCert == NULL )
{ {
OS_TPrintf("Cannot allocate work memroy\n"); miya_log_fprintf(log_fd, "Cannot allocate work memroy\n");
mprintf("Cannot allocate work memroy\n");
return FALSE; return FALSE;
} }
readSize = FS_ReadFile(&f, pCert, static_cast<s32>(certSize)); readSize = FS_ReadFile(&f, pCert, static_cast<s32>(certSize));
if( readSize != certSize ) if( readSize != certSize )
{ {
OS_TPrintf("fail to read file\n"); miya_log_fprintf(log_fd, "%s fail to read file\n", __FUNCTION__);
mprintf("fail to read file\n");
return FALSE; return FALSE;
} }
@ -410,7 +322,8 @@ LoadCert(void** ppCert, u32* pSize, const char* name)
result = NA_DecodeVersionData(pCert, certSize, pCert, certSize); result = NA_DecodeVersionData(pCert, certSize, pCert, certSize);
if( result <= 0 ) if( result <= 0 )
{ {
OS_TPrintf("fail to decode version info %d\n", result); miya_log_fprintf(log_fd, "%s fail to decode version info %d\n",__FUNCTION__,result);
mprintf("fail to decode version info %d\n", result);
return FALSE; return FALSE;
} }
@ -442,8 +355,8 @@ BOOL SetupEC(void)
//#define EC_LOG_FINEST 6 //#define EC_LOG_FINEST 6
// logLevel = EC_LOG_FINEST; // logLevel = EC_LOG_FINEST;
logLevel = EC_LOG_FINE; // logLevel = EC_LOG_FINE;
// logLevel = EC_LOG_NONE; logLevel = EC_LOG_WARN;
LoadCert(&pClientCert, &clientCertSize, ".twl-nup-cert.der"); LoadCert(&pClientCert, &clientCertSize, ".twl-nup-cert.der");
LoadCert(&pClientKey, &clientKeySize, ".twl-nup-prvkey.der"); LoadCert(&pClientKey, &clientKeySize, ".twl-nup-prvkey.der");
@ -466,7 +379,8 @@ BOOL SetupEC(void)
rv = EC_Init(initArgs, nInitArgs); rv = EC_Init(initArgs, nInitArgs);
// SDK_ASSERTMSG(rv == EC_ERROR_OK, "Failed to initialize EC, rv=%d\n", rv); // SDK_ASSERTMSG(rv == EC_ERROR_OK, "Failed to initialize EC, rv=%d\n", rv);
if( rv != EC_ERROR_OK ) { if( rv != EC_ERROR_OK ) {
OS_TPrintf("Failed to initialize EC, rv=%d\n", rv); miya_log_fprintf(log_fd, "%s Failed to initialize EC, rv=%d\n",__FUNCTION__, rv);
mprintf("Failed to initialize EC, rv=%d\n", rv);
return FALSE; return FALSE;
} }
@ -475,7 +389,8 @@ BOOL SetupEC(void)
"https://cas.t.shop.nintendowifi.net/cas/services/CatalogingSOAP" ); "https://cas.t.shop.nintendowifi.net/cas/services/CatalogingSOAP" );
// SDK_ASSERTMSG(rv == EC_ERROR_OK, "Failed to EC_SetWebSvcUrls, rv=%d\n", rv); // SDK_ASSERTMSG(rv == EC_ERROR_OK, "Failed to EC_SetWebSvcUrls, rv=%d\n", rv);
if( rv != EC_ERROR_OK ) { if( rv != EC_ERROR_OK ) {
OS_TPrintf("Failed to EC_SetWebSvcUrls, rv=%d\n", rv); miya_log_fprintf(log_fd, "%s Failed to EC_SetWebSvcUrls, rv=%d\n", __FUNCTION__, rv);
mprintf("Failed to EC_SetWebSvcUrls, rv=%d\n", rv);
return FALSE; return FALSE;
} }
@ -483,7 +398,8 @@ BOOL SetupEC(void)
"http://ccs.t.shop.nintendowifi.net/ccs/download" ); "http://ccs.t.shop.nintendowifi.net/ccs/download" );
// SDK_ASSERTMSG(rv == EC_ERROR_OK, "Failed to EC_SetContentUrls, rv=%d\n", rv); // SDK_ASSERTMSG(rv == EC_ERROR_OK, "Failed to EC_SetContentUrls, rv=%d\n", rv);
if( rv != EC_ERROR_OK ) { if( rv != EC_ERROR_OK ) {
OS_TPrintf("Failed to EC_SetContentUrls, rv=%d\n", rv); miya_log_fprintf(log_fd, "%s Failed to EC_SetContentUrls, rv=%d\n",__FUNCTION__, rv);
mprintf("Failed to EC_SetContentUrls, rv=%d\n", rv);
return FALSE; return FALSE;
} }
@ -499,7 +415,8 @@ BOOL WaitEC(ECOpId opId)
if( opId < 0 ) if( opId < 0 )
{ {
OS_TPrintf("error %d %s\n", opId, GetECErrorString(opId)); miya_log_fprintf(log_fd, "%s WaitEC error %d %s\n", __FUNCTION__,opId, GetECErrorString(opId));
mprintf("WaitEC error %d %s\n", opId, GetECErrorString(opId));
return FALSE; return FALSE;
} }
@ -512,9 +429,10 @@ BOOL WaitEC(ECOpId opId)
{ {
if( result == EC_ERROR_NOT_ACTIVE ) if( result == EC_ERROR_NOT_ACTIVE )
{ {
OS_TPrintf("opId=%d\n", opId); miya_log_fprintf(log_fd, "%s opId=%d\n", __FUNCTION__, opId);
} }
OS_TPrintf("Failed to EC_GetProgress, result=%d %s\n", result, GetECErrorString(result)); miya_log_fprintf(log_fd, "%s Failed to EC_GetProgress, result=%d %s\n",
__FUNCTION__, result, GetECErrorString(result));
mprintf("EC_GetProgress failed %d\n %s\n", result, GetECErrorString(result)); mprintf("EC_GetProgress failed %d\n %s\n", result, GetECErrorString(result));
return FALSE; return FALSE;
} }
@ -556,14 +474,17 @@ static char CheckRegistration()
ECError ecError; ECError ecError;
ECDeviceInfo di; ECDeviceInfo di;
ECDL_LOG("check registeration"); //ECDL_LOG("check registeration");
progress = EC_CheckRegistration(); progress = EC_CheckRegistration();
if( FALSE == WaitEC(progress) ) { if( FALSE == WaitEC(progress) ) {
return '\0'; // ”÷­<E28093>E<EFBFBD>E return '\0'; // ”÷­<E28093>E<EFBFBD>E
} }
ecError = EC_GetDeviceInfo(&di); ecError = EC_GetDeviceInfo(&di);
SDK_ASSERT( ecError == EC_ERROR_OK ); // SDK_ASSERT( ecError == EC_ERROR_OK );
if( ecError != EC_ERROR_OK ) {
return '\0'; // 微妙・・
}
#ifdef SDK_DEBUG #ifdef SDK_DEBUG
#define ECDL_DI_FMT "%-30s" #define ECDL_DI_FMT "%-30s"
@ -607,22 +528,24 @@ static BOOL GetChallenge(char* challenge)
s32 progress; s32 progress;
ECError ecError; ECError ecError;
ECDL_LOG("get challenge"); //ECDL_LOG("get challenge");
progress = EC_SendChallengeReq(); progress = EC_SendChallengeReq();
if( FALSE == WaitEC(progress) ) { if( FALSE == WaitEC(progress) ) {
return FALSE; return FALSE;
} }
ecError = EC_GetChallengeResp(challenge); ecError = EC_GetChallengeResp(challenge);
SDK_ASSERT( ecError == EC_ERROR_OK ); if( ecError == EC_ERROR_OK ) {
return TRUE; return TRUE;
}
return FALSE;
} }
static BOOL SyncRegistration(const char* challenge) static BOOL SyncRegistration(const char* challenge)
{ {
s32 progress; s32 progress;
ECDL_LOG("sync registration"); // ECDL_LOG("sync registration");
progress = EC_SyncRegistration(challenge); progress = EC_SyncRegistration(challenge);
if( FALSE == WaitEC(progress) ) { if( FALSE == WaitEC(progress) ) {
return FALSE; return FALSE;
@ -634,7 +557,7 @@ static BOOL Register(const char* challenge)
{ {
s32 progress; s32 progress;
ECDL_LOG("register"); // ECDL_LOG("register");
progress = EC_Register(challenge, NULL, NULL); progress = EC_Register(challenge, NULL, NULL);
if( FALSE == WaitEC(progress) ) { if( FALSE == WaitEC(progress) ) {
return FALSE; return FALSE;
@ -646,7 +569,7 @@ static BOOL Transfer(const char* challenge)
{ {
s32 progress; s32 progress;
ECDL_LOG("transfer"); // ECDL_LOG("transfer");
progress = EC_Transfer(challenge); progress = EC_Transfer(challenge);
if( FALSE == WaitEC(progress) ) { if( FALSE == WaitEC(progress) ) {
return FALSE; return FALSE;
@ -658,7 +581,7 @@ static BOOL SyncTickets()
{ {
s32 progress; s32 progress;
ECDL_LOG("sync tickets"); // ECDL_LOG("sync tickets");
progress = EC_SyncTickets(EC_SYNC_TYPE_IMPORT_ALL); progress = EC_SyncTickets(EC_SYNC_TYPE_IMPORT_ALL);
if( FALSE == WaitEC(progress) ) { if( FALSE == WaitEC(progress) ) {
return FALSE; return FALSE;
@ -666,133 +589,211 @@ static BOOL SyncTickets()
return TRUE; return TRUE;
} }
static int a_to_int(char c)
{
if( ('a' <= c) && (c <= 'f') ) {
return (int)( c - 'a' + 10 );
}
else if( ('A' <= c) && (c <= 'F') ) {
return (int)( c - 'A' + 10 );
}
else if( ('0' <= c) && (c <= '9') ) {
return (int)( c - '0' );
}
return -1;
}
static BOOL Tid_To_GameCode(u64 tid, char *gcode)
{
u32 code;
char *str;
OS_TPrintf("tid = %016X\n",tid);
str = gcode;
code = (u32)(tid & 0xffffffff);
*str++ = (char)((code >> 24) & 0xff);
*str++ = (char)((code >> 16) & 0xff);
*str++ = (char)((code >> 8) & 0xff);
*str++ = (char)(code & 0xff);
return TRUE;
}
static BOOL DownloadTitles(const NAMTitleId* pTitleIds, u32 numTitleIds) static BOOL DownloadTitles(const NAMTitleId* pTitleIds, u32 numTitleIds)
{ {
s32 progress; s32 progress;
NAMTitleId tid;
BOOL ret_flag = TRUE;
// ECDL_LOG("download");
char game_code_buf[5];
ECDL_LOG("download"); for( u32 i = 0; i < numTitleIds; i++ ) {
for( u32 i = 0; i < numTitleIds; i++ ) tid = pTitleIds[i];
{
NAMTitleId tid = pTitleIds[i];
progress = EC_DownloadTitle(tid, EC_DT_UPDATE_REQUIRED_CONTENTS); progress = EC_DownloadTitle(tid, EC_DT_UPDATE_REQUIRED_CONTENTS);
// mprintf("-check registration.. ");
(void)Tid_To_GameCode((u64)tid, game_code_buf);
game_code_buf[4] = '\0';
mprintf(" downloading.. [%s] ", game_code_buf);
if( FALSE == WaitEC(progress) ) { if( FALSE == WaitEC(progress) ) {
return 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 download NG.\n",game_code_buf);
ret_flag = FALSE;
}
else {
m_set_palette(tc[0], M_TEXT_COLOR_GREEN ); /* green */
mprintf("OK.\n");
m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
miya_log_fprintf(log_fd, " %s download OK.\n",game_code_buf);
} }
} }
return TRUE; return ret_flag;
} }
BOOL ECDownload(const NAMTitleId* pTitleIds, u32 numTitleIds) BOOL ECDownload(const NAMTitleId* pTitleIds, u32 numTitleIds)
{ {
char challenge[EC_CHALLENGE_BUF_SIZE]; char challenge[EC_CHALLENGE_BUF_SIZE];
char status; char status;
BOOL ret_flag;
// mprintf("-CheckRegistration..\n"); mprintf("-check registration.. ");
miya_log_fprintf(log_fd, "-check registration...");
status = CheckRegistration(); status = CheckRegistration();
// U unregistered // U unregistered
// R registered // R registered
// P pending // P pending
// T transfered // T transfered
#if 0 if( status == '\0' ) {
SDK_ASSERTMSG(status != 'U', "acount not transfered yet."); miya_log_fprintf(log_fd, "NG.\n");
SDK_ASSERTMSG(status != 'R', "already registered. please delete acount."); m_set_palette(tc[0], M_TEXT_COLOR_RED );
SDK_ASSERTMSG( (status == 'P') || (status == 'T'), "invalid registration status '%c'", status ); mprintf("NG.\n");
#else m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
if( status == 'U') { mprintf(" my error.\n");
miya_log_fprintf(log_fd, " my error.\n");
return FALSE;
}
else if( status == 'U') {
miya_log_fprintf(log_fd, "NG.\n");
m_set_palette(tc[0], M_TEXT_COLOR_RED );
mprintf("NG.\n");
m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
mprintf(" acount not transfered yet.\n"); mprintf(" acount not transfered yet.\n");
miya_log_fprintf(log_fd, " acount not transfered yet.\n");
return FALSE; return FALSE;
} }
if( status == 'R') { else if( status == 'R') {
miya_log_fprintf(log_fd, "NG.\n");
m_set_palette(tc[0], M_TEXT_COLOR_RED );
mprintf("NG.\n");
m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
mprintf(" already registered. please delete acount.\n"); mprintf(" already registered. please delete acount.\n");
miya_log_fprintf(log_fd, " already registered. please delete acount.\n");
return FALSE; return FALSE;
} }
if( (status != 'P') && (status != 'T') ) { else if( (status != 'P') && (status != 'T') ) {
m_set_palette(tc[0], M_TEXT_COLOR_RED );
mprintf("NG.\n");
m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
mprintf(" invalid registration status '%c'\n", status ); mprintf(" invalid registration status '%c'\n", status );
miya_log_fprintf(log_fd, " invalid registration status '%c'\n", status );
return FALSE; return FALSE;
} }
// mprintf(" succeeded."); else {
#endif 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 );
}
miya_log_fprintf(log_fd, "-get challenge1..");
mprintf("-get challenge1 "); mprintf("-get challenge1 ");
if( FALSE == GetChallenge(challenge) ) { if( FALSE == GetChallenge(challenge) ) {
miya_log_fprintf(log_fd, "NG.\n");
m_set_palette(tc[0], M_TEXT_COLOR_RED ); m_set_palette(tc[0], M_TEXT_COLOR_RED );
mprintf("NG.\n"); mprintf("NG.\n");
m_set_palette(tc[0], M_TEXT_COLOR_WHITE ); m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
return FALSE; return FALSE;
} }
else { else {
miya_log_fprintf(log_fd, "OK.\n");
m_set_palette(tc[0], M_TEXT_COLOR_GREEN ); /* green */ m_set_palette(tc[0], M_TEXT_COLOR_GREEN ); /* green */
mprintf("OK.\n"); mprintf("OK.\n");
m_set_palette(tc[0], M_TEXT_COLOR_WHITE ); m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
} }
miya_log_fprintf(log_fd, "-transfer.. ");
mprintf("-transfer "); mprintf("-transfer ");
if( FALSE == Transfer(challenge) ) { if( FALSE == Transfer(challenge) ) {
miya_log_fprintf(log_fd, "NG.\n");
m_set_palette(tc[0], M_TEXT_COLOR_RED ); m_set_palette(tc[0], M_TEXT_COLOR_RED );
mprintf("NG.\n"); mprintf("NG.\n");
m_set_palette(tc[0], M_TEXT_COLOR_WHITE ); m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
return FALSE; return FALSE;
} }
else { else {
miya_log_fprintf(log_fd, "OK.\n");
m_set_palette(tc[0], M_TEXT_COLOR_GREEN ); /* green */ m_set_palette(tc[0], M_TEXT_COLOR_GREEN ); /* green */
mprintf("OK.\n"); mprintf("OK.\n");
m_set_palette(tc[0], M_TEXT_COLOR_WHITE ); m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
} }
miya_log_fprintf(log_fd, "-get challenge.. ");
mprintf("-get challenge2 "); mprintf("-get challenge2 ");
if( FALSE == GetChallenge(challenge) ) { if( FALSE == GetChallenge(challenge) ) {
miya_log_fprintf(log_fd, "NG.\n");
m_set_palette(tc[0], M_TEXT_COLOR_RED ); m_set_palette(tc[0], M_TEXT_COLOR_RED );
mprintf("NG.\n"); mprintf("NG.\n");
m_set_palette(tc[0], M_TEXT_COLOR_WHITE ); m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
return FALSE; return FALSE;
} }
else { else {
miya_log_fprintf(log_fd, "OK.\n");
m_set_palette(tc[0], M_TEXT_COLOR_GREEN ); /* green */ m_set_palette(tc[0], M_TEXT_COLOR_GREEN ); /* green */
mprintf("OK.\n"); mprintf("OK.\n");
m_set_palette(tc[0], M_TEXT_COLOR_WHITE ); m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
} }
miya_log_fprintf(log_fd, "-sync registration..");
mprintf("-sync registration "); mprintf("-sync registration ");
if( FALSE == SyncRegistration(challenge) ) { if( FALSE == SyncRegistration(challenge) ) {
miya_log_fprintf(log_fd, "NG.\n");
m_set_palette(tc[0], M_TEXT_COLOR_RED ); m_set_palette(tc[0], M_TEXT_COLOR_RED );
mprintf("NG.\n"); mprintf("NG.\n");
m_set_palette(tc[0], M_TEXT_COLOR_WHITE ); m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
return FALSE; return FALSE;
} }
else { else {
miya_log_fprintf(log_fd, "OK.\n");
m_set_palette(tc[0], M_TEXT_COLOR_GREEN ); /* green */ m_set_palette(tc[0], M_TEXT_COLOR_GREEN ); /* green */
mprintf("OK.\n"); mprintf("OK.\n");
m_set_palette(tc[0], M_TEXT_COLOR_WHITE ); m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
} }
miya_log_fprintf(log_fd, "-sync tickets..");
mprintf("-sync tickets "); mprintf("-sync tickets ");
if( FALSE == SyncTickets() ) { if( FALSE == SyncTickets() ) {
miya_log_fprintf(log_fd, "NG.\n");
m_set_palette(tc[0], M_TEXT_COLOR_RED ); m_set_palette(tc[0], M_TEXT_COLOR_RED );
mprintf("NG.\n"); mprintf("NG.\n");
m_set_palette(tc[0], M_TEXT_COLOR_WHITE ); m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
return FALSE; return FALSE;
} }
else { else {
miya_log_fprintf(log_fd, "OK.\n");
m_set_palette(tc[0], M_TEXT_COLOR_GREEN ); /* green */ m_set_palette(tc[0], M_TEXT_COLOR_GREEN ); /* green */
mprintf("OK.\n"); mprintf("OK.\n");
m_set_palette(tc[0], M_TEXT_COLOR_WHITE ); m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
} }
mprintf("-download titles "); // ここでアプリをダウンロードしている
if( FALSE == DownloadTitles(pTitleIds, numTitleIds) ) { miya_log_fprintf(log_fd, "-download titles\n");
m_set_palette(tc[0], M_TEXT_COLOR_RED ); mprintf("-download titles\n");
mprintf("NG.\n");
m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
return FALSE;
}
else {
m_set_palette(tc[0], M_TEXT_COLOR_GREEN ); /* green */
mprintf("OK.\n");
m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
}
return TRUE; ret_flag = DownloadTitles(pTitleIds, numTitleIds);
return ret_flag;
} }
@ -800,32 +801,36 @@ BOOL KPSClient()
{ {
s32 progress; s32 progress;
OS_TPrintf("generate key pair\n"); miya_log_fprintf(log_fd, "-generate key pair ..");
mprintf("-generate key pair "); mprintf("-generate key pair ");
progress = EC_GenerateKeyPair(); progress = EC_GenerateKeyPair();
if( FALSE == WaitEC(progress) ) { if( FALSE == WaitEC(progress) ) {
miya_log_fprintf(log_fd, "NG.\n");
m_set_palette(tc[0], M_TEXT_COLOR_RED ); m_set_palette(tc[0], M_TEXT_COLOR_RED );
mprintf("NG.\n"); mprintf("NG.\n");
m_set_palette(tc[0], M_TEXT_COLOR_WHITE ); m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
return FALSE; return FALSE;
} }
else { else {
miya_log_fprintf(log_fd, "OK.\n");
m_set_palette(tc[0], M_TEXT_COLOR_GREEN ); /* green */ m_set_palette(tc[0], M_TEXT_COLOR_GREEN ); /* green */
mprintf("OK.\n"); mprintf("OK.\n");
m_set_palette(tc[0], M_TEXT_COLOR_WHITE ); m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
} }
OS_TPrintf("confirm key pair\n"); miya_log_fprintf(log_fd, "-confirm key pair .. ");
mprintf("-confirm key pair "); mprintf("-confirm key pair ");
progress = EC_ConfirmKeyPair(); progress = EC_ConfirmKeyPair();
if( FALSE == WaitEC(progress) ) { if( FALSE == WaitEC(progress) ) {
miya_log_fprintf(log_fd, "NG.\n");
m_set_palette(tc[0], M_TEXT_COLOR_RED ); m_set_palette(tc[0], M_TEXT_COLOR_RED );
mprintf("NG.\n"); mprintf("NG.\n");
m_set_palette(tc[0], M_TEXT_COLOR_WHITE ); m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
return FALSE; return FALSE;
} }
else { else {
miya_log_fprintf(log_fd, "OK.\n");
m_set_palette(tc[0], M_TEXT_COLOR_GREEN ); /* green */ m_set_palette(tc[0], M_TEXT_COLOR_GREEN ); /* green */
mprintf("OK.\n"); mprintf("OK.\n");
m_set_palette(tc[0], M_TEXT_COLOR_WHITE ); m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
@ -836,3 +841,22 @@ BOOL KPSClient()
FSFile *hatamotolib_log_start(char *log_file_name )
{
log_fd = &log_fd_real;
log_active = Log_File_Open( log_fd, log_file_name );
if( !log_active ) {
log_fd = NULL;
}
miya_log_fprintf(log_fd, "%s START\n", __FUNCTION__);
return log_fd;
}
void hatamotolib_log_end(void)
{
miya_log_fprintf(log_fd, "%s END\n\n", __FUNCTION__);
if( log_active ) {
Log_File_Close(log_fd);
}
}

View File

@ -8,14 +8,15 @@ extern "C" {
void PrintDeviceInfo(void); void PrintDeviceInfo(void);
void SetupShopTitleId(void); void SetupShopTitleId(void);
void SetupUserInfo(void); void SetupUserInfo(void);
void SetupVerData(void); BOOL SetupVerData(void);
void SetupNSSL(void); void SetupNSSL(void);
BOOL SetupNHTTP(void); BOOL SetupNHTTP(void);
BOOL SetupEC(void); BOOL SetupEC(void);
void DeleteECDirectory(void); void DeleteECDirectory(void);
void SetupTitlesDataFile(const NAMTitleId* pTitleIds, u32 numTitleIds); void SetupTitlesDataFile(const NAMTitleId* pTitleIds, u32 numTitleIds);
FSFile *hatamotolib_log_start(char *log_file_name );
void hatamotolib_log_end(void);
BOOL hatamotolib_main(u64 *title_id_buf, u32 num_title);
#ifdef __cplusplus #ifdef __cplusplus
} }

File diff suppressed because it is too large Load Diff

View File

@ -173,6 +173,10 @@ int MFILER_ReadDir(MY_ENTRY_LIST **headp, const char *path_src)
} }
else if( STD_StrCmp(entry_src.longname, "..") == 0 ) { else if( STD_StrCmp(entry_src.longname, "..") == 0 ) {
} }
else if( STD_StrCmp(entry_src.longname, "wlan_cfg.txt") == 0 ) {
}
else if( STD_StrCmp(entry_src.longname, "nup_log.txt") == 0 ) {
}
else if( entry_src.attributes & FS_ATTRIBUTE_DOS_VOLUME ) { else if( entry_src.attributes & FS_ATTRIBUTE_DOS_VOLUME ) {
} }
else { else {

View File

@ -11,9 +11,17 @@
#include "text.h" #include "text.h"
#include "mprintf.h" #include "mprintf.h"
#include "logprintf.h"
#include "my_fs_util.h"
#define STRING_ANIM_CNT 20 #define STRING_ANIM_CNT 20
static BOOL log_active = FALSE;
static FSFile *log_fd;
static FSFile log_fd_real;
static volatile NetConnectState NetConnect = NET_CONNECT_NONE; static volatile NetConnectState NetConnect = NET_CONNECT_NONE;
// state管理 // state管理
@ -59,7 +67,10 @@ static void *alloc(u32 size, int align)
(void)OS_RestoreInterrupts( old ); (void)OS_RestoreInterrupts( old );
end: end:
SDK_ASSERT(((u32)ptr & (align - 1)) == 0); // SDK_ASSERT(((u32)ptr & (align - 1)) == 0);
if( ((u32)ptr & (align - 1)) != 0 ) {
return NULL;
}
return (void *) ptr; return (void *) ptr;
} }
@ -73,6 +84,7 @@ static void free(void *p)
Name: InitNupLib Name: InitNupLib
Description: NUCライブラリを開始します Description: NUCライブラリを開始します
*---------------------------------------------------------------------------*/ *---------------------------------------------------------------------------*/
BOOL InitNupLib() BOOL InitNupLib()
{ {
BOOL ret; BOOL ret;
@ -88,8 +100,10 @@ BOOL InitNupLib()
if (ret == FALSE) { if (ret == FALSE) {
// NUC_Init() failed, error code=34416 // NUC_Init() failed, error code=34416
OS_TPrintf("NUC_Init() failed, error code=%d\n", NUC_GetLastError()); miya_log_fprintf(log_fd, "NUC_Init() failed, error code=%d\n", NUC_GetLastError());
OS_TPrintf(" error type:%s\n", error_msg[ NUC_GetErrorType(NUC_GetLastError())] ); miya_log_fprintf(log_fd, " error type:%s\n", error_msg[ NUC_GetErrorType(NUC_GetLastError())] );
mprintf("NUC_Init() failed, error code=%d\n", NUC_GetLastError());
mprintf(" error type:%s\n", error_msg[ NUC_GetErrorType(NUC_GetLastError())] );
} }
return ret; return ret;
} }
@ -106,7 +120,8 @@ BOOL StartNupCheck(void)
ret = NUC_CheckAsync(TitleIds, &TitleIdNum); ret = NUC_CheckAsync(TitleIds, &TitleIdNum);
if (ret == FALSE) if (ret == FALSE)
{ {
OS_TPrintf("NUC_CheckAsync() failed, error code=%d\n", NUC_GetLastError()); miya_log_fprintf(log_fd, "NUC_CheckAsync() failed, error code=%d\n", NUC_GetLastError());
mprintf("NUC_CheckAsync() failed, error code=%d\n", NUC_GetLastError());
} }
return ret; return ret;
@ -126,7 +141,7 @@ NucStatus ProgressNupCheck(void)
if (status == NUC_STATUS_ERROR) if (status == NUC_STATUS_ERROR)
{ {
// NUC_GetProgress() failed in checking, error code=34303 // NUC_GetProgress() failed in checking, error code=34303
OS_TPrintf("NUC_GetProgress() failed in checking, error code=%d\n", NUC_GetLastError()); miya_log_fprintf(log_fd, "NUC_GetProgress() failed in checking, error code=%d\n", NUC_GetLastError());
mprintf("NUC_GetProgress() failed in checking\n error code=%d\n", NUC_GetLastError()); mprintf("NUC_GetProgress() failed in checking\n error code=%d\n", NUC_GetLastError());
} }
if (TestState.count++ % STRING_ANIM_CNT == 0) if (TestState.count++ % STRING_ANIM_CNT == 0)
@ -154,7 +169,8 @@ BOOL StartNupDownload(void)
if (ret == FALSE) if (ret == FALSE)
{ {
OS_TPrintf("NUP_DownloadAsync() failed, error code=%d\n", NUC_GetLastError()); miya_log_fprintf(log_fd, "NUP_DownloadAsync() failed, error code=%d\n", NUC_GetLastError());
mprintf("NUP_DownloadAsync() failed, error code=%d\n", NUC_GetLastError());
} }
return ret; return ret;
@ -173,7 +189,7 @@ NucStatus ProgressNupDownload(void)
if (status == NUC_STATUS_ERROR) if (status == NUC_STATUS_ERROR)
{ // エラー発生 { // エラー発生
// NUC_GetProgress() failed in checking, error code=34303 // NUC_GetProgress() failed in checking, error code=34303
OS_TPrintf("NUC_GetProgress() failed in download, error code=%d\n", NUC_GetLastError()); miya_log_fprintf(log_fd, "NUC_GetProgress() failed in download, error code=%d\n", NUC_GetLastError());
mprintf("\nNUC_GetProgress() failed\n in download\n error code=%d\n", NUC_GetLastError()); mprintf("\nNUC_GetProgress() failed\n in download\n error code=%d\n", NUC_GetLastError());
} }
@ -199,7 +215,8 @@ BOOL CleanNupLib(void)
BOOL ret = NUC_Cleanup(TitleIds, TitleIdNum); BOOL ret = NUC_Cleanup(TitleIds, TitleIdNum);
if (ret == FALSE) if (ret == FALSE)
{ {
OS_TPrintf("NUP_CleanUp() failed, error code=%d\n", NUC_GetLastError()); miya_log_fprintf(log_fd, "NUP_CleanUp() failed, error code=%d\n", NUC_GetLastError());
mprintf( "NUP_CleanUp() failed, error code=%d\n", NUC_GetLastError());
} }
return ret; return ret;
} }
@ -225,23 +242,20 @@ void ProgressNetConnect(void)
void ShowErrorMsg(int error_code) void ShowErrorMsg(int error_code)
{ {
mprintf("Error Occurred ");
if (error_code > 0) { if (error_code > 0) {
mprintf("Error Code:%d", error_code); mprintf("Error Code:%d", error_code);
mprintf("%s", GetPublicMsg(error_code)); mprintf(" %s\n", GetPublicMsg(error_code));
mprintf("%s", GetPrivateMsg(error_code)); mprintf(" %s\n", GetPrivateMsg(error_code));
OS_TPrintf( "Error Code:%d\n", error_code); miya_log_fprintf(log_fd, "Error Code:%d\n", error_code);
OS_TPrintf( "%s\n", GetPublicMsg(error_code)); miya_log_fprintf(log_fd, "%s\n", GetPublicMsg(error_code));
OS_TPrintf( "%s\n", GetPrivateMsg(error_code)); miya_log_fprintf(log_fd, "%s\n", GetPrivateMsg(error_code));
} }
else else
{ {
OS_TPrintf( "%s\n", "Network Error occurred.\nTry again later."); miya_log_fprintf(log_fd, "%s\n", "Network Error occurred.\nTry again later.");
// ネットワークエラー時の表示メッセージ(暫定) // ネットワークエラー時の表示メッセージ(暫定)
mprintf( "%s", "Network Error occurred.\nTry again later."); mprintf( "%s", "Network Error occurred.\nTry again later.\n");
} }
} }
@ -259,6 +273,7 @@ BOOL my_numc_proc(void)
switch ( TestState.state ) { switch ( TestState.state ) {
case PHASE_NUP_BREAK: case PHASE_NUP_BREAK:
mprintf("NUP Initialize\n"); mprintf("NUP Initialize\n");
miya_log_fprintf(log_fd, "NUP Initialize\n");
ret = InitNupLib(); ret = InitNupLib();
if (ret == FALSE) if (ret == FALSE)
{ // エラー発生 { // エラー発生
@ -273,6 +288,7 @@ BOOL my_numc_proc(void)
case PHASE_NUP_READY: // 更新情報の取得を開始します。 case PHASE_NUP_READY: // 更新情報の取得を開始します。
mprintf("NUP Check\n"); mprintf("NUP Check\n");
miya_log_fprintf(log_fd, "NUP Check\n");
ret = StartNupCheck(); ret = StartNupCheck();
if (ret == FALSE) if (ret == FALSE)
{ // エラー発生 { // エラー発生
@ -290,17 +306,19 @@ BOOL my_numc_proc(void)
if (status == NUC_STATUS_ERROR) if (status == NUC_STATUS_ERROR)
{ // エラー発生 { // エラー発生
mprintf("\n"); mprintf("\n");
miya_log_fprintf(log_fd, "\n");
ChangeState(PHASE_NUP_CLEANUP); ChangeState(PHASE_NUP_CLEANUP);
error_code = NUC_GetLastError(); error_code = NUC_GetLastError();
} }
else if (status == NUC_STATUS_COMPLETED) else if (status == NUC_STATUS_COMPLETED)
{ // 更新リスト 取得終了 { // 更新リスト 取得終了
mprintf("\n"); mprintf("\n");
miya_log_fprintf(log_fd, "\n");
if (TitleIdNum > 0 ) if (TitleIdNum > 0 )
{ // ダウンロードへ { // ダウンロードへ
int i; int i;
for (i = 0; i < TitleIdNum; i++) { for (i = 0; i < TitleIdNum; i++) {
OS_TPrintf("DL list:%3d:0x%llx\n", i, TitleIds[i]); miya_log_fprintf(log_fd, "DL list:%3d:0x%llx\n", i, TitleIds[i]);
mprintf("DL list:%3d:0x%llx\n", i, TitleIds[i]); mprintf("DL list:%3d:0x%llx\n", i, TitleIds[i]);
} }
ChangeState(PHASE_NUP_DOWNLOAD); ChangeState(PHASE_NUP_DOWNLOAD);
@ -308,6 +326,7 @@ BOOL my_numc_proc(void)
else else
{ // 更新すべきものがない { // 更新すべきものがない
mprintf("No title to update\n"); mprintf("No title to update\n");
miya_log_fprintf(log_fd, "No title to update\n");
ChangeState(PHASE_NUP_CLEANUP); ChangeState(PHASE_NUP_CLEANUP);
} }
} }
@ -315,6 +334,7 @@ BOOL my_numc_proc(void)
case PHASE_NUP_DOWNLOAD: // ダウンロードを開始します。 case PHASE_NUP_DOWNLOAD: // ダウンロードを開始します。
mprintf("NUP Download\n"); mprintf("NUP Download\n");
miya_log_fprintf(log_fd, "NUP Download\n");
ret = StartNupDownload(); ret = StartNupDownload();
if (ret == FALSE) if (ret == FALSE)
{ // エラー発生 { // エラー発生
@ -332,21 +352,22 @@ BOOL my_numc_proc(void)
if (status == NUC_STATUS_ERROR) if (status == NUC_STATUS_ERROR)
{ // エラー発生 { // エラー発生
mprintf("\n"); mprintf("\n");
miya_log_fprintf(log_fd, "\n");
ChangeState(PHASE_NUP_CLEANUP); ChangeState(PHASE_NUP_CLEANUP);
error_code = NUC_GetLastError(); error_code = NUC_GetLastError();
} }
else if (status == NUC_STATUS_COMPLETED) else if (status == NUC_STATUS_COMPLETED)
{ // ダウンロード完了 { // ダウンロード完了
mprintf("\n"); mprintf("\n");
miya_log_fprintf(log_fd, "\n");
ChangeState(PHASE_NUP_CLEANUP); ChangeState(PHASE_NUP_CLEANUP);
} }
break; break;
case PHASE_NUP_CLEANUP: // NUPライブラリのクリーンアップ case PHASE_NUP_CLEANUP: // NUPライブラリのクリーンアップ
mprintf("NUP Cleanup\n"); mprintf("NUP Cleanup\n");
miya_log_fprintf(log_fd, "NUP Cleanup\n");
ret = CleanNupLib(); ret = CleanNupLib();
OS_TPrintf("%s %d\n",__FUNCTION__,__LINE__);
if (ret == FALSE && error_code == 0) if (ret == FALSE && error_code == 0)
{ // 他でエラーが起こっていない場合のみ上書きします。 { // 他でエラーが起こっていない場合のみ上書きします。
error_code = NUC_GetLastError(); error_code = NUC_GetLastError();
@ -358,11 +379,11 @@ BOOL my_numc_proc(void)
case PHASE_FINISHED: // ネットワークアップデートが正常終了しました。 case PHASE_FINISHED: // ネットワークアップデートが正常終了しました。
if( error_code == 0 ) { if( error_code == 0 ) {
if (TitleIdNum > 0) { if (TitleIdNum > 0) {
OS_TPrintf("%d file is updated\n", TitleIdNum); miya_log_fprintf(log_fd, "%d file is updated\n", TitleIdNum);
mprintf("%d file is updated\n", TitleIdNum); mprintf("%d file is updated\n", TitleIdNum);
} }
else { else {
OS_TPrintf("Nothing is updated\n"); miya_log_fprintf(log_fd, "Nothing is updated\n");
mprintf("Nothing is updated\n"); mprintf("Nothing is updated\n");
} }
} }
@ -388,3 +409,21 @@ BOOL my_numc_proc(void)
} }
FSFile *my_nuc_log_start(char *log_file_name )
{
log_fd = &log_fd_real;
log_active = Log_File_Open( log_fd, log_file_name );
if( !log_active ) {
log_fd = NULL;
}
miya_log_fprintf(log_fd, "%s START\n", __FUNCTION__);
return log_fd;
}
void my_nuc_log_end(void)
{
miya_log_fprintf(log_fd, "%s END\n\n", __FUNCTION__);
if( log_active ) {
Log_File_Close(log_fd);
}
}

View File

@ -47,6 +47,9 @@ BOOL CleanNupLib(void);
void ProgressNetConnect(void); void ProgressNetConnect(void);
void ShowErrorMsg(int error_code); void ShowErrorMsg(int error_code);
BOOL my_numc_proc(void); BOOL my_numc_proc(void);
FSFile *my_nuc_log_start(char *log_file_name );
void my_nuc_log_end(void);
#ifdef __cplusplus #ifdef __cplusplus
} }

View File

@ -23,7 +23,7 @@ TWL_ARCHGEN := LIMITED
SRCDIR = ../common/src ./src SRCDIR = ../common/src ./src
SRCS = main.c key.c font.c text.c mprintf.c logprintf.c \ SRCS = main.c key.c font.c text.c mprintf.c logprintf.c \
gfx.c hwi.c mynvram.c my_fs_util.c miya_mcu.c \ gfx.c hwi.c mynvram.c my_fs_util.c miya_mcu.c error_report.c \
sitedefs.c wcm_control.c netconnect.c mywlan.c \ sitedefs.c wcm_control.c netconnect.c mywlan.c \
stream.c myfilename.c menu_version.c stream.c myfilename.c menu_version.c

View File

@ -33,6 +33,7 @@
#include "mydata.h" #include "mydata.h"
#include "nuc.h" #include "nuc.h"
#include "miya_mcu.h" #include "miya_mcu.h"
#include "error_report.h"
#include "myfilename.h" #include "myfilename.h"
#include "menu_version.h" #include "menu_version.h"
@ -43,6 +44,7 @@
static BOOL completed_flag = FALSE; static BOOL completed_flag = FALSE;
static FSEventHook sSDHook; static FSEventHook sSDHook;
static BOOL sd_card_flag = FALSE; static BOOL sd_card_flag = FALSE;
static int miya_debug_level = 0;
static void SDEvents(void *userdata, FSEvent event, void *arg) static void SDEvents(void *userdata, FSEvent event, void *arg)
@ -130,11 +132,13 @@ static BOOL SDBackupToSDCard2(void)
m_set_palette(tc[0], M_TEXT_COLOR_GREEN ); /* green */ m_set_palette(tc[0], M_TEXT_COLOR_GREEN ); /* green */
mprintf("OK.\n"); mprintf("OK.\n");
m_set_palette(tc[0], M_TEXT_COLOR_WHITE ); m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
mydata.wireless_lan_param_flag = TRUE;
} }
else { else {
m_set_palette(tc[0], M_TEXT_COLOR_RED ); m_set_palette(tc[0], M_TEXT_COLOR_RED );
mprintf("NG.\n"); mprintf("NG.\n");
m_set_palette(tc[0], M_TEXT_COLOR_WHITE ); m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
mydata.wireless_lan_param_flag = FALSE;
return FALSE; return FALSE;
} }
return TRUE; return TRUE;
@ -149,11 +153,13 @@ static BOOL SDBackupToSDCard3(void)
m_set_palette(tc[0], M_TEXT_COLOR_GREEN ); /* green */ m_set_palette(tc[0], M_TEXT_COLOR_GREEN ); /* green */
mprintf("OK.\n"); mprintf("OK.\n");
m_set_palette(tc[0], M_TEXT_COLOR_WHITE ); m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
mydata.user_settings_flag = TRUE;
} }
else { else {
m_set_palette(tc[0], M_TEXT_COLOR_RED ); m_set_palette(tc[0], M_TEXT_COLOR_RED );
mprintf("NG.\n"); mprintf("NG.\n");
m_set_palette(tc[0], M_TEXT_COLOR_WHITE ); m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
mydata.user_settings_flag = FALSE;
return FALSE; return FALSE;
} }
return TRUE; return TRUE;
@ -163,66 +169,137 @@ static BOOL SDBackupToSDCard4(void)
{ {
MY_DIR_ENTRY_LIST *dir_entry_list_head = NULL; MY_DIR_ENTRY_LIST *dir_entry_list_head = NULL;
int save_dir_info = 0; int save_dir_info = 0;
BOOL ret_flag = TRUE;
int list_count;
int error_count;
/* /*
nand:/shared2ディレクトリまわりの保存 nand:/shared2ディレクトリまわりの保存
nand:/shared2/* nand:/shared2/*
*/ */
Error_Report_Init();
mprintf("App. shared files backup "); mprintf("App. shared files backup ");
if( 0 == copy_r( &dir_entry_list_head, MyFile_GetAppSharedSaveDirName() , if( 0 == copy_r( &dir_entry_list_head, MyFile_GetAppSharedSaveDirName() ,
"nand:/shared2" , MyFile_GetAppSharedLogFileName(), 0) ) { "nand:/shared2" , MyFile_GetAppSharedLogFileName(), 0) ) {
// PrintDirEntryListBackward( dir_entry_list_head, NULL ); // PrintDirEntryListBackward( dir_entry_list_head, NULL );
mydata.num_of_shared2_files = SaveDirEntryList( dir_entry_list_head, MyFile_GetAppSharedListFileName() ); if( TRUE == SaveDirEntryList( dir_entry_list_head, MyFile_GetAppSharedListFileName(),
m_set_palette(tc[0], 0x2); /* green */ &list_count, &error_count, MyFile_GetAppSharedSaveLogFileName()) ) {
mprintf("OK.\n"); mydata.num_of_shared2_files = list_count;
m_set_palette(tc[0], 0xF); /* white */ mydata.num_of_error_shared2_files = error_count;
if( error_count == 0 ) {
m_set_palette(tc[0], M_TEXT_COLOR_GREEN ); /* green */
mprintf("OK.\n");
m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
}
else {
ret_flag = FALSE;
}
}
else {
mydata.num_of_shared2_files = -1; /* failed */
mydata.num_of_error_shared2_files = -1;
ret_flag = FALSE;
}
} }
else { else {
mydata.num_of_shared2_files = -1; /* failed */
mydata.num_of_error_shared2_files = -1;
ret_flag = FALSE;
}
if( ret_flag == FALSE ) {
m_set_palette(tc[0], M_TEXT_COLOR_RED ); m_set_palette(tc[0], M_TEXT_COLOR_RED );
mprintf("NG.\n"); mprintf("NG.\n");
m_set_palette(tc[0], M_TEXT_COLOR_WHITE ); m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
return FALSE;
} }
(void)ClearDirEntryList( &dir_entry_list_head ); (void)ClearDirEntryList( &dir_entry_list_head );
return TRUE; if( TRUE == Error_Report_Display(tc[0]) ) {
mprintf("\n");
}
Error_Report_End();
return ret_flag;
} }
static BOOL SDBackupToSDCard5(void) static BOOL SDBackupToSDCard5(void)
{ {
MY_DIR_ENTRY_LIST *dir_entry_list_head = NULL; MY_DIR_ENTRY_LIST *dir_entry_list_head = NULL;
int save_dir_info = 0; int save_dir_info = 0;
BOOL ret_flag = TRUE;
int list_count;
int error_count;
/* /*
nand2:/photoディレクトリまわりの保存 nand2:/photoディレクトリまわりの保存
JPEGファイル JPEGファイル
nand2:/photo/*.* nand2:/photo/*.*
*/ */
Error_Report_Init();
mprintf("Photo files backup "); mprintf("Photo files backup ");
if( 0 == copy_r( &dir_entry_list_head, MyFile_GetPhotoSaveDirName() , if( 0 == copy_r( &dir_entry_list_head, MyFile_GetPhotoSaveDirName() ,
"nand2:/photo" , MyFile_GetPhotoLogFileName(),0 ) ) { "nand2:/photo" , MyFile_GetPhotoLogFileName(),0 ) ) {
// PrintDirEntryListBackward( dir_entry_list_head, NULL ); // PrintDirEntryListBackward( dir_entry_list_head, NULL );
mydata.num_of_photo_files = SaveDirEntryList( dir_entry_list_head, MyFile_GetPhotoListFileName() ); if( TRUE == SaveDirEntryList( dir_entry_list_head, MyFile_GetPhotoListFileName(),
m_set_palette(tc[0], M_TEXT_COLOR_GREEN ); /* green */ &list_count, &error_count, MyFile_GetPhotoSaveLogFileName() ) ) {
mprintf("OK.\n"); mydata.num_of_photo_files = list_count;
m_set_palette(tc[0], M_TEXT_COLOR_WHITE ); mydata.num_of_error_photo_files = error_count;
if( error_count > 0 ) {
ret_flag = FALSE;
}
}
else {
mydata.num_of_photo_files = -1; /* failed */
mydata.num_of_error_photo_files = -1; /* failed */
ret_flag = FALSE;
}
} }
else { else {
mydata.num_of_photo_files = -1; /* failed */
mydata.num_of_error_photo_files = -1; /* failed */
ret_flag = FALSE;
}
if( ret_flag == FALSE ) {
m_set_palette(tc[0], M_TEXT_COLOR_RED ); m_set_palette(tc[0], M_TEXT_COLOR_RED );
mprintf("NG.\n"); mprintf("NG.\n");
m_set_palette(tc[0], M_TEXT_COLOR_WHITE ); m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
return FALSE; }
else {
m_set_palette(tc[0], 0x2); /* green */
mprintf("OK.\n");
m_set_palette(tc[0], 0xF); /* white */
} }
(void)ClearDirEntryList( &dir_entry_list_head ); (void)ClearDirEntryList( &dir_entry_list_head );
if( TRUE == Error_Report_Display(tc[0]) ) {
mprintf("\n");
}
Error_Report_End();
return TRUE;
return ret_flag;
} }
static BOOL SDBackupToSDCard6(void) static BOOL SDBackupToSDCard6(void)
{ {
MY_DIR_ENTRY_LIST *dir_entry_list_head = NULL; MY_DIR_ENTRY_LIST *dir_entry_list_head = NULL;
int save_dir_info = 0; int save_dir_info = 0;
BOOL ret_flag = TRUE;
int list_count;
int error_count;
Error_Report_Init();
/* nand:/ticketはチケット同期でうまいこと合わせてくれるんでバックアップ不要 */ /* nand:/ticketはチケット同期でうまいこと合わせてくれるんでバックアップ不要 */
@ -232,10 +309,34 @@ static BOOL SDBackupToSDCard6(void)
*/ */
mprintf("App. save data backup "); mprintf("App. save data backup ");
if( 0 == find_title_save_data( &dir_entry_list_head, MyFile_GetAppDataSaveDirName(), "nand:/title", if( 0 == find_title_save_data( &dir_entry_list_head, MyFile_GetSaveDataSaveDirName(), "nand:/title",
&save_dir_info, MyFile_GetAppDataLogFileName(),0 ) ) { &save_dir_info, MyFile_GetSaveDataLogFileName(),0 ) ) {
// PrintDirEntryListBackward( dir_entry_list_head, NULL ); // PrintDirEntryListBackward( dir_entry_list_head, NULL );
mydata.num_of_app_save_data = SaveDirEntryList( dir_entry_list_head , MyFile_GetAppDataListFileName() ); // mydata.num_of_app_save_data = SaveDirEntryList( dir_entry_list_head ,
// mydata.num_of_app_save_data =
if( TRUE == SaveDirEntryList( dir_entry_list_head , MyFile_GetSaveDataListFileName(),
&list_count, &error_count, MyFile_GetSaveDataSaveLogFileName() ) ) {
mydata.num_of_app_save_data = list_count;
mydata.num_of_error_app_save_data = error_count;
if( error_count > 0 ) {
ret_flag = FALSE;
}
}
else {
mydata.num_of_app_save_data = -1;
mydata.num_of_error_app_save_data = -1;
ret_flag = FALSE;
}
}
else {
mydata.num_of_app_save_data = -1;
mydata.num_of_error_app_save_data = -1;
ret_flag = FALSE;
}
if( ret_flag == TRUE ) {
m_set_palette(tc[0], M_TEXT_COLOR_GREEN ); /* green */ m_set_palette(tc[0], M_TEXT_COLOR_GREEN ); /* green */
mprintf("OK.\n"); mprintf("OK.\n");
m_set_palette(tc[0], M_TEXT_COLOR_WHITE ); m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
@ -244,12 +345,17 @@ static BOOL SDBackupToSDCard6(void)
m_set_palette(tc[0], M_TEXT_COLOR_RED ); m_set_palette(tc[0], M_TEXT_COLOR_RED );
mprintf("NG.\n"); mprintf("NG.\n");
m_set_palette(tc[0], M_TEXT_COLOR_WHITE ); m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
return FALSE;
} }
(void)ClearDirEntryList( &dir_entry_list_head ); (void)ClearDirEntryList( &dir_entry_list_head );
return TRUE; if( TRUE == Error_Report_Display(tc[0]) ) {
mprintf("\n");
}
Error_Report_End();
return ret_flag;
} }
static BOOL SDBackupToSDCard7(void) static BOOL SDBackupToSDCard7(void)
@ -285,51 +391,58 @@ static BOOL SDBackupToSDCard7(void)
| |
*/ */
Error_Report_Init();
OS_TPrintf("User title list backup \n"); OS_TPrintf("User title list backup \n");
mprintf("User title list backup "); mprintf("User title list backup ");
if( 0 == get_title_id( &dir_entry_list_head, "nand:/title", &save_dir_info, if( 0 == get_title_id( &dir_entry_list_head, "nand:/title", &save_dir_info,
MyFile_GetDownloadTitleIDLogFileName(), 0 ) ) { MyFile_GetDownloadTitleIDLogFileName(), 0 ) ) {
GetDirEntryList( dir_entry_list_head, &pBuffer, &count); flag = GetUserAppTitleList( dir_entry_list_head, &pBuffer, &count,
MyFile_GetUserAppTitleListLogFileName()) ;
ptr = pBuffer; if( TRUE == flag ) {
mydata.num_of_user_download_app = count; ptr = pBuffer;
mydata.num_of_user_download_app = count;
mydata.num_of_error_user_download_app = 0;
if( ptr != NULL && count != 0 ) { if( ptr != NULL && count != 0 ) {
for( j = 0 ; j < count ; j++ ) { for( j = 0 ; j < count ; j++ ) {
OS_TPrintf("No. %d 0x%016llx\n",j,*ptr); OS_TPrintf("No. %d 0x%016llx\n",j,*ptr);
mfprintf(tc[2],"No. %d 0x%016llx\n",j,*ptr); mfprintf(tc[2],"No. %d 0x%016llx\n",j,*ptr);
ptr++; ptr++;
}
} }
}
PrintSrcDirEntryListBackward( dir_entry_list_head, NULL );
if( TRUE == TitleIDSave( MyFile_GetDownloadTitleIDFileName(), pBuffer, count, NULL) ) { // PrintSrcDirEntryListBackward( dir_entry_list_head, NULL );
//MyFile_GetDownloadTitleIDLogFileName() flag = TitleIDSave( MyFile_GetDownloadTitleIDFileName(),
m_set_palette(tc[0], M_TEXT_COLOR_GREEN ); /* green */ pBuffer, count, MyFile_GetDownloadTitleIDSaveLogFileName());
mprintf("OK.\n");
m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
}
else {
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 ) { if( pBuffer ) {
OS_Free(pBuffer); OS_Free(pBuffer);
} }
} }
if( flag == TRUE ) {
m_set_palette(tc[0], M_TEXT_COLOR_GREEN ); /* green */
mprintf("OK.\n");
m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
}
else { else {
m_set_palette(tc[0], 0x1); /* red */ m_set_palette(tc[0], 0x1); /* red */
mprintf("NG.(get ids)\n"); mprintf("NG.\n");
m_set_palette(tc[0], M_TEXT_COLOR_WHITE ); m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
flag = FALSE; mydata.num_of_user_download_app = -1; /* failed */
// return FALSE; mydata.num_of_error_user_download_app = -1;
} }
(void)ClearDirEntryList( &dir_entry_list_head ); (void)ClearDirEntryList( &dir_entry_list_head );
if( TRUE == Error_Report_Display(tc[0]) ) {
mprintf("\n");
}
Error_Report_End();
return flag; return flag;
} }
@ -338,7 +451,6 @@ static BOOL SDBackupToSDCard8(void)
RTCDate rtc_date; RTCDate rtc_date;
RTCTime rtc_time; RTCTime rtc_time;
/* オリジナルのデータのバックアップ */ /* オリジナルのデータのバックアップ */
if( RTC_RESULT_SUCCESS != RTC_GetDate( &rtc_date ) ) { if( RTC_RESULT_SUCCESS != RTC_GetDate( &rtc_date ) ) {
mprintf("rtc read date error.\n"); mprintf("rtc read date error.\n");
@ -361,6 +473,7 @@ static BOOL SDBackupToSDCard8(void)
LCFG_TWL_HWINFO_MOVABLE_UNIQUE_ID_LEN ); LCFG_TWL_HWINFO_MOVABLE_UNIQUE_ID_LEN );
mprintf("Personal data backup "); mprintf("Personal data backup ");
/* こいつはフラグを立てられない、セーブできない。あたりまえ */
if( TRUE == MydataSaveEncrypt( MyFile_GetGlobalInformationFileName(), (void *)&mydata, sizeof(MyData), NULL) ) { if( TRUE == MydataSaveEncrypt( MyFile_GetGlobalInformationFileName(), (void *)&mydata, sizeof(MyData), NULL) ) {
m_set_palette(tc[0], M_TEXT_COLOR_GREEN ); /* green */ m_set_palette(tc[0], M_TEXT_COLOR_GREEN ); /* green */
mprintf("OK.\n"); mprintf("OK.\n");
@ -659,12 +772,14 @@ void TwlMain(void)
mydata.volume = (s32)MCU_GetVolume(); mydata.volume = (s32)MCU_GetVolume();
mydata.backlight_brightness = (s32)MCU_GetBackLightBrightness(); mydata.backlight_brightness = (s32)MCU_GetBackLightBrightness();
#if 0 /* いらないらしい */
OS_TPrintf("vol = %d\n",mydata.volume ); OS_TPrintf("vol = %d\n",mydata.volume );
OS_TPrintf("bright = %d\n", mydata.backlight_brightness); OS_TPrintf("bright = %d\n", mydata.backlight_brightness);
MCU_SetVolume( (u8)31 ); MCU_SetVolume( (u8)31 );
MCU_SetBackLightBrightness( (u8)4 ); MCU_SetBackLightBrightness( (u8)4 );
#endif
// static inline BOOL MCU_SetVolume( u8 volume ) // static inline BOOL MCU_SetVolume( u8 volume )
// static inline BOOL MCU_SetBackLightBrightness( u8 brightness ) // static inline BOOL MCU_SetBackLightBrightness( u8 brightness )
@ -740,7 +855,7 @@ void TwlMain(void)
} }
#endif #endif
} }
else if ( keyData & PAD_BUTTON_A ) { else if ( keyData & (PAD_BUTTON_A | PAD_BUTTON_START) ) {
/* ユーザーデータ吸出しモード */ /* ユーザーデータ吸出しモード */
if(completed_flag == FALSE ) { if(completed_flag == FALSE ) {
if( sd_card_flag == TRUE ) { if( sd_card_flag == TRUE ) {
@ -757,9 +872,22 @@ void TwlMain(void)
} }
} }
else if ( keyData & PAD_BUTTON_B ) { else if ( keyData & PAD_BUTTON_B ) {
miya_debug_level++;
miya_debug_level &= 1;
if( miya_debug_level ) {
Miya_debug_ON();
mprintf("debug ON\n");
}
else {
Miya_debug_OFF();
mprintf("debug OFF\n");
}
} }
#if 0
/* スタートボタンはAボタンと同じ扱い */
else if ( keyData & PAD_BUTTON_START ) { else if ( keyData & PAD_BUTTON_START ) {
} }
#endif
else if ( keyData & PAD_BUTTON_SELECT ) { else if ( keyData & PAD_BUTTON_SELECT ) {
} }
else if ( keyData & PAD_BUTTON_X ) { else if ( keyData & PAD_BUTTON_X ) {

View File

@ -81,10 +81,13 @@ static s32 CheckCorrectNCD(NVRAMConfig* ncdsp);
static void VBlankIntr(void); static void VBlankIntr(void);
#define MIYA_MCU_FREE_REG_NO 1 #define MIYA_MCU_FREE_REG_NO 1
#if 0
#define MIYA_MCU_FREE_REG_CODE 0x55 #define MIYA_MCU_FREE_REG_CODE 0x55
static u8 miya_mcu_free_register = 0x66; static u8 miya_mcu_free_register = 0x66;
#endif
static void miya_mcu_free_reg_send_pxi_data(u32 data) static void miya_mcu_free_reg_send_pxi_data(u32 data)
{ {
@ -98,6 +101,7 @@ static void miya_mcu_free_reg_send_pxi_data(u32 data)
#define MIYA_MCU_COMMAND_GET_BRIGHTNESS 3 #define MIYA_MCU_COMMAND_GET_BRIGHTNESS 3
#define MIYA_MCU_COMMAND_SET_VOLUME 4 #define MIYA_MCU_COMMAND_SET_VOLUME 4
#define MIYA_MCU_COMMAND_SET_BRIGHTNESS 5 #define MIYA_MCU_COMMAND_SET_BRIGHTNESS 5
#define MIYA_MCU_COMMAND_SET_FREE_REG 6
static void miya_mcu_free_reg_pxi_callback(PXIFifoTag tag, u32 data, BOOL err) static void miya_mcu_free_reg_pxi_callback(PXIFifoTag tag, u32 data, BOOL err)
{ {
@ -106,8 +110,12 @@ static void miya_mcu_free_reg_pxi_callback(PXIFifoTag tag, u32 data, BOOL err)
switch( (data & 0xf) ) { switch( (data & 0xf) ) {
case MIYA_MCU_COMMAND_GET_FREE_REG: case MIYA_MCU_COMMAND_GET_FREE_REG:
miya_mcu_free_reg_send_pxi_data( (u32)miya_mcu_free_register ); miya_mcu_free_reg_send_pxi_data((u32)MCU_GetFreeRegister((u8)MIYA_MCU_FREE_REG_NO ));
break; break;
case MIYA_MCU_COMMAND_SET_FREE_REG:
miya_mcu_free_reg_send_pxi_data( (u32)MCU_SetFreeRegister((u8)MIYA_MCU_FREE_REG_NO , (u8)((data >> 4) & 0xff)) );
break;
case MIYA_MCU_COMMAND_GET_VOLUME: case MIYA_MCU_COMMAND_GET_VOLUME:
miya_mcu_free_reg_send_pxi_data( (u32)MCU_GetVolume() ); miya_mcu_free_reg_send_pxi_data( (u32)MCU_GetVolume() );
break; break;
@ -117,15 +125,15 @@ static void miya_mcu_free_reg_pxi_callback(PXIFifoTag tag, u32 data, BOOL err)
break; break;
case MIYA_MCU_COMMAND_SET_VOLUME: case MIYA_MCU_COMMAND_SET_VOLUME:
miya_mcu_free_reg_send_pxi_data( (u32)MCU_SetVolume( (u8)((data >> 4) & 0xf)) ); miya_mcu_free_reg_send_pxi_data( (u32)MCU_SetVolume( (u8)((data >> 4) & 0xff)) );
break; break;
case MIYA_MCU_COMMAND_SET_BRIGHTNESS: case MIYA_MCU_COMMAND_SET_BRIGHTNESS:
miya_mcu_free_reg_send_pxi_data( (u32)MCU_SetBackLightBrightness( (u8)((data >> 4) & 0xf) )); miya_mcu_free_reg_send_pxi_data( (u32)MCU_SetBackLightBrightness( (u8)((data >> 4) & 0xff) ));
break; break;
default: default:
miya_mcu_free_reg_send_pxi_data( (u32)miya_mcu_free_register ); miya_mcu_free_reg_send_pxi_data( (u32)0xffffffff );
break; break;
} }
@ -183,10 +191,6 @@ TwlSpMain(void)
SPI_Init(THREAD_PRIO_SPI); SPI_Init(THREAD_PRIO_SPI);
miya_mcu_free_register = MCU_GetFreeRegister( (u8)MIYA_MCU_FREE_REG_NO );
(void)MCU_SetFreeRegister( (u8)MIYA_MCU_FREE_REG_NO , (u8)MIYA_MCU_FREE_REG_CODE );
PXI_SetFifoRecvCallback(PXI_FIFO_TAG_USER_0, miya_mcu_free_reg_pxi_callback); PXI_SetFifoRecvCallback(PXI_FIFO_TAG_USER_0, miya_mcu_free_reg_pxi_callback);