mirror of
https://github.com/rvtr/TwlIPL.git
synced 2025-10-31 06:01:12 -04:00
WDS処理をWDSWrapperを使用する形に変更。
ランチャーでのWDSスキャンをデフォルト有効にするよう変更。 git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@1754 b08762b0-b915-fc4b-9d8c-17b2551a87ff
This commit is contained in:
parent
b21602e2c7
commit
fae5f942cf
@ -20,7 +20,7 @@ ifneq ($(UPDATER_RELEASE),TRUE)
|
|||||||
|
|
||||||
# COMPILE SWITCH ※最終ROM作成時は、全てFALSEにセットする。SUBDIRのビルド時にも影響するようexportで環境変数設定する。
|
# COMPILE SWITCH ※最終ROM作成時は、全てFALSEにセットする。SUBDIRのビルド時にも影響するようexportで環境変数設定する。
|
||||||
export DO_NOT_SHOW_LAUNCHER = FALSE
|
export DO_NOT_SHOW_LAUNCHER = FALSE
|
||||||
export DISABLE_WDS_SCAN = TRUE
|
export DISABLE_WDS_SCAN = FALSE
|
||||||
export DISABLE_WLFIRM_LOAD = FALSE
|
export DISABLE_WLFIRM_LOAD = FALSE
|
||||||
export DISABLE_INITIAL_SETTINGS = TRUE
|
export DISABLE_INITIAL_SETTINGS = TRUE
|
||||||
export IGNORE_WLFIRM_SIGNCHECK = FALSE
|
export IGNORE_WLFIRM_SIGNCHECK = FALSE
|
||||||
|
|||||||
@ -61,6 +61,7 @@
|
|||||||
*/
|
*/
|
||||||
static BOOL s_isHotStartWLFirm;
|
static BOOL s_isHotStartWLFirm;
|
||||||
static volatile BOOL s_isFinished;
|
static volatile BOOL s_isFinished;
|
||||||
|
static volatile WLANFirmResult s_result = WLANFIRM_RESULT_UNFINISHED;
|
||||||
static u32* pNwmBuf;
|
static u32* pNwmBuf;
|
||||||
static u8* pFwBuffer = 0;
|
static u8* pFwBuffer = 0;
|
||||||
#if (MEASURE_WIRELESS_INITTIME == 1)
|
#if (MEASURE_WIRELESS_INITTIME == 1)
|
||||||
@ -84,6 +85,7 @@ static BOOL CheckHash(const u8* hash, const u8* buffer, u32 length);
|
|||||||
#if (REPORT_HASH_COMPARISON == 1)
|
#if (REPORT_HASH_COMPARISON == 1)
|
||||||
static void PrintDigest(u8 *digest);
|
static void PrintDigest(u8 *digest);
|
||||||
#endif
|
#endif
|
||||||
|
static BOOL GetWlanFirmwareInstallResult(WLANFirmResult *pResult);
|
||||||
|
|
||||||
|
|
||||||
void InstallFirmCallback(void* arg)
|
void InstallFirmCallback(void* arg)
|
||||||
@ -633,8 +635,7 @@ instfirm_error:
|
|||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
BOOL GetWlanFirmwareInstallResult(WLANFirmResult *pResult);
|
static BOOL GetWlanFirmwareInstallResult(WLANFirmResult *pResult)
|
||||||
BOOL GetWlanFirmwareInstallResult(WLANFirmResult *pResult)
|
|
||||||
{
|
{
|
||||||
OSMessage msg;
|
OSMessage msg;
|
||||||
BOOL retval;
|
BOOL retval;
|
||||||
@ -647,24 +648,15 @@ BOOL GetWlanFirmwareInstallResult(WLANFirmResult *pResult)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 無線ファームロード完了?
|
// 無線ファームロード完了?
|
||||||
BOOL PollingInstallWlanFirmware( BOOL isStartScanWDS )
|
BOOL PollingInstallWlanFirmware( void )
|
||||||
{
|
{
|
||||||
#ifndef ENABLE_WDS_SCAN
|
|
||||||
#pragma unused(isStartScanWDS)
|
|
||||||
#endif
|
|
||||||
if ( !s_isFinished ) {
|
if ( !s_isFinished ) {
|
||||||
WLANFirmResult result;
|
WLANFirmResult result;
|
||||||
if( GetWlanFirmwareInstallResult( &result ) ) {
|
if( GetWlanFirmwareInstallResult( &result ) ) {
|
||||||
if( result == WLANFIRM_RESULT_SUCCESS ) {
|
if( result == WLANFIRM_RESULT_SUCCESS ) {
|
||||||
OS_TPrintf( "WLFIRM load finished.\n" );
|
OS_TPrintf( "WLFIRM load finished.\n" );
|
||||||
#ifndef DISABLE_WDS_SCAN
|
|
||||||
// WDSスキャンがTRUE かつ 無線フラグがONならば、引き続きWDSビーコン受信開始
|
|
||||||
if( isStartScanWDS &&
|
|
||||||
!LCFG_THW_IsForceDisableWireless() && LCFG_TSD_IsAvailableWireless() ) {
|
|
||||||
StartScanWDS();
|
|
||||||
}
|
|
||||||
#endif // DISABLE_WDS_SCAN
|
|
||||||
s_isFinished = TRUE; // 正常終了
|
s_isFinished = TRUE; // 正常終了
|
||||||
|
s_result = result;
|
||||||
}else {
|
}else {
|
||||||
// ロード失敗
|
// ロード失敗
|
||||||
if( !s_isHotStartWLFirm ) {
|
if( !s_isHotStartWLFirm ) {
|
||||||
@ -673,7 +665,8 @@ BOOL PollingInstallWlanFirmware( BOOL isStartScanWDS )
|
|||||||
#ifdef SDK_RELEASE
|
#ifdef SDK_RELEASE
|
||||||
PMi_SetWirelessLED( PM_WIRELESS_LED_OFF );
|
PMi_SetWirelessLED( PM_WIRELESS_LED_OFF );
|
||||||
#endif
|
#endif
|
||||||
s_isFinished = TRUE; // 異常終了
|
s_isFinished = TRUE;
|
||||||
|
s_result = result;
|
||||||
}else {
|
}else {
|
||||||
// そうでない場合は、ColdStartロードで再度実行。
|
// そうでない場合は、ColdStartロードで再度実行。
|
||||||
(void)InstallWlanFirmware( FALSE );
|
(void)InstallWlanFirmware( FALSE );
|
||||||
@ -687,3 +680,7 @@ BOOL PollingInstallWlanFirmware( BOOL isStartScanWDS )
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
WLANFirmResult GetWlanFirmwareInstallFinalResult( void )
|
||||||
|
{
|
||||||
|
return s_result;
|
||||||
|
}
|
||||||
|
|||||||
@ -25,6 +25,7 @@ extern "C" {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
|
WLANFIRM_RESULT_UNFINISHED = 0,
|
||||||
WLANFIRM_RESULT_SUCCESS = 1,
|
WLANFIRM_RESULT_SUCCESS = 1,
|
||||||
WLANFIRM_RESULT_FAILURE = 2
|
WLANFIRM_RESULT_FAILURE = 2
|
||||||
} WLANFirmResult;
|
} WLANFirmResult;
|
||||||
@ -50,7 +51,19 @@ BOOL InstallWlanFirmware( BOOL isHotStartWLFirm );
|
|||||||
FALSE … 無線ファームウェアインストール処理が未完了
|
FALSE … 無線ファームウェアインストール処理が未完了
|
||||||
*/
|
*/
|
||||||
|
|
||||||
BOOL PollingInstallWlanFirmware( BOOL isStartScanWDS );
|
BOOL PollingInstallWlanFirmware( void );
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
|
||||||
|
GetWlanFirmwareInstallFinalResult
|
||||||
|
|
||||||
|
引数 :なし
|
||||||
|
返り値:WLANFIRM_RESULT_UNFINISHED … 無線ファームウェアインストール処理が未完了
|
||||||
|
WLANFIRM_RESULT_SUCCESS … 無線ファームウェアインストール処理が成功
|
||||||
|
WLANFIRM_RESULT_FAILURE … 無線ファームウェアインストール処理が失敗
|
||||||
|
*/
|
||||||
|
WLANFirmResult GetWlanFirmwareInstallFinalResult( void );
|
||||||
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
|
|||||||
@ -26,10 +26,13 @@
|
|||||||
#include "loadWlanFirm.h"
|
#include "loadWlanFirm.h"
|
||||||
#include "loadSharedFont.h"
|
#include "loadSharedFont.h"
|
||||||
#include "loadSysmVersion.h"
|
#include "loadSysmVersion.h"
|
||||||
|
#include "scanWDS.h"
|
||||||
|
|
||||||
// extern data-----------------------------------------------------------------
|
// extern data-----------------------------------------------------------------
|
||||||
|
|
||||||
// define data-----------------------------------------------------------------
|
// define data-----------------------------------------------------------------
|
||||||
|
#define WDS_THREAD_PRIO 15
|
||||||
|
#define WDS_DMA_NO 3
|
||||||
|
|
||||||
#define INIT_DEVICES_LIKE_UIG_LAUNCHER
|
#define INIT_DEVICES_LIKE_UIG_LAUNCHER
|
||||||
|
|
||||||
@ -154,6 +157,7 @@ void TwlMain( void )
|
|||||||
TitleProperty *pBootTitle = NULL;
|
TitleProperty *pBootTitle = NULL;
|
||||||
OSTick allstart, start, end = 0;
|
OSTick allstart, start, end = 0;
|
||||||
BOOL direct_boot = FALSE;
|
BOOL direct_boot = FALSE;
|
||||||
|
BOOL isStartScanWDS = FALSE;
|
||||||
|
|
||||||
#ifdef DEBUG_LAUNCHER_DUMP
|
#ifdef DEBUG_LAUNCHER_DUMP
|
||||||
// you should comment out to clear GX/G2/DMA/TM/PAD register in reboot.c to retreive valid boot time
|
// you should comment out to clear GX/G2/DMA/TM/PAD register in reboot.c to retreive valid boot time
|
||||||
@ -462,8 +466,9 @@ MAIN_LOOP_START:
|
|||||||
state = LOGODEMO;
|
state = LOGODEMO;
|
||||||
break;
|
break;
|
||||||
case LOGODEMO:
|
case LOGODEMO:
|
||||||
if( LogoMain() &&
|
if( IsFinishedLoadSharedFont() && // 通常ブート時は、フォントロード終了をここでチェック
|
||||||
IsFinishedLoadSharedFont() ) { // フォントロード終了をここでチェック
|
LogoMain()
|
||||||
|
) {
|
||||||
if( !direct_boot ) {
|
if( !direct_boot ) {
|
||||||
state = LAUNCHER_INIT;
|
state = LAUNCHER_INIT;
|
||||||
}else {
|
}else {
|
||||||
@ -482,10 +487,16 @@ MAIN_LOOP_START:
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case LOAD_START:
|
case LOAD_START:
|
||||||
if( IsFinishedLoadSharedFont() ) { // ダイレクトブートの時があるので、フォントロード終了をここでチェック
|
if( IsFinishedLoadSharedFont() // ダイレクトブートの時は、フォントロード終了をここでチェック
|
||||||
|
#ifndef DISABLE_WLFIRM_LOAD // アプリブート前に無線ファームのロードは完了しておく
|
||||||
|
&& PollingInstallWlanFirmware()
|
||||||
|
#endif // DISABLE_WLFIRM_LOAD
|
||||||
|
#ifndef DISABLE_WDS_SCAN // アプリブート前にWDSスキャンは終了しておく必要がある
|
||||||
|
&& ( WDS_WrapperStopScan() != WDSWRAPPER_ERRCODE_OPERATING )
|
||||||
|
#endif // DISABLE_WLFIRM_LOAD
|
||||||
|
) {
|
||||||
SYSM_StartLoadTitle( pBootTitle );
|
SYSM_StartLoadTitle( pBootTitle );
|
||||||
state = LOADING;
|
state = LOADING;
|
||||||
|
|
||||||
start = OS_GetTick();
|
start = OS_GetTick();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@ -520,11 +531,8 @@ MAIN_LOOP_START:
|
|||||||
break;
|
break;
|
||||||
case AUTHENTICATE:
|
case AUTHENTICATE:
|
||||||
if( ( direct_boot || ( !direct_boot && LauncherFadeout( s_titleList ) ) ) &&
|
if( ( direct_boot || ( !direct_boot && LauncherFadeout( s_titleList ) ) ) &&
|
||||||
#ifndef DISABLE_WLFIRM_LOAD
|
SYSM_IsAuthenticateTitleFinished()
|
||||||
PollingInstallWlanFirmware( FALSE ) && // アプリブート前に無線ファームのロードは完了しておく必要がある
|
) {
|
||||||
#endif // DISABLE_WLFIRM_LOAD
|
|
||||||
SYSM_IsAuthenticateTitleFinished() )
|
|
||||||
{
|
|
||||||
// メインループ開始から検証終了までの間に起きたFATALの処理
|
// メインループ開始から検証終了までの間に起きたFATALの処理
|
||||||
if( UTL_IsFatalError() ) {
|
if( UTL_IsFatalError() ) {
|
||||||
// FATALエラー処理
|
// FATALエラー処理
|
||||||
@ -534,6 +542,24 @@ MAIN_LOOP_START:
|
|||||||
break; // state を STOP にして break し、 Boot させない
|
break; // state を STOP にして break し、 Boot させない
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifndef DISABLE_WDS_SCAN
|
||||||
|
// Nintendoスポットブート時は、アプリ間パラメータにビーコン情報をセットする。
|
||||||
|
if( STD_CompareNString( (char *)&pBootTitle->titleID + 1, "JNH", 3 ) == 0 )
|
||||||
|
{
|
||||||
|
(void)WDS_WrapperSetArgumentParam();
|
||||||
|
}
|
||||||
|
#endif // DISABLE_WDS_SCAN
|
||||||
|
|
||||||
|
state = BOOT;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case BOOT:
|
||||||
|
#ifndef DISABLE_WDS_SCAN
|
||||||
|
// アプリブート前にWDSスキャンは終了しておく必要がある
|
||||||
|
if( ( WDS_WrapperCleanup() != WDSWRAPPER_ERRCODE_OPERATING ) &&
|
||||||
|
IsClearnupWDSWrapper() )
|
||||||
|
#endif // DISABLE_WDS_SCAN
|
||||||
|
{
|
||||||
SYSM_TryToBootTitle( pBootTitle ); // never return.
|
SYSM_TryToBootTitle( pBootTitle ); // never return.
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@ -545,7 +571,27 @@ MAIN_LOOP_START:
|
|||||||
(void)SYSM_GetCardTitleList( s_titleList );
|
(void)SYSM_GetCardTitleList( s_titleList );
|
||||||
|
|
||||||
// 無線ファームロードのポーリング
|
// 無線ファームロードのポーリング
|
||||||
(void)PollingInstallWlanFirmware( pBootTitle ? FALSE : TRUE );
|
if( PollingInstallWlanFirmware() &&
|
||||||
|
( GetWlanFirmwareInstallFinalResult() == WLANFIRM_RESULT_SUCCESS ) // ロード成功
|
||||||
|
) {
|
||||||
|
// 下記条件を満たすなら、WDSスキャン開始
|
||||||
|
#ifndef DISABLE_WDS_SCAN
|
||||||
|
if( !isStartScanWDS && // WDSスキャン開始済みでない
|
||||||
|
!direct_boot && // ダイレクトブートでない
|
||||||
|
!LCFG_THW_IsForceDisableWireless() && // 無線強制OFFでない
|
||||||
|
LCFG_TSD_IsAvailableWireless() // 無線ON
|
||||||
|
) {
|
||||||
|
WDSWrapperInitializeParam param;
|
||||||
|
param.threadprio = WDS_THREAD_PRIO;
|
||||||
|
param.dmano = WDS_DMA_NO;
|
||||||
|
param.callback = Callback_WDSWrapper;
|
||||||
|
param.alloc = SYSM_Alloc;
|
||||||
|
param.free = SYSM_Free;
|
||||||
|
(void)WDS_WrapperInitialize( param ); // 初期化と動作開始を兼ねている。(失敗しても止まりはしないので、気にしない)
|
||||||
|
isStartScanWDS = TRUE;
|
||||||
|
}
|
||||||
|
#endif // DISABLE_WDS_SCAN
|
||||||
|
}
|
||||||
|
|
||||||
// コマンドフラッシュ
|
// コマンドフラッシュ
|
||||||
(void)SND_FlushCommand(SND_COMMAND_NOBLOCK);
|
(void)SND_FlushCommand(SND_COMMAND_NOBLOCK);
|
||||||
|
|||||||
@ -15,246 +15,60 @@
|
|||||||
$Author$
|
$Author$
|
||||||
*---------------------------------------------------------------------------*/
|
*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
#include <twl.h>
|
|
||||||
#include <sysmenu/WDS.h>
|
|
||||||
#include <sysmenu.h>
|
|
||||||
#include "scanWDS.h"
|
#include "scanWDS.h"
|
||||||
|
|
||||||
#define WDS_THREAD_PRIO 10
|
char *callbackstring[] = {
|
||||||
#define WDS_STACK_SIZE 1024
|
"WDSWRAPPER_CALLBACK_INITIALIZE",
|
||||||
#define WDS_MESG_DEPTH 1
|
"WDSWRAPPER_CALLBACK_CLEANUP",
|
||||||
static OSThread s_thread;
|
"WDSWRAPPER_CALLBACK_STARTSCAN",
|
||||||
u64 s_stack[ WDS_STACK_SIZE / sizeof(u64) ];
|
"WDSWRAPPER_CALLBACK_STARTSCAN2",
|
||||||
OSMessage s_msgBuffer[ WDS_MESG_DEPTH ];
|
"WDSWRAPPER_CALLBACK_STOPSCAN",
|
||||||
OSMessageQueue s_msgQueue;
|
};
|
||||||
|
|
||||||
// WDSスキャンスレッド
|
static BOOL s_isStarted = FALSE;
|
||||||
static void ScanWDSThread( void *arg );
|
static BOOL s_isClearnup = FALSE;
|
||||||
// アクセスポイント情報のデバッグ表示用関数
|
|
||||||
static void DumpWDSApInfo( WDSApInfo *apinfo );
|
|
||||||
|
|
||||||
// WDS非同期関数のコールバック関数たち
|
// WDSWrapper終了?
|
||||||
// コールバック関数内ではアプリケーションのステート変数s_appstateを変更する
|
BOOL IsClearnupWDSWrapper( void )
|
||||||
void WDS_Initialize_CB(void *arg);
|
|
||||||
void WDS_StartScan_CB(void *arg);
|
|
||||||
void WDS_EndScan_CB(void *arg);
|
|
||||||
void WDS_End_CB(void *arg);
|
|
||||||
|
|
||||||
// アプリケーションを制御するステートの列挙型
|
|
||||||
typedef enum AppState {
|
|
||||||
APP_STATE_WDSINIT,
|
|
||||||
APP_STATE_WDSWAITINIT,
|
|
||||||
APP_STATE_WDSSCAN,
|
|
||||||
APP_STATE_WDSWAITSCAN,
|
|
||||||
APP_STATE_WDSCOMPLETESCAN,
|
|
||||||
APP_STATE_WDSENDSCAN,
|
|
||||||
APP_STATE_WDSWAITENDSCAN,
|
|
||||||
APP_STATE_WDSCOMPLETEENDSCAN,
|
|
||||||
APP_STATE_WDSWAITEND,
|
|
||||||
APP_STATE_WDSCOMPLETEEND
|
|
||||||
} AppState;
|
|
||||||
|
|
||||||
|
|
||||||
// 受け取ったビーコン情報を格納する変数(この配列をランチャー経由でホットスポットチャンネルに渡す)
|
|
||||||
static WDSBriefApInfo briefapinfo[WDS_APINFO_MAX];
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// WDSスキャンスレッドの起動
|
|
||||||
void StartScanWDS( void )
|
|
||||||
{
|
{
|
||||||
u8 *wdsSysBuf;
|
if( s_isStarted ) {
|
||||||
|
return s_isClearnup;
|
||||||
// WDSライブラリが使用するバッファを確保(32バイトアラインメントしている必要がある)
|
}else {
|
||||||
wdsSysBuf = SYSM_Alloc( WDS_GetWorkAreaSize() );
|
return TRUE;
|
||||||
if( wdsSysBuf == NULL)
|
|
||||||
{
|
|
||||||
OS_Panic("OS_Alloc Failed");
|
|
||||||
}
|
}
|
||||||
// WDSスレッドの起動
|
|
||||||
OS_InitMessageQueue( &s_msgQueue, &s_msgBuffer[0], WDS_MESG_DEPTH );
|
|
||||||
OS_CreateThread( &s_thread, ScanWDSThread, (void *)wdsSysBuf, s_stack + WDS_STACK_SIZE / sizeof(u64), WDS_STACK_SIZE, WDS_THREAD_PRIO );
|
|
||||||
OS_WakeupThreadDirect( &s_thread );
|
|
||||||
|
|
||||||
(void)OS_SendMessage(&s_msgQueue, (OSMessage)APP_STATE_WDSINIT, OS_MESSAGE_BLOCK );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// WDSスキャンスレッド
|
// WDSWrapper用コールバック関数
|
||||||
static void ScanWDSThread( void *arg )
|
void Callback_WDSWrapper( void *ptr )
|
||||||
{
|
{
|
||||||
#pragma unused(arg)
|
WDSWrapperCallbackParam *callback = (WDSWrapperCallbackParam *)ptr;
|
||||||
OSTick wdsScanBeginTick = 0;
|
OS_TPrintf("Callback_WDSWrapper: %s %d ", callbackstring[callback->callback], callback->errcode );
|
||||||
u8 *wdsSysBuf = arg;
|
|
||||||
|
|
||||||
// メインループ
|
switch( callback->callback ) {
|
||||||
while( 1 ) {
|
case WDSWRAPPER_CALLBACK_INITIALIZE:
|
||||||
OSTick now;
|
s_isStarted = TRUE;
|
||||||
int i;
|
break;
|
||||||
// アプリケーションを制御するステート変数
|
case WDSWRAPPER_CALLBACK_STARTSCAN2:
|
||||||
AppState appstate;
|
// n秒間隔のビーコン間欠スキャン一回分が完了
|
||||||
|
// ビーコンを受け取っていないという結果が出た場合、強調表示を消します
|
||||||
(void)OS_ReceiveMessage( &s_msgQueue, (OSMessage)&appstate, OS_MESSAGE_BLOCK );
|
if( WDS_WrapperCheckValidBeacon() == WDSWRAPPER_ERRCODE_FAILURE )
|
||||||
|
OS_TPrintf( "強調表示を消します" );
|
||||||
switch( appstate )
|
|
||||||
{
|
|
||||||
case APP_STATE_WDSINIT:
|
|
||||||
// イニシャルステート
|
|
||||||
|
|
||||||
// WDSライブラリの初期化関数を呼び出し、その非同期処理の完了を待つ
|
|
||||||
OS_Printf("*** WDS_Initialize\n");
|
|
||||||
if( WDS_Initialize( wdsSysBuf, WDS_Initialize_CB, 0 ) == 0 )
|
|
||||||
{
|
|
||||||
OS_Printf("WDS_Initialize successed\n");
|
|
||||||
}
|
|
||||||
else {
|
else {
|
||||||
OS_Panic("WDS_Initialize failed");
|
OS_TPrintf( "強調表示をつけます" );
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
OS_Printf("*** WDS_Initialize waiting asyncronous process\n");
|
case WDSWRAPPER_CALLBACK_STARTSCAN:
|
||||||
case APP_STATE_WDSWAITINIT:
|
// n秒間隔のビーコン間欠スキャン一回分が完了
|
||||||
case APP_STATE_WDSWAITSCAN:
|
// ビーコンを受け取っている場合のみ強調表示を付けます
|
||||||
case APP_STATE_WDSWAITENDSCAN:
|
if( WDS_WrapperCheckValidBeacon() == WDSWRAPPER_ERRCODE_SUCCESS )
|
||||||
case APP_STATE_WDSWAITEND:
|
OS_TPrintf( "強調表示をつけます" );
|
||||||
// 非同期処理の完了を待つステート群
|
|
||||||
|
|
||||||
// コールバック関数が呼び出され、ステートが変更されるのを待てばよい
|
|
||||||
break;
|
break;
|
||||||
case APP_STATE_WDSSCAN:
|
case WDSWRAPPER_CALLBACK_CLEANUP:
|
||||||
// 初期化が完了した直後か、ビーコンスキャン完了時に引き続きスキャンを行う場合に入ってくるステート
|
s_isClearnup = TRUE;
|
||||||
|
|
||||||
//OS_Printf("*** WDS_StartScan\n");
|
|
||||||
// ビーコンスキャン非同期処理を開始する
|
|
||||||
if( WDS_StartScan( WDS_StartScan_CB ) == 0 )
|
|
||||||
{
|
|
||||||
if( wdsScanBeginTick == 0 )
|
|
||||||
wdsScanBeginTick = OS_GetTick();
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
OS_Panic("WDS_StartScan failed");
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
case APP_STATE_WDSCOMPLETESCAN:
|
|
||||||
// スキャン完了後に入ってくるステート
|
|
||||||
|
|
||||||
// 一回のスキャンではビーコンを取れないことが多いので、2秒間ビーコン受信を繰り返す
|
|
||||||
now = OS_GetTick();
|
|
||||||
if( OS_TicksToMilliSeconds(now - wdsScanBeginTick) < 2000 )
|
|
||||||
{
|
|
||||||
// 再スキャンのためにスキャン開始ステートに移行
|
|
||||||
(void)OS_SendMessage(&s_msgQueue, (OSMessage)APP_STATE_WDSSCAN, OS_MESSAGE_NOBLOCK );
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
// スキャン終了ステートに移行
|
|
||||||
(void)OS_SendMessage(&s_msgQueue, (OSMessage)APP_STATE_WDSENDSCAN, OS_MESSAGE_NOBLOCK );
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case APP_STATE_WDSENDSCAN:
|
|
||||||
// スキャンを終了させる際に入ってくるステート
|
|
||||||
OS_Printf("*** WDS_EndScan\n");
|
|
||||||
|
|
||||||
// スキャンを終了させる非同期処理を開始する
|
|
||||||
if( WDS_EndScan( WDS_EndScan_CB ) == 0 )
|
|
||||||
{
|
|
||||||
OS_Printf("WDS_EndScan successed\n");
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
OS_Panic("WDS_EndScan failed");
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case APP_STATE_WDSCOMPLETEENDSCAN:
|
|
||||||
// スキャン終了非同期処理が終わった際に入って来るステート
|
|
||||||
OS_Printf("*** WDS_GetApInfoAll\n");
|
|
||||||
if( WDS_GetApInfoAll( briefapinfo ) != 0 )
|
|
||||||
{
|
|
||||||
OS_Panic("WDS_GetApInfoAll failed\n");
|
|
||||||
}
|
|
||||||
for( i = 0 ; i < WDS_APINFO_MAX ; i++ )
|
|
||||||
{
|
|
||||||
if( briefapinfo[i].isvalid == TRUE )
|
|
||||||
{
|
|
||||||
OS_TPrintf("rssi: %d\n", briefapinfo[i].rssi);
|
|
||||||
DumpWDSApInfo( &briefapinfo[i].apinfo );
|
|
||||||
*(u16 *)0x0500003c = 0x03ff;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// WDSライブラリを終了し、無線ハードの電源を落とす非同期処理を開始する
|
|
||||||
OS_Printf("*** WDS_End\n");
|
|
||||||
if( WDS_End( WDS_End_CB ) == 0 )
|
|
||||||
{
|
|
||||||
OS_Printf("WDS_End successed\n");
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
OS_Panic("WDS_End failed");
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case APP_STATE_WDSCOMPLETEEND:
|
|
||||||
// WDSライブラリの解放処理が完了した際に入って来るステート
|
|
||||||
SYSM_Free( wdsSysBuf );
|
|
||||||
OS_TPrintf("WDS test successfully completed\n");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// アクセスポイント情報のデバッグ表示用関数
|
|
||||||
static void DumpWDSApInfo( WDSApInfo *apinfo )
|
|
||||||
{
|
|
||||||
int i;
|
|
||||||
char buf[256];
|
|
||||||
|
|
||||||
OS_TPrintf( "================================\n" );
|
|
||||||
// SSID
|
|
||||||
MI_CpuCopy8( apinfo->ssid, buf, WDS_SSID_BUF_SIZE) ;
|
|
||||||
buf[WDS_SSID_BUF_SIZE] = 0x00;
|
|
||||||
OS_TPrintf( "SSID: %s\n", buf );
|
|
||||||
|
|
||||||
// APNUM
|
|
||||||
MI_CpuCopy8( apinfo->apnum, buf, WDS_APNUM_BUF_SIZE) ;
|
|
||||||
buf[WDS_APNUM_BUF_SIZE] = 0x00;
|
|
||||||
OS_TPrintf( "APNUM: %s\n", buf );
|
|
||||||
|
|
||||||
// CHANNEL
|
|
||||||
OS_TPrintf( "channel: %d\n", apinfo->channel );
|
|
||||||
|
|
||||||
// ENCRYPTFLAG
|
|
||||||
OS_TPrintf( "encryptmethod: %d\n", apinfo->encryptflag);
|
|
||||||
|
|
||||||
// WEPKEY
|
|
||||||
OS_TPrintf( "WEPKEY: " );
|
|
||||||
for( i = 0 ; i < WDS_WEPKEY_BUF_SIZE ; i++ )
|
|
||||||
{
|
|
||||||
OS_TPrintf( "%02x", apinfo->wepkey[i] );
|
|
||||||
}
|
|
||||||
OS_TPrintf( "\n" );
|
OS_TPrintf( "\n" );
|
||||||
OS_TPrintf( "================================\n" );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void WDS_Initialize_CB(void *arg)
|
|
||||||
{
|
|
||||||
#pragma unused(arg)
|
|
||||||
OS_TPrintf("WDS_Initialize_CB\n");
|
|
||||||
(void)OS_SendMessage(&s_msgQueue, (OSMessage)APP_STATE_WDSSCAN, OS_MESSAGE_NOBLOCK );
|
|
||||||
}
|
|
||||||
|
|
||||||
static void WDS_StartScan_CB(void *arg)
|
|
||||||
{
|
|
||||||
#pragma unused(arg)
|
|
||||||
// OS_TPrintf("WDS_StartScan_CB\n");
|
|
||||||
(void)OS_SendMessage(&s_msgQueue, (OSMessage)APP_STATE_WDSCOMPLETESCAN, OS_MESSAGE_NOBLOCK );
|
|
||||||
}
|
|
||||||
|
|
||||||
static void WDS_EndScan_CB(void *arg)
|
|
||||||
{
|
|
||||||
#pragma unused(arg)
|
|
||||||
OS_TPrintf("WDS_EndScan_CB\n");
|
|
||||||
(void)OS_SendMessage(&s_msgQueue, (OSMessage)APP_STATE_WDSCOMPLETEENDSCAN, OS_MESSAGE_NOBLOCK );
|
|
||||||
}
|
|
||||||
|
|
||||||
static void WDS_End_CB(void *arg)
|
|
||||||
{
|
|
||||||
#pragma unused(arg)
|
|
||||||
OS_TPrintf("WDS_End_CB\n");
|
|
||||||
(void)OS_SendMessage(&s_msgQueue, (OSMessage)APP_STATE_WDSCOMPLETEEND, OS_MESSAGE_NOBLOCK );
|
|
||||||
}
|
|
||||||
|
|||||||
@ -30,8 +30,8 @@ extern "C" {
|
|||||||
// global variables--------------------------------------------------
|
// global variables--------------------------------------------------
|
||||||
|
|
||||||
// function----------------------------------------------------------
|
// function----------------------------------------------------------
|
||||||
extern void StartScanWDS( void );
|
extern BOOL IsClearnupWDSWrapper( void );
|
||||||
|
extern void Callback_WDSWrapper( void *ptr );
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
|
|||||||
@ -45,7 +45,7 @@ SUBDIRS = $(LAUNCHER_DIR) \
|
|||||||
export UPDATER_RELEASE = TRUE
|
export UPDATER_RELEASE = TRUE
|
||||||
|
|
||||||
export DO_NOT_SHOW_LAUNCHER = TRUE
|
export DO_NOT_SHOW_LAUNCHER = TRUE
|
||||||
export DISABLE_WDS_SCAN = TRUE
|
export DISABLE_WDS_SCAN = FALSE
|
||||||
export IGNORE_WLFIRM_SIGNCHECK = FALSE
|
export IGNORE_WLFIRM_SIGNCHECK = FALSE
|
||||||
export DISABLE_WLFIRM_LOAD = FALSE
|
export DISABLE_WLFIRM_LOAD = FALSE
|
||||||
export DISABLE_INITIAL_SETTINGS = TRUE
|
export DISABLE_INITIAL_SETTINGS = TRUE
|
||||||
|
|||||||
@ -35,6 +35,7 @@
|
|||||||
#include <sysmenu/sharedFont.h>
|
#include <sysmenu/sharedFont.h>
|
||||||
#include <sysmenu/banner.h>
|
#include <sysmenu/banner.h>
|
||||||
#include <sysmenu/util.h>
|
#include <sysmenu/util.h>
|
||||||
|
#include <sysmenu/WDSWrapper.h>
|
||||||
|
|
||||||
/* SYSMENU_H_ */
|
/* SYSMENU_H_ */
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user