enum tFSMValidStates adHocDomNextState( tZGVoidInput ) { enum tFSMValidStates nextState = kSTIdle; if ( APPCXT.FSM.stateStatus != kFAILURE ) { switch ( ZG_GET_ENC_TYPE() ) { case kKeyTypeWep: nextState = kSTInstallWEPKey; break; case kKeyTypeCalcPsk: case kKeyTypePsk: nextState = kSTIdle; ZG_SETNEXT_MODE( kZGLMNetworkModeIdle ); #if defined ( ZG_CONFIG_CONSOLE ) ZG_PUTRSUART("PSK/WPA not supported in AdHoc mode.\n\r"); #endif break; case kKeyTypeNone: nextState = kSTScan; break; default: ZGSYS_MODULE_ASSERT(1, (ROM FAR char*) "Unknown security encryption type"); break; } } return nextState; }
tZGU8 adHocStartRequest( void * const ptrRequest, tZGVoidInput *appOpaquePtr) { tZGAdhocStartReqPtr ptrStart = (tZGAdhocStartReqPtr)ptrRequest; /* choose the first channel in ordered list for network start */ if ( ZG_GET_ACTIVE_CHANNELS() == 0u ) { ZGSYS_MODULE_ASSERT(1, (ROM FAR char *)"Adhoc StartReq: empty channel list\n\r"); } else ptrStart->channel = ZG_CHANNEL(0); ptrStart->beaconPrd = HSTOZGS( (tZGU16) 100); ptrStart->capInfo[0] = kZGAdhocMgrCapBitIbss; /* was | kZGAdhocMgrCapBitShortPreamble; 0x22 */ /* If in WEP mode, set the corresponding bit. */ if ( ZG_GET_ENC_TYPE() == (tZGU8)kKeyTypeWep ) { ptrStart->capInfo[0] = ptrStart->capInfo[0] | kZGAdhocMgrCapBitPrivacy; } ptrStart->capInfo[1] = 0; ptrStart->ssidLen = ZG_SSID_LEN(); memcpy( (void *) ptrStart->ssid, (const void*) ZG_GET_SSID(), ptrStart->ssidLen); /* These values are part of the adhoc network beacon */ /* and are part of the "basic rate" set, not to be */ /* confused with supported rate set */ ptrStart->dataRateLen = 2; ptrStart->dataRates[0] = 0x82; /* 1Mbps */ ptrStart->dataRates[1] = 0x84; /* 2Mbps */ ZG_PUTRSUART("Start ...\n\r"); return ( sizeof(tZGAdhocStartReq) ); }
/***************************************************************************** * FUNCTION: IwconfigDisplayStatus * * RETURNS: None * * PARAMS: None * * NOTES: Responds to the user invoking ifconfig with no parameters *****************************************************************************/ static tZGVoidReturn IwprivDisplayStatus(tZGVoidInput) { tZGU8 i, j; tZGU8Ptr ptrTemp; sprintf( (char *) g_ConsoleContext.txBuf, #if defined( __18CXX) "\nEncryption: %HS\n\r", #else "\nEncryption: %s\n\r", #endif (ROM FAR char*) ZG_GET_CUR_ENC_STR() ); ZG_PUTSUART( (char *) g_ConsoleContext.txBuf ); switch ( ZG_GET_ENC_TYPE() ) { case kKeyTypeWep: sprintf( (char *) g_ConsoleContext.txBuf, #if defined( __18CXX) " Auth: %HS\n\r", #else " Auth: %s\n\r", #endif (ROM FAR char*) ZG_GET_CUR_AUTH_STR()); ZG_PUTSUART( (char *) g_ConsoleContext.txBuf ); for( j=0; j < (tZGU8)kZGNumDefWepKeys; j++) { if ( j == ZG_GET_WEP_ACTIVE_INDEX() ) ZG_PUTRSUART("* "); else ZG_PUTRSUART(" "); sprintf( (char *) g_ConsoleContext.txBuf, "Wep key[%d]: 0x",j+1); ZG_PUTSUART( (char *) g_ConsoleContext.txBuf ); ptrTemp = ZG_GET_WEPKEY(j); for ( i=0; i < ZG_GET_WEP_KEY_LEN(); i++ ) { sprintf( (char *) g_ConsoleContext.txBuf, "%.2x", ptrTemp[i]); ZG_PUTSUART( (char *) g_ConsoleContext.txBuf ); } ZG_PUTRSUART("\n\r"); } break; case kKeyTypePsk: ZG_PUTRSUART(" PSK: 0x"); ptrTemp = ZG_GET_WPAPSK(); for ( i=0; i < (tZGU8)kZGMaxPmkLen; i++ ) { sprintf( (char *) g_ConsoleContext.txBuf, "%.2x", ptrTemp[i]); ZG_PUTSUART( (char *) g_ConsoleContext.txBuf ); } ZG_PUTRSUART("\n\r"); break; case kKeyTypeCalcPsk: /* if no pass phrase show a user friendly string */ if ( ZG_GET_PASSPHRASE_LEN() == 0u ) { sprintf( (char *) g_ConsoleContext.txBuf, #if defined( __18CXX) " Phrase: \"%HS\"\n\r", #else " Phrase: \"%s\"\n\r", #endif (ROM FAR char*) kZGNone); } else { sprintf( (char *) g_ConsoleContext.txBuf, " Phrase: \"%s\"\n\r", ZG_GET_WPA_PASSPHRASE() ); } ZG_PUTSUART( (char *) g_ConsoleContext.txBuf ); sprintf( (char *) g_ConsoleContext.txBuf, " SSID: %s\n\r", ZG_GET_SSID()); ZG_PUTSUART( (char *) g_ConsoleContext.txBuf ); break; } }