enum tFSMValidStates adHocScanNextState( tZGVoidInput ) { enum tFSMValidStates nextState = kSTIdle; if ( APPCXT.FSM.stateStatus == kSUCCESS ) { #if defined ( ZG_CONFIG_CONSOLE ) sprintf( (char *) g_ConsoleContext.txBuf, " IBSS selected = [%ld] \n\r", (tZGU32) APPCXT.selectedBSS ); ZG_PUTSUART( (char *) g_ConsoleContext.txBuf ); #endif nextState = kSTConnect; } else if ( APPCXT.FSM.stateStatus == kFAILURE ) { #if defined ( ZG_CONFIG_CONSOLE ) ZG_PUTRSUART(" starting network ...\n\r"); #endif nextState = kSTStart; } else { if ( ++(APPCXT.nScanRetryState) < MAX_ADHOC_SCAN_RETRY ) { #if defined ( ZG_CONFIG_CONSOLE ) sprintf( (char *) g_ConsoleContext.txBuf, " retry ... (%d/%d)\n\r", APPCXT.nScanRetryState, MAX_ADHOC_SCAN_RETRY); ZG_PUTSUART( (char *) g_ConsoleContext.txBuf ); #endif nextState = kSTScan; } else { #if defined ( ZG_CONFIG_CONSOLE ) ZG_PUTRSUART(" failed ... (*)\n\r"); #endif ZG_SETNEXT_MODE( kZGLMNetworkModeIdle ); } } return nextState; }
void ZGLinkMgrInit(void) { /* File global zeroing should not be necessary per ANSI C, but some emulator/loaders */ /* seem to leave garbage around, when the variable's values should be zero'd */ memset(&APPCXT,0, sizeof(tZGLinkMgrCtx)); /* Setup the initial states */ ZG_SET_MODE( kZGLMNetworkModeIdle); /* Want to come up in managed mode initially (optional preference) */ #if defined (MY_DEFAULT_LINK_MGMT) ZG_SETNEXT_MODE( MY_DEFAULT_LINK_MGMT ); #endif }
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; }
static int ZGEasyConfigProcess(void) { /* Idle network before making the requested changes */ if (CFGCXT.cfg_state == cfg_stopped) { ZG_SETNEXT_MODE(kZGLMNetworkModeIdle); CFGCXT.cfg_state = cfg_wait_idle_complete; return 0; } /* Check to see if link manager has achieved idle status */ if ((CFGCXT.cfg_state == cfg_wait_idle_complete) && (ZG_GET_MODE() != kZGLMNetworkModeIdle)) { /* Still not IDLE, bail out */ return 0; } /* Device has now been idled, we can set config now */ /* Set SSID... */ if (CFGCXT.ssid) ZG_SET_SSID((tZGS8*)CFGCXT.ssid, (tZGU8)strlen(CFGCXT.ssid)); /* Now deal with security... */ switch ((BYTE)CFGCXT.security) { case sec_open: /* No security */ ZG_SET_ENC_TYPE(kKeyTypeNone); break; case sec_wpa_passphrase: if (CFGCXT.key) ZG_SET_WPA_PASSPHRASE((tZGS8Ptr)CFGCXT.key, strlen((char *)CFGCXT.key)); break; case sec_wpa_pskcalc: if (CFGCXT.key) ZG_SET_WPAPSK(CFGCXT.key); break; case sec_wep64: if (CFGCXT.key) { ZG_SET_WEP_KEY_SHORT(CFGCXT.key, CFGCXT.defaultWepKey); ZG_SET_WEP_ACTIVE_INDEX(CFGCXT.defaultWepKey); } break; case sec_wep128: if (CFGCXT.key) { ZG_SET_WEP_KEY_LONG(CFGCXT.key, CFGCXT.defaultWepKey); ZG_SET_WEP_ACTIVE_INDEX(CFGCXT.defaultWepKey); } break; } /* Set wlan mode, PUT LAST in config pecking order */ #if !defined (ZG_CONFIG_NO_WIFIMGRII) if (CFGCXT.type == net_infra) ZG_SETNEXT_MODE(kZGLMNetworkModeInfrastructure); #endif #if !defined (ZG_CONFIG_NO_ADHOCMGRII) if (CFGCXT.type == net_adhoc) ZG_SETNEXT_MODE(kZGLMNetworkModeAdhoc); #endif /* Change state and return TRUE to show we are done! */ CFGCXT.cfg_state = cfg_stopped; return 1; }