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

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

?? irfunc.c

?? FreeAMP(MP3播放)程序源代碼-用來研究MP3解碼
?? C
字號:
/* irfunc.c v0.3 (c) 1998 Tom Wheeley <tomw@tsys.demon.co.uk>   */
/* this code is placed under the LGPL, see www.gnu.org for info */

/*
 * irfunc.c, infrared functions (Irman specific)
 */
 
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <errno.h>

#include "ir.h"

/* generic function for ir_get_code() and ir_poll_code() */
static unsigned char *ir_read_code(unsigned long timeout);
/* converts a single hex character to an integer */
static int ir_hex_to_int(unsigned char hex);

/* flag to enable use of higher level functions */
static int ir_enabled=0;

/* output hex digits */
static char ir_hexdigit[16] = {
	'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'
};

int ir_init(char *filename)
{
  int rdchar;
  
  if (ir_enabled) {
    errno = EBUSY;	/* we already have a high level ir setup */
    return -1;
  }

  if (ir_open_port(filename) < 0) {
    return -1;
  }

  ir_clear_buffer();

  if (ir_write_char('I') < 0)
    return -1;
  
  ir_usleep(IR_HANDSHAKE_GAP);
  
  if (ir_write_char('R') < 0)
    return -1;
  
  /* we'll be nice and give the box a good chance to send an 'O' */
  
  while ((rdchar = ir_read_char(IR_HANDSHAKE_TIMEOUT)) != 'O') {
    if (rdchar < 0) {	/* error or timeout */
      return -1;
    }
  }

  /* as regards the 'K', however, that really must be the next character */
  
  rdchar = ir_read_char(IR_HANDSHAKE_TIMEOUT);
  if (rdchar < 0) {
    return -1;
  }
  
  /* ENOEXEC is the closest error I could find, that would also not be
   * generated by ir_read_char().  Anyway, ENOEXEC does more or less mean
   * "I don't understand this data I've been given"
   */
  if (rdchar != 'K') {
    errno = ENOEXEC;
    return -1;
  }

  /* we are now ready to roll */
  ir_enabled = 1;
  return 0;
}


/* simply a wrapper for ir_close_port() */

int ir_finish(void)
{
  if (!ir_enabled) {
    errno = ENXIO;
    return -1;
  }
  
  ir_enabled = 0;
  
  return ir_close_port();
}


/* this function is used by both ir_get_code and ir_poll_code,
 * the difference being in the timeout for the first piece of data.
 * we also have a short timeout whatever for the remaining five bytes,
 * in case computer and Irman get out of sync we can just raise an error
 * and get back to normal life.
 *
 * note esp. that these functions return a pointer to statically defined
 * data.  In the forseeable usage of LIBIR this seems the easiest way.
 */

static unsigned char *ir_read_code(unsigned long timeout)
{
  static unsigned char codebuf[IR_CODE_LEN];
  int i, datum;
    
  datum = ir_read_char(timeout);
  if (datum < 0)
    return NULL;
    
  codebuf[0] = (unsigned char) datum;
  
  for (i=1; i<IR_CODE_LEN; i++) {
    datum = ir_read_char(IR_POLL_TIMEOUT);
    if (datum < 0) {
      return NULL;
    } else {
      codebuf[i] = (unsigned char)datum;
    }
  }
  
  return codebuf;
}

unsigned char *ir_get_code(void)
{
  /* well dodgy choice of error here...! */
  if (!ir_enabled) {
    errno = ENXIO;
    return NULL;
  }
  
  return ir_read_code(IR_BLOCKING);
}

unsigned char *ir_poll_code(void)
{
  if (!ir_enabled) {
    errno = ENXIO;
    return NULL;
  }
  
  return ir_read_code(0);
}

char *ir_code_to_text(unsigned char *code)
{
  static char text[2 * IR_CODE_LEN + 1];
  int i;
  char *j;
  
  j = text;
  for (i=0; i < IR_CODE_LEN; i++) {
    *j++ = ir_hexdigit[code[i] >> 4];
    *j++ = ir_hexdigit[code[i] & 15];
  }
  *j = '\0';

  return text;
}

