mirror of
https://github.com/rvtr/TwlIPL.git
synced 2025-10-31 06:01:12 -04:00
無線フロー図変更により、無線ファームウェアダウンロード用関数をリネーム/更新。
無線終了ラッパー関数削除。 git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@670 b08762b0-b915-fc4b-9d8c-17b2551a87ff
This commit is contained in:
parent
69751c753a
commit
96450e2d06
@ -20,47 +20,51 @@
|
|||||||
#include <twl/lcfg.h>
|
#include <twl/lcfg.h>
|
||||||
|
|
||||||
#include <firm.h>
|
#include <firm.h>
|
||||||
|
#include <sysmenu.h>
|
||||||
#include "loadWlanFirm.h"
|
#include "loadWlanFirm.h"
|
||||||
|
|
||||||
/* LCFGの無線ファームバージョンをタイトルIDとしてそのまま使う場合 */
|
/* LCFGの無線ファームバージョンをタイトルIDとしてそのまま使う場合 */
|
||||||
#define USE_LCFG_STRING 0
|
#define USE_LCFG_STRING 0
|
||||||
|
|
||||||
#define WLANFIRM_PUBKEY_INDEX 1
|
#define WLANFIRM_PUBKEY_INDEX 1
|
||||||
|
|
||||||
|
#define MEASURE_WIRELESS_INITTIME 1
|
||||||
|
|
||||||
static int isNwmActive;
|
|
||||||
static u32 nwmBuf[NWM_SYSTEM_BUF_SIZE/sizeof(u32)] ATTRIBUTE_ALIGN(32);
|
static u32 nwmBuf[NWM_SYSTEM_BUF_SIZE/sizeof(u32)] ATTRIBUTE_ALIGN(32);
|
||||||
static u32 fwBuffer[256*1024/sizeof(u32)] ATTRIBUTE_ALIGN(32);
|
static u32 fwBuffer[256*1024/sizeof(u32)] ATTRIBUTE_ALIGN(32);
|
||||||
|
#if (MEASURE_WIRELESS_INITTIME == 1)
|
||||||
|
static OSTick startTick;
|
||||||
|
#endif
|
||||||
|
|
||||||
static s32 readFirmwareBinary(u8 *buffer, s32 bufSize);
|
static s32 readFirmwareBinary(u8 *buffer, s32 bufSize);
|
||||||
static BOOL verifyWlanfirmSignature(u8* buffer);
|
static BOOL verifyWlanfirmSignature(u8* buffer);
|
||||||
|
|
||||||
/* [TODO:] HotStart/ColdStartを判別するためのもの。ランチャーでの定義ができたら削除? */
|
|
||||||
typedef enum {
|
|
||||||
COLD_START,
|
|
||||||
HOT_START
|
|
||||||
} BOOT_POLICY;
|
|
||||||
|
|
||||||
static void nwmcallback(void* arg)
|
static void nwmcallback(void* arg)
|
||||||
{
|
{
|
||||||
NWMCallback *cb = (NWMCallback*)arg;
|
NWMCallback *cb = (NWMCallback*)arg;
|
||||||
switch (cb->apiid)
|
switch (cb->apiid)
|
||||||
{
|
{
|
||||||
case NWM_APIID_LOAD_DEVICE:
|
case NWM_APIID_LOAD_DEVICE:
|
||||||
if (cb->retcode == NWM_RETCODE_SUCCESS) {
|
if (cb->retcode == NWM_RETCODE_SUCCESS) {
|
||||||
isNwmActive = 1;
|
NWMRetCode err;
|
||||||
/* osSendMessage */
|
OS_TPrintf("Wlan firm:Load Device success!\n");
|
||||||
OS_TPrintf("Wlan firm:Load Device success!\n");
|
err = NWM_UnloadDevice(nwmcallback);
|
||||||
} else {
|
} else {
|
||||||
OS_TPrintf("Wlan firm:Load Device Timeout Error!\n");
|
OS_TPrintf("Wlan firm:Load Device Timeout Error!\n");
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case NWM_APIID_UNLOAD_DEVICE:
|
case NWM_APIID_UNLOAD_DEVICE:
|
||||||
OS_TPrintf("Wlan firm:Unload Device success!\n");
|
OS_TPrintf("Wlan firm:Unload Device success!\n");
|
||||||
break;
|
#if (MEASURE_WIRELESS_INITTIME == 1)
|
||||||
|
OS_TPrintf("Wlan firm:LoadTime=%dmsec\n", OS_TicksToMilliSeconds(OS_GetTick() - startTick));
|
||||||
|
#endif
|
||||||
|
OS_TPrintf("Wlan firm:Wlan firmware has been installed successfully!\n");
|
||||||
|
/* [TODO:] osSendMessage */
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
OS_TPrintf("Wlan firm:Error(apiid=default)!\n");
|
OS_TWarning("Wlan firm:Error(invalid apiid=0x%04X)!\n", cb->apiid);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -157,48 +161,45 @@ BOOL verifyWlanfirmSignature(u8* buffer)
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
BOOL StartupWireless(void)
|
BOOL InstallWirelessFirmware(void)
|
||||||
{
|
{
|
||||||
s32 flen = 0;
|
s32 flen = 0;
|
||||||
NWMRetCode err;
|
NWMRetCode err;
|
||||||
u8 boot_policy = COLD_START;
|
|
||||||
|
|
||||||
/* [TODO:] HotStart/ColdStartのチェック */
|
/* ColdStartのチェック(HotStartでは呼ばれない筈だが) */
|
||||||
|
if (TRUE == SYSMi_GetWork()->flags.common.isHotStart)
|
||||||
|
|
||||||
if (boot_policy == COLD_START)
|
|
||||||
{
|
{
|
||||||
/* [TODO:] fwBuffer should be allocated from heap. */
|
OS_TWarning("It isn't Cold start.\n");
|
||||||
|
return FALSE;
|
||||||
flen = readFirmwareBinary((u8*)fwBuffer, sizeof(fwBuffer));
|
|
||||||
|
|
||||||
if ( 0 > flen )
|
|
||||||
{
|
|
||||||
OS_TWarning("Couldn't read wlan firmware.\n");
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
[TODO:] check signature data
|
|
||||||
*/
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
isNwmActive = 0;
|
/* [TODO:] fwBuffer should be allocated from heap. */
|
||||||
|
|
||||||
|
flen = readFirmwareBinary((u8*)fwBuffer, sizeof(fwBuffer));
|
||||||
|
|
||||||
|
if ( 0 > flen )
|
||||||
|
{
|
||||||
|
OS_TWarning("Couldn't read wlan firmware.\n");
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
[TODO:] check signature data
|
||||||
|
*/
|
||||||
|
|
||||||
/*************************************************************/
|
/*************************************************************/
|
||||||
|
|
||||||
NWM_Init(nwmBuf, sizeof(nwmBuf), 3); /* 3 -> DMA no. */
|
NWM_Init(nwmBuf, sizeof(nwmBuf), 3); /* 3 -> DMA no. */
|
||||||
|
|
||||||
/* In the case of cold start, should register appropriate firmware. */
|
/* In the case of cold start, should register appropriate firmware. */
|
||||||
if (boot_policy == COLD_START)
|
if ( 0 < flen )
|
||||||
{
|
{
|
||||||
if ( 0 < flen )
|
(void)NWMi_InstallFirmware(fwBuffer, (u32)flen);
|
||||||
{
|
|
||||||
(void)NWMi_InstallFirmware(fwBuffer, (u32)flen);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if (MEASURE_WIRELESS_INITTIME == 1)
|
||||||
|
startTick = OS_GetTick();
|
||||||
|
#endif
|
||||||
err = NWM_LoadDevice(nwmcallback);
|
err = NWM_LoadDevice(nwmcallback);
|
||||||
|
|
||||||
/* osRecvMessage */
|
/* osRecvMessage */
|
||||||
@ -209,8 +210,3 @@ BOOL StartupWireless(void)
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
BOOL CleanupWireless(void)
|
|
||||||
{
|
|
||||||
/* [TBD]*/
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|||||||
@ -24,8 +24,7 @@
|
|||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
BOOL StartupWireless(void);
|
BOOL InstallWirelessFirmware(void);
|
||||||
BOOL CleanupWireless(void);
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
|
|||||||
@ -189,8 +189,11 @@ void TwlMain( void )
|
|||||||
|
|
||||||
// 無線ファームウェアを無線モジュールにダウンロードする。
|
// 無線ファームウェアを無線モジュールにダウンロードする。
|
||||||
#if( WIRELESS_FIRM_LOADING == 1 )
|
#if( WIRELESS_FIRM_LOADING == 1 )
|
||||||
if( FALSE == StartupWireless() ) {
|
if (SYSMi_GetWork()->flags.common.isHotStart == FALSE)
|
||||||
OS_TPrintf( "ERROR: Wireless firmware download failed!\n" );
|
{
|
||||||
|
if( FALSE == InstallWirelessFirmware() ) {
|
||||||
|
OS_TPrintf( "ERROR: Wireless firmware download failed!\n" );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user