mirror of
https://github.com/rvtr/TwlToolsRED.git
synced 2025-10-31 06:41:18 -04:00
git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlToolsRED@27 7061adef-622a-194b-ae81-725974e89856
This commit is contained in:
parent
ec1bd5f622
commit
1a1049127b
@ -9,7 +9,7 @@
|
|||||||
#define DPR_HEIGHT_MAX 24
|
#define DPR_HEIGHT_MAX 24
|
||||||
#define DPR_WIDTH_MAX 32
|
#define DPR_WIDTH_MAX 32
|
||||||
|
|
||||||
static u16 sDPRScrnBuffer[DPR_HEIGHT_MAX * DPR_WIDTH_MAX];
|
static u16 sDPRScrnBuffer[DPR_HEIGHT_MAX * DPR_WIDTH_MAX] ATTRIBUTE_ALIGN(32);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -32,7 +32,8 @@ static GXOamAttr g_oam[128];
|
|||||||
/* DISPLAY Control */
|
/* DISPLAY Control */
|
||||||
|
|
||||||
// #define TEXT_HEAPBUF_SIZE 0x16000
|
// #define TEXT_HEAPBUF_SIZE 0x16000
|
||||||
#define TEXT_HEAPBUF_SIZE 0x80000 /* 512KByte */
|
//#define TEXT_HEAPBUF_SIZE 0x80000 /* 512KByte */
|
||||||
|
#define TEXT_HEAPBUF_SIZE 0x40000 /* 512KByte */
|
||||||
static u8 text_heap_buffer[TEXT_HEAPBUF_SIZE];
|
static u8 text_heap_buffer[TEXT_HEAPBUF_SIZE];
|
||||||
|
|
||||||
static TEXT_CTRL textctrl[NUM_OF_SCREEN];
|
static TEXT_CTRL textctrl[NUM_OF_SCREEN];
|
||||||
@ -42,7 +43,7 @@ static int vram_num_sub = 0;
|
|||||||
static void VBlankIntr( void );
|
static void VBlankIntr( void );
|
||||||
static u32 v_blank_intr_counter = 0;
|
static u32 v_blank_intr_counter = 0;
|
||||||
|
|
||||||
static u32 g_screen[MAX_VRAM_NUM][VRAM_SIZE/sizeof(u32)];
|
static u32 g_screen[MAX_VRAM_NUM][VRAM_SIZE/sizeof(u32)] ATTRIBUTE_ALIGN(32);
|
||||||
|
|
||||||
|
|
||||||
void Gfx_Init(void)
|
void Gfx_Init(void)
|
||||||
|
|||||||
@ -1457,12 +1457,60 @@ BOOL TitleIDSave(const char *path, u64 *pData, int count, FSFile *log_fd)
|
|||||||
|
|
||||||
|
|
||||||
/* TWLカードがあるかどうか */
|
/* TWLカードがあるかどうか */
|
||||||
|
static BOOL flag_TWLCardValidation = FALSE;
|
||||||
|
|
||||||
BOOL TWLCardValidation(void)
|
BOOL TWLCardValidation(void)
|
||||||
{
|
{
|
||||||
if( TRUE == OS_IsRunOnDebugger() ) {
|
if( TRUE == OS_IsRunOnDebugger() ) {
|
||||||
|
if( flag_TWLCardValidation == FALSE ) {
|
||||||
|
flag_TWLCardValidation = TRUE;
|
||||||
|
OS_TPrintf("%s %d\n",__FUNCTION__,__LINE__);
|
||||||
|
}
|
||||||
|
return FALSE; /* カードは抜けていることにする。 */
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
CARD_IsPulledOut();
|
||||||
|
カード抜けを検出した場合 TRUE を、そうでない場合は FALSE を返します。
|
||||||
|
一度でもカード抜けを検出した後は常に TRUE を返します。
|
||||||
|
*/
|
||||||
|
#if 1
|
||||||
|
/*
|
||||||
|
CARD_IsPulledOutをつかうにはアルマジロの改造がいる。
|
||||||
|
|
||||||
|
c:/twlsdk/build/components/armadillo.TWL/src/main.c
|
||||||
|
|
||||||
|
//---- check pull out card
|
||||||
|
CARD_CheckPullOut_Polling();
|
||||||
|
*/
|
||||||
|
|
||||||
|
if( TRUE == CARD_IsPulledOut() ) {
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
return CARD_IsPulledOut();
|
#else
|
||||||
|
{
|
||||||
|
s32 lock_ret;
|
||||||
|
u16 id;
|
||||||
|
lock_ret = OS_GetLockID();
|
||||||
|
if( lock_ret != OS_LOCK_ID_ERROR ) {
|
||||||
|
id = (u16)lock_ret;
|
||||||
|
CARD_LockRom(id);
|
||||||
|
|
||||||
|
CARD_CheckPulledOut();
|
||||||
|
if( TRUE == CARD_IsPulledOut() ) {
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
CARD_UnlockRom(id);
|
||||||
|
OS_ReleaseLockID( id );
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
mprintf("CARD Lock error\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* SDカードがあるかどうか */
|
/* SDカードがあるかどうか */
|
||||||
@ -1509,12 +1557,13 @@ BOOL CheckShopRecord(u8 region, FSFile *log_fd)
|
|||||||
FSFile f;
|
FSFile f;
|
||||||
BOOL bSuccess;
|
BOOL bSuccess;
|
||||||
char path[256];
|
char path[256];
|
||||||
u32 fileSize;
|
|
||||||
s32 readSize = 0;
|
s32 readSize = 0;
|
||||||
|
#if 0
|
||||||
|
u32 fileSize;
|
||||||
void *pBuffer;
|
void *pBuffer;
|
||||||
char *str;
|
char *str;
|
||||||
int i;
|
int i;
|
||||||
|
#endif
|
||||||
FS_InitFile(&f);
|
FS_InitFile(&f);
|
||||||
|
|
||||||
STD_StrCpy(path, "nand:/sys/dev.kp");
|
STD_StrCpy(path, "nand:/sys/dev.kp");
|
||||||
@ -1523,6 +1572,7 @@ BOOL CheckShopRecord(u8 region, FSFile *log_fd)
|
|||||||
if( FS_RESULT_NO_ENTRY == FS_GetArchiveResultCode(path) ) {
|
if( FS_RESULT_NO_ENTRY == FS_GetArchiveResultCode(path) ) {
|
||||||
}
|
}
|
||||||
/* キーペアファイルがない */
|
/* キーペアファイルがない */
|
||||||
|
OS_TPrintf("%s %d\n",__FUNCTION__,__LINE__);
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
(void)FS_CloseFile(&f);
|
(void)FS_CloseFile(&f);
|
||||||
@ -1607,18 +1657,20 @@ BOOL CheckShopRecord(u8 region, FSFile *log_fd)
|
|||||||
STD_StrCpy(path, "nand:/title/00030015/484e464b/data/ec.cfg");
|
STD_StrCpy(path, "nand:/title/00030015/484e464b/data/ec.cfg");
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
OS_TPrintf("%s %d\n",__FUNCTION__,__LINE__);
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
bSuccess = FS_OpenFileEx(&f, path, (FS_FILEMODE_R));
|
bSuccess = FS_OpenFileEx(&f, path, (FS_FILEMODE_R));
|
||||||
if( ! bSuccess ) {
|
if( ! bSuccess ) {
|
||||||
if( FS_RESULT_NO_ENTRY == FS_GetArchiveResultCode(path) ) {
|
if( FS_RESULT_NO_ENTRY == FS_GetArchiveResultCode(path) ) {
|
||||||
|
OS_TPrintf("%s %d\n",__FUNCTION__,__LINE__);
|
||||||
}
|
}
|
||||||
|
OS_TPrintf("%s %d\n",__FUNCTION__,__LINE__);
|
||||||
/* ショップアカウント情報ファイルがない */
|
/* ショップアカウント情報ファイルがない */
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
(void)FS_CloseFile(&f);
|
(void)FS_CloseFile(&f);
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -2,7 +2,12 @@
|
|||||||
#define _MY_DATA_H_
|
#define _MY_DATA_H_
|
||||||
|
|
||||||
|
|
||||||
|
#define MY_DATA_VERSION_MAJOR 0
|
||||||
|
#define MY_DATA_VERSION_MINOR 1
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
|
u8 version_major;
|
||||||
|
u8 version_minor;
|
||||||
RTCDate rtc_date;
|
RTCDate rtc_date;
|
||||||
RTCTime rtc_time;
|
RTCTime rtc_time;
|
||||||
BOOL shop_record_flag;
|
BOOL shop_record_flag;
|
||||||
@ -11,13 +16,14 @@ typedef struct {
|
|||||||
int num_of_photo_files;
|
int num_of_photo_files;
|
||||||
int num_of_shared2_files;
|
int num_of_shared2_files;
|
||||||
u8 movableUniqueID[ LCFG_TWL_HWINFO_MOVABLE_UNIQUE_ID_LEN ]; // 移行可能なユニークID 16byte
|
u8 movableUniqueID[ LCFG_TWL_HWINFO_MOVABLE_UNIQUE_ID_LEN ]; // 移行可能なユニークID 16byte
|
||||||
// typedef u32 ESId; /* 32-bit device identity */
|
|
||||||
u32 deviceId;
|
u32 deviceId;
|
||||||
u8 region;
|
u8 region;
|
||||||
u64 fuseId;
|
u64 fuseId;
|
||||||
char bmsDeviceId[32];
|
char bmsDeviceId[32];
|
||||||
|
u32 reserve[256];
|
||||||
} MyData;
|
} MyData;
|
||||||
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@ -2,9 +2,9 @@
|
|||||||
#define _MY_FILE_NAME_H_
|
#define _MY_FILE_NAME_H_
|
||||||
|
|
||||||
|
|
||||||
#define MY_FILE_NAME_UNIQUE_ID ("twl_ninfo.dat")
|
#define MY_FILE_NAME_UNIQUE_ID ("twl_unique.dat")
|
||||||
#define MY_FILE_NAME_WIFI_PARAM ("twl_nor.bin")
|
#define MY_FILE_NAME_WIFI_PARAM ("twl_wifi.bin")
|
||||||
#define MY_FILE_NAME_USER_SETTINGS ("twl_cfg.dat")
|
#define MY_FILE_NAME_USER_SETTINGS ("twl_user.dat")
|
||||||
|
|
||||||
#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")
|
||||||
@ -27,9 +27,9 @@
|
|||||||
#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_ORG_DATA ("global.dat")
|
#define MY_FILE_NAME_ORG_DATA ("personal.dat")
|
||||||
#define MY_FILE_NAME_ORG_LOG ("global.txt")
|
#define MY_FILE_NAME_ORG_LOG ("personal.txt")
|
||||||
#define MY_FILE_NAME_ORG_RESTORE_LOG ("global_rst.txt")
|
#define MY_FILE_NAME_ORG_RESTORE_LOG ("personal_rst.txt")
|
||||||
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
|
|||||||
@ -1,6 +1,7 @@
|
|||||||
#include <twl.h>
|
#include <twl.h>
|
||||||
#include "stream.h"
|
#include "stream.h"
|
||||||
|
|
||||||
|
#define MIYA_MEM_FILE 1
|
||||||
|
|
||||||
#define MAKE_FOURCC(cc1, cc2, cc3, cc4) (u32)((cc1) | (cc2 << 8) | (cc3 << 16) | (cc4 << 24))
|
#define MAKE_FOURCC(cc1, cc2, cc3, cc4) (u32)((cc1) | (cc2 << 8) | (cc3 << 16) | (cc4 << 24))
|
||||||
|
|
||||||
@ -17,6 +18,26 @@
|
|||||||
#define STRM_BUF_PAGESIZE 1024*32
|
#define STRM_BUF_PAGESIZE 1024*32
|
||||||
#define STRM_BUF_SIZE STRM_BUF_PAGESIZE*2
|
#define STRM_BUF_SIZE STRM_BUF_PAGESIZE*2
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef MIYA_MEM_FILE
|
||||||
|
|
||||||
|
//#define NUM_OF_MY_FS_FILE 4
|
||||||
|
#define NUM_OF_MY_FS_FILE 3
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
FSFile file;
|
||||||
|
char path[256];
|
||||||
|
u8 *data;
|
||||||
|
u32 length;
|
||||||
|
BOOL open_flag;
|
||||||
|
u32 position;
|
||||||
|
} MyFSFile;
|
||||||
|
|
||||||
|
static MyFSFile myfsfile[NUM_OF_MY_FS_FILE];
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
// WAVフォーマットヘッダ
|
// WAVフォーマットヘッダ
|
||||||
typedef struct WaveFormat
|
typedef struct WaveFormat
|
||||||
{
|
{
|
||||||
@ -32,7 +53,11 @@ WaveFormat;
|
|||||||
// ストリームオブジェクト
|
// ストリームオブジェクト
|
||||||
typedef struct StreamInfo
|
typedef struct StreamInfo
|
||||||
{
|
{
|
||||||
|
#ifdef MIYA_MEM_FILE
|
||||||
|
MyFSFile file;
|
||||||
|
#else
|
||||||
FSFile file;
|
FSFile file;
|
||||||
|
#endif
|
||||||
WaveFormat format;
|
WaveFormat format;
|
||||||
u32 beginPos;
|
u32 beginPos;
|
||||||
s32 dataSize;
|
s32 dataSize;
|
||||||
@ -66,15 +91,185 @@ static u8 strm_tmp[STRM_BUF_PAGESIZE * 2] ATTRIBUTE_ALIGN(32);
|
|||||||
const char filename0[] = "cursor.wav";
|
const char filename0[] = "cursor.wav";
|
||||||
const char filename1[] = "ok.wav";
|
const char filename1[] = "ok.wav";
|
||||||
const char filename2[] = "ng.wav";
|
const char filename2[] = "ng.wav";
|
||||||
const char filename3[] = "fanfare.32.wav";
|
//const char filename3[] = "fanfare.32.wav";
|
||||||
|
|
||||||
static StreamInfo strm;
|
static StreamInfo strm;
|
||||||
|
|
||||||
|
#ifdef MIYA_MEM_FILE
|
||||||
|
static BOOL MY_FS_OpenFile(MyFSFile *my_file, const char *name)
|
||||||
|
{
|
||||||
|
|
||||||
|
if( STD_StrCmp(filename0, name) == 0 ) {
|
||||||
|
STD_CopyMemory( (void *)my_file, (void *)&(myfsfile[0]) ,sizeof(MyFSFile) );
|
||||||
|
my_file->open_flag = TRUE;
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
else if( STD_StrCmp(filename1, name) == 0 ) {
|
||||||
|
STD_CopyMemory( (void *)my_file, (void *)&(myfsfile[1]) ,sizeof(MyFSFile) );
|
||||||
|
my_file->open_flag = TRUE;
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
else if( STD_StrCmp(filename2, name) == 0 ) {
|
||||||
|
STD_CopyMemory( (void *)my_file, (void *)&(myfsfile[2]) ,sizeof(MyFSFile) );
|
||||||
|
my_file->open_flag = TRUE;
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
#if 0
|
||||||
|
else if( STD_StrCmp(filename3, name) == 0 ) {
|
||||||
|
STD_CopyMemory( (void *)my_file, (void *)&(myfsfile[3]) ,sizeof(MyFSFile) );
|
||||||
|
my_file->open_flag = TRUE;
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
my_file->open_flag = FALSE;
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
static BOOL MY_FS_IsFile(MyFSFile *my_file)
|
||||||
|
{
|
||||||
|
return my_file->open_flag;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static BOOL MY_FS_CloseFile(MyFSFile *my_file)
|
||||||
|
{
|
||||||
|
my_file->open_flag = FALSE;;
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
static u32 MY_FS_GetPosition(MyFSFile *my_file)
|
||||||
|
{
|
||||||
|
return my_file->position;
|
||||||
|
}
|
||||||
|
|
||||||
|
//static BOOL MY_FS_SeekFile( MyFSFile *p_file, s32 offset, FSSeekMode origin)
|
||||||
|
static BOOL MY_FS_SeekFile( MyFSFile *p_file, s32 offset, FSSeekFileMode origin)
|
||||||
|
{
|
||||||
|
s32 temp_offset;
|
||||||
|
|
||||||
|
switch( origin ) {
|
||||||
|
case FS_SEEK_SET: /* seek from begin */
|
||||||
|
temp_offset = offset;
|
||||||
|
if( (0 <= (s32)temp_offset) && (temp_offset < (s32)p_file->length)) {
|
||||||
|
p_file->position = (u32)temp_offset;
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case FS_SEEK_CUR: /* seek from current */
|
||||||
|
temp_offset = offset + (s32)p_file->position;
|
||||||
|
if( (0 <= (s32)temp_offset) && (temp_offset < (s32)p_file->length)) {
|
||||||
|
p_file->position = (u32)temp_offset;
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
p_file->position = p_file->length-1;
|
||||||
|
return TRUE;
|
||||||
|
|
||||||
|
break;
|
||||||
|
case FS_SEEK_END:
|
||||||
|
temp_offset = (s32)(p_file->length - 1);
|
||||||
|
if( (0 <= (s32)temp_offset) && (temp_offset < (s32)p_file->length)) {
|
||||||
|
p_file->position = (u32)temp_offset;
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static BOOL MY_FS_SeekFileToBegin(MyFSFile *my_file)
|
||||||
|
{
|
||||||
|
return MY_FS_SeekFile(my_file, 0, FS_SEEK_SET);
|
||||||
|
}
|
||||||
|
|
||||||
|
static s32 MY_FS_ReadFile( MyFSFile *p_file, void *dst, s32 len)
|
||||||
|
{
|
||||||
|
s32 new_len;
|
||||||
|
|
||||||
|
if( dst == NULL ) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
if( len < 0 ) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
if( p_file == NULL ) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
if( p_file->data == NULL ) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if( p_file->open_flag ) {
|
||||||
|
if( (p_file->position < 0 ) ) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
if( (p_file->position + len) < 0 ) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if( (p_file->length <= (p_file->position + len)) ) {
|
||||||
|
new_len = (s32)(p_file->position + len - p_file->length);
|
||||||
|
new_len = len - new_len;
|
||||||
|
STD_CopyMemory( (void *)dst, (void *)(p_file->data + p_file->position) ,(u32)new_len );
|
||||||
|
p_file->position += new_len;
|
||||||
|
return new_len;
|
||||||
|
}
|
||||||
|
|
||||||
|
STD_CopyMemory( (void *)dst, (void *)(p_file->data + p_file->position) ,(u32)len );
|
||||||
|
p_file->position += len;
|
||||||
|
return len;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
void stream_main(void)
|
void stream_main(void)
|
||||||
{
|
{
|
||||||
|
int i;
|
||||||
|
s32 readSize;
|
||||||
|
|
||||||
strm.isPlay = FALSE;
|
strm.isPlay = FALSE;
|
||||||
SND_LockChannel((1 << L_CHANNEL) | (1 << R_CHANNEL), 0);
|
SND_LockChannel((1 << L_CHANNEL) | (1 << R_CHANNEL), 0);
|
||||||
|
|
||||||
|
#ifdef MIYA_MEM_FILE
|
||||||
|
|
||||||
|
STD_StrCpy(myfsfile[0].path, filename0 );
|
||||||
|
STD_StrCpy(myfsfile[1].path, filename1 );
|
||||||
|
STD_StrCpy(myfsfile[2].path, filename2 );
|
||||||
|
|
||||||
|
for( i = 0 ; i < NUM_OF_MY_FS_FILE ; i++ ) {
|
||||||
|
FS_InitFile(&(myfsfile[i].file));
|
||||||
|
|
||||||
|
if ( !FS_OpenFile(&(myfsfile[i].file), myfsfile[i].path) ) {
|
||||||
|
// error;
|
||||||
|
}
|
||||||
|
myfsfile[i].open_flag = FALSE;
|
||||||
|
myfsfile[i].position = 0;
|
||||||
|
myfsfile[i].length = FS_GetFileLength(&(myfsfile[i].file));
|
||||||
|
myfsfile[i].data = (u8 *)OS_Alloc(myfsfile[i].length);
|
||||||
|
if( myfsfile[i].data == NULL ) {
|
||||||
|
OS_TPrintf("Mem alloc error: %s %d\n", __FUNCTION__,__LINE__);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
readSize = 0;
|
||||||
|
|
||||||
|
OS_TPrintf("%s %d Readfile %s len=%d\n",__FUNCTION__,__LINE__,myfsfile[i].path, myfsfile[i].length);
|
||||||
|
readSize = FS_ReadFile(&(myfsfile[i].file), myfsfile[i].data, (int)myfsfile[i].length );
|
||||||
|
if( readSize != myfsfile[i].length ) {
|
||||||
|
OS_TPrintf("Failed Read File: %s %s %d\n",myfsfile[i].path, __FUNCTION__,__LINE__);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
(void)FS_CloseFile(&(myfsfile[i].file));
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
/* ストリームスレッドの起動 */
|
/* ストリームスレッドの起動 */
|
||||||
OS_CreateThread(&strmThread,
|
OS_CreateThread(&strmThread,
|
||||||
StrmThread,
|
StrmThread,
|
||||||
@ -99,10 +294,12 @@ void stream_play2(void)
|
|||||||
PlayStream(&strm, filename2);
|
PlayStream(&strm, filename2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if 0
|
||||||
void stream_play3(void)
|
void stream_play3(void)
|
||||||
{
|
{
|
||||||
PlayStream(&strm, filename3);
|
PlayStream(&strm, filename3);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
BOOL stream_play_is_end(void)
|
BOOL stream_play_is_end(void)
|
||||||
{
|
{
|
||||||
@ -130,12 +327,24 @@ static void PlayStream(StreamInfo * strm, const char *filename)
|
|||||||
SND_WaitForCommandProc(tag); // 停止を待つ
|
SND_WaitForCommandProc(tag); // 停止を待つ
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef MIYA_MEM_FILE
|
||||||
// ファイル走査
|
// ファイル走査
|
||||||
if (FS_IsFile(&strm->file))
|
if (MY_FS_IsFile(&strm->file)) {
|
||||||
|
(void)MY_FS_CloseFile(&strm->file);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( ! MY_FS_OpenFile(&strm->file, filename) ) {
|
||||||
|
OS_Panic("Error: failed to open file %s\n", filename);
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
// ƒtƒ@ƒCƒ‹‘–<E28098>¸
|
||||||
|
if (FS_IsFile(&strm->file)) {
|
||||||
(void)FS_CloseFile(&strm->file);
|
(void)FS_CloseFile(&strm->file);
|
||||||
|
}
|
||||||
if ( ! FS_OpenFile(&strm->file, filename) ) {
|
if ( ! FS_OpenFile(&strm->file, filename) ) {
|
||||||
OS_Panic("Error: failed to open file %s\n", filename);
|
OS_Panic("Error: failed to open file %s\n", filename);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
if (!ReadWaveFormat(strm))
|
if (!ReadWaveFormat(strm))
|
||||||
{
|
{
|
||||||
OS_Panic("Error: failed to read wavefile\n");
|
OS_Panic("Error: failed to read wavefile\n");
|
||||||
@ -149,7 +358,11 @@ static void PlayStream(StreamInfo * strm, const char *filename)
|
|||||||
alarmPeriod /= (strm->format.bitPerSample == 16) ? sizeof(s16) : sizeof(s8);
|
alarmPeriod /= (strm->format.bitPerSample == 16) ? sizeof(s16) : sizeof(s8);
|
||||||
|
|
||||||
// 初期ストリームデータ読み込み
|
// 初期ストリームデータ読み込み
|
||||||
|
#ifdef MIYA_MEM_FILE
|
||||||
|
(void)MY_FS_SeekFile(&strm->file, (s32)strm->beginPos, FS_SEEK_SET);
|
||||||
|
#else
|
||||||
(void)FS_SeekFile(&strm->file, (s32)strm->beginPos, FS_SEEK_SET);
|
(void)FS_SeekFile(&strm->file, (s32)strm->beginPos, FS_SEEK_SET);
|
||||||
|
#endif
|
||||||
strm->bufPage = 0;
|
strm->bufPage = 0;
|
||||||
ReadStrmData(strm);
|
ReadStrmData(strm);
|
||||||
ReadStrmData(strm);
|
ReadStrmData(strm);
|
||||||
@ -182,8 +395,15 @@ static void PlayStream(StreamInfo * strm, const char *filename)
|
|||||||
static void StopStream(StreamInfo * strm)
|
static void StopStream(StreamInfo * strm)
|
||||||
{
|
{
|
||||||
SND_StopTimer((1 << L_CHANNEL) | (1 << R_CHANNEL), 0, 1 << ALARM_NUM, 0);
|
SND_StopTimer((1 << L_CHANNEL) | (1 << R_CHANNEL), 0, 1 << ALARM_NUM, 0);
|
||||||
if (FS_IsFile(&strm->file))
|
#ifdef MIYA_MEM_FILE
|
||||||
|
if (MY_FS_IsFile(&strm->file)) {
|
||||||
|
(void)MY_FS_CloseFile(&strm->file);
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
if (FS_IsFile(&strm->file)) {
|
||||||
(void)FS_CloseFile(&strm->file);
|
(void)FS_CloseFile(&strm->file);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
strm->isPlay = FALSE;
|
strm->isPlay = FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -243,7 +463,6 @@ static void ReadStrmData(StreamInfo * strm)
|
|||||||
if (strm->dataSize <= 0)
|
if (strm->dataSize <= 0)
|
||||||
{
|
{
|
||||||
StopStream(strm);
|
StopStream(strm);
|
||||||
// OS_TPrintf("Stop stream\n");
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -265,10 +484,17 @@ static void ReadStrmData(StreamInfo * strm)
|
|||||||
if (strm->format.channels == 1)
|
if (strm->format.channels == 1)
|
||||||
{
|
{
|
||||||
// モノラル
|
// モノラル
|
||||||
|
#ifdef MIYA_MEM_FILE
|
||||||
|
readSize = MY_FS_ReadFile(&strm->file,
|
||||||
|
strm_tmp,
|
||||||
|
(strm->dataSize <
|
||||||
|
STRM_BUF_PAGESIZE) ? strm->dataSize : STRM_BUF_PAGESIZE);
|
||||||
|
#else
|
||||||
readSize = FS_ReadFile(&strm->file,
|
readSize = FS_ReadFile(&strm->file,
|
||||||
strm_tmp,
|
strm_tmp,
|
||||||
(strm->dataSize <
|
(strm->dataSize <
|
||||||
STRM_BUF_PAGESIZE) ? strm->dataSize : STRM_BUF_PAGESIZE);
|
STRM_BUF_PAGESIZE) ? strm->dataSize : STRM_BUF_PAGESIZE);
|
||||||
|
#endif
|
||||||
if (readSize == -1)
|
if (readSize == -1)
|
||||||
OS_Panic("read file end\n");
|
OS_Panic("read file end\n");
|
||||||
|
|
||||||
@ -300,10 +526,18 @@ static void ReadStrmData(StreamInfo * strm)
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
// ステレオ
|
// ステレオ
|
||||||
|
#ifdef MIYA_MEM_FILE
|
||||||
|
readSize = MY_FS_ReadFile(&strm->file,
|
||||||
|
strm_tmp,
|
||||||
|
(strm->dataSize <
|
||||||
|
STRM_BUF_PAGESIZE * 2) ? strm->dataSize : STRM_BUF_PAGESIZE * 2);
|
||||||
|
|
||||||
|
#else
|
||||||
readSize = FS_ReadFile(&strm->file,
|
readSize = FS_ReadFile(&strm->file,
|
||||||
strm_tmp,
|
strm_tmp,
|
||||||
(strm->dataSize <
|
(strm->dataSize <
|
||||||
STRM_BUF_PAGESIZE * 2) ? strm->dataSize : STRM_BUF_PAGESIZE * 2);
|
STRM_BUF_PAGESIZE * 2) ? strm->dataSize : STRM_BUF_PAGESIZE * 2);
|
||||||
|
#endif
|
||||||
if (readSize == -1)
|
if (readSize == -1)
|
||||||
OS_Panic("read file end\n");
|
OS_Panic("read file end\n");
|
||||||
|
|
||||||
@ -357,22 +591,45 @@ static BOOL ReadWaveFormat(StreamInfo * strm)
|
|||||||
u32 tag;
|
u32 tag;
|
||||||
s32 size;
|
s32 size;
|
||||||
BOOL fFmt = FALSE, fData = FALSE;
|
BOOL fFmt = FALSE, fData = FALSE;
|
||||||
|
#ifdef MIYA_MEM_FILE
|
||||||
|
(void)MY_FS_SeekFileToBegin(&strm->file);
|
||||||
|
(void)MY_FS_ReadFile(&strm->file, &tag, 4);
|
||||||
|
#else
|
||||||
(void)FS_SeekFileToBegin(&strm->file);
|
(void)FS_SeekFileToBegin(&strm->file);
|
||||||
|
|
||||||
(void)FS_ReadFile(&strm->file, &tag, 4);
|
(void)FS_ReadFile(&strm->file, &tag, 4);
|
||||||
if (tag != FOURCC_RIFF)
|
#endif
|
||||||
|
if (tag != FOURCC_RIFF) {
|
||||||
|
OS_TPrintf("%s %d\n",__FUNCTION__,__LINE__);
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef MIYA_MEM_FILE
|
||||||
|
(void)MY_FS_ReadFile(&strm->file, &size, 4);
|
||||||
|
(void)MY_FS_ReadFile(&strm->file, &tag, 4);
|
||||||
|
#else
|
||||||
(void)FS_ReadFile(&strm->file, &size, 4);
|
(void)FS_ReadFile(&strm->file, &size, 4);
|
||||||
|
|
||||||
(void)FS_ReadFile(&strm->file, &tag, 4);
|
(void)FS_ReadFile(&strm->file, &tag, 4);
|
||||||
if (tag != FOURCC_WAVE)
|
#endif
|
||||||
return FALSE;
|
|
||||||
|
|
||||||
|
if (tag != FOURCC_WAVE) {
|
||||||
|
OS_TPrintf("%s %d\n",__FUNCTION__,__LINE__);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
while (size > 0)
|
while (size > 0)
|
||||||
{
|
{
|
||||||
s32 chunkSize;
|
s32 chunkSize;
|
||||||
|
#ifdef MIYA_MEM_FILE
|
||||||
|
if (MY_FS_ReadFile(&strm->file, &tag, 4) == -1)
|
||||||
|
{
|
||||||
|
OS_TPrintf("%s %d\n",__FUNCTION__,__LINE__);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
if (MY_FS_ReadFile(&strm->file, &chunkSize, 4) == -1)
|
||||||
|
{
|
||||||
|
OS_TPrintf("%s %d\n",__FUNCTION__,__LINE__);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
#else
|
||||||
if (FS_ReadFile(&strm->file, &tag, 4) == -1)
|
if (FS_ReadFile(&strm->file, &tag, 4) == -1)
|
||||||
{
|
{
|
||||||
return FALSE;
|
return FALSE;
|
||||||
@ -381,24 +638,42 @@ static BOOL ReadWaveFormat(StreamInfo * strm)
|
|||||||
{
|
{
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
switch (tag)
|
switch (tag)
|
||||||
{
|
{
|
||||||
case FOURCC_fmt:
|
case FOURCC_fmt:
|
||||||
|
#ifdef MIYA_MEM_FILE
|
||||||
|
if (MY_FS_ReadFile(&strm->file, (u8 *)&strm->format, chunkSize) == -1)
|
||||||
|
{
|
||||||
|
OS_TPrintf("%s %d\n",__FUNCTION__,__LINE__);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
#else
|
||||||
if (FS_ReadFile(&strm->file, (u8 *)&strm->format, chunkSize) == -1)
|
if (FS_ReadFile(&strm->file, (u8 *)&strm->format, chunkSize) == -1)
|
||||||
{
|
{
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
fFmt = TRUE;
|
fFmt = TRUE;
|
||||||
break;
|
break;
|
||||||
case FOURCC_data:
|
case FOURCC_data:
|
||||||
|
#ifdef MIYA_MEM_FILE
|
||||||
|
strm->beginPos = MY_FS_GetPosition(&strm->file);
|
||||||
|
strm->dataSize = chunkSize;
|
||||||
|
(void)MY_FS_SeekFile(&strm->file, chunkSize, FS_SEEK_CUR);
|
||||||
|
#else
|
||||||
strm->beginPos = FS_GetPosition(&strm->file);
|
strm->beginPos = FS_GetPosition(&strm->file);
|
||||||
strm->dataSize = chunkSize;
|
strm->dataSize = chunkSize;
|
||||||
(void)FS_SeekFile(&strm->file, chunkSize, FS_SEEK_CUR);
|
(void)FS_SeekFile(&strm->file, chunkSize, FS_SEEK_CUR);
|
||||||
|
#endif
|
||||||
fData = TRUE;
|
fData = TRUE;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
#ifdef MIYA_MEM_FILE
|
||||||
|
(void)MY_FS_SeekFile(&strm->file, chunkSize, FS_SEEK_CUR);
|
||||||
|
#else
|
||||||
(void)FS_SeekFile(&strm->file, chunkSize, FS_SEEK_CUR);
|
(void)FS_SeekFile(&strm->file, chunkSize, FS_SEEK_CUR);
|
||||||
|
#endif
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (fFmt && fData)
|
if (fFmt && fData)
|
||||||
@ -409,7 +684,9 @@ static BOOL ReadWaveFormat(StreamInfo * strm)
|
|||||||
size -= chunkSize;
|
size -= chunkSize;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (size != 0)
|
if (size != 0) {
|
||||||
|
OS_TPrintf("%s %d\n",__FUNCTION__,__LINE__);
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
}
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -11,7 +11,7 @@ extern void stream_main(void);
|
|||||||
extern void stream_play0(void);
|
extern void stream_play0(void);
|
||||||
extern void stream_play1(void);
|
extern void stream_play1(void);
|
||||||
extern void stream_play2(void);
|
extern void stream_play2(void);
|
||||||
extern void stream_play3(void);
|
// extern void stream_play3(void);
|
||||||
extern BOOL stream_play_is_end(void);
|
extern BOOL stream_play_is_end(void);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
|
|||||||
@ -19,6 +19,20 @@ void text_display_newline_off(TEXT_CTRL *tc)
|
|||||||
tc->text_buf.display_newline = 0;
|
tc->text_buf.display_newline = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void text_blink_current_line(TEXT_CTRL *tc)
|
||||||
|
{
|
||||||
|
tc->text_buf.cur->blink_flag = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
void text_blink_clear(TEXT_CTRL *tc)
|
||||||
|
{
|
||||||
|
LINE_BUF *lb;
|
||||||
|
lb = tc->text_buf.start;
|
||||||
|
while( lb != NULL ) {
|
||||||
|
lb->blink_flag = 0;
|
||||||
|
lb = lb->next;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static void link_line_buf(LINE_BUF *m,LINE_BUF *s)
|
static void link_line_buf(LINE_BUF *m,LINE_BUF *s)
|
||||||
{
|
{
|
||||||
@ -69,6 +83,7 @@ static LINE_BUF *alloc_line_buf(void)
|
|||||||
unlink_line_buf(tmp);
|
unlink_line_buf(tmp);
|
||||||
tmp->last_count = 0;
|
tmp->last_count = 0;
|
||||||
tmp->cur_count = 0;
|
tmp->cur_count = 0;
|
||||||
|
tmp->blink_flag = 0;
|
||||||
#if 0
|
#if 0
|
||||||
for(i = 0 ; i < LINE_BUF_X_SIZE ; i++)
|
for(i = 0 ; i < LINE_BUF_X_SIZE ; i++)
|
||||||
tmp->buf[i] = 0x20;
|
tmp->buf[i] = 0x20;
|
||||||
@ -360,6 +375,8 @@ int init_text_buf_sys(void *heap_start, void *heap_end)
|
|||||||
return init_lb_heap(heap_start, heap_end);
|
return init_lb_heap(heap_start, heap_end);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int blink_counter = 0;
|
||||||
|
static int blink_flag = 0;
|
||||||
|
|
||||||
void text_buf_to_vram(TEXT_CTRL *tc)
|
void text_buf_to_vram(TEXT_CTRL *tc)
|
||||||
{
|
{
|
||||||
@ -370,6 +387,22 @@ void text_buf_to_vram(TEXT_CTRL *tc)
|
|||||||
LINE_BUF *lb;
|
LINE_BUF *lb;
|
||||||
TEXT_BUF *tb = &(tc->text_buf);
|
TEXT_BUF *tb = &(tc->text_buf);
|
||||||
|
|
||||||
|
blink_counter++;
|
||||||
|
|
||||||
|
/* blink interval */
|
||||||
|
if( blink_flag == 1 ) {
|
||||||
|
if( blink_counter > 100 ) {
|
||||||
|
blink_counter = 0;
|
||||||
|
blink_flag ^= 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
if( blink_counter > 20 ) {
|
||||||
|
blink_counter = 0;
|
||||||
|
blink_flag ^= 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
lb = tb->start;
|
lb = tb->start;
|
||||||
i = 0;
|
i = 0;
|
||||||
while( i < tb->display_offset_y ) {
|
while( i < tb->display_offset_y ) {
|
||||||
@ -396,9 +429,22 @@ void text_buf_to_vram(TEXT_CTRL *tc)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
c = lb->buf[x_line];
|
if( lb->blink_flag ) {
|
||||||
col = lb->col[x_line];
|
if( blink_flag == 0 ) {
|
||||||
|
c = 0;
|
||||||
|
col = 0;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
c = lb->buf[x_line];
|
||||||
|
col = lb->col[x_line];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
c = lb->buf[x_line];
|
||||||
|
col = lb->col[x_line];
|
||||||
|
}
|
||||||
put_char_vram(tc, c, col);
|
put_char_vram(tc, c, col);
|
||||||
|
|
||||||
}
|
}
|
||||||
x_line++;
|
x_line++;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -34,6 +34,7 @@ typedef struct LINE_BUF_s {
|
|||||||
int cur_count;
|
int cur_count;
|
||||||
struct LINE_BUF_s *prev;
|
struct LINE_BUF_s *prev;
|
||||||
struct LINE_BUF_s *next;
|
struct LINE_BUF_s *next;
|
||||||
|
int blink_flag;
|
||||||
} LINE_BUF;
|
} LINE_BUF;
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
@ -84,6 +85,8 @@ int m_get_display_offset_x(TEXT_CTRL *tc);
|
|||||||
void text_buf_to_vram(TEXT_CTRL *tc);
|
void text_buf_to_vram(TEXT_CTRL *tc);
|
||||||
void text_display_newline_off(TEXT_CTRL *tc);
|
void text_display_newline_off(TEXT_CTRL *tc);
|
||||||
void text_display_newline_on(TEXT_CTRL *tc);
|
void text_display_newline_on(TEXT_CTRL *tc);
|
||||||
|
void text_blink_current_line(TEXT_CTRL *tc);
|
||||||
|
void text_blink_clear(TEXT_CTRL *tc);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
|
|||||||
@ -34,6 +34,9 @@ static void *Alloc(size_t size)
|
|||||||
{
|
{
|
||||||
OSIntrMode old = OS_DisableInterrupts();
|
OSIntrMode old = OS_DisableInterrupts();
|
||||||
void* p = OS_Alloc(size);
|
void* p = OS_Alloc(size);
|
||||||
|
if( p == NULL ) {
|
||||||
|
OS_TPrintf("Alloc error %s %d\n",__FUNCTION__,__LINE__);
|
||||||
|
}
|
||||||
OS_RestoreInterrupts(old);
|
OS_RestoreInterrupts(old);
|
||||||
return p;
|
return p;
|
||||||
}
|
}
|
||||||
@ -51,6 +54,7 @@ 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) { SDK_ASSERT(align <= 32);(void)align; return Alloc(size); }
|
||||||
static void* AllocForEC (u32 size, int align) { SDK_ASSERT(align <= 32);(void)align; return Alloc(size); }
|
static void* AllocForEC (u32 size, int align) { SDK_ASSERT(align <= 32);(void)align; return Alloc(size); }
|
||||||
|
|
||||||
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); }
|
||||||
static void FreeForNHTTP (void* p) { Free(p); }
|
static void FreeForNHTTP (void* p) { Free(p); }
|
||||||
@ -424,8 +428,18 @@ BOOL SetupEC(void)
|
|||||||
|
|
||||||
// Initialize the EC library
|
// Initialize the EC library
|
||||||
|
|
||||||
logLevel = EC_LOG_FINE;
|
/* log level definitions */
|
||||||
// logLevel = EC_LOG_NONE;
|
|
||||||
|
//#define EC_LOG_NONE 0
|
||||||
|
//#define EC_LOG_ERR 1
|
||||||
|
//#define EC_LOG_WARN 2
|
||||||
|
//#define EC_LOG_INFO 3
|
||||||
|
//#define EC_LOG_FINE 4
|
||||||
|
//#define EC_LOG_FINER 5
|
||||||
|
//#define EC_LOG_FINEST 6
|
||||||
|
|
||||||
|
logLevel = EC_LOG_FINEST;
|
||||||
|
// logLevel = EC_LOG_NONE;
|
||||||
|
|
||||||
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");
|
||||||
|
|||||||
@ -47,14 +47,14 @@
|
|||||||
|
|
||||||
//================================================================================
|
//================================================================================
|
||||||
|
|
||||||
|
static BOOL completed_flag = FALSE;
|
||||||
static FSEventHook sSDHook;
|
static FSEventHook sSDHook;
|
||||||
static BOOL sd_card_flag = FALSE;
|
static BOOL sd_card_flag = FALSE;
|
||||||
|
static BOOL reboot_flag = FALSE;
|
||||||
|
|
||||||
static u8 WorkForNA[NA_VERSION_DATA_WORK_SIZE];
|
static u8 WorkForNA[NA_VERSION_DATA_WORK_SIZE];
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
static void SDEvents(void *userdata, FSEvent event, void *arg)
|
static void SDEvents(void *userdata, FSEvent event, void *arg)
|
||||||
{
|
{
|
||||||
(void)userdata;
|
(void)userdata;
|
||||||
@ -64,18 +64,32 @@ static void SDEvents(void *userdata, FSEvent event, void *arg)
|
|||||||
m_set_palette(tc[0], M_TEXT_COLOR_YELLOW );
|
m_set_palette(tc[0], M_TEXT_COLOR_YELLOW );
|
||||||
mprintf("SD card:removed!\n");
|
mprintf("SD card:removed!\n");
|
||||||
m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
|
m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
|
||||||
|
text_blink_clear(tc[0]);
|
||||||
|
if( completed_flag == FALSE ) {
|
||||||
|
text_blink_current_line(tc[0]);
|
||||||
|
mprintf("insert SD card\n");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if (event == FS_EVENT_MEDIA_INSERTED) {
|
else if (event == FS_EVENT_MEDIA_INSERTED) {
|
||||||
sd_card_flag = TRUE;
|
sd_card_flag = TRUE;
|
||||||
m_set_palette(tc[0], M_TEXT_COLOR_YELLOW );
|
if( completed_flag == FALSE ) {
|
||||||
mprintf("SD card:inserted!\n");
|
m_set_palette(tc[0], M_TEXT_COLOR_YELLOW );
|
||||||
m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
|
mprintf("SD card:inserted!\n");
|
||||||
mprintf("Push A button to start RESTORE\n");
|
m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
|
||||||
|
text_blink_clear(tc[0]);
|
||||||
|
text_blink_current_line(tc[0]);
|
||||||
|
if( reboot_flag == FALSE ) {
|
||||||
|
mprintf("Press A button to start UPDATE\n");
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
mprintf("Press A button to start RESTORE\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
static MyData mydata;
|
static MyData mydata;
|
||||||
|
|
||||||
static int vram_num_main = 1;
|
static int vram_num_main = 1;
|
||||||
@ -87,20 +101,23 @@ static LCFGTWLHWSecureInfo hws_info;
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
#define MY_STACK_SIZE (1024*16) /* でかいほうがいい */
|
#define MY_STACK_SIZE (1024*64) /* でかいほうがいい */
|
||||||
#define MY_THREAD_PRIO 20
|
#define MY_THREAD_PRIO 20
|
||||||
static OSThread MyThread;
|
static OSThread MyThread;
|
||||||
static u64 MyStack[MY_STACK_SIZE / sizeof(u64)];
|
static u64 MyStack[MY_STACK_SIZE / sizeof(u64)];
|
||||||
static void MyThreadProc(void *arg);
|
static void MyThreadProc(void *arg);
|
||||||
static void MyThreadProcNuc(void *arg);
|
static void MyThreadProcNuc(void *arg);
|
||||||
|
|
||||||
static OSMessage MyMesgBuffer[1];
|
static OSMessage MyMesgBuffer_request[1];
|
||||||
static OSMessageQueue MyMesgQueue;
|
static OSMessage MyMesgBuffer_response[1];
|
||||||
|
static OSMessageQueue MyMesgQueue_request;
|
||||||
|
static OSMessageQueue MyMesgQueue_response;
|
||||||
|
|
||||||
static void init_my_thread(void)
|
static void init_my_thread(void)
|
||||||
{
|
{
|
||||||
|
|
||||||
OS_InitMessageQueue(&MyMesgQueue, &MyMesgBuffer[0], 1);
|
OS_InitMessageQueue(&MyMesgQueue_request, &MyMesgBuffer_request[0], 1);
|
||||||
|
OS_InitMessageQueue(&MyMesgQueue_response, &MyMesgBuffer_response[0], 1);
|
||||||
|
|
||||||
OS_CreateThread(&MyThread, MyThreadProc,
|
OS_CreateThread(&MyThread, MyThreadProc,
|
||||||
NULL, MyStack + MY_STACK_SIZE / sizeof(u64),
|
NULL, MyStack + MY_STACK_SIZE / sizeof(u64),
|
||||||
@ -110,8 +127,8 @@ static void init_my_thread(void)
|
|||||||
|
|
||||||
static void init_my_thread_nuc(void)
|
static void init_my_thread_nuc(void)
|
||||||
{
|
{
|
||||||
|
OS_InitMessageQueue(&MyMesgQueue_request, &MyMesgBuffer_request[0], 1);
|
||||||
OS_InitMessageQueue(&MyMesgQueue, &MyMesgBuffer[0], 1);
|
OS_InitMessageQueue(&MyMesgQueue_response, &MyMesgBuffer_response[0], 1);
|
||||||
|
|
||||||
OS_CreateThread(&MyThread, MyThreadProcNuc,
|
OS_CreateThread(&MyThread, MyThreadProcNuc,
|
||||||
NULL, MyStack + MY_STACK_SIZE / sizeof(u64),
|
NULL, MyStack + MY_STACK_SIZE / sizeof(u64),
|
||||||
@ -120,9 +137,14 @@ static void init_my_thread_nuc(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static void start_my_thread(void)
|
static BOOL start_my_thread(void)
|
||||||
{
|
{
|
||||||
(void)OS_SendMessage(&MyMesgQueue, (OSMessage)0, OS_MESSAGE_NOBLOCK);
|
OSMessage message;
|
||||||
|
if( TRUE == OS_ReceiveMessage(&MyMesgQueue_response, &message, OS_MESSAGE_NOBLOCK) ) {
|
||||||
|
(void)OS_SendMessage(&MyMesgQueue_request, (OSMessage)0, OS_MESSAGE_NOBLOCK);
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
static BOOL RestoreFromSDCard1(void)
|
static BOOL RestoreFromSDCard1(void)
|
||||||
@ -398,9 +420,9 @@ static BOOL RestoreFromSDCard7(void)
|
|||||||
|
|
||||||
/* nand:/ticketはチケット同期でダウンロード */
|
/* nand:/ticketはチケット同期でダウンロード */
|
||||||
// 不要:デバイス情報の表示
|
// 不要:デバイス情報の表示
|
||||||
PrintDeviceInfo();
|
// PrintDeviceInfo();
|
||||||
|
|
||||||
OS_TPrintf("--------------------------------\n");
|
// OS_TPrintf("--------------------------------\n");
|
||||||
|
|
||||||
// setup
|
// setup
|
||||||
// 必須:タイトル ID の偽装
|
// 必須:タイトル ID の偽装
|
||||||
@ -541,8 +563,11 @@ static void MyThreadProc(void *arg)
|
|||||||
#pragma unused(arg)
|
#pragma unused(arg)
|
||||||
OSMessage message;
|
OSMessage message;
|
||||||
BOOL flag;
|
BOOL flag;
|
||||||
|
BOOL twl_card_validation_flag;
|
||||||
|
|
||||||
while( 1 ) {
|
while( 1 ) {
|
||||||
(void)OS_ReceiveMessage(&MyMesgQueue, &message, OS_MESSAGE_BLOCK);
|
(void)OS_SendMessage(&MyMesgQueue_response, (OSMessage)0, OS_MESSAGE_NOBLOCK);
|
||||||
|
(void)OS_ReceiveMessage(&MyMesgQueue_request, &message, OS_MESSAGE_BLOCK);
|
||||||
flag = TRUE;
|
flag = TRUE;
|
||||||
/* MydataLoadはすでにやっているのでいらない。 */
|
/* MydataLoadはすでにやっているのでいらない。 */
|
||||||
for( function_counter = 0 ; function_counter < function_table_max ; function_counter++ ) {
|
for( function_counter = 0 ; function_counter < function_table_max ; function_counter++ ) {
|
||||||
@ -552,20 +577,46 @@ static void MyThreadProc(void *arg)
|
|||||||
}
|
}
|
||||||
mprintf("\n");
|
mprintf("\n");
|
||||||
if( flag == TRUE ) {
|
if( flag == TRUE ) {
|
||||||
m_set_palette(tc[0], M_TEXT_COLOR_GREEN ); /* green */
|
completed_flag = TRUE;
|
||||||
mprintf("Restore completed.\n");
|
|
||||||
m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
|
|
||||||
if( TRUE == stream_play_is_end() ) {
|
if( TRUE == stream_play_is_end() ) {
|
||||||
stream_play1();
|
stream_play0(); /* cursor.aiff */
|
||||||
}
|
}
|
||||||
|
m_set_palette(tc[0], M_TEXT_COLOR_YELLOW );
|
||||||
|
mprintf("Pull out DS(DSi) & SD CARDs!\n");
|
||||||
|
m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
|
||||||
|
while( 1 ) {
|
||||||
|
if( twl_card_validation_flag == TRUE ) {
|
||||||
|
/* なぜか一回しかかからないので・・ */
|
||||||
|
if( FALSE == TWLCardValidation() ) {
|
||||||
|
twl_card_validation_flag = FALSE;
|
||||||
|
mprintf("DS(DSi)CARD pulled out\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if( (FALSE == twl_card_validation_flag) && (FALSE == SDCardValidation()) ) {
|
||||||
|
m_set_palette(tc[0], M_TEXT_COLOR_GREEN ); /* green */
|
||||||
|
mprintf("Restore completed.\n");
|
||||||
|
m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
|
||||||
|
|
||||||
|
if( TRUE == stream_play_is_end() ) {
|
||||||
|
stream_play1(); /* ok.aiff */
|
||||||
|
}
|
||||||
|
Gfx_Set_BG1_Color((u16)M_TEXT_COLOR_DARKGREEN);
|
||||||
|
OS_Sleep(200000);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
OS_Sleep(200);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
m_set_palette(tc[0], M_TEXT_COLOR_RED );
|
m_set_palette(tc[0], M_TEXT_COLOR_RED );
|
||||||
mprintf("Restore failed.\n");
|
mprintf("Restore failed.\n");
|
||||||
m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
|
m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
|
||||||
if( TRUE == stream_play_is_end() ) {
|
if( TRUE == stream_play_is_end() ) {
|
||||||
stream_play2();
|
stream_play2(); /* ng.aiff */
|
||||||
}
|
}
|
||||||
|
Gfx_Set_BG1_Color((u16)M_TEXT_COLOR_DARKRED);
|
||||||
}
|
}
|
||||||
mprintf("\n");
|
mprintf("\n");
|
||||||
/* 全部成功したらフォルダを消す */
|
/* 全部成功したらフォルダを消す */
|
||||||
@ -577,8 +628,10 @@ static void MyThreadProcNuc(void *arg)
|
|||||||
{
|
{
|
||||||
#pragma unused(arg)
|
#pragma unused(arg)
|
||||||
OSMessage message;
|
OSMessage message;
|
||||||
|
u16 keyData;
|
||||||
while( 1 ) {
|
while( 1 ) {
|
||||||
(void)OS_ReceiveMessage(&MyMesgQueue, &message, OS_MESSAGE_BLOCK);
|
(void)OS_SendMessage(&MyMesgQueue_response, (OSMessage)0, OS_MESSAGE_NOBLOCK);
|
||||||
|
(void)OS_ReceiveMessage(&MyMesgQueue_request, &message, OS_MESSAGE_BLOCK);
|
||||||
mprintf("-Wireless AP conf. loading.. ");
|
mprintf("-Wireless AP conf. loading.. ");
|
||||||
if( TRUE == LoadWlanConfig() ) {
|
if( TRUE == LoadWlanConfig() ) {
|
||||||
m_set_palette(tc[0], M_TEXT_COLOR_GREEN ); /* green */
|
m_set_palette(tc[0], M_TEXT_COLOR_GREEN ); /* green */
|
||||||
@ -590,17 +643,26 @@ static void MyThreadProcNuc(void *arg)
|
|||||||
m_set_palette(tc[0], M_TEXT_COLOR_GREEN );
|
m_set_palette(tc[0], M_TEXT_COLOR_GREEN );
|
||||||
OS_TPrintf("Network Update Completed!\n");
|
OS_TPrintf("Network Update Completed!\n");
|
||||||
mprintf("Network Update Completed!\n");
|
mprintf("Network Update Completed!\n");
|
||||||
|
|
||||||
m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
|
m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
|
||||||
NcFinish();
|
NcFinish();
|
||||||
TerminateWcmControl();
|
TerminateWcmControl();
|
||||||
|
|
||||||
if( TRUE == stream_play_is_end() ) {
|
if( TRUE == stream_play_is_end() ) {
|
||||||
stream_play1();
|
stream_play0(); /* cursor.aiff */
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ハードウェアリセットを行い、自分自身を起動します。 */
|
/* ハードウェアリセットを行い、自分自身を起動します。 */
|
||||||
OS_Sleep(30000);
|
mprintf("\n");
|
||||||
OS_RebootSystem();
|
text_blink_current_line(tc[0]);
|
||||||
|
mprintf("press A button to start RESTORE\n\n");
|
||||||
|
|
||||||
|
while( 1 ) {
|
||||||
|
keyData = m_get_key_code();
|
||||||
|
if ( keyData & PAD_BUTTON_A ) {
|
||||||
|
OS_RebootSystem();
|
||||||
|
}
|
||||||
|
OS_Sleep(20);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
// NUC_Init() failed, error code=34416 はどこかでNSSL_Initを呼んでるので消す。
|
// NUC_Init() failed, error code=34416 はどこかでNSSL_Initを呼んでるので消す。
|
||||||
@ -608,6 +670,7 @@ static void MyThreadProcNuc(void *arg)
|
|||||||
mprintf("network update failed!\n");
|
mprintf("network update failed!\n");
|
||||||
OS_TPrintf("Network Update failed!\n");
|
OS_TPrintf("Network Update failed!\n");
|
||||||
m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
|
m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
|
||||||
|
Gfx_Set_BG1_Color((u16)M_TEXT_COLOR_DARKRED);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
@ -630,14 +693,17 @@ static void *AllocForNAM(size_t size)
|
|||||||
|
|
||||||
static void FreeForNAM(void* ptr)
|
static void FreeForNAM(void* ptr)
|
||||||
{
|
{
|
||||||
if( ptr != NULL )
|
if( ptr != NULL ) {
|
||||||
{
|
OSIntrMode old = OS_DisableInterrupts();
|
||||||
OSIntrMode old = OS_DisableInterrupts();
|
OS_Free(ptr);
|
||||||
OS_Free(ptr);
|
OS_RestoreInterrupts(old);
|
||||||
OS_RestoreInterrupts(old);
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static BOOL myTWLCardCallback( void )
|
||||||
|
{
|
||||||
|
return FALSE; // means that not terminate.
|
||||||
|
}
|
||||||
|
|
||||||
void TwlMain(void)
|
void TwlMain(void)
|
||||||
{
|
{
|
||||||
@ -650,12 +716,15 @@ void TwlMain(void)
|
|||||||
RTCDate rtc_date;
|
RTCDate rtc_date;
|
||||||
RTCTime rtc_time;
|
RTCTime rtc_time;
|
||||||
int i;
|
int i;
|
||||||
int n;
|
// int n;
|
||||||
u8 macAddress[6];
|
u8 macAddress[6];
|
||||||
MY_ENTRY_LIST *mfiler_list_head = NULL;
|
MY_ENTRY_LIST *mfiler_list_head = NULL;
|
||||||
BOOL reboot_flag;
|
|
||||||
u16 s_major, s_minor;
|
u16 s_major, s_minor;
|
||||||
u32 s_timestamp;
|
u32 s_timestamp;
|
||||||
|
ESError es_error_code;
|
||||||
|
BOOL MydataLoadDecrypt_message_flag = TRUE;
|
||||||
|
BOOL MydataLoadDecrypt_dir_flag = TRUE;
|
||||||
|
BOOL MydataLoadDecrypt_success_flag = TRUE;
|
||||||
|
|
||||||
OS_Init();
|
OS_Init();
|
||||||
OS_InitThread();
|
OS_InitThread();
|
||||||
@ -695,29 +764,85 @@ void TwlMain(void)
|
|||||||
|
|
||||||
SND_Init();
|
SND_Init();
|
||||||
stream_main();
|
stream_main();
|
||||||
|
CARD_Init();
|
||||||
|
CARD_SetPulledOutCallback( myTWLCardCallback );
|
||||||
|
|
||||||
// 必須;SEA の初期化
|
// 必須;SEA の初期化
|
||||||
SEA_Init();
|
SEA_Init();
|
||||||
|
|
||||||
m_set_palette(tc[0], M_TEXT_COLOR_YELLOW );
|
reboot_flag = OS_IsRebooted();
|
||||||
mprintf( "Sys-menu ver." );
|
/* デバッグのために今だけ強制的にオン(UPDATE mode) */
|
||||||
m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
|
/* miya */
|
||||||
if( TRUE == Read_SystemMenuVersion(&s_major, &s_minor, &s_timestamp) ) {
|
reboot_flag = TRUE;
|
||||||
mprintf( "%d.%d", s_major, s_minor );
|
|
||||||
mprintf( " (%08x)\n", s_timestamp );
|
|
||||||
|
if( FALSE == SDCardValidation() ) {
|
||||||
|
sd_card_flag = FALSE;
|
||||||
|
m_set_palette(tc[0], 0x1); /* red */
|
||||||
|
mprintf("No SD card\n");
|
||||||
|
m_set_palette(tc[0], 0xF); /* white */
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
m_set_palette(tc[0], M_TEXT_COLOR_RED );
|
sd_card_flag = TRUE;
|
||||||
mprintf( "read error!\n");
|
|
||||||
m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
|
|
||||||
}
|
}
|
||||||
mprintf( "\n");
|
FS_RegisterEventHook("sdmc", &sSDHook, SDEvents, NULL);
|
||||||
|
|
||||||
|
|
||||||
|
if( FALSE == Read_SystemMenuVersion(&s_major, &s_minor, &s_timestamp) ) {
|
||||||
|
m_set_palette(tc[0], M_TEXT_COLOR_RED );
|
||||||
|
mprintf( "system menu ver. read error!\n");
|
||||||
|
m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
|
||||||
|
s_major = 0;
|
||||||
|
s_minor = 0;
|
||||||
|
s_timestamp = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
ES_InitLib();
|
||||||
|
|
||||||
|
if( FALSE == MiyaReadHWNormalInfo( &hwn_info ) ) {
|
||||||
|
m_set_palette(tc[0], 0x1); /* red */
|
||||||
|
mprintf("HW Normal Info. read error.\n");
|
||||||
|
m_set_palette(tc[0], 0xF);
|
||||||
|
}
|
||||||
|
|
||||||
|
// mprintf("HW Secure Info. read ");
|
||||||
|
if( FALSE == MiyaReadHWSecureInfo( &hws_info ) ) {
|
||||||
|
m_set_palette(tc[0], 0x1); /* red */
|
||||||
|
mprintf("HW Secure Info. read error.\n");
|
||||||
|
m_set_palette(tc[0], 0xF); /* white */
|
||||||
|
}
|
||||||
|
|
||||||
|
// region
|
||||||
|
mydata.region = LCFG_THW_GetRegion();
|
||||||
|
// ES Device ID
|
||||||
|
|
||||||
|
mydata.fuseId = SCFG_ReadFuseData();
|
||||||
|
OS_TPrintf("eFuseID: %08X%08X\n", (u32)(mydata.fuseId >> 32), (u32)(mydata.fuseId));
|
||||||
|
|
||||||
|
OS_GetMacAddress( macAddress );
|
||||||
|
|
||||||
|
es_error_code = ES_GetDeviceId(&mydata.deviceId);
|
||||||
|
if( es_error_code == ES_ERR_OK ) {
|
||||||
|
mydata.shop_record_flag = TRUE;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
OS_TPrintf("es_error_code = %d\n", es_error_code );
|
||||||
|
mydata.shop_record_flag = FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
// (void)CheckShopRecord( hws_info.region, NULL );
|
||||||
|
|
||||||
|
if( TRUE == mydata.shop_record_flag ) {
|
||||||
|
snprintf(mydata.bmsDeviceId, sizeof(mydata.bmsDeviceId), "%lld", ((0x3ull << 32) | mydata.deviceId));
|
||||||
|
// OS_TPrintf("DeviceID: %08X %u\n", mydata.deviceId, mydata.deviceId);
|
||||||
|
OS_TPrintf("DeviceID: %s\n", mydata.bmsDeviceId);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
reboot_flag = OS_IsRebooted();
|
|
||||||
|
|
||||||
/* デバッグのために強制的に */
|
|
||||||
// reboot_flag = TRUE;
|
|
||||||
(void)m_get_key_trigger();
|
(void)m_get_key_trigger();
|
||||||
keyData = m_get_key_code();
|
keyData = m_get_key_code();
|
||||||
if ( keyData & PAD_BUTTON_X ) {
|
if ( keyData & PAD_BUTTON_X ) {
|
||||||
@ -725,20 +850,8 @@ void TwlMain(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if( FALSE == reboot_flag ) {
|
if( FALSE == reboot_flag ) {
|
||||||
|
/* 最初はネットワークアップデート。 */
|
||||||
|
|
||||||
if( FALSE == SDCardValidation() ) {
|
|
||||||
sd_card_flag = FALSE;
|
|
||||||
m_set_palette(tc[0], 0x1); /* red */
|
|
||||||
mprintf("No SD card\n");
|
|
||||||
m_set_palette(tc[0], 0xF); /* white */
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
sd_card_flag = TRUE;
|
|
||||||
}
|
|
||||||
FS_RegisterEventHook("sdmc", &sSDHook, SDEvents, NULL);
|
|
||||||
|
|
||||||
|
|
||||||
/* 最初にネットワークアップデート。 */
|
|
||||||
// NSSL_Init(&s_sslConfig);
|
// NSSL_Init(&s_sslConfig);
|
||||||
// SetupNSSL();
|
// SetupNSSL();
|
||||||
if (!NA_LoadVersionDataArchive(WorkForNA, NA_VERSION_DATA_WORK_SIZE)) {
|
if (!NA_LoadVersionDataArchive(WorkForNA, NA_VERSION_DATA_WORK_SIZE)) {
|
||||||
@ -759,222 +872,305 @@ void TwlMain(void)
|
|||||||
#endif
|
#endif
|
||||||
(void)NA_UnloadVersionDataArchive();
|
(void)NA_UnloadVersionDataArchive();
|
||||||
}
|
}
|
||||||
|
|
||||||
init_my_thread_nuc();
|
init_my_thread_nuc();
|
||||||
|
|
||||||
|
|
||||||
|
#if 0 /* 自動スタートはいらない */
|
||||||
if( sd_card_flag == TRUE ) {
|
if( sd_card_flag == TRUE ) {
|
||||||
start_my_thread();
|
start_my_thread();
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
while( 1 ) {
|
if( sd_card_flag == TRUE ) {
|
||||||
Gfx_Render( vram_num_main , vram_num_sub );
|
text_blink_current_line(tc[0]);
|
||||||
OS_WaitVBlankIntr();
|
mprintf("press A button to start UPDATE\n\n");
|
||||||
(void)RTC_GetDate( &rtc_date );
|
|
||||||
(void)RTC_GetTime( &rtc_time );
|
|
||||||
keyData = m_get_key_trigger();
|
|
||||||
|
|
||||||
// ARM7コマンド応答受信
|
|
||||||
while (SND_RecvCommandReply(SND_COMMAND_NOBLOCK) != NULL)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
// コマンドフラッシュ(フラッシュして即座に実行を要求)
|
|
||||||
(void)SND_FlushCommand(SND_COMMAND_NOBLOCK | SND_COMMAND_IMMEDIATE);
|
|
||||||
if ( keyData & PAD_BUTTON_R ) {
|
|
||||||
vram_num_main++;
|
|
||||||
if( vram_num_main > (MAX_VRAM_NUM-1) ) {
|
|
||||||
vram_num_main = 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if ( keyData & PAD_BUTTON_L ) {
|
|
||||||
vram_num_main--;
|
|
||||||
if( vram_num_main < 0 ) {
|
|
||||||
vram_num_main = (MAX_VRAM_NUM-1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if ( keyData & PAD_BUTTON_A ) {
|
|
||||||
if( sd_card_flag == TRUE ) {
|
|
||||||
start_my_thread();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if ( keyData & PAD_BUTTON_B ) {
|
|
||||||
}
|
|
||||||
else if ( keyData & PAD_BUTTON_START ) {
|
|
||||||
}
|
|
||||||
else if ( keyData & PAD_BUTTON_SELECT ) {
|
|
||||||
}
|
|
||||||
else if ( keyData & PAD_BUTTON_X ) {
|
|
||||||
}
|
|
||||||
else if ( keyData & PAD_BUTTON_Y ) {
|
|
||||||
}
|
|
||||||
else if ( keyData & PAD_KEY_UP ) {
|
|
||||||
}
|
|
||||||
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 );
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
else {
|
||||||
|
text_blink_current_line(tc[0]);
|
||||||
|
mprintf("insert SD card\n");
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
// 不要:NAM の初期化
|
/* 書き戻し過程 */
|
||||||
NAM_Init(&AllocForNAM, &FreeForNAM);
|
if( sd_card_flag == TRUE ) {
|
||||||
|
text_blink_current_line(tc[0]);
|
||||||
// 必須:ES の初期化
|
mprintf("press A button to start RESTORE\n\n");
|
||||||
ES_InitLib();
|
|
||||||
|
|
||||||
|
|
||||||
if( RTC_RESULT_SUCCESS != RTC_GetDate( &rtc_date ) ) {
|
|
||||||
m_set_palette(tc[0], 0x1); /* red */
|
|
||||||
mprintf("rtc date read error.\n");
|
|
||||||
m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
|
|
||||||
}
|
|
||||||
if( RTC_RESULT_SUCCESS != RTC_GetTime( &rtc_time ) ) {
|
|
||||||
m_set_palette(tc[0], 0x1); /* red */
|
|
||||||
mprintf("rtc time read error.\n");
|
|
||||||
m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
|
|
||||||
}
|
|
||||||
|
|
||||||
// mprintf("HW Normal Info. read ");
|
|
||||||
m_set_palette(tc[0], M_TEXT_COLOR_YELLOW );
|
|
||||||
mprintf("Unique ID:\n");
|
|
||||||
m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
|
|
||||||
|
|
||||||
if( FALSE == MiyaReadHWNormalInfo( &hwn_info ) ) {
|
|
||||||
m_set_palette(tc[0], 0x1); /* red */
|
|
||||||
mprintf("read error!.\n");
|
|
||||||
m_set_palette(tc[0], 0xF);
|
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
mprintf(" 0x");
|
text_blink_current_line(tc[0]);
|
||||||
for( i = 0; i < LCFG_TWL_HWINFO_MOVABLE_UNIQUE_ID_LEN/2 ; i++ ) {
|
mprintf("insert SD card\n");
|
||||||
mprintf("%02X:", hwn_info.movableUniqueID[i]);
|
|
||||||
}
|
|
||||||
mprintf("\n 0x");
|
|
||||||
for( ; i < LCFG_TWL_HWINFO_MOVABLE_UNIQUE_ID_LEN ; i++ ) {
|
|
||||||
mprintf("%02X:", hwn_info.movableUniqueID[i]);
|
|
||||||
}
|
|
||||||
mprintf("\n");
|
|
||||||
// mprintf(" RTC Adjust data = 0x%02x\n", hwn_info.rtcAdjust );
|
|
||||||
}
|
}
|
||||||
mprintf("\n");
|
|
||||||
|
|
||||||
|
|
||||||
// mprintf("HW Secure Info. read ");
|
|
||||||
m_set_palette(tc[0], M_TEXT_COLOR_YELLOW );
|
|
||||||
mprintf("Serial No. ");
|
|
||||||
m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
|
|
||||||
if( FALSE == MiyaReadHWSecureInfo( &hws_info ) ) {
|
|
||||||
m_set_palette(tc[0], 0x1); /* red */
|
|
||||||
mprintf("read error.\n");
|
|
||||||
m_set_palette(tc[0], 0xF); /* white */
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
mprintf("%s\n", hws_info.serialNo);
|
|
||||||
}
|
|
||||||
mprintf("\n");
|
|
||||||
|
|
||||||
OS_GetMacAddress( macAddress );
|
|
||||||
m_set_palette(tc[0], M_TEXT_COLOR_YELLOW );
|
|
||||||
mprintf("MAC add.(HEX):");
|
|
||||||
m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
|
|
||||||
for ( i = 0 ; i < 6 ; i++ ) {
|
|
||||||
mprintf("%02X", macAddress[i]);
|
|
||||||
}
|
|
||||||
mprintf("\n\n");
|
|
||||||
|
|
||||||
if( FALSE == SDCardValidation() ) {
|
|
||||||
sd_card_flag = FALSE;
|
|
||||||
m_set_palette(tc[0], 0x1); /* red */
|
|
||||||
mprintf("No SD card\n");
|
|
||||||
m_set_palette(tc[0], 0xF); /* white */
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
sd_card_flag = TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
FS_RegisterEventHook("sdmc", &sSDHook, SDEvents, NULL);
|
|
||||||
|
|
||||||
init_my_thread();
|
init_my_thread();
|
||||||
|
|
||||||
|
// vram_num_main = 1;
|
||||||
|
// vram_num_sub = 0;
|
||||||
|
|
||||||
|
vram_num_sub = 2;
|
||||||
|
|
||||||
MFILER_CurrentDir_Init();
|
MFILER_CurrentDir_Init();
|
||||||
|
|
||||||
while( 1 ) {
|
}
|
||||||
Gfx_Render( vram_num_main , vram_num_sub );
|
|
||||||
OS_WaitVBlankIntr();
|
|
||||||
(void)RTC_GetDate( &rtc_date );
|
|
||||||
(void)RTC_GetTime( &rtc_time );
|
|
||||||
|
|
||||||
keyData = m_get_key_trigger();
|
if( TRUE == stream_play_is_end() ) {
|
||||||
|
stream_play0(); /* cursor.aiff */
|
||||||
|
}
|
||||||
|
|
||||||
// ARM7コマンド応答受信
|
|
||||||
while (SND_RecvCommandReply(SND_COMMAND_NOBLOCK) != NULL)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
// コマンドフラッシュ(フラッシュして即座に実行を要求)
|
|
||||||
(void)SND_FlushCommand(SND_COMMAND_NOBLOCK | SND_COMMAND_IMMEDIATE);
|
|
||||||
|
|
||||||
if ( keyData & PAD_BUTTON_R ) {
|
while( 1 ) {
|
||||||
vram_num_main++;
|
Gfx_Render( vram_num_main , vram_num_sub );
|
||||||
if( vram_num_main > (MAX_VRAM_NUM-1) ) {
|
OS_WaitVBlankIntr();
|
||||||
vram_num_main = 0;
|
(void)RTC_GetDate( &rtc_date );
|
||||||
}
|
(void)RTC_GetTime( &rtc_time );
|
||||||
|
keyData = m_get_key_trigger();
|
||||||
|
|
||||||
|
// ARM7コマンド応答受信
|
||||||
|
while (SND_RecvCommandReply(SND_COMMAND_NOBLOCK) != NULL)
|
||||||
|
{
|
||||||
}
|
}
|
||||||
else if ( keyData & PAD_BUTTON_L ) {
|
// コマンドフラッシュ(フラッシュして即座に実行を要求)
|
||||||
vram_num_main--;
|
(void)SND_FlushCommand(SND_COMMAND_NOBLOCK | SND_COMMAND_IMMEDIATE);
|
||||||
if( vram_num_main < 0 ) {
|
if ( keyData & PAD_BUTTON_R ) {
|
||||||
vram_num_main = (MAX_VRAM_NUM-1);
|
vram_num_main++;
|
||||||
}
|
if( vram_num_main > (MAX_VRAM_NUM-1) ) {
|
||||||
|
vram_num_main = 0;
|
||||||
}
|
}
|
||||||
else if ( keyData & PAD_BUTTON_A ) {
|
}
|
||||||
/* ユーザーデータ吸出しモード */
|
else if ( keyData & PAD_BUTTON_L ) {
|
||||||
if( sd_card_flag == TRUE ) {
|
vram_num_main--;
|
||||||
if( vram_num_main != 1 ) {
|
if( vram_num_main < 0 ) {
|
||||||
}
|
vram_num_main = (MAX_VRAM_NUM-1);
|
||||||
else {
|
}
|
||||||
if( TRUE == MFILER_Is_Cursor_Dir( &mfiler_list_head ) ) {
|
}
|
||||||
|
else if ( keyData & PAD_BUTTON_A ) {
|
||||||
|
if( sd_card_flag == TRUE ) {
|
||||||
|
if( FALSE == reboot_flag ) {
|
||||||
|
/* ネットワークアップデート */
|
||||||
|
text_blink_clear(tc[0]);
|
||||||
|
start_my_thread();
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
/* リストア */
|
||||||
|
if( vram_num_sub == 2 ) {
|
||||||
|
MydataLoadDecrypt_dir_flag = MFILER_Is_Cursor_Dir( &mfiler_list_head );
|
||||||
|
if( TRUE == MydataLoadDecrypt_dir_flag) {
|
||||||
|
text_blink_clear(tc[0]);
|
||||||
|
|
||||||
MyFile_SetPathBase("sdmc:/");
|
MyFile_SetPathBase("sdmc:/");
|
||||||
MyFile_AddPathBase((const char *)MFILER_GetCursorEntryPath( &mfiler_list_head ) );
|
MyFile_AddPathBase((const char *)MFILER_GetCursorEntryPath( &mfiler_list_head ) );
|
||||||
MyFile_AddPathBase("/");
|
MyFile_AddPathBase("/");
|
||||||
if(TRUE == MydataLoadDecrypt( MyFile_GetGlobalInformationFileName(), &mydata, sizeof(MyData), NULL) ) {
|
|
||||||
mprintf("Personal data. restore ");
|
mprintf("Personal data. restore ");
|
||||||
m_set_palette(tc[0], 0x2); /* green */
|
MydataLoadDecrypt_success_flag = MydataLoadDecrypt( MyFile_GetGlobalInformationFileName(),
|
||||||
mprintf("OK.\n");
|
&mydata, sizeof(MyData), NULL);
|
||||||
m_set_palette(tc[0], 0xF); /* white */
|
if(TRUE == MydataLoadDecrypt_success_flag ) {
|
||||||
start_my_thread();
|
if( mydata.version_major != MY_DATA_VERSION_MAJOR ) {
|
||||||
|
m_set_palette(tc[0], M_TEXT_COLOR_RED );
|
||||||
|
mprintf("NG.\n");
|
||||||
|
m_set_palette(tc[0], M_TEXT_COLOR_YELLOW );
|
||||||
|
mprintf(" illegal format version.\n");
|
||||||
|
mprintf(" %s\n version %d.%d\n",MyFile_GetGlobalInformationFileName(),
|
||||||
|
mydata.version_major,mydata.version_minor);
|
||||||
|
m_set_palette(tc[0], 0xF); /* white */
|
||||||
|
MydataLoadDecrypt_message_flag = FALSE;
|
||||||
|
}
|
||||||
|
else if( mydata.version_minor != MY_DATA_VERSION_MINOR ) {
|
||||||
|
m_set_palette(tc[0], M_TEXT_COLOR_RED );
|
||||||
|
mprintf("NG.\n");
|
||||||
|
m_set_palette(tc[0], M_TEXT_COLOR_YELLOW );
|
||||||
|
mprintf(" illegal format version.\n");
|
||||||
|
mprintf(" %s\n version %d.%d\n",MyFile_GetGlobalInformationFileName(),
|
||||||
|
mydata.version_major,mydata.version_minor);
|
||||||
|
m_set_palette(tc[0], 0xF); /* white */
|
||||||
|
MydataLoadDecrypt_message_flag = FALSE;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
m_set_palette(tc[0], 0x2); /* green */
|
||||||
|
mprintf("OK.\n");
|
||||||
|
m_set_palette(tc[0], 0xF); /* white */
|
||||||
|
|
||||||
|
vram_num_sub = 0;
|
||||||
|
MydataLoadDecrypt_message_flag = TRUE;
|
||||||
|
MydataLoadDecrypt_dir_flag = TRUE;
|
||||||
|
MydataLoadDecrypt_success_flag = TRUE;
|
||||||
|
start_my_thread();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
m_set_palette(tc[0], 0x1); /* red */
|
m_set_palette(tc[0], 0x1); /* red */
|
||||||
mprintf("NG.\n");
|
mprintf("NG.\n");
|
||||||
m_set_palette(tc[0], 0xF); /* white */
|
m_set_palette(tc[0], 0xF); /* white */
|
||||||
|
MydataLoadDecrypt_message_flag = FALSE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
mprintf("Not a backup data directory\n");
|
mprintf("Not a backup data directory\n");
|
||||||
// mprintf("global info. read failed(Not dir.)\n");
|
if( TRUE == stream_play_is_end() ) {
|
||||||
|
stream_play2(); /* ng.aiff */
|
||||||
|
}
|
||||||
|
MydataLoadDecrypt_message_flag = FALSE;
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
}
|
||||||
mprintf("insert SD card\n");
|
else {
|
||||||
|
text_blink_clear(tc[0]);
|
||||||
|
text_blink_current_line(tc[0]);
|
||||||
|
mprintf("insert SD card\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if ( keyData & PAD_BUTTON_B ) {
|
||||||
|
}
|
||||||
|
else if ( keyData & PAD_BUTTON_START ) {
|
||||||
|
}
|
||||||
|
else if ( keyData & PAD_BUTTON_SELECT ) {
|
||||||
|
}
|
||||||
|
else if ( keyData & PAD_BUTTON_X ) {
|
||||||
|
}
|
||||||
|
else if ( keyData & PAD_BUTTON_Y ) {
|
||||||
|
}
|
||||||
|
else if ( keyData & PAD_KEY_UP ) {
|
||||||
|
if( FALSE == reboot_flag ) {
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
if( vram_num_sub == 2 ) {
|
||||||
|
MFILER_CursorY_Up();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if ( keyData & PAD_BUTTON_B ) {
|
}
|
||||||
|
else if ( keyData & PAD_KEY_DOWN ) {
|
||||||
|
if( FALSE == reboot_flag ) {
|
||||||
}
|
}
|
||||||
else if ( keyData & PAD_BUTTON_START ) {
|
else {
|
||||||
|
if( vram_num_sub == 2 ) {
|
||||||
|
MFILER_CursorY_Down();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if ( keyData & PAD_BUTTON_SELECT ) {
|
}
|
||||||
|
|
||||||
|
m_set_palette(tc[1], M_TEXT_COLOR_LIGHTBLUE );
|
||||||
|
mfprintf(tc[1], "\fRepaire Tool RESTORE");
|
||||||
|
m_set_palette(tc[1], M_TEXT_COLOR_WHITE );
|
||||||
|
mfprintf(tc[1], " ver.%d.%d \n",MY_DATA_VERSION_MAJOR , MY_DATA_VERSION_MINOR );
|
||||||
|
mfprintf(tc[1], " build:%s %s\n\n",__DATE__,__TIME__);
|
||||||
|
|
||||||
|
m_set_palette(tc[1], M_TEXT_COLOR_LIGHTBLUE );
|
||||||
|
mfprintf(tc[1],"Sys-menu ver." );
|
||||||
|
m_set_palette(tc[1], M_TEXT_COLOR_WHITE );
|
||||||
|
|
||||||
|
mfprintf(tc[1],"%d.%d", s_major, s_minor );
|
||||||
|
mfprintf(tc[1]," (%08x)\n\n", s_timestamp );
|
||||||
|
|
||||||
|
|
||||||
|
/* ユニークIDは表示しなくていい? */
|
||||||
|
m_set_palette(tc[1], M_TEXT_COLOR_LIGHTBLUE );
|
||||||
|
mfprintf(tc[1], "Unique ID:\n");
|
||||||
|
m_set_palette(tc[1], M_TEXT_COLOR_WHITE );
|
||||||
|
mfprintf(tc[1], " ");
|
||||||
|
for( i = 0; i < LCFG_TWL_HWINFO_MOVABLE_UNIQUE_ID_LEN/2 ; i++ ) {
|
||||||
|
mfprintf(tc[1], "%02X:", hwn_info.movableUniqueID[i]);
|
||||||
|
}
|
||||||
|
mfprintf(tc[1], "\n ");
|
||||||
|
for( ; i < LCFG_TWL_HWINFO_MOVABLE_UNIQUE_ID_LEN ; i++ ) {
|
||||||
|
mfprintf(tc[1], "%02X:", hwn_info.movableUniqueID[i]);
|
||||||
|
}
|
||||||
|
mfprintf(tc[1], "\n\n");
|
||||||
|
|
||||||
|
|
||||||
|
m_set_palette(tc[1], M_TEXT_COLOR_LIGHTBLUE );
|
||||||
|
mfprintf(tc[1], "Serial No. ");
|
||||||
|
m_set_palette(tc[1], M_TEXT_COLOR_WHITE );
|
||||||
|
mfprintf(tc[1], "%s\n", hws_info.serialNo);
|
||||||
|
mfprintf(tc[1], "\n");
|
||||||
|
|
||||||
|
|
||||||
|
m_set_palette(tc[1], M_TEXT_COLOR_LIGHTBLUE );
|
||||||
|
mfprintf(tc[1], "eFuse ID: ");
|
||||||
|
m_set_palette(tc[1], M_TEXT_COLOR_WHITE );
|
||||||
|
mfprintf(tc[1],"%08X%08X\n\n", (u32)(mydata.fuseId >> 32), (u32)(mydata.fuseId));
|
||||||
|
|
||||||
|
|
||||||
|
m_set_palette(tc[1], M_TEXT_COLOR_LIGHTBLUE );
|
||||||
|
mfprintf(tc[1],"MAC add.: ");
|
||||||
|
m_set_palette(tc[1], M_TEXT_COLOR_WHITE );
|
||||||
|
mfprintf(tc[1],"%02X:%02X:%02X:%02X:%02X:%02X", macAddress[0],macAddress[1],
|
||||||
|
macAddress[2], macAddress[3], macAddress[4], macAddress[5]);
|
||||||
|
mfprintf(tc[1],"\n\n");
|
||||||
|
|
||||||
|
m_set_palette(tc[1], M_TEXT_COLOR_LIGHTBLUE );
|
||||||
|
mfprintf(tc[1],"Device ID: ");
|
||||||
|
m_set_palette(tc[1], M_TEXT_COLOR_WHITE );
|
||||||
|
if( TRUE == mydata.shop_record_flag ) {
|
||||||
|
mfprintf(tc[1],"%s\n", mydata.bmsDeviceId);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
m_set_palette(tc[1], M_TEXT_COLOR_YELLOW );
|
||||||
|
mfprintf(tc[1],"-----------\n");
|
||||||
|
m_set_palette(tc[1], M_TEXT_COLOR_WHITE );
|
||||||
|
}
|
||||||
|
mfprintf(tc[1],"\n");
|
||||||
|
|
||||||
|
mfprintf(tc[1], "%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 );
|
||||||
|
|
||||||
|
|
||||||
|
// mfprintf(tc[1], "cwd = %s\n\n", MFILER_Get_CurrentDir());
|
||||||
|
|
||||||
|
if( FALSE == reboot_flag ) {
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
mfprintf(tc[1], "function no.%d/%d\n\n", function_counter, function_table_max);
|
||||||
|
|
||||||
|
mfprintf(tc[2],"\f");
|
||||||
|
|
||||||
|
if( MydataLoadDecrypt_dir_flag == FALSE ) {
|
||||||
|
mfprintf(tc[2], "Not a backup data directory\n");
|
||||||
|
mfprintf(tc[2],"\n\n\n");
|
||||||
}
|
}
|
||||||
else if ( keyData & PAD_BUTTON_X ) {
|
else if( MydataLoadDecrypt_success_flag == FALSE ) {
|
||||||
|
mfprintf(tc[2], "file load error\n");
|
||||||
|
mfprintf(tc[2],"\n\n\n");
|
||||||
}
|
}
|
||||||
else if ( keyData & PAD_BUTTON_Y ) {
|
else if( MydataLoadDecrypt_message_flag == FALSE ) {
|
||||||
|
if( mydata.version_major != MY_DATA_VERSION_MAJOR ) {
|
||||||
|
mfprintf(tc[2]," illegal format version.\n");
|
||||||
|
mfprintf(tc[2]," %s\n",MyFile_GetGlobalInformationFileName());
|
||||||
|
mfprintf(tc[2]," version %d.%d\n", mydata.version_major,mydata.version_minor);
|
||||||
|
m_set_palette(tc[2], 0xF); /* white */
|
||||||
|
mfprintf(tc[2],"\n");
|
||||||
|
}
|
||||||
|
else if( mydata.version_minor != MY_DATA_VERSION_MINOR ) {
|
||||||
|
mfprintf(tc[2]," illegal format version.\n");
|
||||||
|
mfprintf(tc[2]," %s\n",MyFile_GetGlobalInformationFileName());
|
||||||
|
mfprintf(tc[2]," version %d.%d\n", mydata.version_major,mydata.version_minor);
|
||||||
|
m_set_palette(tc[1], 0xF); /* white */
|
||||||
|
mfprintf(tc[2],"\n");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
else {
|
||||||
|
mfprintf(tc[2],"\n\n\n\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
MFILER_ClearDir(&mfiler_list_head);
|
||||||
|
MFILER_ReadDir(&mfiler_list_head, MFILER_Get_CurrentDir());
|
||||||
|
MFILER_DisplayDir(tc[2], &mfiler_list_head, 0 );
|
||||||
|
}
|
||||||
|
|
||||||
|
loop_counter++;
|
||||||
|
|
||||||
|
}
|
||||||
|
#if 0
|
||||||
else if ( keyData & PAD_KEY_UP ) {
|
else if ( keyData & PAD_KEY_UP ) {
|
||||||
if( vram_num_main != 1 ) {
|
if( vram_num_main != 1 ) {
|
||||||
n = m_get_display_offset_y(tc[0]);
|
n = m_get_display_offset_y(tc[0]);
|
||||||
n++;
|
n++;
|
||||||
m_set_display_offset_y(tc[0], n);
|
m_set_display_offset_y(tc[0], n);
|
||||||
}
|
}
|
||||||
else {
|
else if( vram_num_sub == 2 ) {
|
||||||
MFILER_CursorY_Up();
|
MFILER_CursorY_Up();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -984,7 +1180,7 @@ void TwlMain(void)
|
|||||||
n--;
|
n--;
|
||||||
m_set_display_offset_y(tc[0], n);
|
m_set_display_offset_y(tc[0], n);
|
||||||
}
|
}
|
||||||
else {
|
else if( vram_num_sub == 2 ) {
|
||||||
MFILER_CursorY_Down();
|
MFILER_CursorY_Down();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -998,23 +1194,7 @@ void TwlMain(void)
|
|||||||
n--;
|
n--;
|
||||||
m_set_display_offset_x(tc[0], n);
|
m_set_display_offset_x(tc[0], n);
|
||||||
}
|
}
|
||||||
label:
|
#endif
|
||||||
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 );
|
|
||||||
|
|
||||||
mfprintf(tc[1], "function no.%d/%d\n\n", function_counter, function_table_max);
|
|
||||||
|
|
||||||
// mfprintf(tc[1], "cwd = %s\n\n", MFILER_Get_CurrentDir());
|
|
||||||
|
|
||||||
MFILER_ClearDir(&mfiler_list_head);
|
|
||||||
MFILER_ReadDir(&mfiler_list_head, MFILER_Get_CurrentDir());
|
|
||||||
MFILER_DisplayDir(tc[1], &mfiler_list_head, 0 );
|
|
||||||
|
|
||||||
loop_counter++;
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
OS_Terminate();
|
OS_Terminate();
|
||||||
}
|
}
|
||||||
|
|||||||
@ -53,7 +53,11 @@ static void SDEvents(void *userdata, FSEvent event, void *arg)
|
|||||||
m_set_palette(tc[0], M_TEXT_COLOR_YELLOW );
|
m_set_palette(tc[0], M_TEXT_COLOR_YELLOW );
|
||||||
mprintf("SD card:removed!\n");
|
mprintf("SD card:removed!\n");
|
||||||
m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
|
m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
|
||||||
|
text_blink_clear(tc[0]);
|
||||||
|
if( completed_flag == FALSE ) {
|
||||||
|
text_blink_current_line(tc[0]);
|
||||||
|
mprintf("insert SD card\n");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if (event == FS_EVENT_MEDIA_INSERTED) {
|
else if (event == FS_EVENT_MEDIA_INSERTED) {
|
||||||
sd_card_flag = TRUE;
|
sd_card_flag = TRUE;
|
||||||
@ -61,12 +65,13 @@ static void SDEvents(void *userdata, FSEvent event, void *arg)
|
|||||||
m_set_palette(tc[0], M_TEXT_COLOR_YELLOW );
|
m_set_palette(tc[0], M_TEXT_COLOR_YELLOW );
|
||||||
mprintf("SD card:inserted!\n");
|
mprintf("SD card:inserted!\n");
|
||||||
m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
|
m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
|
||||||
|
text_blink_clear(tc[0]);
|
||||||
|
text_blink_current_line(tc[0]);
|
||||||
mprintf("press A button to start BACKUP\n");
|
mprintf("press A button to start BACKUP\n");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static MyData mydata;
|
static MyData mydata;
|
||||||
|
|
||||||
#ifdef LCD_UPPER_LOWER_FLIP
|
#ifdef LCD_UPPER_LOWER_FLIP
|
||||||
@ -332,17 +337,6 @@ static BOOL SDBackupToSDCard8(void)
|
|||||||
RTCTime rtc_time;
|
RTCTime rtc_time;
|
||||||
|
|
||||||
/* オリジナルのデータのバックアップ */
|
/* オリジナルのデータのバックアップ */
|
||||||
if( TRUE == CheckShopRecord( hws_info.region, NULL ) ) {
|
|
||||||
mydata.shop_record_flag = TRUE;
|
|
||||||
OS_TPrintf("shop record exist - you don't have to connect the network.\n");
|
|
||||||
mprintf(" (--shop record exist--)\n");
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
mydata.shop_record_flag = FALSE;
|
|
||||||
OS_TPrintf("no shop record\n - you don't have to connect the network.\n");
|
|
||||||
mprintf(" (--no shop record--)\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
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");
|
||||||
}
|
}
|
||||||
@ -392,13 +386,15 @@ static int function_counter = 0;
|
|||||||
static void MyThreadProc(void *arg)
|
static void MyThreadProc(void *arg)
|
||||||
{
|
{
|
||||||
#pragma unused(arg)
|
#pragma unused(arg)
|
||||||
BOOL flag;
|
|
||||||
OSMessage message;
|
OSMessage message;
|
||||||
|
BOOL flag;
|
||||||
|
BOOL twl_card_validation_flag;
|
||||||
|
|
||||||
while( 1 ) {
|
while( 1 ) {
|
||||||
(void)OS_SendMessage(&MyMesgQueue_response, (OSMessage)0, OS_MESSAGE_NOBLOCK);
|
(void)OS_SendMessage(&MyMesgQueue_response, (OSMessage)0, OS_MESSAGE_NOBLOCK);
|
||||||
|
|
||||||
(void)OS_ReceiveMessage(&MyMesgQueue_request, &message, OS_MESSAGE_BLOCK);
|
(void)OS_ReceiveMessage(&MyMesgQueue_request, &message, OS_MESSAGE_BLOCK);
|
||||||
flag = TRUE;
|
flag = TRUE;
|
||||||
|
twl_card_validation_flag = TRUE;
|
||||||
MyFile_SetPathBase("sdmc:/");
|
MyFile_SetPathBase("sdmc:/");
|
||||||
MyFile_AddPathBase((const char *)hws_info.serialNo );
|
MyFile_AddPathBase((const char *)hws_info.serialNo );
|
||||||
MyFile_AddPathBase("/");
|
MyFile_AddPathBase("/");
|
||||||
@ -410,11 +406,6 @@ static void MyThreadProc(void *arg)
|
|||||||
mprintf("\n");
|
mprintf("\n");
|
||||||
if( flag == TRUE ) {
|
if( flag == TRUE ) {
|
||||||
completed_flag = TRUE;
|
completed_flag = TRUE;
|
||||||
#if 0
|
|
||||||
m_set_palette(tc[0], M_TEXT_COLOR_GREEN ); /* green */
|
|
||||||
mprintf("Backup succeded.\n");
|
|
||||||
m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
|
|
||||||
#endif
|
|
||||||
if( TRUE == stream_play_is_end() ) {
|
if( TRUE == stream_play_is_end() ) {
|
||||||
stream_play0();
|
stream_play0();
|
||||||
}
|
}
|
||||||
@ -424,15 +415,25 @@ static void MyThreadProc(void *arg)
|
|||||||
mprintf("Pull out DS(DSi) & SD CARDs!\n");
|
mprintf("Pull out DS(DSi) & SD CARDs!\n");
|
||||||
m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
|
m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
|
||||||
while( 1 ) {
|
while( 1 ) {
|
||||||
if( (FALSE == SDCardValidation()) && (FALSE == TWLCardValidation()) ) {
|
if( twl_card_validation_flag == TRUE ) {
|
||||||
|
/* なぜか一回しかかからないので・・ */
|
||||||
|
if( FALSE == TWLCardValidation() ) {
|
||||||
|
twl_card_validation_flag = FALSE;
|
||||||
|
mprintf("DS(DSi)CARD pulled out\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if( (FALSE == twl_card_validation_flag) && (FALSE == SDCardValidation()) ) {
|
||||||
m_set_palette(tc[0], M_TEXT_COLOR_GREEN ); /* green */
|
m_set_palette(tc[0], M_TEXT_COLOR_GREEN ); /* green */
|
||||||
mprintf("Backup completed.\n");
|
mprintf("Backup completed.\n");
|
||||||
m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
|
m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
|
||||||
|
|
||||||
if( TRUE == stream_play_is_end() ) {
|
if( TRUE == stream_play_is_end() ) {
|
||||||
stream_play1();
|
stream_play1(); /* ok.aiff */
|
||||||
}
|
}
|
||||||
|
|
||||||
Gfx_Set_BG1_Color((u16)M_TEXT_COLOR_DARKGREEN);
|
Gfx_Set_BG1_Color((u16)M_TEXT_COLOR_DARKGREEN);
|
||||||
|
OS_Sleep(200000);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
OS_Sleep(200);
|
OS_Sleep(200);
|
||||||
@ -445,7 +446,7 @@ static void MyThreadProc(void *arg)
|
|||||||
mprintf("Backup failed.\n");
|
mprintf("Backup failed.\n");
|
||||||
m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
|
m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
|
||||||
if( TRUE == stream_play_is_end() ) {
|
if( TRUE == stream_play_is_end() ) {
|
||||||
stream_play2();
|
stream_play2(); /* ng.aiff */
|
||||||
}
|
}
|
||||||
Gfx_Set_BG1_Color((u16)M_TEXT_COLOR_DARKRED);
|
Gfx_Set_BG1_Color((u16)M_TEXT_COLOR_DARKRED);
|
||||||
}
|
}
|
||||||
@ -455,7 +456,8 @@ static void MyThreadProc(void *arg)
|
|||||||
|
|
||||||
static BOOL myTWLCardCallback( void )
|
static BOOL myTWLCardCallback( void )
|
||||||
{
|
{
|
||||||
return FALSE; // means that not terminate
|
|
||||||
|
return FALSE; // means that not terminate.
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -474,6 +476,7 @@ void TwlMain(void)
|
|||||||
u8 macAddress[6];
|
u8 macAddress[6];
|
||||||
u16 s_major, s_minor;
|
u16 s_major, s_minor;
|
||||||
u32 s_timestamp;
|
u32 s_timestamp;
|
||||||
|
ESError es_error_code;
|
||||||
|
|
||||||
OS_Init();
|
OS_Init();
|
||||||
OS_InitThread();
|
OS_InitThread();
|
||||||
@ -537,19 +540,6 @@ void TwlMain(void)
|
|||||||
// 必須:ES の初期化
|
// 必須:ES の初期化
|
||||||
ES_InitLib();
|
ES_InitLib();
|
||||||
|
|
||||||
if( RTC_RESULT_SUCCESS != RTC_GetDate( &rtc_date ) ) {
|
|
||||||
m_set_palette(tc[0], M_TEXT_COLOR_RED );
|
|
||||||
mprintf("rtc date read error.\n");
|
|
||||||
m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
|
|
||||||
|
|
||||||
}
|
|
||||||
if( RTC_RESULT_SUCCESS != RTC_GetTime( &rtc_time ) ) {
|
|
||||||
m_set_palette(tc[0], M_TEXT_COLOR_RED );
|
|
||||||
mprintf("rtc time read error.\n");
|
|
||||||
m_set_palette(tc[0], M_TEXT_COLOR_WHITE );
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
if( FALSE == MiyaReadHWNormalInfo( &hwn_info ) ) {
|
if( FALSE == MiyaReadHWNormalInfo( &hwn_info ) ) {
|
||||||
m_set_palette(tc[0], 0x1); /* red */
|
m_set_palette(tc[0], 0x1); /* red */
|
||||||
mprintf("HW Normal Info. read error.\n");
|
mprintf("HW Normal Info. read error.\n");
|
||||||
@ -563,8 +553,6 @@ void TwlMain(void)
|
|||||||
m_set_palette(tc[0], 0xF); /* white */
|
m_set_palette(tc[0], 0xF); /* white */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// region
|
// region
|
||||||
mydata.region = LCFG_THW_GetRegion();
|
mydata.region = LCFG_THW_GetRegion();
|
||||||
// ES Device ID
|
// ES Device ID
|
||||||
@ -574,20 +562,73 @@ void TwlMain(void)
|
|||||||
|
|
||||||
OS_GetMacAddress( macAddress );
|
OS_GetMacAddress( macAddress );
|
||||||
|
|
||||||
mydata.shop_record_flag = CheckShopRecord( hws_info.region, NULL );
|
// typedef s32 ESError;
|
||||||
|
// ESError ES_GetDeviceId(ESId* devId);
|
||||||
|
/*
|
||||||
|
#define ES_ERR_OK 0
|
||||||
|
#define ES_ERR_INCORRECT_CERT_TYPE -1001
|
||||||
|
#define ES_ERR_GENKEY_FAILED -1002
|
||||||
|
#define ES_ERR_VERIFY_SIG_FAILED -1003
|
||||||
|
#define ES_ERR_CANNOT_OPEN_FILE -1004
|
||||||
|
#define ES_ERR_INCORRECT_PUBKEY_TYPE -1005
|
||||||
|
#define ES_ERR_CERT_ISSUER_MISMATCH -1006
|
||||||
|
#define ES_ERR_ENCRYPTION_FAILED -1007
|
||||||
|
#define ES_ERR_FILE_OPEN_FAILED -1008
|
||||||
|
#define ES_ERR_FILE_READ_FAILED -1009
|
||||||
|
#define ES_ERR_FILE_WRITE_FAILED -1010
|
||||||
|
#define ES_ERR_TMD_NUM_CONTENTS -1011
|
||||||
|
#define ES_ERR_INCORRECT_SIG_TYPE -1012
|
||||||
|
#define ES_ERR_INCORRECT_SIG_LENGTH -1013
|
||||||
|
#define ES_ERR_INCORRECT_CERT_LENGTH -1014
|
||||||
|
#define ES_ERR_DEV -1015
|
||||||
|
#define ES_ERR_MAXFD -1016
|
||||||
|
#define ES_ERR_INVALID -1017
|
||||||
|
#define ES_ERR_FS_CONNECTION_FAILED -1018
|
||||||
|
#define ES_ERR_UNSUPPORTED_TRANSFER_SOURCE -1019
|
||||||
|
#define ES_ERR_DEVICE_ID_MISMATCH -1020
|
||||||
|
#define ES_ERR_INCORRECT_CONTENT_SIZE -1021
|
||||||
|
#define ES_ERR_HASH_MISMATCH -1022
|
||||||
|
#define ES_ERR_INCORRECT_CONTENT_COUNT -1023
|
||||||
|
#define ES_ERR_OUT_OF_MEMORY -1024
|
||||||
|
#define ES_ERR_NO_TMD_FILE -1025
|
||||||
|
#define ES_ERR_NO_RIGHT -1026
|
||||||
|
#define ES_ERR_ISSUER_NOT_FOUND -1027
|
||||||
|
#define ES_ERR_NO_TICKET -1028
|
||||||
|
#define ES_ERR_INCORRECT_TICKET -1029
|
||||||
|
#define ES_ERR_NOT_ENOUGH_SPACE -1030
|
||||||
|
#define ES_ERR_INCORRECT_BOOT_VERSION -1031
|
||||||
|
#define ES_ERR_UNKNOWN -1032
|
||||||
|
#define ES_ERR_EXPIRED -1033
|
||||||
|
#define ES_ERR_UNUSED -1034
|
||||||
|
#define ES_ERR_INCORRECT_TITLE_VERSION -1035
|
||||||
|
#define ES_ERR_OS_TICKET_NOEXISTS -1036
|
||||||
|
#define ES_ERR_OS_CONTENT_NOEXISTS -1037
|
||||||
|
#define ES_ERR_NOT_EMPTY -1038
|
||||||
|
// Game is a disc/nand game, but a tmd was not supplied by caller
|
||||||
|
#define ES_ERR_DISC_NAND_NO_TMD -1039
|
||||||
|
#define ES_ERR_NOEXISTS -106 Does not exist ISFS_ERROR_NOEXISTS
|
||||||
|
|
||||||
if( TRUE == mydata.shop_record_flag ) {
|
*/
|
||||||
if( TRUE == ES_GetDeviceId(&mydata.deviceId) ) {
|
|
||||||
snprintf(mydata.bmsDeviceId, sizeof(mydata.bmsDeviceId), "%lld", ((0x3ull << 32) | mydata.deviceId));
|
|
||||||
OS_TPrintf("DeviceID: %08X %u\n", mydata.deviceId, mydata.deviceId);
|
es_error_code = ES_GetDeviceId(&mydata.deviceId);
|
||||||
OS_TPrintf(" %s\n", mydata.bmsDeviceId);
|
if( es_error_code == ES_ERR_OK ) {
|
||||||
}
|
mydata.shop_record_flag = TRUE;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
OS_TPrintf("es_error_code = %d\n", es_error_code );
|
||||||
|
mydata.shop_record_flag = FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// (void)CheckShopRecord( hws_info.region, NULL );
|
||||||
|
|
||||||
|
if( TRUE == mydata.shop_record_flag ) {
|
||||||
|
snprintf(mydata.bmsDeviceId, sizeof(mydata.bmsDeviceId), "%lld", ((0x3ull << 32) | mydata.deviceId));
|
||||||
|
// OS_TPrintf("DeviceID: %08X %u\n", mydata.deviceId, mydata.deviceId);
|
||||||
|
OS_TPrintf("DeviceID: %s\n", mydata.bmsDeviceId);
|
||||||
|
}
|
||||||
|
|
||||||
mprintf("\n");
|
mprintf("\n");
|
||||||
mprintf("press A button to start BACKUP\n\n");
|
|
||||||
|
|
||||||
|
|
||||||
if( FALSE == SDCardValidation() ) {
|
if( FALSE == SDCardValidation() ) {
|
||||||
sd_card_flag = FALSE;
|
sd_card_flag = FALSE;
|
||||||
@ -604,24 +645,30 @@ void TwlMain(void)
|
|||||||
|
|
||||||
FS_RegisterEventHook("sdmc", &sSDHook, SDEvents, NULL);
|
FS_RegisterEventHook("sdmc", &sSDHook, SDEvents, NULL);
|
||||||
|
|
||||||
|
mydata.version_major = MY_DATA_VERSION_MAJOR;
|
||||||
|
mydata.version_minor = MY_DATA_VERSION_MINOR;
|
||||||
|
|
||||||
init_my_thread();
|
init_my_thread();
|
||||||
|
|
||||||
#if 0 /* 自動スタートはいらない */
|
|
||||||
if( sd_card_flag == TRUE ) {
|
if( sd_card_flag == TRUE ) {
|
||||||
(void)start_my_thread();
|
text_blink_current_line(tc[0]);
|
||||||
|
mprintf("press A button to start BACKUP\n\n");
|
||||||
}
|
}
|
||||||
#endif
|
else {
|
||||||
|
text_blink_current_line(tc[0]);
|
||||||
|
mprintf("insert SD card\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
if( TRUE == stream_play_is_end() ) {
|
if( TRUE == stream_play_is_end() ) {
|
||||||
stream_play0();
|
stream_play0(); /* cursor.aiff */
|
||||||
}
|
}
|
||||||
|
|
||||||
while( 1 ) {
|
while( 1 ) {
|
||||||
OS_WaitVBlankIntr();
|
OS_WaitVBlankIntr();
|
||||||
Gfx_Render( vram_num_main , vram_num_sub );
|
Gfx_Render( vram_num_main , vram_num_sub );
|
||||||
(void)RTC_GetTime( &rtc_time );
|
(void)RTC_GetTime( &rtc_time );
|
||||||
|
(void)RTC_GetDate( &rtc_date );
|
||||||
|
|
||||||
keyData = m_get_key_trigger();
|
keyData = m_get_key_trigger();
|
||||||
|
|
||||||
@ -632,7 +679,6 @@ void TwlMain(void)
|
|||||||
// コマンドフラッシュ(フラッシュして即座に実行を要求)
|
// コマンドフラッシュ(フラッシュして即座に実行を要求)
|
||||||
(void)SND_FlushCommand(SND_COMMAND_NOBLOCK | SND_COMMAND_IMMEDIATE);
|
(void)SND_FlushCommand(SND_COMMAND_NOBLOCK | SND_COMMAND_IMMEDIATE);
|
||||||
|
|
||||||
|
|
||||||
if ( keyData & PAD_BUTTON_R ) {
|
if ( keyData & PAD_BUTTON_R ) {
|
||||||
#ifdef LCD_UPPER_LOWER_FLIP
|
#ifdef LCD_UPPER_LOWER_FLIP
|
||||||
vram_num_main ^= 1;
|
vram_num_main ^= 1;
|
||||||
@ -655,17 +701,18 @@ void TwlMain(void)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
else if ( keyData & PAD_BUTTON_A ) {
|
else if ( keyData & PAD_BUTTON_A ) {
|
||||||
/* ユーザーデータ吸出しモード */
|
/* ユーザーデータ吸出しモード */
|
||||||
if(completed_flag == FALSE ) {
|
if(completed_flag == FALSE ) {
|
||||||
if( sd_card_flag == TRUE ) {
|
if( sd_card_flag == TRUE ) {
|
||||||
|
text_blink_clear(tc[0]);
|
||||||
if( FALSE == start_my_thread() ) {
|
if( FALSE == start_my_thread() ) {
|
||||||
OS_TPrintf("\nnow backup..\n\n");
|
OS_TPrintf("\nnow backup..\n\n");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
text_blink_clear(tc[0]);
|
||||||
|
text_blink_current_line(tc[0]);
|
||||||
mprintf("insert SD card\n");
|
mprintf("insert SD card\n");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -705,7 +752,7 @@ void TwlMain(void)
|
|||||||
m_set_palette(tc[1], M_TEXT_COLOR_LIGHTBLUE );
|
m_set_palette(tc[1], M_TEXT_COLOR_LIGHTBLUE );
|
||||||
mfprintf(tc[1], "\fRepaire Tool BACKUP");
|
mfprintf(tc[1], "\fRepaire Tool BACKUP");
|
||||||
m_set_palette(tc[1], M_TEXT_COLOR_WHITE );
|
m_set_palette(tc[1], M_TEXT_COLOR_WHITE );
|
||||||
mfprintf(tc[1], " ver. 0.0 \n");
|
mfprintf(tc[1], " ver.%d.%d \n",MY_DATA_VERSION_MAJOR , MY_DATA_VERSION_MINOR );
|
||||||
mfprintf(tc[1], " build:%s %s\n\n",__DATE__,__TIME__);
|
mfprintf(tc[1], " build:%s %s\n\n",__DATE__,__TIME__);
|
||||||
|
|
||||||
m_set_palette(tc[1], M_TEXT_COLOR_LIGHTBLUE );
|
m_set_palette(tc[1], M_TEXT_COLOR_LIGHTBLUE );
|
||||||
@ -751,19 +798,17 @@ void TwlMain(void)
|
|||||||
macAddress[2], macAddress[3], macAddress[4], macAddress[5]);
|
macAddress[2], macAddress[3], macAddress[4], macAddress[5]);
|
||||||
mfprintf(tc[1],"\n\n");
|
mfprintf(tc[1],"\n\n");
|
||||||
|
|
||||||
|
|
||||||
m_set_palette(tc[1], M_TEXT_COLOR_LIGHTBLUE );
|
m_set_palette(tc[1], M_TEXT_COLOR_LIGHTBLUE );
|
||||||
mfprintf(tc[1],"Shop record: ");
|
mfprintf(tc[1],"Device ID: ");
|
||||||
m_set_palette(tc[1], M_TEXT_COLOR_WHITE );
|
m_set_palette(tc[1], M_TEXT_COLOR_WHITE );
|
||||||
if( TRUE == mydata.shop_record_flag ) {
|
if( TRUE == mydata.shop_record_flag ) {
|
||||||
mfprintf(tc[1],"exist.\n");
|
|
||||||
m_set_palette(tc[1], M_TEXT_COLOR_LIGHTBLUE );
|
|
||||||
mfprintf(tc[1],"Device ID: ");
|
|
||||||
m_set_palette(tc[1], M_TEXT_COLOR_WHITE );
|
|
||||||
mfprintf(tc[1],"%s\n", mydata.bmsDeviceId);
|
mfprintf(tc[1],"%s\n", mydata.bmsDeviceId);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
mfprintf(tc[1],"none.\n");
|
// mfprintf(tc[1],"none.\n");
|
||||||
|
m_set_palette(tc[1], M_TEXT_COLOR_YELLOW );
|
||||||
|
mfprintf(tc[1],"-----------\n");
|
||||||
|
m_set_palette(tc[1], M_TEXT_COLOR_WHITE );
|
||||||
}
|
}
|
||||||
mfprintf(tc[1],"\n");
|
mfprintf(tc[1],"\n");
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user