Пример #1
0
// ================================
// = Kick-off a WiFi Scan Process =
// ================================
void HTTPPrint_scan(void)
{
    BYTE scanInProgressString[4];

    uitoa(IS_SCAN_IN_PROGRESS(SCANCXT.scanState), scanInProgressString);
    TCPPutString(sktHTTP, scanInProgressString);
}
Пример #2
0
extern void
WFDisplayScanMgr()
{
    tWFScanResult   bssDesc;
    char ssid[32];

    if (!IS_SCAN_STATE_DISPLAY(SCANCXT.scanState))
       return;

    if (IS_SCAN_IN_PROGRESS(SCANCXT.scanState))
       return;

    if (!IS_SCAN_STATE_VALID(SCANCXT.scanState))
       return;

    WFRetrieveScanResult(SCANCXT.displayIdx, &bssDesc);

    /* Display SSID */
    sprintf(ssid, "%s\r\n", bssDesc.ssid);
    putsUART(ssid);

    if (++SCANCXT.displayIdx == SCANCXT.numScanResults)  {
        SCAN_CLEAR_DISPLAY(SCANCXT.scanState);
        SCANCXT.displayIdx = 0;
#if defined(WF_CONSOLE)
        WFConsoleReleaseConsoleMsg();
#endif
    }

    return;
}
Пример #3
0
 void WFDisplayScanMgr(void)
{
    DRV_WIFI_SCAN_RESULT   bssDesc;
    char ssid[32+1];
    char buf[10];
    int i;
    char rssiChan[48];

    if ((SCANCXT.numScanResults == 0)               ||
        (!IS_SCAN_STATE_DISPLAY(SCANCXT.scanState)) ||
        (IS_SCAN_IN_PROGRESS(SCANCXT.scanState))    ||
        (!IS_SCAN_STATE_VALID(SCANCXT.scanState)))
    {
       SCAN_CLEAR_DISPLAY(SCANCXT.scanState); 
       return;
    }

    WFRetrieveScanResult(SCANCXT.displayIdx, &bssDesc);

    /* Display SSID */
    for(i=0;i<32;i++) ssid[i] = bssDesc.ssid[i];
    ssid[32] = 0;
    if(bssDesc.ssidLen<32) ssid[bssDesc.ssidLen] = 0;

    sprintf(buf,"%d  ",SCANCXT.displayIdx+1);
    SYS_CONSOLE_MESSAGE(buf);
    SYS_CONSOLE_MESSAGE("SSID:");
    SYS_CONSOLE_MESSAGE(ssid);
    SYS_CONSOLE_MESSAGE("\r\n");

    /* Display SSID  & Channel */
    /* RSSI_MAX : 200, RSSI_MIN : 106 */
    sprintf(rssiChan, "  => RSSI: %u, Channel: %u\r\n", bssDesc.rssi, bssDesc.channel);
    SYS_CONSOLE_MESSAGE(rssiChan);

    #if (WF_DEFAULT_NETWORK_TYPE == DRV_WIFI_NETWORK_TYPE_SOFT_AP) || (DRV_WIFI_DEFAULT_ADHOC_PRESCAN == DRV_WIFI_ENABLED)
        preScanResult[SCANCXT.displayIdx]= bssDesc;    // WF_PRESCAN
        if (SCANCXT.displayIdx == sizeof(preScanResult) / sizeof(preScanResult[0]) - 1) {
            SCAN_CLEAR_DISPLAY(SCANCXT.scanState);
            SCANCXT.displayIdx = 0;
            #if defined(CMD_PARSER)
            WFConsoleReleaseConsoleMsg();
            #endif
        }
    #endif

    if (++SCANCXT.displayIdx == SCANCXT.numScanResults)  
    {
        SCAN_CLEAR_DISPLAY(SCANCXT.scanState);
        SCANCXT.displayIdx = 0;
        #if defined(CMD_PARSER)
        WFConsoleReleaseConsoleMsg();
        #endif
    }
}
Пример #4
0
UINT16 WFStartScan(void)
{
   /* If scan already in progress bail out */
   if (IS_SCAN_IN_PROGRESS(SCANCXT.scanState))
       return WF_ERROR_OPERATION_CANCELLED;

   WF_Scan(WF_SCAN_ALL);

   SCAN_SET_IN_PROGRESS(SCANCXT.scanState);
   /* Should they be invalidated??? */
   //SCAN_CLEAR_VALID(SCANCXT.scanState);

   return WF_SUCCESS;
}
void WDRV_ScanResultsSaveManager(uint8_t saveIdx)
{
    if ((g_scanStatus.numberOfResults == 0) ||
        (IS_SCAN_IN_PROGRESS(g_scanStatus.scanState)) ||
        (!IS_SCAN_STATE_VALID(g_scanStatus.scanState)))
    {
       return;
    }

    // If the g_scanResults[] buffer is full, don't try to store more scan results to it.
    if (saveIdx > sizeof(g_scanResults) / sizeof(g_scanResults[0]) - 1)
        return;
    WDRV_EXT_ScanResultGet(saveIdx, &(g_scanResults[saveIdx]));
}
UINT16 WFStartScan(void)
{


    /* If scan already in progress bail out */
    if (IS_SCAN_IN_PROGRESS(SCANCXT.scanState)) 
        return WF_ERROR_OPERATION_CANCELLED;
   
    if (WF_Scan(WF_SCAN_ALL) != WF_SUCCESS)
        return WF_ERROR_OPERATION_CANCELLED;

    SCAN_SET_IN_PROGRESS(SCANCXT.scanState);
 
    return WF_SUCCESS;
}
uint16_t WFStartScan(void)
{
    /* If scan already in progress bail out */
    if (IS_SCAN_IN_PROGRESS(SCANCXT.scanState))
    {
        return DRV_WIFI_ERROR_OPERATION_CANCELLED;
    }
    if (DRV_WIFI_Scan(true) != DRV_WIFI_SUCCESS)
    {
        return DRV_WIFI_ERROR_OPERATION_CANCELLED;
    }
    SCAN_SET_IN_PROGRESS(SCANCXT.scanState);

    return DRV_WIFI_SUCCESS;
}
Пример #8
0
uint16_t WFStartScan(void)
{
    // save the state and ID
//    WF_CMCheckConnectionState(&state_SavedBeforeScan, &ID_SavedBeforeScan);

    /* If scan already in progress bail out */
    if (IS_SCAN_IN_PROGRESS(SCANCXT.scanState))
        return WF_ERROR_OPERATION_CANCELLED;

    if (WF_Scan(WF_SCAN_ALL) != WF_SUCCESS)
        return WF_ERROR_OPERATION_CANCELLED;

    SCAN_SET_IN_PROGRESS(SCANCXT.scanState);

    return WF_SUCCESS;
}
uint16_t WDRV_ScanStart(void)
{
    if (IS_SCAN_IN_PROGRESS(g_scanStatus.scanState))
        return 0;

    WDRV_EXT_CmdScanStart();

    SCAN_SET_IN_PROGRESS(g_scanStatus.scanState);
    SCAN_CLEAR_VALID(g_scanStatus.scanState);
    SCAN_CLEAR_DISPLAY(g_scanStatus.scanState);

    g_wdrv_priv.isScanDone = false;
    g_scanStatus.displayIdx = 0;

    return WDRV_SUCCESS;
}
void WFGetScanResults(void)
{
	int    id,counts;

	if (SCANCXT.numScanResults == 0)
	   return;

	if (IS_SCAN_IN_PROGRESS(SCANCXT.scanState))
	   return;

	if (!IS_SCAN_STATE_VALID(SCANCXT.scanState))
	   return;

	counts = SCANCXT.numScanResults>50? 50:SCANCXT.numScanResults;
	for(id = 0;id<SCANCXT.numScanResults;id++)
	{
		WFRetrieveScanResult(id, &preScanResult[id]);
	}
	SCAN_CLEAR_DISPLAY(SCANCXT.scanState);
	return;
}
Пример #11
0
extern void
WFDisplayScanMgr()
{
    tWFScanResult   bssDesc;
    char ssid[32];
	char rssiChan[48];

    if (SCANCXT.numScanResults == 0)
       return;
    if (!IS_SCAN_STATE_DISPLAY(SCANCXT.scanState))
       return;

    if (IS_SCAN_IN_PROGRESS(SCANCXT.scanState))
       return;

    if (!IS_SCAN_STATE_VALID(SCANCXT.scanState))
       return;

    WFRetrieveScanResult(SCANCXT.displayIdx, &bssDesc);

    /* Display SSID */
    sprintf(ssid, "%s\r\n", bssDesc.ssid);
    putsUART(ssid);

	/* Display SSID  & Channel */
    /* RSSI_MAX : 200, RSSI_MIN : 106 */
    sprintf(rssiChan, "  => RSSI: %u, Channel: %u\r\n", bssDesc.rssi, bssDesc.channel);
    putsUART(rssiChan);

    if (++SCANCXT.displayIdx == SCANCXT.numScanResults)  {
        SCAN_CLEAR_DISPLAY(SCANCXT.scanState);
        SCANCXT.displayIdx = 0;
#if defined(WF_CONSOLE)
        WFConsoleReleaseConsoleMsg();
#endif
    }

    return;
}
//extern UINT8 state_SavedBeforeScan, ID_SavedBeforeScan;  
void WF_CMGetConnectionState(UINT8 *p_state, UINT8 *p_currentCpId)
{
    UINT8  hdrBuf[2];
    UINT8  msgData[2];
#if 0   //defined ( EZ_CONFIG_SCAN )
    if (IS_SCAN_IN_PROGRESS(SCANCXT.scanState))
    { 
        *p_state = state_SavedBeforeScan;
        *p_currentCpId = ID_SavedBeforeScan;
        return; 
    }
#endif
    hdrBuf[0] = WF_MGMT_REQUEST_TYPE;
    hdrBuf[1] = WF_CM_GET_CONNECTION_STATUS_SUBYTPE;

    SendMgmtMsg(hdrBuf,
                sizeof(hdrBuf),
                NULL,
                0);

    /* wait for mgmt response, read data, free after read */
    WaitForMgmtResponseAndReadData(WF_CM_GET_CONNECTION_STATUS_SUBYTPE, 
                                   sizeof(msgData),                  /* num data bytes to read          */
                                   MGMT_RESP_1ST_DATA_BYTE_INDEX,    /* only used if num data bytes > 0 */
                                   msgData);                         /* only used if num data bytes > 0 */
    
    *p_state       = msgData[0];        /* connection state */
    *p_currentCpId = msgData[1];        /* current CpId     */
    
    if ((*p_state == WF_CSTATE_CONNECTED_INFRASTRUCTURE) || (*p_state == WF_CSTATE_CONNECTED_ADHOC))
    {
        SetLogicalConnectionState(TRUE);
    }
    else
    {
        SetLogicalConnectionState(FALSE);
    }        
}  
Пример #13
0
void WFDisplayScanMgr()
{
    tWFScanResult   bssDesc;
    char ssid[WF_MAX_SSID_LENGTH+1];
    char rssiChan[48];
    int    i;
    char    st[80];

    if (SCANCXT.numScanResults == 0) {
       SCAN_CLEAR_DISPLAY(SCANCXT.scanState);
       return;
    }
    if (!IS_SCAN_STATE_DISPLAY(SCANCXT.scanState))
       return;

    if (IS_SCAN_IN_PROGRESS(SCANCXT.scanState))
       return;

    if (!IS_SCAN_STATE_VALID(SCANCXT.scanState))
       return;

    WFRetrieveScanResult(SCANCXT.displayIdx, &bssDesc);
    sprintf(st,"%3d ",SCANCXT.displayIdx);
    putrsUART(st);

    if (bssDesc.bssType == 1)
        sprintf(st,"NetType: Infra.");
    else if (bssDesc.bssType == 2)
        sprintf(st,"NetType: Ad-hoc");
    putrsUART(st);

    sprintf(st,", ESSID:");
    putrsUART(st);

    /* Display SSID */
    for(i=0;i<bssDesc.ssidLen;i++) ssid[i] = bssDesc.ssid[i];
    ssid[bssDesc.ssidLen] = 0;
    putsUART(ssid);
    putrsUART("\r\n");

    /* Display SSID  & Channel */
#ifdef STACK_USE_CERTIFICATE_DEBUG
    sprintf(rssiChan, "\tRSSI: %3u, Channel: %2u", bssDesc.rssi, bssDesc.channel);
        putsUART(rssiChan);
    /* Display BSSID */
    sprintf(rssiChan, ", BSSID: %02x:%02x:%02x:%02x:%02x:%02x",
                 bssDesc.bssid[0],bssDesc.bssid[1],bssDesc.bssid[2],
                 bssDesc.bssid[3],bssDesc.bssid[4],bssDesc.bssid[5]);
    putsUART(rssiChan);
    /* Display Security Mode */
    if((bssDesc.apConfig & 0x10) == 0)    // bit4==0:   open (no security)
    {
        sprintf(rssiChan, ", SecMode: %s\r\n", "Open");
    }
    else    // bit4== 1:    security
    {
        if ((bssDesc.apConfig & 0xc0) == 0xc0) // bit7 ==  1: WPA2, bit6 == 1: WPA
        {
            sprintf(rssiChan, ", SecMode: %s\r\n", "WPA/WPA2");
        }
        else if ((bssDesc.apConfig & 0x80) == 0x80) // bit7 ==  1: WPA2
        {
            sprintf(rssiChan, ", SecMode: %s\r\n", "WPA2");
        }
        else if((bssDesc.apConfig & 0x40) == 0x40)//bit6==1: WPA
        {
            sprintf(rssiChan, ", SecMode: %s\r\n", "WPA");
        }
        else    // bit7==0, bit6==0, WEP
        {
            sprintf(rssiChan, ", SecMode: %s\r\n", "WEP");
        }
    }
    putsUART(rssiChan);
#else
    sprintf(rssiChan, ", RSSI: %u, Channel: %u\r\n", bssDesc.rssi, bssDesc.channel);
        putsUART(rssiChan);
#endif

#if (MY_DEFAULT_NETWORK_TYPE == WF_SOFT_AP)
    preScanResult[SCANCXT.displayIdx]= bssDesc;    // WF_PRESCAN
    if (SCANCXT.displayIdx == sizeof(preScanResult) / sizeof(preScanResult[0]) - 1) {
        SCAN_CLEAR_DISPLAY(SCANCXT.scanState);
        SCANCXT.displayIdx = 0;
        #if defined(WF_CONSOLE) & defined(STACK_USE_UART)
        WFConsoleReleaseConsoleMsg();
        #endif
    }
#endif

    if (++SCANCXT.displayIdx == SCANCXT.numScanResults)  {
        SCAN_CLEAR_DISPLAY(SCANCXT.scanState);
        SCANCXT.displayIdx = 0;
#if defined(WF_CONSOLE) & defined(STACK_USE_UART)
        WFConsoleReleaseConsoleMsg();
#endif
    }

    return;
}
Пример #14
0
/*******************************************************************************
  Function:
    void do_iwconfig_cmd(void)

  Summary:
    Responds to the user invoking iwconfig command

  Description:
    Responds to the user invoking iwconfig command

  Precondition:
    MACInit must be called first.

  Parameters:
    None.

  Returns:
    None.

  Remarks:
    None.
 *****************************************************************************/
