Esempio n. 1
0
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;

}
Esempio n. 2
0
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
}
Esempio n. 3
0
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;
}