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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? macp.nc

?? IEEE802.15.4標(biāo)準(zhǔn)下的基于ZIGBEE協(xié)議棧的物理及鏈路層的代碼
?? NC
?? 第 1 頁(yè) / 共 3 頁(yè)
字號(hào):
	macPib.macCoordShortAddress = pdt->shortAddr;	for(i=0; i<8; i++){		macPib.macCoordExtendedAddress.bytes[i] = pdt->extendedAddr.bytes[i];	}	/** set p point at end of memory block **/	p = (uint8_t*)pJoinPkt + call Mem.getSize(pJoinPkt);		/** set ZIGBEE_NUM **/	p--;	*p = ZIGBEE_NUM_3;	p--;	*p = ZIGBEE_NUM_2;	p--;	*p = ZIGBEE_NUM_1;	p--;	*p = ZIGBEE_NUM_0;			/** set capability information **/	p--;	*p = myCapInfo;		/** set mac cmd type field **/	p--;	*p = MAC_CMD_TYPE_ASSOC_REQ;		/** set source address field with long address **/	p -= 8;	for(i=0; i<8; i++){		*(p+i) = macPib.pLongAddr->bytes[i];	}		/** set source pan id filed with broadcast pan id **/	p -= 2;	*(uint16_t*)p = 0xffff;		/** set destination address field with intent father's short address **/	p -= 2;	*(saddr_t*)p = pdt->shortAddr;		/** set destination pan id field with intent father' pan id **/	p -= 2;	*(nxle_uint16_t*)p = pdt->panId;		/** set mac dsn **/	p--;	*p = macPib.macDsn++;		/** set fcf **/	p -= 2;	*(nxle_uint16_t*)p = ( MAC_FRAME_TYPE_CMD << POS_MAC_FRAME_TYPE ) |					 ( 0 << POS_MAC_SECURITY ) |					 ( 0 << POS_MAC_FRAME_PENDING ) |					 ( 1 << POS_MAC_ACK_REQUEST ) |					 ( 0 << POS_MAC_INTRA_PAN ) |					 ( MAC_ADDR_MODE_SHORT << POS_MAC_DEST_ADDR_MODE ) |				 					 ( MAC_ADDR_MODE_LONG << POS_MAC_SOURCE_ADDR_MODE );		/** set memory block position **/	call Mem.setCurrentPos( pJoinPkt, (p-(uint8_t*)pJoinPkt) );		/** fill SendCache element **/	pSendCache->isAckSend = TRUE;	pSendCache->type = CMD_ASSOC_REQ;	pSendCache->psdu = pJoinPkt;	pSendCache->dsn = macPib.macDsn - 1;			/** put into SendCache full queue **/	call SendCache.putFull(pSendCache);	mac_state = S_JOINING;		/** start associate wait timer **/	call MacTimer.start(ASSOC_WAIT_TIME);	return SUCCESS;}#endifasync event void MacTimer.fired(){	switch(mac_state){	case S_SCANNING:		post positiveScanDone_task();		break;	#ifndef IS_COORD		case S_JOINING:		/** have not detected right associate response frame in ASSOC_WAIT_TIME **/		joinDoneError = FAIL;		joinAssignedAddr = 0;		post joinDone_task();		break;		#endif		default:break;		}}/** * currently just support data sending in the same pan. * do not support GTS transmission, indirect transmission, security enabled transmission. * source short address and pan id will automatically add by mac layer module. * * mac data frame format: * fcf(2) + dsn(1) + destPan(2) + destAddr(2/8) + srcAddr(2/8) + payload **/command error_t MldeSap.send(uint8_t srcAddrMode, uint8_t dstAddrMode, addr_union_t destAddr, 					uint8_t length, mem_head_t* pmsdu, bool ackSend){	mac_send_cache_t* pSendCache;	uint8_t* p;	int8_t pos;	uint8_t i;		/** check pmsdu free space **/	pos = (int8_t)( call Mem.getCurrentPos(pmsdu) );	if( srcAddrMode == MAC_ADDR_MODE_LONG )		pos -= 8;	else		pos -= 2;	if( dstAddrMode == MAC_ADDR_MODE_LONG )		pos -= 8;	else		pos -= 2;	if(pos < 6 ){	// 5 = fcf + dsn + destPanId + PHY_HEAD_LEN			return FAIL;	}					/** dataSendPending is TRUE indicate MldeSap.send have been called without signal MldeSap.sendDone **/ 	if(dataSendPending){		return FAIL;	}	#ifdef IS_COORD	if(mac_state != S_ESTABLISHED){		return FAIL;	}	#endif	#ifndef IS_COORD 	if(mac_state != S_JOINED){ 		return FAIL; 	}	#endif	/** get a full element in SendCache **/	if( ( pSendCache = call SendCache.fetchFree() ) == NULL ){		return FAIL;	}	/** store MldeSap.send parameter **/	sendParameter.length = length;	sendParameter.pmsdu = pmsdu;		/** set p point at the beginning of mac payload **/		p = (uint8_t*)pmsdu + call Mem.getCurrentPos(pmsdu);		/** add sourse address **/	if(srcAddrMode == MAC_ADDR_MODE_LONG){		p -= 8;		for(i=0; i<8; i++){			*(p+i) = macPib.pLongAddr->bytes[i];		}	}		/** MAC_ADDR_MODE_SHORT and other **/	else{			p -= 2;		*(saddr_t*)p = *(macPib.pShortAddr);	}		/** add dest address **/		if(dstAddrMode == MAC_ADDR_MODE_LONG){		p -= 8;		for(i=0; i<8; i++){			*(p+i) = destAddr.laddr.bytes[i];		}			}		/*** MAC_ADDR_MODE_SHORT and other ***/	else{			p -= 2;		*(saddr_t*)p = destAddr.saddr;	} 				/** add pan id **/	p -= 2;	*(nxle_uint16_t*)p = *(macPib.pPanId);		/** add dsn **/	p--;	*p = macPib.macDsn++;		/** add fcf **/	p -= 2;	*(nxle_uint16_t*)p = (MAC_FRAME_TYPE_DATA << POS_MAC_FRAME_TYPE) |					 (0 << POS_MAC_SECURITY) |					 (0 << POS_MAC_FRAME_PENDING) |					 (ackSend << POS_MAC_ACK_REQUEST) |					 (1 << POS_MAC_INTRA_PAN) |					 ( (dstAddrMode&0x3) << POS_MAC_DEST_ADDR_MODE ) |					 ( (srcAddrMode&0x3) << POS_MAC_SOURCE_ADDR_MODE );		/** set memory position at the start of mac fcf field **/				 	call Mem.setCurrentPos(pmsdu, (p - (uint8_t*)pmsdu) );		/** fill SendCache element **/	pSendCache->type = TYPE_DATA;	pSendCache->isAckSend = ackSend;			pSendCache->psdu = pmsdu;	pSendCache->dsn = macPib.macDsn - 1;		/** put into SendCache. **/	call SendCache.putFull(pSendCache);	return SUCCESS;				}task void sendTask(){	mac_send_cache_t* pSendCache;		if(send_state != SEND_IDLE){		post sendTask();		return;	}	if( ( pSendCache = call SendCache.getFull() ) == NULL){		post sendTask();		return;	}	/*** send different frame ***/	if( call PdSap.send(pSendCache->psdu, pSendCache->isAckSend, pSendCache->dsn) != SUCCESS ){		call SendCache.fetchFull();		call SendCache.putFree(pSendCache);		post sendTask();			switch (pSendCache->type){		case TYPE_DATA:			sendParameter.error = FAIL;			post sendDone_task();				break;		#ifndef IS_COORD			case CMD_BEACON_REQ:			mac_state = S_IDLE;			call MacTimer.stop();			post positiveScanDone_task();			break;		case CMD_ASSOC_REQ:			mac_state = S_SCAN_DONE;			call MacTimer.stop();			joinDoneError = FAIL;			joinAssignedAddr = 0;			post joinDone_task();			break;		#endif			case TYPE_BEACON:		case CMD_ASSOC_RESPON:					default:break;			}	}	else{		send_state = SEND_BUSY;	}}									event void PdSap.sendDone(error_t error, mem_head_t* psdu){	mac_send_cache_t* pSendCache;		/*** fetch the frame just send ***/	pSendCache = call SendCache.fetchFull();	switch(pSendCache->type){	case TYPE_DATA:		sendParameter.error = error;		post sendDone_task();		break;		#ifndef IS_COORD		case CMD_BEACON_REQ:			if(error == FAIL){			mac_state = S_IDLE;						post positiveScanDone_task();						/** stop wait beacon timer **/			call MacTimer.stop();		}				/** this packet is generate in mac layer module, so should be freed by mac layer module. **/		call Mem.free(pSendCache->psdu);		break;		case CMD_ASSOC_REQ:		if(error == FAIL){			mac_state = S_SCAN_DONE;			call MacTimer.stop();				joinDoneError = FAIL;			joinAssignedAddr = 0;			post joinDone_task();		}		call Mem.free(pSendCache->psdu);										break;		#endif		case TYPE_BEACON:	case CMD_ASSOC_RESPON:		default:		call Mem.free(pSendCache->psdu);		break;			}			send_state = SEND_IDLE;			/*** put this SendCache elment into free queue ***/ 	call SendCache.putFree(pSendCache);			/*** sendTask can send frame when send_state == SEND_IDLE ***/	post sendTask();			}task void sendDone_task(){	uint8_t pos;	pos = call Mem.getCurrentPos(sendParameter.pmsdu);		/** set memory block position at the beginning of mac layer payload **/	call Mem.setCurrentPos( sendParameter.pmsdu, (pos+sendParameter.length) );	signal MldeSap.sendDone(sendParameter.error, sendParameter.pmsdu);	dataSendPending = FALSE;}event void PdSap.receive(uint8_t length, mem_head_t* psdu, uint8_t lqi){	mac_receive_cache_t* pReceiveCache;	if( ( pReceiveCache = call ReceiveCache.fetchFree() ) != SUCCESS ){		call Mem.free(psdu);		return;	}	pReceiveCache->lqi = lqi;	pReceiveCache->length = length;	pReceiveCache->psdu = psdu;	call ReceiveCache.putFull(pReceiveCache);}task void receiveTask(){	uint8_t* p;	uint8_t length;	mac_receive_cache_t* pReceiveCache;		/** mac cmd frame type **/	uint8_t cmdType;		/** generate mac layer frame when needed after receiving mac cmd packet **/	mem_head_t* pSendPkt;	mac_send_cache_t* pSendCache;		/** used when receive associate request frame or associate response frame **/	saddr_t assignedAddr;	mac_error_t assocError;	uint8_t capInfo;		uint8_t i;	/*** no frame in receive cache ***/		if( ( pReceiveCache = call ReceiveCache.fetchFull() ) == NULL ){		post receiveTask();		return;	}		/** parse mac head into receiveHead and set psdu to payload position **/	parseHead(pReceiveCache->psdu);			/** calculate mac frame payload beginning position **/  	p = (uint8_t*)pReceiveCache->psdu + call Mem.getCurrentPos(pReceiveCache->psdu);		/** 	 * get mac frame payload length, length1 is length + 2(FCS) 	 * length1 = call Mem.getSize(pReceiveCache->psdu) - call Mem.getCurrentPos(pReceiveCache->psdu);	 **/	length = call Mem.getSize(pReceiveCache->psdu) - call Mem.getCurrentPos(pReceiveCache->psdu) - 2;	/*** 	 * check fcf first 	 * security and frame pending bit shuld not be set, ACK bit field do not care	 **/	if( ( ( (receiveHead.fcf&MASK_MAC_SECURITY) >> POS_MAC_SECURITY ) == 1 ) ||	    ( ( (receiveHead.fcf&MASK_MAC_FRAME_PENDING) >> POS_MAC_FRAME_PENDING ) == 1 ) ){		    	call Mem.free(pReceiveCache->psdu);		    	call ReceiveCache.putFree(pReceiveCache);				post receiveTask();				return;	}		/** handle different frame type **/	switch(receiveHead.type){	case MAC_FRAME_TYPE_BEACON:		if(mac_state == S_SCANNING){			handleBeacon(length, p, pReceiveCache->lqi);		}			call Mem.free(pReceiveCache->psdu);				break;	case MAC_FRAME_TYPE_DATA:		#ifdef IS_COORD		if(mac_state != S_ESTABLISHED){		    	call Mem.free(pReceiveCache->psdu);		    	call ReceiveCache.putFree(pReceiveCache);				post receiveTask();				return;		}		#endif		#ifndef IS_COORD	 	if(mac_state != S_JOINED){		    	call Mem.free(pReceiveCache->psdu);		    	call ReceiveCache.putFree(pReceiveCache);				post receiveTask();				return;	 	}		#endif				/** 		 * mac data frame format:		 * fcf(2) + dsn(1) + destPan(2) + destAddr(2/8) + srcAddr(2/8) + payload		 *		 * currently do not support receiving frame from different pan 		 * address field must be short address or long address		 **/  		if( ( (receiveHead.fcf&MASK_MAC_INTRA_PAN) == 0 ) || (receiveHead.dstAddrMode == MAC_ADDR_MODE_NONE) ||								(receiveHead.srcAddrMode == MAC_ADDR_MODE_NONE) ){		    	call Mem.free(pReceiveCache->psdu);		    	call ReceiveCache.putFree(pReceiveCache);				post receiveTask();				return;		}		    							/** notify next high layer **/			signal MldeSap.receive(receiveHead.srcAddrMode, receiveHead.srcAddr, receiveHead.dstAddrMode, 				receiveHead.dstAddr, length, pReceiveCache->psdu, pReceiveCache->lqi);																	break;	case MAC_FRAME_TYPE_CMD:		/** get cmd frame type **/		cmdType = *(uint8_t*)p;				/** skip cmd type field byte **/		p++;				/** handle different cmd frame **/		switch(cmdType){		/**		 * FCF(2)+DSN(1)+DST_PANID(2)+DST_SADDR(2)+CMD_TYPE(1)		 * length = 1;		 **/			case MAC_CMD_TYPE_BEACON_REQ:				/** free this memory block **/			call Mem.free(pReceiveCache->psdu);						/** check length filed **/			if(length != 1){		    		call ReceiveCache.putFree(pReceiveCache);								post receiveTask();					return;			}										/** coordinator must be in established mode to handle this frame **/			#ifdef IS_COORD			if(mac_state != S_ESTABLISHED){		    		call ReceiveCache.putFree(pReceiveCache);								post receiveTask();					return;			}			#endif						/** router must be in joined mode to handle this frame, be sure all node are FFD **/			#ifndef IS_COORD	 		if(mac_state != S_JOINED){		    		call ReceiveCache.putFree(pReceiveCache);	 								post receiveTask();					return;	 		}			#endif						/** malloc beacon frame memory block and get a pointer to SendCache element  **/			if( ( call Mem.malloc(&pSendPkt, BEACON_FRAME_LEN+PHY_HEAD_LEN) ) != SUCCESS ){		    		call ReceiveCache.putFree(pReceiveCache);								post receiveTask();					return;			}							if( ( ( pSendCache = call SendCache.fetchFree() ) == NULL ) ){				call Mem.free(pSendPkt);		    		call ReceiveCache.putFree(pReceiveCache);								post receiveTask();					return;			}			/** generate beacon and send it **/						generateBeacon(pSendPkt);						/** fill this SendCache element **/ 			pSendCache->type = TYPE_BEACON;			pSendCache->isAckSend = FALSE;			pSendCache->psdu = pSendPkt;			pSendCache->dsn = macPib.macDsn - 1;

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚州成人在线电影| 欧美熟乱第一页| 国产一区二区三区免费在线观看| 亚洲成人av电影| 亚洲国产视频一区二区| 亚洲午夜免费电影| 亚洲一区二区三区四区在线观看| 一级中文字幕一区二区| 亚洲激情网站免费观看| **性色生活片久久毛片| 亚洲另类在线制服丝袜| 亚洲精品视频免费看| 亚洲一区二区偷拍精品| 性做久久久久久久久| 亚洲444eee在线观看| 视频在线在亚洲| 老汉av免费一区二区三区| 九九精品一区二区| 国产精品自在在线| 丁香天五香天堂综合| www.视频一区| 在线免费观看日韩欧美| 欧美日韩精品免费观看视频 | 一本高清dvd不卡在线观看| 99久久免费国产| 欧美色图12p| 欧美电视剧免费观看| 久久精品一区二区| 亚洲婷婷在线视频| 偷窥少妇高潮呻吟av久久免费| 免费日韩伦理电影| 国产91丝袜在线观看| 色999日韩国产欧美一区二区| 欧美年轻男男videosbes| 精品999久久久| 亚洲天堂免费看| 人妖欧美一区二区| 岛国一区二区在线观看| 欧美日韩在线观看一区二区 | 久久国产夜色精品鲁鲁99| 国产精品亚洲一区二区三区妖精| 91丨九色丨蝌蚪丨老版| 制服丝袜亚洲播放| 久久久精品中文字幕麻豆发布| 亚洲免费伊人电影| 日本在线不卡一区| 成人黄色小视频| 蜜桃视频在线一区| 日本不卡免费在线视频| 久久99精品久久久久婷婷| 99在线视频精品| 91 com成人网| 中文字幕中文字幕中文字幕亚洲无线| 亚洲国产精品久久久久秋霞影院 | 午夜伊人狠狠久久| 国产精品一区二区三区网站| 日本高清无吗v一区| 26uuu国产日韩综合| 亚洲综合成人在线视频| 国产精品一区在线观看你懂的| 欧美亚洲综合另类| 国产精品三级在线观看| 爽好多水快深点欧美视频| av中文一区二区三区| 欧美一卡二卡在线观看| 亚洲免费在线电影| 高清视频一区二区| 欧美一区2区视频在线观看| 亚洲美女精品一区| 东方欧美亚洲色图在线| 日韩精品自拍偷拍| 亚洲成年人影院| 91蝌蚪porny九色| 91免费版pro下载短视频| 国产精品国产三级国产有无不卡| 亚洲777理论| 成人av在线影院| 精品国产一区二区三区忘忧草| 一区二区三区在线视频观看| 国产成人综合在线| 日韩精品中文字幕在线一区| 亚洲小少妇裸体bbw| 99国产精品久久久久久久久久久| 欧美精品一区二区三区在线 | 成人激情午夜影院| 欧美大片在线观看一区| 亚洲成a人片在线观看中文| 99久久久国产精品| 国产欧美一区视频| 国产一区美女在线| 欧美一区二区视频在线观看2020| 亚洲国产综合人成综合网站| 91久久国产最好的精华液| 亚洲欧美在线视频| 成人美女在线视频| 国产精品 欧美精品| 91麻豆.com| 国产精品美女久久久久久2018 | 在线观看一区日韩| 亚洲天堂免费看| 97精品国产97久久久久久久久久久久| 国产日产欧美一区二区视频| 国产乱人伦精品一区二区在线观看| 日韩三级在线观看| 久久精品国产精品亚洲红杏| 欧美一级高清片| 美女视频黄免费的久久 | 一区二区三区在线观看视频| 99国产精品国产精品毛片| 日韩码欧中文字| 一本色道久久加勒比精品| 亚洲激情第一区| 欧美午夜精品久久久| 丝袜诱惑制服诱惑色一区在线观看| 欧美日本韩国一区二区三区视频| 亚洲成av人片一区二区| 在线不卡的av| 麻豆成人久久精品二区三区小说| 欧美成人aa大片| 高清在线不卡av| 亚洲色欲色欲www在线观看| 91福利精品视频| 天天色天天操综合| 日韩女优制服丝袜电影| 免费高清在线一区| 成人性色生活片| 中文字幕国产精品一区二区| 99热在这里有精品免费| 亚洲精品国久久99热| 欧美日韩成人综合天天影院 | 日韩毛片视频在线看| 欧美性猛片aaaaaaa做受| 青娱乐精品在线视频| 337p粉嫩大胆色噜噜噜噜亚洲| 国产成人av一区二区三区在线 | 91在线免费播放| 亚洲成人黄色影院| 欧美成人精品二区三区99精品| 国产不卡一区视频| 一区二区三区蜜桃| 日韩亚洲欧美成人一区| 丁香婷婷综合五月| 亚洲一级不卡视频| 欧美精品一区二区三区很污很色的| www.66久久| 日韩一区欧美二区| 国产精品午夜电影| 欧美日本在线播放| 丁香六月综合激情| 性做久久久久久久免费看| 国产日韩欧美a| 欧美三级在线播放| 国产成人午夜高潮毛片| 亚洲一本大道在线| 国产欧美中文在线| 欧美二区在线观看| k8久久久一区二区三区| 日韩高清电影一区| 成人免费小视频| 日韩免费高清av| 91精品福利在线| 国产成人午夜99999| 日本系列欧美系列| 亚洲精品国产精品乱码不99 | 亚洲自拍偷拍av| 国产色一区二区| 91精品国产一区二区三区蜜臀| 成人动漫一区二区三区| 日本不卡视频在线| 一级女性全黄久久生活片免费| 久久先锋资源网| 欧美欧美欧美欧美| 91啦中文在线观看| 丁香啪啪综合成人亚洲小说 | 韩国一区二区在线观看| 亚洲综合免费观看高清完整版在线 | 18欧美亚洲精品| 日本道在线观看一区二区| 国内精品不卡在线| 亚洲va国产天堂va久久en| 中文字幕一区免费在线观看| 日韩无一区二区| 欧美日韩国产一区二区三区地区| 成人精品视频一区二区三区 | 中文字幕在线观看一区| www一区二区| 欧美一区二区三级| 欧美色偷偷大香| 欧洲一区二区av| 一本到三区不卡视频| 成人小视频在线观看| 国产精选一区二区三区| 久久99精品国产.久久久久| 日韩av网站免费在线| 香港成人在线视频| 亚洲一二三区视频在线观看| 亚洲精品精品亚洲| 亚洲免费观看高清完整版在线| 国产精品久久久久久久久免费桃花| 国产日韩欧美精品综合|