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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? hci.c

?? S3C2410平臺下藍牙編程與實驗
?? C
?? 第 1 頁 / 共 3 頁
字號:
***********************************************************************************************************
*/

int hci_reject_conn_req(struct hci_dev *hdev,UINT8 reason)
{
	reject_conn_cp rc;
	hdev->req_status = HCI_REQ_PEND;
	__bt_mem_cpy((void*)(rc.bdaddr),(void*)(hdev->hci_connection.hci_c_info.dst),6);//?to be corrected
	rc.reason = reason;
	hci_send_cmd(hdev,OGF_LINK_CTL,OCF_REJECT_CONN_REQ,REJECT_CONN_REQ_CP_SIZE,(void*)&rc);
	return 0;
}

/*
***********************************************************************************************************
*										請求遠方設備的friendly name
* 功	能:發送請求遠方設備的friendly name命令
***********************************************************************************************************
*/

int hci_remote_name_req(struct hci_dev *hdev)
{
	remote_name_req_cp rnr;
	hdev->req_status = HCI_REQ_PEND;
	__bt_mem_cpy((void*)(rnr.bdaddr),(void*)(hdev->hci_connection.hci_c_info.dst),6);
	rnr.pscan_rep_mode = hdev->hci_inquiry_info.pscan_rep_mode;
	rnr.pscan_mode = hdev->hci_inquiry_info.pscan_mode;
	rnr.clock_offset = (hdev->hci_inquiry_info.clock_offset) & 0x8000;
	hci_send_cmd(hdev,OGF_LINK_CTL,OCF_REMOTE_NAME_REQ,REMOTE_NAME_REQ_CP_SIZE,(void*)&rnr);
	return 0;
}

/*
***********************************************************************************************************
*										hci scan request
* 功	能:發送scan命令
***********************************************************************************************************
*/

void hci_scan_req(struct hci_dev *hdev)
{
	UINT8 scan = hdev->scan_enable;
	hdev->req_status = HCI_REQ_PEND;
	//Inquiry and Page scans
	hci_send_cmd(hdev,OGF_HOST_CTL,OCF_WRITE_SCAN_ENABLE,1,&scan);
}

/*
***********************************************************************************************************
*										hci authentication request
* 功	能:發送authentication命令
***********************************************************************************************************
*/

void hci_auth_req(struct hci_dev *hdev)
{
	UINT8 auth = hdev->authen_enable;
	hdev->req_status = HCI_REQ_PEND;
 	/* Authentication */
  	hci_send_cmd(hdev, OGF_HOST_CTL, OCF_WRITE_AUTH_ENABLE, 1, &auth);
}

/*
   *************************************************************************
    							HOST CONTROL
   *************************************************************************
*/

/*
***********************************************************************************************************
*										hci reset request
* 功	能:發送reset命令
***********************************************************************************************************
*/

void hci_reset_req(struct hci_dev *hdev)
{
	hdev->req_status = HCI_REQ_PEND;
	hci_send_cmd(hdev, OGF_HOST_CTL, OCF_RESET, 0, NULL);
}

/*
   *************************************************************************
    							PKT ANALYZE FUNCTION
   *************************************************************************
*/
__inline void hci_req_complete(struct hci_dev *hdev, int result)
{
	if (hdev->req_status == HCI_REQ_PEND) {
		hdev->req_result = result;
		hdev->req_status = HCI_REQ_DONE;
	}

}
__inline void hci_cmd_complete(struct hci_dev *hdev, int result)
{
	if (hdev->req_status == HCI_REQ_PEND) {
		hdev->cmd_complete_flags= result;
		hdev->req_status = HCI_REQ_DONE;
	}

}
/*
***********************************************************************************************************
*										 Command Complete OGF LINK_CTL  
* 功	能:
***********************************************************************************************************
*/
/* Command Complete OGF LINK_POLICY  */
void hci_cc_link_policy(struct hci_dev *hdev, UINT16 ocf)
{
	#ifdef DEBUG
	printf("%s ocf 0x%x", hdev->hci_device_info.name, ocf);
	#endif
	switch (ocf) {
	default:
	{
		//UINT8 status;
		//status=SDC_Get_Char(hdev->port);
		//if(!status)
		//{
		//	hdev->cmd_complete_flags = 1;
			#ifdef DEBUG
			printf("%s Command complete: ogf LINK_CTL ocf %x", hdev->name, ocf);
			#endif
		//}
		break;
	}
	}
}

