無線フロー図変更により、無線ファームウェアダウンロード用関数をリネーム/更新。

無線終了ラッパー関数削除。

git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@670 b08762b0-b915-fc4b-9d8c-17b2551a87ff
This commit is contained in:
sato_masaki 2008-02-15 02:26:44 +00:00
parent 69751c753a
commit 96450e2d06
3 changed files with 57 additions and 59 deletions

View File

@ -20,47 +20,51 @@
#include <twl/lcfg.h>
#include <firm.h>
#include <sysmenu.h>
#include "loadWlanFirm.h"
/* LCFGの無線ファームバージョンをタイトルとしてそのまま使う場合 */
#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 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 BOOL verifyWlanfirmSignature(u8* buffer);
/* [TODO:] HotStart/ColdStartを判別するためのもの。ランチャーでの定義ができたら削除 */
typedef enum {
COLD_START,
HOT_START
} BOOT_POLICY;
static void nwmcallback(void* arg)
{
NWMCallback *cb = (NWMCallback*)arg;
switch (cb->apiid)
NWMCallback *cb = (NWMCallback*)arg;
switch (cb->apiid)
{
case NWM_APIID_LOAD_DEVICE:
if (cb->retcode == NWM_RETCODE_SUCCESS) {
isNwmActive = 1;
/* osSendMessage */
OS_TPrintf("Wlan firm:Load Device success!\n");
} else {
OS_TPrintf("Wlan firm:Load Device Timeout Error!\n");
}
break;
if (cb->retcode == NWM_RETCODE_SUCCESS) {
NWMRetCode err;
OS_TPrintf("Wlan firm:Load Device success!\n");
err = NWM_UnloadDevice(nwmcallback);
} else {
OS_TPrintf("Wlan firm:Load Device Timeout Error!\n");
}
break;
case NWM_APIID_UNLOAD_DEVICE:
OS_TPrintf("Wlan firm:Unload Device success!\n");
break;
OS_TPrintf("Wlan firm:Unload Device success!\n");
#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:
OS_TPrintf("Wlan firm:Error(apiid=default)!\n");
break;
OS_TWarning("Wlan firm:Error(invalid apiid=0x%04X)!\n", cb->apiid);
break;
}
}
@ -157,48 +161,45 @@ BOOL verifyWlanfirmSignature(u8* buffer)
}
BOOL StartupWireless(void)
BOOL InstallWirelessFirmware(void)
{
s32 flen = 0;
NWMRetCode err;
u8 boot_policy = COLD_START;
/* [TODO:] HotStart/ColdStartのチェック */
if (boot_policy == COLD_START)
/* ColdStartのチェック(HotStartでは呼ばれない筈だが) */
if (TRUE == SYSMi_GetWork()->flags.common.isHotStart)
{
/* [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
*/
OS_TWarning("It isn't Cold start.\n");
return FALSE;
}
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. */
/* 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);
/* osRecvMessage */
@ -209,8 +210,3 @@ BOOL StartupWireless(void)
return TRUE;
}
BOOL CleanupWireless(void)
{
/* [TBD]*/
return TRUE;
}

View File

@ -24,8 +24,7 @@
extern "C" {
#endif
BOOL StartupWireless(void);
BOOL CleanupWireless(void);
BOOL InstallWirelessFirmware(void);
#ifdef __cplusplus
}

View File

@ -189,8 +189,11 @@ void TwlMain( void )
// 無線ファームウェアを無線モジュールにダウンロードする。
#if( WIRELESS_FIRM_LOADING == 1 )
if( FALSE == StartupWireless() ) {
OS_TPrintf( "ERROR: Wireless firmware download failed!\n" );
if (SYSMi_GetWork()->flags.common.isHotStart == FALSE)
{
if( FALSE == InstallWirelessFirmware() ) {
OS_TPrintf( "ERROR: Wireless firmware download failed!\n" );
}
}
#endif