亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? mftmac.c.bak

?? motorola jw32 usb 源碼
?? BAK
?? 第 1 頁 / 共 5 頁
字號:
 * Overview:        Fetches rx frame one byte at a time and validates
 *                  as per 802.15.4 spec.
 *
 * Note:            This is private function, called MAC module only.
 ********************************************************************/
 //#define debug_MACGetHeader
static BYTE MACGetHeader(void)
{
    BYTE temp,address;

	if(RXBuffer[0].head == NULL)
		  return FALSE;
    // Make sure that this is a valid length
    if ((RXBuffer[0].length==0)||(RXBuffer[0].length>MAC_FRAME_LENGTH))
    {
        goto DiscardAndReturn;
    }
    macCurrentFrame.frameLength = RXBuffer[0].length;
	macRecLen=0;
	//-------------------------------------
	//for debug in 2401
	address = MACGet();  //send address

	//-------------------------------------
  // Get frame control field - LSB.
  temp = MACGet();
	macCurrentFrame.frameCtrl.Control.Val=temp;
	//temp =  MACGet();  //device ADDRESS
	macCurrentFrame.sndAddress = macCurrentFrame.frameCtrl.Control.fields.devId;  //device ADDRESS
	if((!bIsAssociated)||(address!=macInfo.panId))
	{
		if(macCurrentFrame.frameCtrl.Control.fields.type==MAC_FRAME_NETST
		//||macCurrentFrame.frameCtrl.Control.fields.type==MAC_FRAME_TEST||
		//macCurrentFrame.frameCtrl.Control.fields.type==MAC_FRAME_CHKNET||
		||macCurrentFrame.frameCtrl.Control.fields.type==MAC_FRAME_BEACON)//only receive beacon frame
			return TRUE;
	}
	else if(macCurrentFrame.frameCtrl.Control.fields.type<=MAC_FRAME_WARN)
	{
		if(macCurrentFrame.frameCtrl.Control.fields.type!=MAC_FRAME_WARN)
		{
					 LED_DATA=LED_LIGHT;
					 //LED_PWRLOW=LED_CLOSE;
		}
		return TRUE;
	}

//TODO(DF) - this is not the correct way to get rid of a packet.  This will also destroy any other packets in FIFO???
DiscardAndReturn:
    RXBuffer[0].head=NULL;
    return FALSE;
}
/*********************************************************************
 * Function:        static BYTE MACProcessNetState(void)
 *
 * PreCondition:    MACGetHeader() is called and a valid beacon
 *                  frame was detected.
 *
 * Input:           None
 *
 *
 * Side Effects:    None
 *
 * Overview:        check net state.decide to join net or exit net
 *
 * Note:            None
 ********************************************************************/
static BYTE MACProcessNetState(void)
{
   BYTE phyParameter=0;
   
	if(PHYGetPIB(PhyCurrentChannel,&phyParameter))  ;
  if(bIsScan)
 	{
          PANDescCount=1;
          PhyRecordExChannel();               
    }
    	macCurrentFrame.sndAddress = MACGet();  //send address
     if(macCurrentFrame.sndAddress==macInfo.devAddress)//find same pandid.should change???
     {
						macWarncode|=WARN_PANIDLOST;
     }
    if(phyParameter==macCurrentChannel)//channel same
     {
          		bchanlost=1;
          		macWarncode|=WARN_CHANLOST;
     }
	return TRUE;

}
/*********************************************************************
Function:   BYTE MACGetData()
功能:  取MAC一幀數(shù)據(jù)
//
輸出: SUCCESS 1: fail :0
描述:上層調(diào)用此函數(shù)接收MAC數(shù)據(jù)幀,數(shù)據(jù)為MAC數(shù)據(jù)包
 ********************************************************************/