//In this function the main handling is to be filled
void hci_cc_link_ctl(struct hci_dev *hdev, UINT16 ocf)
{
	switch (ocf) {
	default:
		{
			UINT8 status;
			status=SDC_Get_Char(hdev->port);
			if(!status)
			{
				hdev->cmd_complete_flags = 0;
				#ifdef DEBUG
				printf("%s Command complete: ogf LINK_CTL ocf %x", hdev->hci_device_info.name, ocf);
				#endif
			}
		}
		break;
	}
}
/* Command Complete OGF HOST_CTL  */
void hci_cc_host_ctl(struct hci_dev *hdev,UINT16 ocf)
{
	UINT8 status,param;
	//void *send;
	//printf("%s ocf 0x%x",hdev->name,ocf);
	switch(ocf){
	case OCF_EVT_MSK:
		
		break;
	case OCF_RESET:
		status =(UINT8)(SDC_Get_Char(hdev->port));//replaced form line1359
		hci_cmd_complete(hdev,status);
		break;
	case OCF_SET_EVENT_FLT:
		status = (UINT8)(SDC_Get_Char(hdev->port));//replaced form line
		hci_cmd_complete(hdev,status);
		#ifdef DEBUG
		if(status)
			printf("%s SET_EVENT_FLT failed %d", hdev->name, status);
		else
			printf("%s SET_EVENT_FLT successful", hdev->name);
		#endif
		break;
	
	case OCF_WRITE_AUTH_ENABLE:
		//if (!(send = hci_send_cmd_data(hdev, OGF_HOST_CTL, OCF_WRITE_AUTH_ENABLE)))
			//break;
		status =(UINT8)(SDC_Get_Char(hdev->port));			//????????????????????????????????????????????????
		param = hdev->authen_enable;
		
		if(!status){
			if(param == AUTH_ENABLED)
				hdev->auth_flags |= HCI_AUTH;
			else
				hdev->auth_flags &= ~HCI_AUTH;
		}
		hci_cmd_complete(hdev,status);
		break;
	case OCF_WRITE_CA_TIMEOUT:
		status = (UINT8)(SDC_Get_Char(hdev->port));			//????????????????????????????????????????????????
		hci_cmd_complete(hdev,status);
		#ifdef DEBUG
		if(status){
			printf("%s OCF_WRITE_CA_TIMEOUT failed %d", hdev->name, status);
		}else{
			printf("%s OCF_WRITE_CA_TIMEOUT succeseful", hdev->name);
		}
		#endif
		break;
	case OCF_WRITE_PG_TIMEOUT:
		status =(UINT8)(SDC_Get_Char(hdev->port));
		#ifdef DEBUG
		if(status){
			printf("%s OCF_WRITE_PG_TIMEOUT failed %d", hdev->name, status);
		}else{
			printf("%s OCF_WRITE_PG_TIMEOUT succeseful", hdev->name);
		}
		#endif
		break;
	case OCF_WRITE_SCAN_ENABLE:
		status = (UINT8)(SDC_Get_Char(hdev->port));			//????????????????????????????????????????????????
		param = hdev->scan_enable;
		if(!status){
			switch(param){
			case IS_ENA_PS_ENA:
				hdev->scan_flags |=  HCI_PSCAN | HCI_ISCAN;
				break;
			case IS_ENA_PS_DIS:
				hdev->scan_flags &= ~HCI_PSCAN;
				hdev->scan_flags |=  HCI_ISCAN;
				break;
			case IS_DIS_PS_ENA:
				hdev->scan_flags &= ~HCI_ISCAN;
				hdev->scan_flags |=  HCI_PSCAN;
				break;
			default:
				hdev->scan_flags &= ~(HCI_ISCAN | HCI_PSCAN);
				break;
			};
		}
		hci_cmd_complete(hdev, status);
		break;
	default:
		#ifdef DEBUG
		printf("%s Command complete: ogf HOST_CTL ocf %x", hdev->hci_device_info.name, ocf);
		#endif
		break;
	};
}