static int ir_hex_to_int(unsigned char hex)
{
  if (hex >= '0' && hex <= '9')
    return hex - '0';
    
  hex = tolower(hex);
  if (hex >= 'a' && hex <= 'f')
    return hex - 'a' + 10;
    
  /* error! */
  return 0;
}


unsigned char *ir_text_to_code(char *text)
{
  static char code[IR_CODE_LEN];
  int i;
  char *j;
  
  j = text;
  for (i=0; i<IR_CODE_LEN; i++) {
    if (!j[0] || !j[1]) {
      break;
    }
    code[i]  = (ir_hex_to_int(*j++) << 4) & 0xf0;
    code[i] += (ir_hex_to_int(*j++)     ) & 0x0f;
  }
  
  /* if string isn't long enough, pad with zeros. This is (marginally)
   * better than the leaving in the remains of the last conversion
   */
  for ( ; i<IR_CODE_LEN; i++)
    code[i] = '\0';
  
  return code;
}


/* this function should never be called, but maybe someone wants to manually
 * open the ir channel, then use the higher level functions.  If you use this
 * then you deserve any problems you get!  It is only here because I don't
 * believe in unneccesary restrictions.
 */
void ir_set_enabled(int val)
{
  ir_enabled = val;
}

/* end of irfunc.c */

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲国产精品传媒在线观看| 国产日产欧美一区二区三区| 91美女在线看| 99久久精品免费精品国产| 成人黄页在线观看| 国产一区激情在线| 国产一区二区成人久久免费影院| 美腿丝袜亚洲一区| 久久精品国产**网站演员| 麻豆91在线看| 国产成人精品综合在线观看 | 国产成人av资源| 粉嫩av一区二区三区在线播放| 国产v综合v亚洲欧| 97精品国产97久久久久久久久久久久| 菠萝蜜视频在线观看一区| 91网站黄www| 欧美老肥妇做.爰bbww| 日韩视频123| 国产日本亚洲高清| 亚洲一区二区精品久久av| 三级久久三级久久| 国产美女精品在线| 色婷婷久久99综合精品jk白丝| 欧美日韩在线直播| 精品成人一区二区三区| 国产精品久久毛片av大全日韩| 亚洲欧美欧美一区二区三区| 五月婷婷激情综合网| 麻豆成人在线观看| 91视频.com| 欧美一级片在线观看| 中国色在线观看另类| 婷婷六月综合网| 成人午夜视频网站| 欧美精品99久久久**| 国产情人综合久久777777| 亚洲一二三四区不卡| 久久激情五月婷婷| 色婷婷精品久久二区二区蜜臀av| 91精品中文字幕一区二区三区| 国产欧美日韩在线| 免费一级欧美片在线观看| 99精品视频免费在线观看| 91精品国产品国语在线不卡| 国产精品视频一二三区| 麻豆国产精品视频| 欧美日韩成人高清| 专区另类欧美日韩| 国产一区二区三区国产| 欧美日韩国产片| 亚洲国产成人午夜在线一区| 日本大胆欧美人术艺术动态| 色综合 综合色| 亚洲国产成人在线| 久久99国产乱子伦精品免费| 欧美性猛交xxxx乱大交退制版 | 欧美一级二级在线观看| 亚洲青青青在线视频| 国产黄人亚洲片| 日韩一区二区视频在线观看| 一二三区精品视频| 91在线观看免费视频| 欧美国产禁国产网站cc| 国产精品系列在线播放| 2021久久国产精品不只是精品| 视频一区二区欧美| 在线91免费看| 日韩av中文在线观看| 欧美日韩亚洲国产综合| 亚洲电影欧美电影有声小说| 欧美中文字幕一区二区三区| 亚洲私人影院在线观看| 91碰在线视频| 亚洲一区精品在线| 在线观看精品一区| 午夜天堂影视香蕉久久| 欧美视频一区二区三区| 婷婷综合另类小说色区| 欧美一区二区在线免费观看| 蜜臀av一区二区三区| 精品国产亚洲一区二区三区在线观看| 日韩av不卡在线观看| 欧美成人a∨高清免费观看| 精品亚洲成a人在线观看| 国产午夜亚洲精品理论片色戒| 国产91丝袜在线播放九色| 亚洲国产成人一区二区三区| 99精品视频在线观看免费| 亚洲欧美日韩中文字幕一区二区三区| 91视视频在线直接观看在线看网页在线看| 国产精品三级av| 色先锋资源久久综合| 日日夜夜精品视频天天综合网| 91精品国产综合久久精品麻豆| 青青草成人在线观看| 久久蜜桃av一区二区天堂| 99久久精品免费看国产| 午夜精品一区二区三区免费视频 | 亚洲一二三四在线观看| 日韩免费观看2025年上映的电影| 久久91精品久久久久久秒播| 久久久国际精品| 欧美在线观看视频一区二区 | 在线一区二区三区四区| 天天综合色天天| 久久综合五月天婷婷伊人| 成人福利视频在线| 亚洲成av人**亚洲成av**| 久久久久国产精品人| 色成年激情久久综合| 免费在线成人网| 亚洲女子a中天字幕| 91精品麻豆日日躁夜夜躁| 国产激情91久久精品导航| 亚洲第一电影网| 国产精品久久久久影院老司 | 精品在线播放午夜| 亚洲视频在线一区观看| 精品少妇一区二区三区视频免付费| 国产高清不卡一区二区| 图片区日韩欧美亚洲| **欧美大码日韩| 欧美大黄免费观看| 91电影在线观看| 国内成人免费视频| 亚洲国产精品一区二区www在线| 久久久亚洲午夜电影| 欧美日韩精品福利| 91丨国产丨九色丨pron| 狠狠狠色丁香婷婷综合久久五月| 一区二区三区在线播| 亚洲国产精品99久久久久久久久 | 婷婷激情综合网| 日韩美女视频一区二区| 久久综合五月天婷婷伊人| 欧美精品欧美精品系列| 91麻豆视频网站| 成人avav影音| 高清av一区二区| 精品亚洲国产成人av制服丝袜 | 亚洲视频你懂的| 国产精品素人一区二区| 久久一区二区三区四区| 日韩欧美一区在线| 日韩亚洲欧美一区二区三区| 欧美日韩国产123区| 欧美艳星brazzers| 欧美色窝79yyyycom| 欧美日韩国产综合一区二区 | 青娱乐精品视频在线| 五月综合激情网| 日本伊人色综合网| 欧美aaaaaa午夜精品| 麻豆成人91精品二区三区| 蜜臂av日日欢夜夜爽一区| 免费成人你懂的| 国模娜娜一区二区三区| 国产美女精品人人做人人爽| 麻豆成人久久精品二区三区小说| 美国欧美日韩国产在线播放| 久久不见久久见免费视频1| 国产伦精品一区二区三区免费迷| 激情深爱一区二区| 国产精品99久久久久久久vr | 国产真实乱对白精彩久久| 久久99精品视频| 国产一区不卡在线| youjizz久久| 色www精品视频在线观看| 欧美色图激情小说| 欧美一二三在线| 久久精品日韩一区二区三区| 国产精品网曝门| 亚洲国产精品尤物yw在线观看| 婷婷六月综合亚洲| 国产麻豆精品在线观看| 99久久婷婷国产| 在线电影国产精品| 2024国产精品视频| 亚洲精品中文在线观看| 日本中文字幕一区二区视频| 国产精品一区二区在线观看不卡 | 亚洲国产精品久久不卡毛片| 日本美女视频一区二区| 国产成人8x视频一区二区| 欧美系列在线观看| 欧美成人女星排名| 亚洲人成精品久久久久久| 麻豆91在线观看| 色哦色哦哦色天天综合| 91免费看`日韩一区二区| 欧美一区二区三区在线观看视频| 久久久影视传媒| 一区二区在线观看视频在线观看| 麻豆精品精品国产自在97香蕉 | 亚洲va欧美va人人爽午夜| 国产乱国产乱300精品| 欧美日韩精品一区二区三区蜜桃 | 日韩一区中文字幕|