BYTE MACGetData()
 {
 BYTE i;
 BYTE length;
 BYTE dataHead;
 BYTE *pmapAddr=&dataHead;
 if(macCurrentFrame.frameLength==0)
 			return 0;
   if(RXBuffer[0].head == NULL)
   		 return 0;

  if(bmsIsMap)
  {
  	if(macCurrentFrame.frameCtrl.Control.fields.devId==MAC_DEVICE_MOUSE)//mouse map
  	{
			  	length = msRamMapIndex[macmsMapKey].length;
			  	if(length>MAC_KEYMAPLEN)
			  			return 0;
					dataHead = msRamMapIndex[macmsMapKey].address[0];
			  	if(dataHead<MAC_DEVICE_MOUSE||dataHead>MAC_DEVICE_JOYSTICK1)
			  	{
			  		return 0;
			  	}
			  	if(macmsMapKey==0)
			  		return 0;
			  	if(dataHead==MAC_DEVICE_MOUSE)
			  	{
			  		if(length<MOUSELENGTH+3)
			  		{
			  			if(Groupbit[macmsMapKey-1]&RXBuffer[0].databuffer[macRecLen])//pressed
			  			{
			  				if(macCurrentFrame.frameLength>(MAXDEVLENGTH-1))
											macCurrentFrame.frameLength = MAXDEVLENGTH-1;
								for(i=0;i<macCurrentFrame.frameLength;i++) {
		 								TXBUFFER[i]	=RXBuffer[0].databuffer[macRecLen+i] ;
		 						}
		 						TXBUFFER[0]=msRamMapIndex[macmsMapKey].address[1];
			  				//if(PutUsbData(&msRamMapIndex[macmsMapKey].address[1],MOUSELENGTH,MAC_DEVICE_MOUSE)) ;
			  				if(PutUsbData(TXBUFFER,MOUSELENGTH,MAC_DEVICE_MOUSE)) ;
			  			}
			  			else //loose
			  			{
			  					for(i=0;i<MOUSELENGTH;i++)
									{
										TXBUFFER[i]	= 0x00;
									}
			  				if(PutUsbData(TXBUFFER,MOUSELENGTH,MAC_DEVICE_MOUSE)) {
			  						bmsIsMap = FALSE;
			  						macmsMapKey=0;
			  				}
			  			}
							macMsOldKey = TXBUFFER[0];
			  			return 1;
			  		}
			  	}
			  if(Groupbit[macmsMapKey-1]&RXBuffer[0].databuffer[macRecLen])
		  	{
				  	pmapAddr = msRamMapIndex[macmsMapKey].address;
						if(APPMACPutBuffer(pmapAddr,length))
						{
							macmsMapKey=0;
							bmsIsMap = FALSE;
						}
				}
				else
				{
					bmsIsMap = FALSE;
						macmsMapKey=0;
				}
		}  //MOUSE MAP
	}
	 if(bIsMap)
  {
  	bIsMap = FALSE;
		if(macCurrentFrame.frameCtrl.Control.fields.devId==MAC_DEVICE_JOYSTICK0||macCurrentFrame.frameCtrl.Control.fields.devId==MAC_DEVICE_JOYSTICK1)
		{
				//bdevtrans=MACGetJkChannelId();
				if(JkeyMapId&JOYSTICK_MAP)//have jk data map
				{
					if(bdevtrans==MAC_DEVICE_JOYSTICK0)
					{
						for(i=0;i<KbLength;i++)
						{
							TXBUFFER[i+1]	= joystick_buffer1[i];
						}
					}
					else
					{
							for(i=0;i<KbLength;i++)
						{
							TXBUFFER[i+1]	= joystick_buffer2[i];
						}
					}
						TXBUFFER[0]=bdevtrans;
						//TXBUFFER[1]=MAC_JK0MAPHEAD;
						//TXBUFFER[i+1]	=KBDATAEND;
						JkeyMapId&=~JOYSTICK_MAP;
					//if(APPMACPutBuffer(TXBUFFER,KbLength+2,LOOSE)) ;
						if(PutUsbData(TXBUFFER,7,bdevtrans)) ;
				}
					if(JkeyMapId&KEYBOARD_MAP)//have keyboard data map
					{
							for(i=0;i<KbLength;i++)
							{
								TXBUFFER[i+1]	= kb_buffer[i];
							}
							TXBUFFER[0]=MAC_KBMAPHEAD;
							//TXBUFFER[i+2]	=KBDATAEND;
							JkeyMapId&=~KEYBOARD_MAP;
							//if(APPMACPutBuffer(TXBUFFER,KbLength+2,PRESSED)) ;
								if(PutUsbData(TXBUFFER,KEYBOARDLENGTH,MAC_DEVICE_KEYBOARD)) ;
					}
					if(JkeyMapId&MOUSE_MAP)//have mouse data map
					{
							for(i=0;i<KbLength;i++)
							{
								TXBUFFER[i]	= mose_buffer[i];
							}
							//TXBUFFER[0]=MAC_DEVICE_MOUSE;

						JkeyMapId&=~MOUSE_MAP;
						//if(APPMACPutBuffer(TXBUFFER,KbLength+1,LOOSE)) ;
						TXBUFFER[0]|=macMsOldKey;
						if(PutUsbData(TXBUFFER,MOUSELENGTH,MAC_DEVICE_MOUSE)) ;
					}

				if(JmacroKey!=0)
				{
                    if(bdevtrans==MAC_DEVICE_JOYSTICK0)
					        length = jk1RamMapIndex[JmacroKey].length;
					else
					        length = jk2RamMapIndex[JmacroKey].length;
				  	if(length>MAC_KEYMAPLEN)
				  	{
				  		JmacroKey = 0;
				  			return 0;
				  		}
				  		 if(bdevtrans==MAC_DEVICE_JOYSTICK0)
				  		 {
						        dataHead = jk1RamMapIndex[JmacroKey].address[0];
						        pmapAddr = jk1RamMapIndex[JmacroKey].address;
						    }
						 else
						 {
						        dataHead = jk2RamMapIndex[JmacroKey].address[0];
						        pmapAddr = jk2RamMapIndex[JmacroKey].address;
						    }
				  	if(dataHead<MAC_DEVICE_MOUSE||dataHead>MAC_DEVICE_JOYSTICK1)
				  	{
				  		JmacroKey = 0;
				  		return 0;
				  	}

				  	JmacroKey = 0;
					if(APPMACPutBuffer(pmapAddr,length)) ;
				}
		}

  }
  else
  {
	 		if(macCurrentFrame.frameLength>(MAXDEVLENGTH-1))
					macCurrentFrame.frameLength = MAXDEVLENGTH-1;
			dataHead= macCurrentFrame.frameCtrl.Control.fields.devId;//who send the data,should tell app
			if(dataHead==MAC_DEVICE_MOUSE)
			{
				macMsOldKey = RXBuffer[0].databuffer[macRecLen];
			}
			for(i=0;i<macCurrentFrame.frameLength;i++) {
		 				TXBUFFER[i]	=RXBuffer[0].databuffer[macRecLen+i] ;

		 }
		if(PutUsbData(TXBUFFER,macCurrentFrame.frameLength,dataHead)) ;
	}
	return 1;
 }
