コード例 #1
0
static void SchCfgInit(const XPfw_Module_t *ModPtr, const u32 *CfgData, u32 Len)
{
	/* Task every 5 seconds - For our convenience in manual testing */
	fw_printf("Adding Task1 - Status: %d\n", XPfw_CoreScheduleTask(ModPtr, 5000U, PrintMsg1));
	/* Every 10 seconds */
	fw_printf("Adding Task2 - Status:%d\n", XPfw_CoreScheduleTask(ModPtr, 10000U, PrintMsg2));
}
コード例 #2
0
static void RtcEventHandler(const XPfw_Module_t *ModPtr, u32 EventId)
{
	fw_printf("MOD%d:EVENTID: %d\r\n", ModPtr->ModId, EventId);
	//XPfw_CorePrintStats();
	if (XPFW_EV_RTC_SECONDS == EventId) {
			/* Ack the Int in RTC Module */
			Xil_Out32(RTC_RTC_INT_STATUS, 1U);
			fw_printf("RTC: %d \r\n", Xil_In32(RTC_CURRENT_TIME));
	}
}
コード例 #3
0
static void PmIpiHandler(const XPfw_Module_t *ModPtr, u32 IpiNum, u32 SrcMask)
{
	u32 isrVal, isrClr, apiId;
	XPfw_PmIpiStatus ipiStatus;
	XStatus status;

	switch (IpiNum) {
	case 0:
		isrVal = XPfw_Read32(IPI_PMU_0_ISR);
		fw_printf("Received IPI Mask:0x%08x\r\n", isrVal);
		ipiStatus = XPfw_PmCheckIpiRequest(isrVal, &apiId);
		if (XPFW_PM_IPI_IS_PM_CALL == ipiStatus) {
			/* Power management API processing */
			status = XPfw_PmIpiHandler(isrVal, apiId, &isrClr);
			if (XST_SUCCESS == status) {
				/* Clear only irq for handled PM request */
				XPfw_Write32(IPI_PMU_0_ISR, isrClr);
			}
		} else {
			status = XST_NO_FEATURE;
			fw_printf("MOD-%d: Non-PM IPI-%d call received\r\n", ModPtr->ModId, IpiNum);
		}

		if (XST_SUCCESS != status) {
			/*
			 * Clear all irqs if something went wrong, to avoid
			 * system looping in interrupt handler because of error
			 */
			XPfw_Write32(IPI_PMU_0_ISR, isrVal);
			fw_printf("ERROR #%d : IPI-%d\r\n", status, IpiNum);
		}
		break;

	case 1:
		isrVal = XPfw_Read32(IPI_PMU_1_ISR);
		XPfw_Write32(IPI_PMU_1_ISR, isrVal);
		break;

	case 2:
		isrVal = XPfw_Read32(IPI_PMU_2_ISR);
		XPfw_Write32(IPI_PMU_2_ISR, isrVal);
		break;

	case 3:
		isrVal = XPfw_Read32(IPI_PMU_3_ISR);
		XPfw_Write32(IPI_PMU_3_ISR, isrVal);
		break;

	default:
		fw_printf("ERROR: Invalid IPI Number: %d\r\n", IpiNum);
	}
}
コード例 #4
0
ファイル: mlme.c プロジェクト: archith/camera_project
void mlme_dump_data(UINT8 *data, UINT32 data_len)
{
    int i;
	
	for (i=0; i<data_len; i++)
	{
		fw_printf(MLME_DBG_LEVEL1,"%02x", data[i]);
		fw_printf(MLME_DBG_LEVEL1," ");
		if ((i>0) && ((i+1)%16 == 0))

			fw_printf(MLME_DBG_LEVEL1,"\n");
	}
	fw_printf(MLME_DBG_LEVEL1,"\n");
}
コード例 #5
0
ファイル: mlme.c プロジェクト: archith/camera_project
static void mlme_aging_table(mlme_data_t *mlme_p)
{
    UINT32 i;
    UINT32 now=mlme_get_time(mlme_p);
    BSS_entry_t *tmp;
    BSS_table_t *table=&mlme_p->mTable;
    
    for(i=0;i<BSS_TABLE_SIZE;i++)
    {
        tmp=&(table->entry[i]);
        if(!(tmp->exist))
            continue;
        if(now > tmp->timestamp)
        {
            if(now-tmp->timestamp >BEACON_WAIT_TIME)  //wait for BEACON_WAIT_TIME ms.
            {
                tmp->exist=0;
                if(mlme_dbg_level&MLME_DEBUG_MLME_BASIC_MSG)
                    fw_printf(MLME_DBG_LEVEL1,"\n******* BSSID:%x %x %x %x %x %x aged...\n",tmp->mBssid[0],
                        tmp->mBssid[1],tmp->mBssid[2],tmp->mBssid[3],tmp->mBssid[4],tmp->mBssid[5]);
            }
        }
        else
            tmp->timestamp=now;
    }
}
コード例 #6
0
static void RtcCfgInit(const XPfw_Module_t *ModPtr, const u32 *CfgData, u32 Len)
{
	XPfw_CoreRegisterEvent(ModPtr, XPFW_EV_RTC_SECONDS);
	/* Enable Seconds Alarm */
	Xil_Out32(RTC_RTC_INT_EN, 1U);
	Xil_Out32(RTC_RTC_INT_STATUS, 1U);
	fw_printf("RTC (MOD-%d): Initialized.\r\n", ModPtr->ModId);
}
コード例 #7
0
ファイル: xpfw_main.c プロジェクト: Hunter-why/embeddedsw
XStatus XPfw_Main(void)
{
	XStatus Status;

	/* Start the Init Routine */
	XPfw_PlatformInit();
	fw_printf("PMU Firmware %s\t%s   %s\n",
	ZYNQMP_XPFW_VERSION, __DATE__, __TIME__);
	/* TODO: Print ROM version */

	/* Initialize the FW Core Object */
	Status = XPfw_CoreInit(0U);

	if (Status != XST_SUCCESS) {
		fw_printf("%s: Error! Core Init failed\r\n", __func__);
		goto Done;
	}

	/* Call the User Start Up Code to add Mods, Handlers and Tasks */
	XPfw_UserStartUp();

	/* Configure the Modules. Calls CfgInit Handlers of all modules */
	Status = XPfw_CoreConfigure();

	if (Status != XST_SUCCESS) {
		fw_printf("%s: Error! Core Cfg failed\r\n", __func__);
		goto Done;
	}

	/* Wait to Service the Requests */
	Status = XPfw_CoreLoop();

	if (Status != XST_SUCCESS) {
		fw_printf("%s: Error! Unexpected exit from CoreLoop\r\n", __func__);
		goto Done;
	}
	Done:
	/* Control never comes here */
	return Status;
}
コード例 #8
0
ファイル: assoc.c プロジェクト: archith/camera_project
/* return assoc body length */
UINT32 mlme_make_assoc(mlme_data_t *mlme_p,UINT8 *pkt)
{
    I802_11_pkt_t   *mlme_pkt=(I802_11_pkt_t *)pkt;
    UINT32          len,len2;
    UINT16          BcnInterval=mlme_p->mInterval_config;
    UINT16          cap=MLME_CAP_NULL;
    
    mlme_make_header(pkt,SUBTYPE_ASSOC_REQ,0,0,mlme_p->bss.mBssid,mlme_p->mMAC,mlme_p->bss.mBssid);

    /* capability info */
    mlme_pkt->fb[0]=cap&0xff;
    mlme_pkt->fb[1]=(cap&0xff00)>>8;
   	    
    /* beacon interval */
    mlme_pkt->fb[2]=BcnInterval&0xff;
    mlme_pkt->fb[3]=(BcnInterval&0xff00)>>8;

    /* essid */
    mlme_pkt->fb[4]=MLME_ELEMENT_SSID;
    mlme_pkt->fb[5]=len2=(unsigned char)strlen(mlme_p->bss.mEssid);
  	fw_memcpy(&mlme_pkt->fb[6],mlme_p->bss.mEssid,len2);

    len=6+len2;
    /* support rate */
    mlme_pkt->fb[len]=MLME_ELEMENT_RATE;
    mlme_pkt->fb[len+1]=len2=(unsigned char)strlen(mlme_p->mRate_info);
    fw_memcpy(&mlme_pkt->fb[len+2],mlme_p->mRate_info,len2);    
    len=len+2+len2;
    
    /* SSN support ?*/
    if(mlme_p->bss.wpa_ie[0]!=0)
    {
        fw_memcpy(&mlme_pkt->fb[len],mlme_p->bss.wpa_ie,mlme_p->bss.wpa_ie[1]+2);
        len=len+mlme_p->bss.wpa_ie[1]+2;
    }
    
    if(len>MLME_ASSOC_BODY_LEN)
    {
        fw_printf(MLME_DBG_LEVEL1,"\nerror assoc packet length-------------------\n");
        mlme_dump_data(pkt,len);
        while(1)
            ;
    }       
    return len;
}
コード例 #9
0
static void PmEventHandler(const XPfw_Module_t *ModPtr, u32 EventId)
{
	u32 EvType, RegValue;
	EvType = XPfw_EventGetType(EventId);

	switch (EvType) {
	case XPFW_EV_TYPE_GPI1:
		RegValue = XPfw_EventGetRegMask(EventId);
		XPfw_PmWakeHandler(RegValue);
		break;
	case XPFW_EV_TYPE_GPI2:
		RegValue = XPfw_EventGetRegMask(EventId);
		XPfw_PmWfiHandler(RegValue);
		break;
	default:
		fw_printf("Unhandled PM Event: %d\r\n", EventId);
		break;
	}
}
コード例 #10
0
static void PrintMsg2(void)
{
	fw_printf("Task#2\r\n");
}
コード例 #11
0
static void PrintMsg1(void)
{
	fw_printf("Task#1\r\n");
}
コード例 #12
0
ファイル: mlme.c プロジェクト: archith/camera_project
void mlme_infra_routine(mlme_data_t *mlme_p)
{
    BSS_entry_t     *bss_entry;
    UINT32  reason;
    
    if(mlme_p->mAssoc)
    {
        UINT32 now=mlme_get_time(mlme_p);
        if(now < mlme_p->mLastBeaconTime)
            return;
            
        if((now-mlme_p->mLastBeaconTime)>BEACON_WAIT_TIME)
        {
            fw_printf(MLME_DBG_LEVEL1,"*******Not accept belonged beacon: 0x%x from now 0x%x\n",mlme_p->mLastBeaconTime,now);
            mlme_reset(mlme_p);
            mlme_p->mLastBeaconTime=now;
            /* it will go through to if(!mlme_p->mAssoc) */
        }
        else
        {           
            mlme_p->mLastBeaconTime=0;
            
            //check romming quality
            bss_entry=mlme_search_table_by_essid(&mlme_p->mTable,mlme_p->bss.mEssid,mlme_p->mChannel_config);
            if(!bss_entry)
                return;
            if(!fw_memcmp(bss_entry->mBssid,mlme_p->bss.mBssid,MACADDR_LEN))
                return;

            printk("<not equal:%d %d diff:%d>",bss_entry->quality,mlme_p->bss.quality,bss_entry->quality-mlme_p->bss.quality);
            if((bss_entry->quality) - (mlme_p->bss.quality) > MLME_QUALITY_OFFSET)
            {                
                /* do disassoc */
//                fw_showstr(MLME_DBG_LEVEL1,"Send Message:MLME_DISASSOC_REQ to ASSOC state machine...");
                reason=MLME_REASON_DISASSOC_STA_LEAVING;
                mlme_msg_enqueue(&mlme_p->mQueue,MLME_ASSOC_STATE_MACHINE,MLME_DISASSOC_REQ,&reason,2,0,0);
//                printk("MLMA_main() from mlme_infra_routine\n");
                MLME_main(mlme_p);
                //join better AP
                fw_memcpy(&mlme_p->bss,bss_entry,sizeof(BSS_entry_t));
//                fw_showstr(MLME_DBG_LEVEL1,"(mlme_routine)Send Message:MLME_JOIN_REQ to SYNC state machine...");
                mlme_msg_enqueue(&mlme_p->mQueue,MLME_SYNC_STATE_MACHINE,MLME_JOIN_REQ,0,0,0,0);
            }
        }
    }
    
    if(!mlme_p->mAssoc) //not mAssoc
    {
//        printk("\n<mlme_routine_scan>\n");
        mlme_reset(mlme_p);

        if(mlme_p->mChannel_config==MLME_CHANNEL_NOCHECK)
        {
            /* do scan */
//            fw_showstr(MLME_DBG_LEVEL1,"(mlme_routine)Send Message:MLME_SCAN_REQ to SYNC state machine...");
            mlme_msg_enqueue(&mlme_p->mQueue,MLME_SYNC_STATE_MACHINE,MLME_SCAN_REQ,0,0,0,0);
//            printk("MLMA_main() from mlme_infra_routine\n");
            MLME_main(mlme_p);
        }
        else
        {
            //search table for specified ssid/ssid
            bss_entry=mlme_search_table_by_essid(&mlme_p->mTable,mlme_p->bss.mEssid,mlme_p->mChannel_config);
            if(bss_entry)
            {
                /* do join */                    
                fw_memcpy(&mlme_p->bss,bss_entry,sizeof(BSS_entry_t));
//                fw_showstr(MLME_DBG_LEVEL1,"(mlme_routine)Send Message:MLME_JOIN_REQ to SYNC state machine...");
                mlme_msg_enqueue(&mlme_p->mQueue,MLME_SYNC_STATE_MACHINE,MLME_JOIN_REQ,0,0,0,0);
            }
            else
            {
                /* do scan */
//                fw_showstr(MLME_DBG_LEVEL1,"(mlme_routine)Send Message:MLME_SCAN_REQ to SYNC state machine...");
                mlme_msg_enqueue(&mlme_p->mQueue,MLME_SYNC_STATE_MACHINE,MLME_SCAN_REQ,0,0,0,0);
            }
        }
    }    
}
コード例 #13
0
ファイル: mlme.c プロジェクト: archith/camera_project
UINT32 MLME_ioctl(mlme_data_t *mlme_p,UINT32 cmd,void *data)
{
    switch(cmd)
    {
        case MLME_IOCTL_QUERY_JOB:  //query if queued mlme jobs
            if(mlme_query_job(&mlme_p->mQueue))
                *(UINT32 *)data=1;
            else
                *(UINT32 *)data=0;
            break;
        case MLME_IOCTL_SET_SSID:   //use string with 0x0 end
            if(fw_strcmp(mlme_p->bss.mEssid,(UINT8 *)data)!=0) //not equal
                fw_strcpy(mlme_p->bss.mEssid,(UINT8 *)data);
            mlme_reset(mlme_p); //should do mlme_reset because re-typing iwconfig ...
            mlme_set_ssid_action(mlme_p);
            break;
        case MLME_IOCTL_GET_SSID:
            fw_strcpy(data,mlme_p->bss.mEssid);
            break;
        case MLME_IOCTL_SET_BSSID:  //use string with 0x0 end
            mlme_reset(mlme_p); //should do mlme_reset because re-typing iwconfig ...
            mlme_set_bssid_action(mlme_p,data);
            break;
        case MLME_IOCTL_GET_BSSID:
            fw_memcpy(data,mlme_p->bss.mBssid,MACADDR_LEN);
            break;            
        case MLME_IOCTL_SET_MAC:
            fw_memcpy((UINT8 *)mlme_p->mMAC,(UINT8 *)data,MACADDR_LEN);
            break;
        case MLME_IOCTL_GET_MAC:
            fw_memcpy((UINT8 *)data,(UINT8 *)mlme_p->mMAC,MACADDR_LEN);
            break;
        case MLME_IOCTL_SET_MODE:        //UINT32 mode
            mlme_clean_table(mlme_p);
            mlme_p->mMode=*(UINT32 *)data;
//            fw_printf(MLME_DBG_LEVEL1,"MLME_SET_MODE:%d\n",mlme_p->mMode);
            mlme_down(mlme_p);
            mlme_reset(mlme_p); //should do mlme_reset because re-typing iwconfig ...            
            mlme_set_ssid_action(mlme_p);
            break;
        case MLME_IOCTL_GET_MODE:        //UINT32 mode
            *(UINT32 *)data=mlme_p->mMode;
//            fw_printf(MLME_DBG_LEVEL1,"MLME_GET_MODE:%d\n",*(UINT32 *)data);
            break;            
        case MLME_IOCTL_RESTART:
            mlme_reset(mlme_p);           
            break;
        case MLME_IOCTL_SET_CHANNEL:      //UINT32 channel
            mlme_p->mChannel_config=*(UINT32 *)data;
            mlme_p->bss.mChannel=mlme_p->mChannel_config;
            if(mlme_dbg_level&MLME_DEBUG_MLME_BASIC_MSG)
                fw_printf(MLME_DBG_LEVEL1,"MLME_IOCTL_SET_CHANNEL:%d\n",mlme_p->bss.mChannel);
            mlme_reset(mlme_p); //should do mlme_reset because re-typing iwconfig ...
            mlme_set_ssid_action(mlme_p);
            break;
        case MLME_IOCTL_GET_CHANNEL:      //UINT32 channel
            *(UINT32 *)data=mlme_p->bss.mChannel;
            //fw_printf(MLME_DBG_LEVEL1,"MLME_GET_CHANNEL:%d\n",*(UINT32 *)data);            
            break;
        case MLME_IOCTL_QUERY_ASSOC:      //assoc status
            if(mlme_p->mAssoc)
                *(UINT32 *)data=1;
            else
                *(UINT32 *)data=0;
            break;
        case MLME_IOCTL_DEBUG_PRINT:
            sim_printmlme(mlme_p,*(UINT32 *)data);
            break;
        case MLME_IOCTL_SET_AUTH_ALG:
            mlme_p->mAuth_config=*(UINT32 *)data;
//            printk("MLME_IOCTL_SET_AUTH_ALG=%d\n",mlme_p->mAuth_config);
            break;
        case MLME_IOCTL_GET_AUTH_ALG:
            *(UINT32 *)data=mlme_p->mAuth_config;
//            printk("MLME_IOCTL_GET_AUTH_ALG=%d\n",mlme_p->mAuth_config);
            break;
        case MLME_IOCTL_GET_SCAN_INFO:
            *(UINT32 *)data=(UINT32)&mlme_p->mTable;
            break;
        case MLME_IOCTL_REQ_DISASSOC:
            if(mlme_dbg_level&MLME_DEBUG_MLME_BASIC_MSG)
                fw_showstr(MLME_DBG_LEVEL1,"Send Message:MLME_DISASSOC_REQ to ASSOC state machine...");
            mlme_msg_enqueue(&mlme_p->mQueue,MLME_ASSOC_STATE_MACHINE,MLME_DISASSOC_REQ,data,2,0,0);
            break;            
        default:
            break;
    }    
    return 1;
}
コード例 #14
0
ファイル: mlme.c プロジェクト: archith/camera_project
void MLME_rx(mlme_data_t *mlme_p,UINT8 *pkt,UINT32 pkt_len,UINT8 *parm)
{
    I802_11_hdr_t *mlme_hdr=(I802_11_hdr_t *)pkt;
    I802_11_pkt_t *mlme_pkt=(I802_11_pkt_t *)pkt;

//    fw_printf(MLME_DBG_LEVEL1,"\n-----------------------------------\n");
//    mlme_dump_data(pkt,50);
    if(mlme_dbg_level&MLME_DEBUG_ATTACKER)
        return;
    if(!mlme_checkinit(mlme_p))
        return;

    //check management type
    switch(mlme_hdr->subtype)
    {
        case SUBTYPE_ASSOC_REQ:     //AP mode only
            if(mlme_dbg_level&MLME_DEBUG_MLME_RX_MSG)
                fw_showstr(MLME_DBG_LEVEL1,"MLME_rx(),AP function only...");        
            break;
        case SUBTYPE_ASSOC_RSP:
            if(mlme_p->mMode==MLME_ADHOC_MODE)
            {
                if(mlme_dbg_level&MLME_DEBUG_MLME_RX_MSG)
                    fw_showstr(MLME_DBG_LEVEL1,"MLME_rx(),Adhoc not support MLME_ASSOC_RSP_RCV...");
            }
            else
            {
                if(mlme_dbg_level&MLME_DEBUG_MLME_RX_MSG)
                    fw_showstr(MLME_DBG_LEVEL1,"MLME_rx(),Send Message:MLME_ASSOC_RSP_RCV to ASSOC state machine...");
                mlme_msg_enqueue(&mlme_p->mQueue,MLME_ASSOC_STATE_MACHINE,MLME_ASSOC_RSP_RCV,(UINT8 *)pkt,pkt_len,parm,2);
            }
            break;
        case SUBTYPE_REASSOC_REQ:   //AP mode only
            if(mlme_dbg_level&MLME_DEBUG_MLME_RX_MSG)
                fw_showstr(MLME_DBG_LEVEL1,"MLME_rx(),AP function only...");        
            break;
        case SUBTYPE_REASSOC_RSP:               
            if(mlme_p->mMode==MLME_ADHOC_MODE)
            {
                if(mlme_dbg_level&MLME_DEBUG_MLME_RX_MSG)
                    fw_showstr(MLME_DBG_LEVEL1,"MLME_rx(),Adhoc not support MLME_REASSOC_RSP_RCV...");
            }
            else     
            {
                if(mlme_dbg_level&MLME_DEBUG_MLME_RX_MSG)
                    fw_showstr(MLME_DBG_LEVEL1,"MLME_rx(),Send Message:MLME_REASSOC_RSP_RCV to ASSOC state machine...");
                mlme_msg_enqueue(&mlme_p->mQueue,MLME_ASSOC_STATE_MACHINE,MLME_REASSOC_RSP_RCV,(UINT8 *)pkt,pkt_len,parm,2);
            }
            break;
        case SUBTYPE_PROBE_REQ:
            if(mlme_p->mMode==MLME_INFRA_MODE)
            {
                if(mlme_dbg_level&MLME_DEBUG_MLME_RX_MSG)
                    fw_showstr(MLME_DBG_LEVEL1,"MLME_rx(),BSS STA not support MLME_PROBE_REQ_RCV...");
            }
            else if(mlme_p->mMode==MLME_ADHOC_MODE)
            {
                if(mlme_dbg_level&MLME_DEBUG_MLME_RX_MSG)
                    fw_showstr(MLME_DBG_LEVEL1,"MLME_rx(),Send Message:MLME_PROBE_REQ_RCV to SYNC state machine...");
                mlme_msg_enqueue(&mlme_p->mQueue,MLME_SYNC_STATE_MACHINE,MLME_PROBE_REQ_RCV,mlme_hdr->addr2,6,0,0);
            }
            break;
        case SUBTYPE_PROBE_RSP:
            /* filter if ad-hoc/infrastrucautre packet */
//            printk("mlme_pkt->fb[10]=0x%x 0x%x mlme_p->mMode=%d\n",mlme_pkt->fb[10],mlme_pkt->fb[11],mlme_p->mMode);
            if(((mlme_pkt->fb[10]&0x2)==0x2) && (mlme_p->mMode==MLME_INFRA_MODE))  //Capability: Ad-hoc bit
                return;            
            if(((mlme_pkt->fb[10]&0x2)!=0x2) && (mlme_p->mMode==MLME_ADHOC_MODE))  //Capability: Ad-hoc bit
                return;
            if(mlme_dbg_level&MLME_DEBUG_MLME_RX_MSG)
                fw_showstr(MLME_DBG_LEVEL1,"MLME_rx(),Send Message:MLME_PROBE_RSP_RCV to SYNC state machine...");
            mlme_msg_enqueue(&mlme_p->mQueue,MLME_SYNC_STATE_MACHINE,MLME_PROBE_RSP_RCV,(UINT8 *)pkt,pkt_len,parm,2);
            break;
        case SUBTYPE_BEACON:
            /* filter if ad-hoc/infrastrucautre packet */
            //printk("mlme_pkt->fb[10]=0x%x 0x%x mlme_p->mMode=%d\n",mlme_pkt->fb[10],mlme_pkt->fb[11],mlme_p->mMode);
            if(((mlme_pkt->fb[10]&0x2)==0x2) && (mlme_p->mMode==MLME_INFRA_MODE))  //Capability: Ad-hoc bit
                return;            
            if(((mlme_pkt->fb[10]&0x2)!=0x2) && (mlme_p->mMode==MLME_ADHOC_MODE))  //Capability: Ad-hoc bit
                return;
            mlme_msg_enqueue(&mlme_p->mQueue,MLME_SYNC_STATE_MACHINE,MLME_BEACON_RCV,(UINT8 *)pkt,pkt_len,parm,2);
            break;
        case SUBTYPE_ATIM:  // not support yet
            if(mlme_dbg_level&MLME_DEBUG_MLME_RX_MSG)
                fw_showstr(MLME_DBG_LEVEL1,"MLME_rx(),Not Implement!");
            break;
        case SUBTYPE_DISASSOC:
            if(mlme_p->mMode==MLME_ADHOC_MODE)
            {
                if(mlme_dbg_level&MLME_DEBUG_MLME_RX_MSG)
                    fw_showstr(MLME_DBG_LEVEL1,"MLME_rx(),Adhoc not support MLME_DISASSOC_RCV...");
            }
            else     
            {       
                if(mlme_dbg_level&MLME_DEBUG_MLME_RX_MSG)
                    fw_showstr(MLME_DBG_LEVEL1,"MLME_rx(),Send Message:MLME_DISASSOC_RCV to ASSOC state machine...");
                mlme_msg_enqueue(&mlme_p->mQueue,MLME_ASSOC_STATE_MACHINE,MLME_DISASSOC_RCV,0,0,0,0);
            }
            break;                            
        case SUBTYPE_AUTH:
            if(mlme_p->mMode==MLME_ADHOC_MODE)
            {
                if(mlme_dbg_level&MLME_DEBUG_MLME_RX_MSG)
                    fw_showstr(MLME_DBG_LEVEL1,"MLME_rx(),Adhoc not support MLME_AUTH_RCV...");
            }
            else     
            {               
                UINT16 seq_num;
                fw_memcpy((UINT32 *)&seq_num,(UINT32 *)&(mlme_pkt->fb[2]),2);
                if(seq_num==1||seq_num==3)
                {
                    if(mlme_dbg_level&MLME_DEBUG_MLME_RX_MSG)
                        fw_printf(MLME_DBG_LEVEL1,"NOT support in STA(AUTH seq=%d)\n",seq_num);
                }
                else
                {
                    if(mlme_dbg_level&MLME_DEBUG_MLME_RX_MSG)
                        fw_showstr(MLME_DBG_LEVEL1,"MLME_rx(),Send Message:MLME_AUTH_EVEN_RCV to AUTH state machine(pkt_len=%d)...",pkt_len);
                    mlme_msg_enqueue(&mlme_p->mQueue,MLME_AUTH_STATE_MACHINE,MLME_AUTH_EVEN_RCV,(UINT8 *)pkt,pkt_len,0,0);
                }
            }
            break;        
        case SUBTYPE_DEAUTH:
            if(mlme_p->mMode==MLME_ADHOC_MODE)
            {
                if(mlme_dbg_level&MLME_DEBUG_MLME_RX_MSG)
                    fw_showstr(MLME_DBG_LEVEL1,"MLME_rx(),Adhoc not support MLME_DEAUTH_RCV...");
            }
            else     
            {
                if(mlme_dbg_level&MLME_DEBUG_MLME_RX_MSG)
                    fw_showstr(MLME_DBG_LEVEL1,"MLME_rx(),Send Message:MLME_DEAUTH_RCV to AUTH state machine...");
                mlme_msg_enqueue(&mlme_p->mQueue,MLME_AUTH_STATE_MACHINE,MLME_DEAUTH_RCV,0,0,0,0);
            }
            break;
        default:
            if(mlme_dbg_level&MLME_DEBUG_MLME_RX_MSG)
                fw_showstr(MLME_DBG_LEVEL1,"MLME_rx(),Undefined subtype");
            break;
    }    
}
コード例 #15
0
ファイル: mlme.c プロジェクト: archith/camera_project
/* search table by essid/channel */
static void mlme_print_table(BSS_table_t *table)
{
    UINT32 i,j=0;
    BSS_entry_t *tmp;

    for(i=0;i<BSS_TABLE_SIZE;i++)
    {
        tmp=&(table->entry[i]);
        if(!(tmp->exist))
            continue;
        fw_printf(MLME_DBG_LEVEL1,"[%d]Chl:%x BSSID:%02x %02x %02x %02x %02x %02x Qual:%d WEP:%d SSID:%s\n",i,tmp->mChannel,tmp->mBssid[0],
            tmp->mBssid[1],tmp->mBssid[2],tmp->mBssid[3],tmp->mBssid[4],tmp->mBssid[5],tmp->quality,tmp->mPrivacy,tmp->mEssid);
        /* mode */
        if(tmp->mMode==MLME_ADHOC_MODE)
            fw_printf(MLME_DBG_LEVEL1,"   Mode: Ad-hoc");
        else if(tmp->mMode==MLME_INFRA_MODE)
            fw_printf(MLME_DBG_LEVEL1,"   Mode: Infra");
            
        /* support rate */
        fw_printf(MLME_DBG_LEVEL1,"   Support Rate(Mb):");
        j=0;
        while(1)
        {
            if(tmp->rate[j]==0)
                break;
            if(tmp->rate[j]==MLME_SR_1M)
                fw_printf(MLME_DBG_LEVEL1,"1 ");
            if(tmp->rate[j]==MLME_SR_2M)
                fw_printf(MLME_DBG_LEVEL1,"2 ");
            if(tmp->rate[j]==MLME_SR_5_5M)
                fw_printf(MLME_DBG_LEVEL1,"5.5 ");
            if(tmp->rate[j]==MLME_SR_11M)
                fw_printf(MLME_DBG_LEVEL1,"11 ");
            if(tmp->rate[j]==MLME_SR_16_5M)
                fw_printf(MLME_DBG_LEVEL1,"16.5 ");
            if(tmp->rate[j]==MLME_SR_22M)
                fw_printf(MLME_DBG_LEVEL1,"22 ");
            if(tmp->rate[j]==MLME_SR_27_5M)
                fw_printf(MLME_DBG_LEVEL1,"27.5 ");
            j++;
        }
        /* basic rate */
        fw_printf(MLME_DBG_LEVEL1,"  Basic Rate value=0x%x",tmp->basic_rate);
        fw_printf(MLME_DBG_LEVEL1,"\n");
//fw_printf(MLME_DBG_LEVEL1,"tmp->timestamp=0x%x\n",tmp->timestamp);
//fw_printf(MLME_DBG_LEVEL1,"   Quality:0x%x Stregth:0x%x timestamp:0x%x\n",tmp->quality,tmp->strength,tmp->timestamp);
#if 0
fw_printf(MLME_DBG_LEVEL1,"wpa_ie=");
for(i=0;i<tmp->wpa_ie[1]+2;i++)
    fw_printf(MLME_DBG_LEVEL1,"%02x ",tmp->wpa_ie[i]);
fw_printf(MLME_DBG_LEVEL1,"\n");
#endif
    }
    
    fw_printf(MLME_DBG_LEVEL1,"-----------------------------------------------------------------\n");
    fw_printf(MLME_DBG_LEVEL1,"         Debug Level=0x%x\n",mlme_dbg_level);
    fw_printf(MLME_DBG_LEVEL1,"MLME_DEBUG_RX_DUMP_PKT=%04x       MLME_DEBUG_TX_DUMP_PKT=%04x\n",MLME_DEBUG_RX_DUMP_PKT,MLME_DEBUG_TX_DUMP_PKT);
    fw_printf(MLME_DBG_LEVEL1,"MLME_DEBUG_TCB_DUMP_MSG=%04x      MLME_DEBUG_WEP_DATA=%04x\n",MLME_DEBUG_TCB_DUMP_MSG,MLME_DEBUG_WEP_DATA);
    fw_printf(MLME_DBG_LEVEL1,"MLME_DEBUG_WPA_DATA=%04x          MLME_DEBUG_HARDWARE_CTL=%04x\n",MLME_DEBUG_WPA_DATA,MLME_DEBUG_HARDWARE_CTL);
    fw_printf(MLME_DBG_LEVEL1,"MLME_DEBUG_MLME_BASIC_MSG=%04x    MLME_DEBUG_MLME_ADVANCE_MSG=%04x\n",MLME_DEBUG_MLME_BASIC_MSG,MLME_DEBUG_MLME_ADVANCE_MSG);
    fw_printf(MLME_DBG_LEVEL1,"MLME_DEBUG_MLME_BEACON_DUMP=%04x  MLME_DEBUG_MLME_RX_MSG=%04x\n",MLME_DEBUG_MLME_BEACON_DUMP,MLME_DEBUG_MLME_RX_MSG);
    fw_printf(MLME_DBG_LEVEL1,"MLME_DEBUG_MLME_TX_DUMP=%04x      MLME_DEBUG_ATTACKER=%04x\n",MLME_DEBUG_MLME_TX_DUMP,MLME_DEBUG_ATTACKER);
}
コード例 #16
0
ファイル: mlme.c プロジェクト: archith/camera_project
void sim_printmlme(mlme_data_t *mlme_p,int value)
{
    //mlme_dbg=value;
//    fw_printf(MLME_DBG_LEVEL1,"debug level=%d\n",mlme_dbg);
    
    //vt100_clear_line(2);
    fw_printf(MLME_DBG_LEVEL1,"\n");
    if(mlme_p->mAssoc)
        fw_printf(MLME_DBG_LEVEL1,"O");
    else
        fw_printf(MLME_DBG_LEVEL1,"X");
    if(mlme_p->mMode==MLME_INFRA_MODE)
        fw_printf(MLME_DBG_LEVEL1,"[BSS]");
    else if(mlme_p->mMode==MLME_ADHOC_MODE)
        fw_printf(MLME_DBG_LEVEL1,"[Adhoc]");
    else
        fw_printf(MLME_DBG_LEVEL1,"[NULL]");
    fw_printf(MLME_DBG_LEVEL1,"[%d]  ",mlme_p->bss.mChannel);

    if(!fw_memcmp(mlme_p->mBssid_config,mBroadcast,MACADDR_LEN))
        fw_printf(MLME_DBG_LEVEL1,"BSSID(Learning):");
    else
        fw_printf(MLME_DBG_LEVEL1,"BSSID(Config):");
        
    fw_printf(MLME_DBG_LEVEL1,"%02x %02x %02x %02x %02x %02x",mlme_p->bss.mBssid[0],
        mlme_p->bss.mBssid[1],mlme_p->bss.mBssid[2],mlme_p->bss.mBssid[3],
        mlme_p->bss.mBssid[4],mlme_p->bss.mBssid[5]);
        
        
    fw_printf(MLME_DBG_LEVEL1,"  MAC:%02x %02x %02x %02x %02x %02x\n",mlme_p->mMAC[0],
        mlme_p->mMAC[1],mlme_p->mMAC[2],mlme_p->mMAC[3],
        mlme_p->mMAC[4],mlme_p->mMAC[5]);
        
    fw_printf(MLME_DBG_LEVEL1,"  ESSID:\"%s\"",mlme_p->bss.mEssid);
    fw_printf(MLME_DBG_LEVEL1,"  Time(ms):0x%x",mlme_get_time(mlme_p));
    fw_printf(MLME_DBG_LEVEL1,"  Bcn:0x%x\n",mlme_p->mLastBeaconTime);
    
    fw_printf(MLME_DBG_LEVEL1,    "System State:  CLASS %d    ",mlme_get_state(mlme_p,MLME_SYS_STATE_MACHINE));

    if(mlme_get_state(mlme_p,MLME_ASSOC_STATE_MACHINE)==ASSOC_IDLE)
        fw_printf(MLME_DBG_LEVEL1,"Assoc State:   IDLE\n");
    else
        fw_printf(MLME_DBG_LEVEL1,"Assoc State:   WAIT\n");
    
    if(mlme_get_state(mlme_p,MLME_AUTH_STATE_MACHINE)==AUTH_IDLE)
        fw_printf(MLME_DBG_LEVEL1,"Auth State:    IDLE       ");
    else if(mlme_get_state(mlme_p,MLME_AUTH_STATE_MACHINE)==WAIT_SEQ_2)
        fw_printf(MLME_DBG_LEVEL1,"Auth State:    SEQ2       ");
    else
        fw_printf(MLME_DBG_LEVEL1,"Auth State:    SEQ4       ");
    
    if(mlme_get_state(mlme_p,MLME_SYNC_STATE_MACHINE)==SYNC_IDLE)
        fw_printf(MLME_DBG_LEVEL1,"Sync State:    IDLE      \n");
    else if(mlme_get_state(mlme_p,MLME_SYNC_STATE_MACHINE)==JOIN_WAIT_BEACON)
        fw_printf(MLME_DBG_LEVEL1,"Sync State:    WaitBeacon\n");
    else
        fw_printf(MLME_DBG_LEVEL1,"Sync State:    ScanListen\n");
 
 
    //fw_printf(MLME_DBG_LEVEL1,"q->head=%d q->tail=%d mlme_dbg_level=0x%x\n\n",mlme_p->mQueue.head,mlme_p->mQueue.tail,mlme_dbg_level);
    mlme_print_table(&mlme_p->mTable);

#if 0
{
    int i;
fw_printf(MLME_DBG_LEVEL1,"wpa_ie=");
for(i=0;i<mlme_p->bss.wpa_ie[1]+2;i++)
    fw_printf(MLME_DBG_LEVEL1,"%02x ",mlme_p->bss.wpa_ie[i]);
fw_printf(MLME_DBG_LEVEL1,"\n");    
}
#endif
}