/* Command Complete OGF INFO_PARAM  */
void hci_cc_info_param(struct hci_dev *hdev,UINT16 ocf)
{

 //READ_BUFFER_SIZE_RP_SIZE READ_BD_ADDR_RP_SIZE
	read_local_features_rp lf;
	read_buffer_size_rp bs;
	read_bd_addr_rp ba;
	read_local_version_rp lv;
	int i;
	switch(ocf){
	case OCF_READ_LOCAL_VERSION:
		for(i=0;i<OCF_READ_LOCAL_VER_RP_SIZE;i++)
		{
			if((hdev->port->rx_buffer_status==SDC_BUFFER_DATA)||(hdev->port->rx_buffer_status==SDC_BUFFER_FULL))
			{
				*((UINT8*)(&lv)+i) = (UINT8)(SDC_Get_Char(hdev->port));
			}
		}
		if(lv.status)
		{
			hci_cmd_complete(hdev, lv.status);
			#ifdef DEBUG
			printf("%s READ_LOCAL_VERSION failed %d", hdev->hci_device_info.name, lv.status);
			#endif
			break;
		}
		__bt_mem_cpy((void *)(&( hdev->hci_device_info.ver)), (void *)((char*)(&lv)+1), OCF_READ_LOCAL_VER_RP_SIZE-1);
		break;
	case OCF_READ_LOCAL_FEATURES:
		for(i=0;i<READ_LOCAL_FEATURES_RP_SIZE;i++)
		{
			if((hdev->port->rx_buffer_status==SDC_BUFFER_DATA)||(hdev->port->rx_buffer_status==SDC_BUFFER_FULL))
			{
				*((UINT8*)(&lf)+i) = (UINT8)(SDC_Get_Char(hdev->port));
			}
		}
		if(lf.status){
			hci_cmd_complete(hdev, lf.status);
			#ifdef DEBUG
			printf("%s READ_LOCAL_FEATURES failed %d", hdev->name, lf.status);
			#endif
			break;
		}
		__bt_mem_cpy((void*)(hdev->hci_device_info.features), (void*)lf.features, 8);
		/* Adjust default settings according to features supported by device. */
		if(hdev->hci_device_info.features[0] &LMP_3SLOT)
			hdev->hci_device_info.pkt_type |= (HCI_DM3 | HCI_DH3);
		if (hdev->hci_device_info.features[0] & LMP_5SLOT)
			hdev->hci_device_info.pkt_type |= (HCI_DM5 | HCI_DH5);
		#ifdef DEBUG
		printf("%s: features 0x%x 0x%x 0x%x", hdev->hci_device_info.name, lf.features[0], lf.features[1], lf.features[2]);
		#endif
		break;
	case OCF_READ_BUFFER_SIZE:
		for(i=0;i<READ_BUFFER_SIZE_RP_SIZE;i++)
		{
			if((hdev->port->rx_buffer_status==SDC_BUFFER_DATA)||(hdev->port->rx_buffer_status==SDC_BUFFER_FULL))
			{
				*((UINT8*)(&bs)+i) = (UINT8)(SDC_Get_Char(hdev->port));
			}
		}
		if (bs.status) {
			hci_cmd_complete(hdev, bs.status);
			#ifdef DEBUG
			printf("%s READ_BUFFER_SIZE failed %d", hdev->hci_device_info.name, bs.status);
			#endif
			break;
		}
		hdev->hci_device_info.acl_mtu = (UINT16)(bs.acl_mtu);
		hdev->hci_device_info.sco_mtu = (UINT8 )(bs.sco_mtu);
		hdev->hci_device_info.acl_max = hdev->acl_cnt = (UINT16)(bs.acl_max_pkt);
		hdev->hci_device_info.sco_max = hdev->sco_cnt = (UINT16)(bs.sco_max_pkt);
		#ifdef DEBUG
		printf("%s mtu: acl %d, sco %d max_pkt: acl %d, sco %d", hdev->hci_device_info.name,hdev->hci_device_info.acl_mtu, hdev->hci_device_info.sco_mtu, hdev->hci_device_info.acl_max, hdev->hci_device_info.sco_max);
		#endif
		break;
	case OCF_READ_BD_ADDR:
		for(i=0;i<READ_BD_ADDR_RP_SIZE;i++)
		{
			if((hdev->port->rx_buffer_status==SDC_BUFFER_DATA)||(hdev->port->rx_buffer_status==SDC_BUFFER_FULL))
			{
				*((UINT8*)(&ba)+i) = (UINT8)(SDC_Get_Char(hdev->port));
			}
		}
		if(!ba.status){
			__bt_mem_cpy((void*)(hdev->hci_device_info.bdaddr),(void*)(ba.bdaddr),6);
		}else{
			#ifdef DEBUG
			printf("%s: READ_BD_ADDR failed %d", hdev->hci_device_info.name, ba.status);
			#endif
		}
		hci_cmd_complete(hdev,ba.status);
		break;
	default:
		#ifdef DEBUG
		printf("%s Command complete: ogf INFO_PARAM ocf %x", hdev->hci_device_info.name, ocf);
		#endif
		break;
	}
}