/*********************************************************************
 * Function:        void MACAcceptCurrentPAN(void)
 *
 * PreCondition:    MACIsScanComplete() = TRUE and there is no
 *                  ERROR.
 *
 * Input:           None
 *
 * Output:          None
 *
 * Side Effects:    None
 *
 * Overview:        record current channel parameter
 ********************************************************************/
BYTE  MACAcceptCurrentPAN(void)
{
    BYTE phyParameter;
	if(PHYGetPIB(PhyCurrentChannel,&phyParameter))
	{
		macCurrentChannel = phyParameter;
		return TRUE;
	}
	return FALSE;
}

/*********************************************************************
 * Function:        static  void MACSendNetState(void)
 *
 * Overview:        Sends net state frame in response to net check
 *                  frame.
 *
 * Note:            This is a private function
 ********************************************************************/
static void MACSendNetState(void)
{
	 FRAME_CONTROL framectrl;
	 NET_STATE     netState;
	 if(bBeaconReady)
				 return;
    framectrl.Control.Val						=	0x00;
    framectrl.Control.fields.type				= MAC_FRAME_NETST;
    framectrl.Control.fields.devId			= macInfo.devId;
    netState.Control.Val						=	0x00;
//    netState.Control.fields.bdataRate = macDataRate;
    netState.Control.fields.mode =  bmode;
    MACPutHeader(4,macCurrentFrame.sndAddress);//broadcast address 0
    // put frame control
	 	MACPut(framectrl.Control.Val);
	 	//put device address
	 	MACPut(macInfo.panId);

	 	//put game data rate
	 	MACPut(netState.Control.Val);
	 	MACSndDataLength =MAC_FRAME_HEAD+1;
	 	delayms(1);
   PHYDataRequest(MACSndDataLength,TXBUFFER);

}