void do_iwconfig_cmd(void)
{
    if (!WF_hibernate.state && !iwconfigSetCb() )
        return;

    // if user only typed in iwconfig with no other parameters
    if (ARGC == 1u)
    {
        if (!WF_hibernate.state)
            iwconfigDisplayStatus();
        else
#if defined(STACK_USE_UART)
            WFConsolePrintRomStr("The Wi-Fi module is in hibernate mode - command failed.", TRUE);
#endif
        return;
    }

    if ( (2u <= ARGC) && (strcmppgm2ram((char*)ARGV[1], "wakeup") == 0) )
    {
        if (!WF_hibernate.wakeup_notice)
        {
            WF_hibernate.wakeup_notice = TRUE;
        }

#if defined(STACK_USE_UART)
        WFConsolePrintRomStr("The Wi-Fi module is awake.", TRUE);
#endif

        return;
    }

    if ( (2u <= ARGC) && (strcmppgm2ram((char*)ARGV[1], "hibernate") == 0) )
    {
        if (!WF_hibernate.state)
        {
            WF_hibernate.state = WF_HB_ENTER_SLEEP;
            WF_hibernate.wakeup_notice = FALSE;
            WFConsolePrintRomStr("The Wi-Fi module is in hibernate mode.", TRUE);
        }
        else
            WFConsolePrintRomStr("The Wi-Fi module is in hibernate mode.", TRUE);
        return;
    }

    if (WF_hibernate.state)
    {
        WFConsolePrintRomStr("The Wi-Fi module is in hibernate mode - command failed.", TRUE);
        return;
    }

    if ( (2u <= ARGC) && (strcmppgm2ram((char*)ARGV[1], "ssid") == 0) )
    {
        if (!WF_hibernate.state && !iwconfigSetSsid())
            return;
    }
    else if ( (2u <= ARGC) && (strcmppgm2ram((char*)ARGV[1], "mode") == 0) )
    {
        if (!WF_hibernate.state && !iwconfigSetMode())
            return;
    }
    else if ( (2u <= ARGC) && (strcmppgm2ram((char*)ARGV[1], "channel") == 0) )
    {
        if (!WF_hibernate.state && !iwconfigSetChannel())
            return;
    }
    else if ( (2u <= ARGC) && (strcmppgm2ram((char*)ARGV[1], "power") == 0) )
    {
        if (!WF_hibernate.state && !iwconfigSetPower())
            return;
    }
    else if ( (2u <= ARGC) && (strcmppgm2ram((char*)ARGV[1], "domain") == 0) )
    {
        if (!WF_hibernate.state && !iwconfigSetDomain())
            return;
    }
    else if ( (2u <= ARGC) && (strcmppgm2ram((char*)ARGV[1], "rts") == 0) )
    {
        if (!WF_hibernate.state && !iwconfigSetRTS())
            return;
    }
    else if ( (2u <= ARGC) && (strcmppgm2ram((char*)ARGV[1], "txrate") == 0) )
    {
        // txrate is NOT available. Will always return FALSE
        if (!WF_hibernate.state && !iwconfigSetTxRate())
            return;
    }

#if defined ( EZ_CONFIG_SCAN ) && !defined(__18CXX)
    else if ( (2u <= ARGC) && (strcmppgm2ram((char*)ARGV[1], "scan") == 0))
    {
        if (!WF_hibernate.state)
        {
            // WFInitScan();
            WFConsolePrintRomStr("Scanning...", TRUE);
            if (WFStartScan() == WF_SUCCESS)
            {
                WFConsolePrintRomStr("Scan completed.", TRUE);
            }
            else
            {
                WFConsolePrintRomStr("Scan failed. Already in progress or not allowed", TRUE);
            }
        }
        else
        {
            WFConsolePrintRomStr("In hibernate mode - scan is not allowed.", TRUE);
        }
        return;
    }
    else if ( (2u <= ARGC) && (strcmppgm2ram((char*)ARGV[1], "scanresults") == 0) )
    {
        if (IS_SCAN_IN_PROGRESS(SCANCXT.scanState))
            WFConsolePrintRomStr("Scann in process...please wait or try again later", TRUE);
        else if (SCANCXT.numScanResults > 0)
        {
            SCAN_SET_DISPLAY(SCANCXT.scanState);
            SCANCXT.displayIdx = 0;
            while (IS_SCAN_STATE_DISPLAY(SCANCXT.scanState))
            {
                WFDisplayScanMgr();
            }
        }
        else
            WFConsolePrintRomStr("No scan results to display.", TRUE);

        return;
    }
    else if ( (2u <= ARGC) && (strcmppgm2ram((char*)ARGV[1], "starttest") == 0))
    {
        test_flag = TRUE;
        test_count = 0;
        return;
    }
    else if ( (2u <= ARGC) && (strcmppgm2ram((char*)ARGV[1], "stoptest") == 0))
    {
        test_flag = FALSE;
        return;
    }

#endif /* EZ_CONFIG_SCAN */

    else if( (2u <= ARGC) && (strcmppgm2ram((char*)ARGV[1], "connect") == 0))
    {
        iwconfigSetConnect();
        return;
    }
#ifdef	STACK_USE_CERTIFICATE_DEBUG
    else if( (2u <= ARGC) && (strcmppgm2ram((char*)ARGV[1], "macstats") == 0))
    {
        iwconfigGetMacStats();
        return;
    }
#endif
    else
    {
        WFConsolePrintRomStr("Unknown parameter", TRUE);
        return;
    }
}
void WDRV_ScanResultsDisplayManager(void)
{
    static bool displayHeader = true;
    uint8_t i;
    uint8_t ssid[32 + 1];

    if ((g_scanStatus.numberOfResults == 0) ||
        (!IS_SCAN_STATE_DISPLAY(g_scanStatus.scanState)) ||
        (IS_SCAN_IN_PROGRESS(g_scanStatus.scanState)) ||
        (!IS_SCAN_STATE_VALID(g_scanStatus.scanState)))
    {
       SCAN_CLEAR_DISPLAY(g_scanStatus.scanState);
       return;
    }

    if (displayHeader)
    {
        g_scanStatus.displayIdx = 0;
        SYS_CONSOLE_MESSAGE((const char *)"\nWi-Fi Scan Results:\r\n\n");
        if (g_scanStatus.numberOfResults == 0)
        {
            /* No AP found, re-initialize the scan context state. Scan is not allowed in Soft AP mode.
             * However, g_scanStatus.numberOfResults needs to be preserved for webpage using.
             */
            SYS_CONSOLE_MESSAGE((const char *)"No AP found\r\n ");
            SCAN_CLEAR_DISPLAY(g_scanStatus.scanState);
            if (WDRV_CONFIG_PARAMS(networkType) == WDRV_NETWORK_TYPE_SOFT_AP) {
                SCAN_CLEAR_VALID(g_scanStatus.scanState);
                return;
            } else {
                return;
            }
        }
        else
        {
            SYS_CONSOLE_MESSAGE((const char *)"    SSID                              RSSI  Channel\r\n");
            SYS_CONSOLE_MESSAGE((const char *)"    --------------------------------  ----  -------\r\n");
            displayHeader = false;
        }
    }

    // If the g_scanResults[] buffer is full, don't try to store more scan results to it.
    if (g_scanStatus.displayIdx > sizeof(g_scanResults) / sizeof(g_scanResults[0]) - 1)
    {
        SCAN_CLEAR_DISPLAY(g_scanStatus.scanState);
        g_scanStatus.displayIdx = 0;
        displayHeader = true;
        return;
    }
    WDRV_EXT_ScanResultGet(g_scanStatus.displayIdx, &(g_scanResults[g_scanStatus.displayIdx]));

    /* Display SSID */
    memset(ssid, ' ', sizeof(ssid));
    for (i = 0; i < g_scanResults[g_scanStatus.displayIdx].ssidLen; ++i)
    {
        if (!isprint(g_scanResults[g_scanStatus.displayIdx].ssid[i]))
            ssid[i] = '*';
        else
            ssid[i] = g_scanResults[g_scanStatus.displayIdx].ssid[i];
    }
    ssid[32] = 0;

    /* RSSI_MAX : 128, RSSI_MIN : 43 */
    SYS_CONSOLE_PRINT(" %2d)%s  %2u    %u\r\n",
            g_scanStatus.displayIdx + 1,
            ssid,
            g_scanResults[g_scanStatus.displayIdx].rssi,
            g_scanResults[g_scanStatus.displayIdx].channel);

    // If all the scan results have been displayed and stored, clear status and return.
    if (++g_scanStatus.displayIdx >= g_scanStatus.numberOfResults)
    {
        SCAN_CLEAR_DISPLAY(g_scanStatus.scanState);
        g_scanStatus.displayIdx = 0;
        displayHeader = true;
    }
}
Пример #16
0
 void WFDisplayScanMgr(void)
{
    t_wfScanResult   bssDesc;
    char st[80];
    int i;
	
    if ((SCANCXT.numScanResults == 0)               ||
        (!IS_SCAN_STATE_DISPLAY(SCANCXT.scanState)) ||
        (IS_SCAN_IN_PROGRESS(SCANCXT.scanState))    ||
        (!IS_SCAN_STATE_VALID(SCANCXT.scanState)))
    {
       return;
    }

    WFRetrieveScanResult(SCANCXT.displayIdx, &bssDesc);

    /* Display SSID */
    sprintf(st,"%2d ",SCANCXT.displayIdx);
    SYS_CONSOLE_MESSAGE(st);
    SYS_CONSOLE_MESSAGE("SSID: ");
    for(i = 0; i < bssDesc.ssidLen; i++) st[i] = bssDesc.ssid[i];
    st[bssDesc.ssidLen]=0;
    SYS_CONSOLE_MESSAGE(st);
    SYS_CONSOLE_MESSAGE("\r\n");


    /* Display BSSID */
    SYS_CONSOLE_MESSAGE("   BSSID: ");
    for(i = 0; i < WF_BSSID_LENGTH; i++)
    {
        if (i < 5)
        {
            sprintf(st, "%02X:", bssDesc.bssid[i]);
            SYS_CONSOLE_MESSAGE(st);
        }
        else
        {
            sprintf(st, "%02X, ", bssDesc.bssid[i]);
            SYS_CONSOLE_MESSAGE(st);
        }
    }
    /* Display network mode*/
    if (bssDesc.bssType == WF_NETWORK_TYPE_INFRASTRUCTURE)
        SYS_CONSOLE_MESSAGE("Network Mode: Infra, ");
    else if (bssDesc.bssType == WF_NETWORK_TYPE_ADHOC)
        SYS_CONSOLE_MESSAGE("Network Mode: Adhoc, ");

    /* Display RSSI  & Channel */
    sprintf(st, "RSSI: %3u, Channel: %2u\r\n", bssDesc.rssi, bssDesc.channel);
    SYS_CONSOLE_MESSAGE(st);

    #if (WF_DEFAULT_NETWORK_TYPE == WF_NETWORK_TYPE_SOFT_AP)
        preScanResult[SCANCXT.displayIdx]= bssDesc;    // WF_PRESCAN
    #endif

    if (++SCANCXT.displayIdx == SCANCXT.numScanResults)  
    {
        SCAN_CLEAR_DISPLAY(SCANCXT.scanState);
        SCANCXT.displayIdx = 0;
        #if defined(CMD_PARSER)
            WFConsoleReleaseConsoleMsg();
        #endif
    }
}
Пример #17
0
/*****************************************************************************
  Function:
	HTTP_IO_RESULT HTTPExecuteGet(void)
	
  Internal:
  	See documentation in the TCP/IP Stack API or HTTP2.h for details.
  ***************************************************************************/