/* Command Status OGF LINK_CTL  */
void hci_cs_link_ctl(struct hci_dev *hdev,UINT16 ocf,UINT8 status)
{
	switch(ocf){
	case OCF_CREATE_CONN:
		hci_req_complete(hdev,status);		//future
		if(status){
			//create_conn_cp *cc = hci_send_cmd_data(hdev,OGF_LINK_CTL,OCF_CREATE_CONN);
			//if(!cc)
			//	break;
			//printf("%s Create connection error: status 0x%x %s", hdev->name,status,&cc.bdaddr);
			
		}
		break;
	case OCF_INQUIRY:
		hci_req_complete(hdev,status);//future
		if(status){
			#ifdef DEBUG
			printf("%s Inquiry error: status 0x%x", hdev->hci_device_info.name, status);
			#endif
			
		}
		break;
	default:
		#ifdef DEBUG
		printf("%s Command status: ogf LINK_CTL ocf %x", hdev->hci_device_info.name, ocf);
		#endif
		break;
	}
}

/* Command Status OGF LINK_POLICY */
void hci_cs_link_policy(struct hci_dev *hdev,UINT16 ocf,UINT8 status)
{
	switch(ocf){
	default:
		hci_req_complete(hdev,status);
		#ifdef DEBUG
		printf("%s Command status: ogf HOST_POLICY ocf %x", hdev->hci_device_info.name, ocf);
		#endif
	}
}

