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

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

?? irlap1.c

?? 這個是從國外弄到的一個紅外協(xié)議棧
?? C
字號:
/*  Copyright (C) 2002-2003 Gerd Rausch, BlauLogic (http://blaulogic.com)  All rights reserved.  Redistribution and use in source and binary forms, with or without  modification, are permitted provided that the following conditions  are met:  1. Redistributions of source code must retain the above copyright     notice, this list of conditions and the following disclaimer.  2. Redistributions in binary form must reproduce the above copyright     notice, this list of conditions and the following disclaimer in the     documentation and/or other materials provided with the distribution.  3. Except as contained in this notice, neither the name of BlauLogic     nor the name(s) of the author(s) may be used to endorse or promote     products derived from this software without specific prior written     permission.  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE AUTHOR(S) OR BLAULOGIC BE LIABLE FOR ANY CLAIM,  DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR  OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR  THE USE OR OTHER DEALINGS IN THE SOFTWARE.*/#include <string.h>#include "irlap.h"#define IRLAP_RETRY_ATTEMPTS		5#define IRLAP_ADDR_SECONDARY		(1<<1)static void send_test_reply(IrLAP_Context *context_p, IrLAP_Device_Addr addr_p){  struct {    IrLAP_Head head;    IrLAP_Test test;  } resp;  resp.head.addr=IRLAP_ADDR_NULL;  resp.head.ctrl=IRLAP_CTRL_U_TEST_RESP | IRLAP_CTRL_P_F_MASK;  memcpy(resp.test.dest, addr_p, sizeof(IrLAP_Device_Addr));  memcpy(resp.test.source, context_p->dev_addr, sizeof(IrLAP_Device_Addr));  irlap_send_frame((IrLAP_Frame *)&resp, sizeof(IrLAP_Head)+sizeof(IrLAP_Test));}static void send_rr(IrLAP_Context *context_p){  IrLAP_Head req;  req.addr=IRLAP_ADDR_BROADCAST | IRLAP_ADDR_C_TEST;  req.ctrl=IRLAP_CTRL_S_RR | IRLAP_CTRL_P_F_MASK | context_p->vr<<IRLAP_CTRL_NR_BIT_POS;  irlap_send_frame((IrLAP_Frame *)&req, sizeof(IrLAP_Head));}static int16_t wait_response(IrLAP_Context *context_p, IrLAP_Frame *resp_p,			     uint8_t ctrl_mask, uint8_t ctrl_value,			     uint8_t rr_abort){  int16_t n;  do {    if((n=irlap_receive_frame(resp_p))<0)      return -1;    if(resp_p->head.addr & IRLAP_ADDR_C_TEST) {      /* in primary mode only respond to TEST commands */      switch(resp_p->head.ctrl & IRLAP_CTRL_U_MASK) {      case IRLAP_CTRL_U_TEST_CMD:	if(n>=sizeof(IrLAP_Head)+sizeof(IrLAP_Test) &&	   irlap_matching_dest_addr(context_p, resp_p->u.test.dest))	  send_test_reply(context_p, resp_p->u.test.source);      }      continue;    }    if(resp_p->head.ctrl & IRLAP_CTRL_I_TEST) {      /* U or S format */      if(!(resp_p->head.ctrl & IRLAP_CTRL_S_TEST)) {	/* S format */	switch(resp_p->head.ctrl & IRLAP_CTRL_S_MASK) {	case IRLAP_CTRL_S_RR:	  if((resp_p->head.addr & ~IRLAP_ADDR_C_TEST)==IRLAP_ADDR_SECONDARY) {	    context_p->vs=(resp_p->head.ctrl>>IRLAP_CTRL_NR_BIT_POS)&IRLAP_CTRL_N_MASK;	    if(rr_abort)	      return -1;	    break;	  }	}      }    } else {      /* I format */      if((resp_p->head.addr & ~IRLAP_ADDR_C_TEST)==IRLAP_ADDR_SECONDARY &&	 context_p->vr==((resp_p->head.ctrl>>IRLAP_CTRL_NS_BIT_POS)&IRLAP_CTRL_N_MASK)) {	context_p->vs=(resp_p->head.ctrl>>IRLAP_CTRL_NR_BIT_POS)&IRLAP_CTRL_N_MASK;	context_p->vr=(context_p->vr+1)&IRLAP_CTRL_N_MASK;      }    }  } while((resp_p->head.ctrl & ctrl_mask)!=ctrl_value);  return n;}uint8_t irlap1_connect(IrLAP_Context *context_p, IrLAP_Frame *resp_p,		       IrLAP_Device_Addr addr_p,		       uint16_t (*get_dev_info_cb)(uint8_t *dev_info_p, uint8_t user_data),		       uint8_t get_dev_info_user_data){  IrLAP_Small_Frame req;  uint8_t attempt;  int16_t n;  uint16_t param_len;  req.head.addr=IRLAP_ADDR_BROADCAST | IRLAP_ADDR_C_TEST;  req.head.ctrl=IRLAP_CTRL_U_XID_CMD | IRLAP_CTRL_P_F_MASK;  req.u.discovery.format=IRLAP_XID_FMT_DISCOVERY;    memcpy(req.u.discovery.source, context_p->dev_addr, sizeof(IrLAP_Device_Addr));  if(addr_p)    memcpy(req.u.discovery.dest, addr_p, sizeof(IrLAP_Device_Addr));  else    memset(req.u.discovery.dest, 0xFF, sizeof(IrLAP_Device_Addr));  req.u.discovery.flags=IRLAP_XID_FLAGS_SLOTS_1;  req.u.discovery.slot=0;  req.u.discovery.version=IRLAP_VERSION;  if(get_dev_info_cb)    param_len=(*get_dev_info_cb)(req.u.discovery.info, get_dev_info_user_data);  else    param_len=0;  for(attempt=0; attempt<IRLAP_RETRY_ATTEMPTS; attempt++) {    irlap_send_frame((IrLAP_Frame *)&req, sizeof(IrLAP_Head)+sizeof(IrLAP_Discovery)+param_len);    if((n=wait_response(context_p, resp_p, IRLAP_CTRL_U_MASK, IRLAP_CTRL_U_XID_RESP, 0))>=0)      break;  }  if(attempt>=IRLAP_RETRY_ATTEMPTS)    return 0;  req.head.addr=IRLAP_ADDR_BROADCAST | IRLAP_ADDR_C_TEST;  req.head.ctrl=IRLAP_CTRL_U_SNRM_CMD | IRLAP_CTRL_P_F_MASK;  req.u.snrm.conn_addr=IRLAP_ADDR_SECONDARY;  memcpy(req.u.snrm.source, context_p->dev_addr, sizeof(IrLAP_Device_Addr));  memcpy(req.u.snrm.dest, resp_p->u.discovery.source, sizeof(IrLAP_Device_Addr));  param_len=irlap_append_neg_params(req.u.snrm.info);  for(attempt=0; attempt<IRLAP_RETRY_ATTEMPTS; attempt++) {    irlap_send_frame((IrLAP_Frame *)&req, sizeof(IrLAP_Head)+sizeof(IrLAP_SNRM)+param_len);    if((n=wait_response(context_p, resp_p, IRLAP_CTRL_U_MASK, IRLAP_CTRL_U_UA_RESP, 0))>=0)      break;  }  if(attempt>=IRLAP_RETRY_ATTEMPTS)    return 0;  context_p->vr=0;  context_p->vs=0;  return 1;}uint8_t irlap1_disconnect(IrLAP_Context *context_p, IrLAP_Frame *resp_p){  IrLAP_Small_Frame req;  uint8_t attempt;  req.head.addr=IRLAP_ADDR_SECONDARY | IRLAP_ADDR_C_TEST;  req.head.ctrl=IRLAP_CTRL_U_DISC_CMD | IRLAP_CTRL_P_F_MASK;  for(attempt=0; attempt<IRLAP_RETRY_ATTEMPTS; attempt++) {    irlap_send_frame((IrLAP_Frame *)&req, sizeof(IrLAP_Head));    if(wait_response(context_p, resp_p, IRLAP_CTRL_U_MASK, IRLAP_CTRL_U_UA_RESP, 0)>=0)      break;  }  if(attempt>=IRLAP_RETRY_ATTEMPTS)    return 0;  return 1;}int16_t irlap1_send_receive_i_frame(IrLAP_Context *context_p,				    IrLAP_Frame *req_p, uint16_t req_size,				    IrLAP_Frame *resp_p){  uint8_t send_req, new_vs, attempt;  int16_t n;  send_req=1;  new_vs=context_p->vs;  for(attempt=0; attempt<IRLAP_RETRY_ATTEMPTS; attempt++) {    if(attempt>0)      send_rr(context_p);    if(send_req) {      req_p->head.addr=IRLAP_ADDR_SECONDARY | IRLAP_ADDR_C_TEST;      req_p->head.ctrl=IRLAP_CTRL_P_F_MASK | context_p->vr<<IRLAP_CTRL_NR_BIT_POS | context_p->vs<<IRLAP_CTRL_NS_BIT_POS;      irlap_send_frame(req_p, req_size);      new_vs=(context_p->vs+1)&IRLAP_CTRL_N_MASK;    }    if((n=wait_response(context_p, resp_p, IRLAP_CTRL_I_TEST, 0, 1))>=0)      return n;    if(context_p->vs==new_vs)      send_req=0;  }  return -1;}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品影视在线观看| 欧美一区二区三区四区久久| 欧美午夜精品理论片a级按摩| 日韩欧美国产一二三区| 中文字幕日韩av资源站| 奇米亚洲午夜久久精品| 在线视频亚洲一区| 国产精品丝袜黑色高跟| 蜜臂av日日欢夜夜爽一区| 欧洲亚洲精品在线| 国产精品亲子乱子伦xxxx裸| 免费成人在线视频观看| 欧亚一区二区三区| 亚洲欧洲无码一区二区三区| 国产一区二区三区四| 91精品国产综合久久久蜜臀图片| 亚洲欧美一区二区三区极速播放 | 久久久久久久综合| 久久精品国产第一区二区三区| 色素色在线综合| 国产精品天天看| 成人免费毛片a| 国产日韩av一区| 国产精品白丝av| 国产日产亚洲精品系列| 国产乱子伦一区二区三区国色天香| 在线不卡的av| 亚洲va欧美va人人爽午夜| 在线观看av一区| 亚洲一区二区在线免费看| aa级大片欧美| 亚洲人成人一区二区在线观看 | 免费黄网站欧美| 欧美一级高清片在线观看| 婷婷六月综合亚洲| 欧美一区二区三区成人| 美女免费视频一区| wwwwxxxxx欧美| 国产成人在线网站| 国产精品久99| 色综合久久久久久久久久久| 亚洲欧美另类小说| 欧美日韩一区在线| 日本欧美一区二区三区| 精品奇米国产一区二区三区| 久久99国产精品免费网站| 国产亚洲视频系列| a美女胸又www黄视频久久| 亚洲人成小说网站色在线| 在线观看不卡一区| 久久福利视频一区二区| 久久精品视频网| 成人aa视频在线观看| 一区二区不卡在线播放 | 国产精品免费久久久久| 91蝌蚪porny| 午夜精彩视频在线观看不卡| 欧美成人激情免费网| 国产69精品久久777的优势| 亚洲精品ww久久久久久p站| 欧美日韩免费视频| 国产一区二区三区av电影 | 久久精品人人做人人综合| 成人激情黄色小说| 亚洲福利视频导航| 国产三级欧美三级日产三级99| 99re8在线精品视频免费播放| 亚洲成人777| 国产免费观看久久| 欧美色视频在线| 风流少妇一区二区| 日韩精品一二三| 欧美国产禁国产网站cc| 欧美精品自拍偷拍| 暴力调教一区二区三区| 日本女人一区二区三区| 中文字幕一区二区三区在线播放| 欧美日韩国产小视频| 国产精品91一区二区| 水野朝阳av一区二区三区| 欧美国产一区二区在线观看| 欧美精品第1页| eeuss鲁片一区二区三区 | 日精品一区二区三区| 国产精品美女久久久久久久久| 欧美高清激情brazzers| 99精品国产热久久91蜜凸| 久99久精品视频免费观看| 亚洲国产精品一区二区久久 | 日韩精品电影在线| 亚洲免费av在线| 欧美经典三级视频一区二区三区| 3atv在线一区二区三区| 欧美影片第一页| 99久久婷婷国产精品综合| 国产老肥熟一区二区三区| 日韩综合一区二区| 亚洲成人自拍一区| 国产精品久久久久久久第一福利 | 天堂影院一区二区| 一区二区三区日韩欧美| 日韩一区在线播放| 国产欧美一区二区三区在线看蜜臀 | av在线不卡观看免费观看| 国产在线国偷精品产拍免费yy| 天堂va蜜桃一区二区三区| 午夜伦欧美伦电影理论片| 亚洲第一精品在线| 亚洲成人免费电影| 亚洲一区二区三区激情| 亚洲国产视频直播| 性欧美大战久久久久久久久| 洋洋成人永久网站入口| 亚洲动漫第一页| 亚洲成人免费在线观看| 丝袜a∨在线一区二区三区不卡| 亚洲福利国产精品| 日本不卡的三区四区五区| 麻豆国产精品一区二区三区| 免费看欧美女人艹b| 欧美aaaaaa午夜精品| 老汉av免费一区二区三区| 久久国产三级精品| 国产成人自拍在线| 色诱视频网站一区| 7799精品视频| 久久影音资源网| **网站欧美大片在线观看| 亚洲男人的天堂一区二区| 亚洲图片一区二区| 婷婷综合另类小说色区| 麻豆成人久久精品二区三区小说| 国模一区二区三区白浆| www.亚洲精品| 欧美三级电影在线观看| 日韩免费在线观看| 国产日韩欧美a| 亚洲在线视频网站| 日本不卡123| 成人免费毛片app| 欧美中文一区二区三区| 日韩欧美国产三级| 欧美激情一区二区在线| 亚洲无人区一区| 黄网站免费久久| 91传媒视频在线播放| 日韩午夜在线影院| 综合久久国产九一剧情麻豆| 日韩和欧美一区二区三区| 国产91在线|亚洲| 欧美精品在线观看播放| 国产亚洲精品精华液| 亚洲激情五月婷婷| 韩国精品在线观看| 在线亚洲人成电影网站色www| 日韩欧美一区电影| 亚洲天堂a在线| 久久精品国产亚洲a| 91丨porny丨蝌蚪视频| 日韩欧美色综合网站| 亚洲人成精品久久久久| 国产一区二区精品在线观看| 在线精品视频一区二区三四 | 一区二区日韩av| 国产美女在线精品| 欧美精品一级二级三级| 亚洲欧美日韩国产手机在线| 另类小说综合欧美亚洲| 欧美日韩一级黄| ...av二区三区久久精品| 国产一区二区免费视频| 欧美一区二区成人| 一区二区三区中文在线观看| 国产精品一区二区你懂的| 在线电影欧美成精品| 亚洲一卡二卡三卡四卡无卡久久| 国产精品88av| 久久午夜电影网| 蜜臀久久久久久久| 欧美图片一区二区三区| 亚洲欧美另类小说| 北岛玲一区二区三区四区| 久久久久久久久久美女| 精品一区免费av| 在线电影一区二区三区| 日韩主播视频在线| 精品视频色一区| 亚洲欧美国产三级| 97精品电影院| 成人免费在线视频观看| 国产xxx精品视频大全| 久久亚洲一区二区三区明星换脸 | 亚洲综合精品久久| 91视频你懂的| 亚洲视频1区2区| 色综合久久88色综合天天| 一区二区三区中文免费| 欧美色区777第一页| 天天色综合天天| 91精品国产高清一区二区三区蜜臀|