#if defined(I_AM_COORDINATOR)

/*********************************************************************
 * Function:        void MACSendAssociateResponse()
 *
                    send associate command to device,let device join network
 *
 *
 * Overview:        Creates and sends valid association response frame
 *                  as per IEEE spec.
 *
 * Note:            Available to coordinator only.
 ********************************************************************/
static void MACSendAssociateResponse()
{
	 FRAME_CONTROL framectrl;
	JNCTRL paninfo;
	uchar  udevaddress;
	//	static uchar jkgtsFlag=0x00;
    // For broadcast, do not request ack.
    if(bBeaconReady)
    	return;
   	framectrl.Control.Val					 =	0x00;
		paninfo.Control.Val						 =	0x00;
    framectrl.Control.fields.type	 = 			MAC_FRAME_JNETACK;
    framectrl.Control.fields.devId = 			macInfo.devId;
    paninfo.Control.fields.channel =    	macCurrentChannel-71;
    paninfo.Control.fields.power  =      phyTransmitPower;
   	if(macCurrentFrame.frameCtrl.Control.fields.devId!=MAC_DEVICE_MOUSE)
   	{
   		bmode       = MAC_MODE_BEACON;
	    macBeaon.Control.bits.bmode 					=  bmode;
    }
    if(macCurrentFrame.frameCtrl.Control.fields.devId==MAC_DEVICE_KEYBOARD)
    {
    	macKbPassFlag =1;
    }
    paninfo.Control.fields.mode  =       bmode;
    MACPutHeader(5,macCurrentFrame.sndAddress);//broadcast address 0
    //MACPutHeader(3,0);//broadcast address 0
    // put frame control
 		MACPut(framectrl.Control.Val);
 		//put allocate device
 		udevaddress = macCurrentFrame.sndAddress;
		if(macCurrentFrame.sndAddress==0x00)//should allocate device address
 				udevaddress= RANDOM_LSB;
 		/*if(macCurrentFrame.frameCtrl.Control.fields.devId==MAC_DEVICE_JOYSTICK0)
 		{
 			if(macCurrentFrame.sndAddress!=macJkDev[0].devAddress)
 			{
 				if(macCurrentFrame.sndAddress!=macJkDev[1].devAddress)
 				{

 					if(macJkDev[1].devAddress==0xff&&macJkDev[0].devAddress!=0xff)// 1 channel free
 					{
 							if(macCurrentFrame.sndAddress==0x00)//first join net
 					    {
 					    	 udevaddress|=0x01;               //Occupy channel 1
 					    }
 					    //else let it be alone.
 					}
 					else if(macJkDev[0].devAddress==0xff&&macJkDev[1].devAddress!=0xff)// 0channel free
 					{
 							if(macCurrentFrame.sndAddress==0x00)//first join net
 					    {
 					    	 udevaddress&=0xFE;               //Occupy channel 0
 					    }
 					    //else let it be alone.
 					}
 		
 					else//two channel occupied,share with channel 0.o address
 					{
 						  udevaddress&=0xFE;
 					}
        }
      }
    }*/
 		MACPut(udevaddress);
 			//put panid
		MACPut(macInfo.panId);
		//put channel and power
		MACPut(paninfo.Control.Val);

 		MACSndDataLength  = MAC_FRAME_HEAD+2;
 	  			//---------------------------------------------
		// Send data use csma
		delayms(1);
		PHYDataRequest(MACSndDataLength,TXBUFFER);
		//TransmitIt();
    //----------------------------------------------

}
#endif
/*********************************************************************
 * Function:       void MACReqNetState(void)
 * Description :   send check net state request to controller.if controller
 	                 response.device will receive net state ack.or esle
 	                 device will again scan channel and join a new pan net
 *
 * Overview:        check pan net state,see whether pan net is still
 										active
 *********************************************************************/