/* Command Status OGF HOST_CTL */
void hci_cs_host_ctl(struct hci_dev *hdev,UINT16 ocf,UINT8 status)
{
	switch(ocf){
	default:
		hci_req_complete(hdev, status);
		#ifdef DEBUG
		printf("%s Command status: ogf HOST_CTL ocf %x", hdev->hci_device_info.name, ocf);
		#endif
	}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品污污网站免费看| 国产91丝袜在线播放| 亚洲免费av观看| 中文字幕乱码亚洲精品一区| 亚洲精品一区二区三区福利| 精品久久久三级丝袜| 欧美xxxxx牲另类人与| 欧美成人vps| 久久午夜电影网| 久久久精品黄色| 国产女人18水真多18精品一级做| 国产日韩欧美一区二区三区乱码| 国产偷国产偷精品高清尤物| 中文字幕欧美区| 国产精品卡一卡二卡三| 亚洲综合色丁香婷婷六月图片| 伊人夜夜躁av伊人久久| 亚洲高清视频的网址| 免费人成网站在线观看欧美高清| 日本va欧美va瓶| 国产在线播放一区| eeuss鲁一区二区三区| 在线观看日韩国产| 91精品福利在线一区二区三区| 亚洲精品在线观看视频| 国产精品国产三级国产三级人妇 | 日韩精品一区二区三区视频| 久久一区二区三区四区| 国产精品二三区| 亚洲成人午夜电影| 国产东北露脸精品视频| 91极品视觉盛宴| 精品国产a毛片| 亚洲女同一区二区| 免费成人在线播放| 99精品欧美一区二区蜜桃免费| 欧美久久一二区| 中文av一区特黄| 日本vs亚洲vs韩国一区三区 | 国产精品一级黄| 色哟哟一区二区| 久久在线观看免费| 亚洲成人av福利| 成人爽a毛片一区二区免费| 欧美午夜精品久久久久久孕妇| 2023国产精品视频| 亚洲成人资源在线| 99re热这里只有精品视频| 51久久夜色精品国产麻豆| 最新欧美精品一区二区三区| 久久精品久久综合| 在线观看日韩电影| 国产精品短视频| 国产精品一卡二| 精品嫩草影院久久| 婷婷六月综合网| 色婷婷av一区二区三区gif| 久久久精品免费观看| 看电影不卡的网站| 日韩一级片在线播放| 亚洲一二三四区不卡| 99国产精品国产精品毛片| 精品国产乱码久久久久久闺蜜| 亚洲午夜在线视频| 一本一本久久a久久精品综合麻豆| 久久日韩精品一区二区五区| 日韩av在线发布| 欧美精品99久久久**| 亚洲6080在线| 在线91免费看| 五月婷婷色综合| 欧美精品在线观看一区二区| 亚洲一区日韩精品中文字幕| 91国产视频在线观看| 一区二区三区成人在线视频| 欧美在线免费视屏| 天使萌一区二区三区免费观看| 91久久奴性调教| 亚洲一区二区黄色| 欧美日韩成人激情| 日韩国产在线观看| 欧美α欧美αv大片| 国产在线播精品第三| 国产欧美日韩综合| bt7086福利一区国产| 亚洲日本免费电影| 欧美伊人久久久久久久久影院 | 日韩你懂的在线观看| 美女视频黄免费的久久 | 亚洲一区自拍偷拍| 欧美男男青年gay1069videost | 欧美色国产精品| 久久精品av麻豆的观看方式| 欧美成人一级视频| 国产成人夜色高潮福利影视| 国产精品夫妻自拍| 欧美精品日韩一区| 国产精品一级黄| 亚洲综合小说图片| 欧美一级一区二区| www.爱久久.com| 日韩中文字幕av电影| 国产无人区一区二区三区| 91麻豆成人久久精品二区三区| 一区二区成人在线观看| 欧美va亚洲va国产综合| 成人午夜电影久久影院| 一区二区三区四区激情| 日韩亚洲欧美一区| 91婷婷韩国欧美一区二区| 爽好久久久欧美精品| 国产精品欧美综合在线| 91精品久久久久久久91蜜桃| 国产99一区视频免费| 午夜精品一区二区三区电影天堂| 26uuu亚洲综合色| 欧美性大战久久久久久久| 麻豆免费看一区二区三区| 国产精品久久综合| 日韩美女主播在线视频一区二区三区| 成人听书哪个软件好| 日韩av中文字幕一区二区| 亚洲人妖av一区二区| 精品欧美乱码久久久久久1区2区 | 美女爽到高潮91| 一区二区三区在线免费观看| 久久久久久久久99精品| 欧美一级黄色片| 日本高清成人免费播放| 成人免费观看视频| 韩国欧美国产一区| 日本欧美一区二区三区乱码| 亚洲乱码国产乱码精品精可以看| 26uuu久久天堂性欧美| 欧美日韩综合在线| 91视频免费播放| 成人午夜av影视| 国产一区二区三区香蕉| 蜜桃精品视频在线观看| 婷婷六月综合亚洲| 偷拍亚洲欧洲综合| 亚洲小少妇裸体bbw| 一区二区三区欧美日韩| 日韩伦理免费电影| 亚洲男同1069视频| 中文字幕一区二区在线观看| 国产欧美日韩久久| 久久久天堂av| 中文字幕va一区二区三区| 国产欧美视频一区二区| 欧美激情一区二区三区在线| 国产亲近乱来精品视频 | 在线成人免费视频| 欧美另类变人与禽xxxxx| 欧美精品丝袜久久久中文字幕| 在线观看日韩一区| 欧美日韩精品综合在线| 欧美日韩国产小视频| 欧美久久久久久久久久| 日韩色在线观看| www国产精品av| 亚洲国产精品激情在线观看| 中文字幕不卡一区| 亚洲伦在线观看| 亚洲v日本v欧美v久久精品| 日韩电影在线看| 久久福利视频一区二区| 国产精品综合一区二区| 成人免费三级在线| 91视频一区二区三区| 欧美日韩黄色一区二区| 日韩一级片在线播放| 国产肉丝袜一区二区| 亚洲男人天堂一区| 日本特黄久久久高潮 | 亚洲欧洲一区二区三区| 一区二区三区在线免费视频| 视频一区二区三区中文字幕| 久久国产乱子精品免费女| 国产成人在线影院| 91久久人澡人人添人人爽欧美| 欧美丰满美乳xxx高潮www| 久久精品免费在线观看| 亚洲视频每日更新| 日韩国产一区二| 99精品偷自拍| 日韩一区二区三区精品视频| 日本一区二区高清| 午夜欧美电影在线观看| 国产综合久久久久久鬼色| 91色九色蝌蚪| 欧美一区二区三区色| 国产精品久久久久久久久免费桃花 | 九九国产精品视频| 91在线观看高清| 精品国产免费一区二区三区四区 | 国产自产视频一区二区三区| 欧美亚洲国产一区二区三区va | 久久女同性恋中文字幕| 亚洲午夜在线电影|