HTTP_IO_RESULT HTTPExecuteGet(void)
{
	BYTE *ptr;
	BYTE filename[20];
	
	// Load the file name
	// Make sure BYTE filename[] above is large enough for your longest name
	MPFSGetFilename(curHTTP.file, filename, 20);

    /******************************************/
	// If it's the leds.cgi LED update file
    /******************************************/
	if(!memcmppgm2ram(filename, "leds.cgi", 8))
	{
		// Determine which LED to toggle
		ptr = HTTPGetROMArg(curHTTP.data, (ROM BYTE *)"led");
		
		// Toggle the specified LED
		switch(*ptr)
        {
			case '1':
				LED1_INV();
				break;
			case '2':
				LED2_INV();
				break;
            default:
                break;
		}
		
	}
    /******************************************/
    // If it's the wifi.xml scan file
    /******************************************/
    if(!memcmppgm2ram(filename, "wifi.xml", 8))
	{
		ptr = HTTPGetROMArg(curHTTP.data, (ROM BYTE *)"scan");

		if (ptr != NULL)
		{
            if(IS_SCAN_IN_PROGRESS(SCANCXT.scanState))
                return HTTP_IO_WAITING;

            if(IS_SCAN_STATE_DISPLAY(SCANCXT.scanState))
                return HTTP_IO_DONE;

			// Start Scan Request
        	if (WFStartScan() == WF_SUCCESS)
	    	{
            	SCAN_SET_DISPLAY(SCANCXT.scanState);
            	SCANCXT.displayIdx = 0;
                return HTTP_IO_WAITING;
        	}
		}
	}
	else
	{
        ;
	}		
	
	return HTTP_IO_DONE;
}
void WFDisplayScanMgr()
{
    tWFScanResult   bssDesc;
    char ssid[80];
    char rssiChan[48];
    int    count;

    if (SCANCXT.numScanResults == 0)
       return;
    if (!IS_SCAN_STATE_DISPLAY(SCANCXT.scanState))
       return;

    if (IS_SCAN_IN_PROGRESS(SCANCXT.scanState))
       return;

    if (!IS_SCAN_STATE_VALID(SCANCXT.scanState))
       return;

    WFRetrieveScanResult(SCANCXT.displayIdx, &bssDesc);

    /* Display SSID */
    count = SCANCXT.displayIdx + 1;
    sprintf(ssid, "%d SSID: %s\r\n", count, bssDesc.ssid);
    putsUART(ssid);

    /* Display SSID  & Channel */
    /* RSSI_MAX : 200, RSSI_MIN : 106 */
#ifdef STACK_USE_CERTIFATE_DEBUG	
	sprintf(rssiChan, "  => RSSI: %u, Channel: %u", bssDesc.rssi, bssDesc.channel);
    putsUART(rssiChan);
	/* Display BSSID */
	sprintf(rssiChan, " , BSSID: %02x:%02x:%02x:%02x:%02x:%02x ,", 
				 bssDesc.bssid[0],bssDesc.bssid[1],bssDesc.bssid[2],
				 bssDesc.bssid[3],bssDesc.bssid[4],bssDesc.bssid[5]);
	putsUART(rssiChan);
	/* Display Security Mode */
	if((bssDesc.apConfig & 0x10) == 0)	  // bit4==0:	open (no security)
	{
		sprintf(rssiChan, "Security mode: %s\r\n", "Open");
	}
	else								 // bit4== 1:	security
	{			 
		if ((bssDesc.apConfig & 0x80) == 0x80) // bit7 ==  1: WPA2
		{
			sprintf(rssiChan, "Security mode: %s\r\n", "WPA2");
		}
		else if((bssDesc.apConfig & 0x40) == 0x40)//bit6==1: WPA
		{
			sprintf(rssiChan, "Security mode: %s\r\n", "WPA");
		}
		else									  // bit7==0, bit6 ==0, WEP
		{
			sprintf(rssiChan, "Security mode: %s\r\n", "WEP");
		}
	}
	putsUART(rssiChan);
#else
	sprintf(rssiChan, "  => RSSI: %u, Channel: %u\r\n", bssDesc.rssi, bssDesc.channel);
    putsUART(rssiChan);
#endif

#if (MY_DEFAULT_NETWORK_TYPE == WF_SOFT_AP) 		
	preScanResult[SCANCXT.displayIdx]= bssDesc;    // WF_PRESCAN
#endif

    if (++SCANCXT.displayIdx == SCANCXT.numScanResults)  {
        SCAN_CLEAR_DISPLAY(SCANCXT.scanState);
        SCANCXT.displayIdx = 0;
#if defined(WF_CONSOLE) & defined(STACK_USE_UART)
        WFConsoleReleaseConsoleMsg();
#endif
    }

    return;
}
Пример #19
0
void WFDisplayScanMgr(void)
{
    DRV_WIFI_SCAN_RESULT bssDesc;
    char ssid[32 + 1];
    int i;

    if ((SCANCXT.numScanResults == 0)               ||
            (!IS_SCAN_STATE_DISPLAY(SCANCXT.scanState)) ||
            (IS_SCAN_IN_PROGRESS(SCANCXT.scanState))    ||
            (!IS_SCAN_STATE_VALID(SCANCXT.scanState)))
    {
        SCAN_CLEAR_DISPLAY(SCANCXT.scanState);
        return;
    }

    WFRetrieveScanResult(SCANCXT.displayIdx, &bssDesc);

    memset(ssid, ' ', sizeof(ssid));

    /* Display SSID */
    for (i = 0; i < bssDesc.ssidLen; i++)
    {
        if (!isprint(bssDesc.ssid[i]))
        {
            ssid[i] = '*';
        }
        else
        {
            ssid[i] = bssDesc.ssid[i];
        }
    }

    ssid[32] = 0;

    /* Display Index & SSID */
    //SYS_CONSOLE_PRINT("%2d)  ",SCANCXT.displayIdx + 1);
    //SYS_CONSOLE_PRINT("%s", ssid);

    /* Display RSSI & Channel */
    /* RSSI_MAX : 128, RSSI_MIN : 43 */
    //SYS_CONSOLE_PRINT(" %2u    %u\r\n", bssDesc.rssi, bssDesc.channel);

    SYS_CONSOLE_PRINT(" %2d) %s %2u    %u\r\n", SCANCXT.displayIdx + 1, ssid, bssDesc.rssi, bssDesc.channel);

    if (p_wifi_ConfigData->networkType == DRV_WIFI_NETWORK_TYPE_SOFT_AP)
    {
        preScanResult[SCANCXT.displayIdx] = bssDesc; // WF_PRESCAN
        if (SCANCXT.displayIdx == sizeof(preScanResult) / sizeof(preScanResult[0]) - 1)
        {
            /* Prescan is finished, re-initialize the scan context state. Scan is not allowed in Soft AP mode.
             * However, SCANCXT.numScanResults needs to be preserved for webpage using.
             */
            SCAN_CLEAR_VALID(SCANCXT.scanState);
            SCAN_CLEAR_DISPLAY(SCANCXT.scanState);
            SCANCXT.displayIdx = 0;
        }
    }
    else
    {
#if (DRV_WIFI_DEFAULT_ADHOC_PRESCAN == DRV_WIFI_ENABLED)
        preScanResult[SCANCXT.displayIdx] = bssDesc; // WF_PRESCAN
        if (SCANCXT.displayIdx == sizeof(preScanResult) / sizeof(preScanResult[0]) - 1)
        {
            SCAN_CLEAR_DISPLAY(SCANCXT.scanState);
            SCANCXT.displayIdx = 0;
        }
#endif
    }

    if (++SCANCXT.displayIdx == SCANCXT.numScanResults)
    {
        if (p_wifi_ConfigData->networkType == DRV_WIFI_NETWORK_TYPE_SOFT_AP)
        {
            /* Prescan is finished, re-initialize the scan context state. Scan is not allowed in Soft AP mode.
             * However, SCANCXT.numScanResults needs to be preserved for webpage using.
             */
            SCAN_CLEAR_VALID(SCANCXT.scanState);
            SCAN_CLEAR_DISPLAY(SCANCXT.scanState);
            SCANCXT.displayIdx = 0;
        }
        else
        {
            SCAN_CLEAR_DISPLAY(SCANCXT.scanState);
            SCANCXT.displayIdx = 0;
        }
    }
}
Пример #20
0
static int Cmd_Iwconfig(SYS_CMD_DEVICE_NODE *pCmdIO, int argc, char **argv)
{
    uint16_t scanIndex;
    DRV_WIFI_SCAN_RESULT scanResult;

    if (DRV_WIFI_InHibernateMode())
    {
        SYS_CONSOLE_MESSAGE("MRF24W is in Hibernate mode - command cannot work\r\n");
        return false;
    }

    if (!IwconfigUpdateCb(pCmdIO))
    {
        SYS_CONSOLE_MESSAGE("s_IwconfigCb structure set failed\r\n");
        return false;
    }

    // if user only typed in "iwconfig" with no other parameters
    if (argc == 1)
    {
        IwconfigDisplayStatus(pCmdIO);
        SYS_CONSOLE_MESSAGE("Try \"iwconfig --help\" or \"iwconfig -h\" for more information\r\n");
        return true;
    }

    if ((2 == argc) && (strcmp((char*)argv[1], "-h") == 0 || strcmp((char*)argv[1], "--help") == 0))
    {
        IwconfigDisplayHelp(pCmdIO);
    }
    else if ((2 <= argc) && (strcmp((char*)argv[1], "ssid") == 0))
    {
        return IwconfigSetSsid(pCmdIO, argc, argv);
    }
    else if ((2 <= argc) && (strcmp((char*)argv[1], "mode") == 0))
    {
       return IwconfigSetMode(pCmdIO, argc, argv);
    }
    else if ((2 <= argc) && (strcmp((char*)argv[1], "channel") == 0))
    {
        return IwconfigSetChannel(pCmdIO, argc, argv);
    }
    else if ((2 <= argc) && (strcmp((char*)argv[1], "power") == 0))
    {
        return IwconfigSetPower(pCmdIO, argc, argv);
    }
    else if ((2 <= argc) && (strcmp((char*)argv[1], "rts") == 0))
    {
        return IwconfigSetRTS(pCmdIO, argc, argv);
    }
    else if ((2 == argc) && (strcmp((char*)argv[1], "scan") == 0))
    {
        if (DRV_WIFI_ScanStart() == DRV_WIFI_SUCCESS)
        {
            SYS_CONSOLE_MESSAGE("Scan started . . .\r\n");
        }
        else
        {
            if (DRV_WIFI_CONFIG_PARAMS(networkType) == DRV_WIFI_NETWORK_TYPE_SOFT_AP)
                SYS_CONSOLE_MESSAGE("Scan is not allowed in Soft AP mode\r\n");
            else
                SYS_CONSOLE_MESSAGE("Scan failed\r\n");
        }
        return false;
    }
    else if ((2 <= argc) && (strcmp((char*)argv[1], "scanget") == 0))
    {
        if (IS_SCAN_IN_PROGRESS(g_scanStatus.scanState))
        {
            SYS_CONSOLE_MESSAGE("Scan in progress, please wait\r\n");
            return false;
        }

        if (!IS_SCAN_STATE_VALID(g_scanStatus.scanState))
        {
            SYS_CONSOLE_MESSAGE("No scan results to display\r\n");
            return false;
        }

        if (argc != 3)
        {
            SYS_CONSOLE_MESSAGE("Need scan index to display (1 - N)\r\n");
            return false;
        }

        if (g_scanStatus.numberOfResults == 0)
        {
            SYS_CONSOLE_MESSAGE("No scan results to display\r\n");
            return false;
        }

        scanIndex = atoi((char *)argv[2]);

        if ((scanIndex > 0) && (scanIndex <= g_scanStatus.numberOfResults))
        {
            DRV_WIFI_ScanResultGet(scanIndex - 1, &scanResult);
            IwconfigDisplayScanResult(pCmdIO, scanIndex - 1, &scanResult);
        }
        else
        {
            SYS_CONSOLE_PRINT("Scan index must be between 1 and %d\r\n", g_scanStatus.numberOfResults);
            return false;
        }
    }
    else
    {
        SYS_CONSOLE_MESSAGE("Unknown parameter\r\n");
        return false;
    }

    return true;
}