/*static void MACReqNetState()
{
    FRAME_CONTROL framectrl;
    framectrl.Control.Val			=	0x00;
    framectrl.Control.fields.type	= MAC_FRAME_CHKNET;
    framectrl.Control.fields.devId	= macInfo.devId;;
    TXBUFFER[0]= 3;
    TXBUFFER[1]= BROADADDRESS;
    // put frame control
    TXBUFFER[2]= framectrl.Control.Val;
    // put device address
    TXBUFFER[3]= BROADADDRESS;

   MACSndDataLength  = MAC_FRAME_HEAD;
   PHYDataRequest(MACSndDataLength,TXBUFFER);
  // PHYSetTRXState(PHY_TRX_RX_ON);

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲欧美另类久久久精品2019| 欧美私人免费视频| 97se亚洲国产综合在线| 色婷婷国产精品久久包臀| 884aa四虎影成人精品一区| 精品国产乱码久久久久久蜜臀| 亚洲国产成人在线| 亚洲午夜在线电影| 奇米影视一区二区三区小说| 国产精品18久久久久久久网站| 99re亚洲国产精品| 日韩一区二区三| 自拍视频在线观看一区二区| 日本特黄久久久高潮| 成人福利视频网站| 91精品国产免费久久综合| 欧美高清在线视频| 青椒成人免费视频| 99热这里都是精品| 欧美电影精品一区二区| 亚洲综合一二区| 国模无码大尺度一区二区三区| 在线一区二区三区四区五区| 精品国产91久久久久久久妲己| 亚洲综合自拍偷拍| 国产成人精品亚洲午夜麻豆| 欧美日韩国产精选| 一区在线播放视频| 精品亚洲国产成人av制服丝袜 | 久久蜜臀中文字幕| 亚洲v日本v欧美v久久精品| 风间由美性色一区二区三区| 777xxx欧美| 一区二区三区四区视频精品免费 | 日韩精品一区二区三区四区视频| 亚洲日本在线天堂| 国产精品白丝av| 日韩手机在线导航| 亚洲一区二区三区四区的 | 国产精品久久久久久久久果冻传媒 | 狠狠色丁香久久婷婷综合丁香| 色婷婷综合久久久久中文| 久久色.com| 蜜桃精品视频在线观看| 欧美亚洲尤物久久| 亚洲少妇最新在线视频| 国产精品一区二区久久不卡 | 青娱乐精品在线视频| 在线亚洲一区观看| 中文字幕中文在线不卡住| 久久超级碰视频| 欧美一级黄色大片| 亚洲观看高清完整版在线观看| 91麻豆国产精品久久| 欧美激情一区二区三区蜜桃视频| 国产一区二区三区黄视频| 日韩一二三区不卡| 午夜欧美一区二区三区在线播放| 色av一区二区| 亚洲欧美色综合| 91麻豆国产福利在线观看| 1000部国产精品成人观看| 床上的激情91.| 国产精品三级久久久久三级| 国产黑丝在线一区二区三区| 久久久夜色精品亚洲| 国产高清不卡二三区| 国产日产亚洲精品系列| 国产一区二区三区电影在线观看 | 国产激情视频一区二区三区欧美 | 粉嫩av亚洲一区二区图片| 国产亚洲一区字幕| 国产白丝网站精品污在线入口| 久久亚洲一区二区三区明星换脸| 久久www免费人成看片高清| 欧美大片在线观看一区| 久久超碰97中文字幕| 精品国产污网站| 国产一区二区导航在线播放| 精品国产自在久精品国产| 国产在线观看一区二区| 欧美精品一区二区三区在线 | 国产精品理论在线观看| 成人美女视频在线看| 中文字幕在线播放不卡一区| av一区二区久久| 伊人色综合久久天天人手人婷| 欧美三级视频在线观看| 亚洲成人精品影院| 91精品国产欧美日韩| 久久国产精品露脸对白| 中文字幕不卡的av| 一本色道久久综合亚洲91| 亚洲成人动漫精品| 欧美一区二区久久| 国产米奇在线777精品观看| 国产欧美一区二区三区网站| 不卡免费追剧大全电视剧网站| 亚洲日本va午夜在线影院| 欧美在线一二三四区| 日韩av在线免费观看不卡| 欧美tickling挠脚心丨vk| 国产成a人无v码亚洲福利| 亚洲精品免费在线观看| 制服丝袜中文字幕亚洲| 国产一区二区女| 日韩理论片中文av| 日韩一区二区三区电影在线观看 | 一区免费观看视频| 欧美日韩一区二区三区在线| 免费观看在线色综合| 久久久久国产精品麻豆ai换脸 | 日韩精品亚洲一区二区三区免费| 精品久久久久av影院| av成人免费在线观看| 三级影片在线观看欧美日韩一区二区| 精品国产凹凸成av人导航| 99久久久久免费精品国产| 免费久久99精品国产| 国产精品污网站| 欧美精品v国产精品v日韩精品| 国产一区在线不卡| 亚洲福利一区二区三区| 久久久天堂av| 欧美人与性动xxxx| 国产福利不卡视频| 午夜天堂影视香蕉久久| 国产校园另类小说区| 欧美日韩第一区日日骚| 国产成人免费9x9x人网站视频| 无码av中文一区二区三区桃花岛| 国产色91在线| 欧美一区二区三区视频| 91在线精品秘密一区二区| 久国产精品韩国三级视频| 亚洲狠狠丁香婷婷综合久久久| 精品国产精品网麻豆系列 | 天堂精品中文字幕在线| 中文字幕av资源一区| 日韩视频一区在线观看| 99国产精品99久久久久久| 韩国女主播成人在线| 亚洲大片在线观看| 国产精品久久看| 久久婷婷国产综合国色天香| 在线综合亚洲欧美在线视频| 不卡的av在线播放| 国产综合色在线| 三级影片在线观看欧美日韩一区二区| 中文字幕一区三区| 欧美精品一区二区在线播放| 欧美精品粉嫩高潮一区二区| 色综合久久久久综合体桃花网| 国产精品一品视频| 久久精品久久久精品美女| 午夜成人在线视频| 曰韩精品一区二区| 亚洲人成网站在线| 欧美国产日韩亚洲一区| 日韩精品中文字幕一区二区三区 | 美日韩一区二区三区| 亚洲第一激情av| 一区二区三区成人在线视频| 国产精品二区一区二区aⅴ污介绍| ww久久中文字幕| 日韩精品中文字幕一区| 欧美一级理论片| 欧美日韩大陆一区二区| 欧美少妇bbb| 日本精品视频一区二区| 97精品久久久午夜一区二区三区| 懂色av一区二区夜夜嗨| 国产一区二区三区免费观看| 激情五月激情综合网| 另类成人小视频在线| 热久久久久久久| 男女视频一区二区| 天天影视网天天综合色在线播放| 亚洲成人综合视频| 亚洲国产欧美在线| 午夜精品在线看| 日韩精品福利网| 麻豆免费精品视频| 久久国产尿小便嘘嘘| 国内精品免费**视频| 国产真实乱子伦精品视频| 国内精品嫩模私拍在线| 国产福利不卡视频| 大尺度一区二区| 9人人澡人人爽人人精品| 99精品国产一区二区三区不卡| 91丝袜高跟美女视频| 色综合一区二区三区| 欧美性受xxxx| 3d动漫精品啪啪一区二区竹菊| 91精品欧美一区二区三区综合在 | 丁香五精品蜜臀久久久久99网站 | 亚洲男同1069视频| 亚洲综合无码一区二区| 五月综合激情网|