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

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

?? ir.c

?? 一個兩碟控制的VCD的代碼,兩碟之間的轉動及連續播放,已大量生產的CODE.
?? C
?? 第 1 頁 / 共 2 頁
字號:
		killIR = 1;
		reset = 1;
#endif /* IR_NEC */

#ifdef IR_SANYO
		if (cntIRbits == 0) {
		    /* 
		     * SANYO's repeat is the same as leader low/high.
		     * So we may mistaken repeat as a new code. So if
		     * we are broken on the first bit of new cutsom code,
		     * we shall assume it is a new code overall.
		     *
		     * The last one is probably a repeat, so this is
		     * really the first bit of leader low.
		     */
		    cntIRchg = 1;	/* We just need one more edge */
		    stateIR = IR_LEADER_LOW;
		} else {
		    killIR = 1;
		    reset = 1;
		}
#endif /* IR_SANYO */
	    }

	    cntIRbits++;

#ifdef IR_NEC
	    /* First 16 bits are syscode */
	    if ((cntIRbits == 16) && (dataIR != sysIRcode)) 
		reset = 1;

	    if (cntIRbits == 24) {
#ifdef CUST71

	      data = dataIR & 0x01;
	      if (data)
		reset = 1;
	      else
#endif
	      {
		/*
	 	* We will not wait for data bar. Base on data, we'll
	 	* decide whether we want to pass the IR to CD loader.
	 	* If we decided that the code shouldn't be passed on,
	 	* we'll intentionally destroy the output IR so CD
		* loader will not get it.
		*/
		data = dataIR & 0xff;
		/* reverse data bits to fit look up table */
		mvd[riface_reflect] = data;
		data = mvd[riface_reflect];
#ifdef IRREP
		previous_data = data;
#endif
		codeIR = data | 0x100;	/* Indicate a new code */
		/* Get the kill bit from the kill IR table */
#ifdef IRXMT
		killIR = tblKillIR[data >> 3] & ptrLshift[data & 7];
#endif
	      }
	    } else if (cntIRbits == 32) reset = 1;
#endif /* IR_NEC */

#ifdef IR_SANYO
	    if (cntIRbits == 13) {
		dataIR &= 0x1fff;
		if (dataIR != sysIRcode) reset = 1;
		dataIR = 0;
	    } else if (cntIRbits == 26) {
		unsigned short tmp = (~sysIRcode) & 0x1fff;
		if (dataIR != tmp) reset = 1;
		dataIR = 0;
	    } else if (cntIRbits == 34) {
		data = dataIR;
		mvd[riface_reflect] = data;
		data = mvd[riface_reflect];
		codeIR = data;
		dataIR = 0;
	    } else if (cntIRbits == 42) {
		data = dataIR;
		mvd[riface_reflect] = data;
		data = ~(mvd[riface_reflect]);
		if (data == codeIR) {
		    codeIR = data | 0x100;
		} else codeIR = 0;
		reset = 1;
	    }
#endif /* IR_SANYO */
	} else if (stateIR == IR_LEADER_LOW) {
	    if ((width >= LEADER_LOW_MIN) && (width <= LEADER_LOW_MAX)) {
	        stateIR = IR_LEADER_HIGH;
	        cntIRchg = 1; /* We'll only collect 1 change next time */
	    } else reset = 1;
#ifdef IRREP
        } else if (stateIR == IR_REPEAT) {
	    if ((width >= REPEAT_DATA_MIN) && (width <= REPEAT_DATA_MAX)) { 
		/* the width is 0.56 ms */
		if (repeat_IRkey_allowed(previous_data))
		    codeIR = previous_data | 0x100; /* Indicate a new code */
	    }
	    reset = 1;
#endif
        } else {
	    /* stateIR has to be equal to IR_LEADER_HIGH */
	    if ((width >= LEADER_HIGH_MIN) && (width <= LEADER_HIGH_MAX)) {
	        dataIR = cntIRbits = 0;
	        stateIR = IR_CUSTOM;
#ifdef IRREP
	    } else if ((width >= REPEAT_HIGH_MIN) &&
		       (width <= REPEAT_HIGH_MAX)) { 
		/* if the width is 2.25 ms, it is repeat code leader */
		cntIRchg = 1; /* We'll only collect 1 change next time */
		stateIR = IR_REPEAT;
#endif
	    } else reset = 1;
	}

        if (reset) {
	    /* Reset all, start from the very beginning */
	    stateIR = IR_IDLE; 
	    cntIRchg = prevIRtime = 0; 
	}
    }
}
#endif /* IR_NEC || IR_SAYNO */

#ifdef IR_PHILIPS
PRIVATE unsigned int    data_half = 0;	/* Mark whether or nor have half_bit
                                           data before edge of intr. coming*/
PRIVATE void IR_core_Philips(falling_edge)
int falling_edge;
{
    unsigned int *ir_tbl;
    unsigned int width;
    int reset;
    int is_half_bit;
    int is_full_bit;

#define HALFBIT_MIN     ir_tbl[0]
#define HALFBIT_MAX     ir_tbl[1]
#define ONEBIT_MIN      ir_tbl[2]
#define ONEBIT_MAX      ir_tbl[3]

    ir_tbl = T_IR_powerup_tbl;
#ifdef DSC
    if (IS_POWER_DOWN) ir_tbl = T_IR_powerdn_tbl;
#endif

    width = diffIR[0];
    cntIRchg = 0;
    reset = 0;
    is_half_bit = (width >= HALFBIT_MIN) && (width <= HALFBIT_MAX);
    is_full_bit = (width >= ONEBIT_MIN)  && (width <= ONEBIT_MAX);

    if (stateIR == IR_IDLE) {
        if (falling_edge) stateIR = IR_LEADER;
        else prevIRtime = 0;
    } else if (stateIR == IR_LEADER) {
	/* We shall get a rising edge, since the first bit is fixed */
	dataIR = 0;
	cntIRbits = 0;
	stateIR = IR_CUSTOM;

	if (is_half_bit) data_half = 0;
	else if (is_full_bit) data_half = 1;
	else {
	    stateIR = IR_IDLE;
	    prevIRtime = 0;
	}
    } else {
	if (data_half) {
	    /* 
	     * We were in half bit position, so this edge shall either
	     * conclude the previous cycle or go the the half position
	     * of the next bit. Record the last bit.
	     */
	    dataIR <<= 1;
	    if (falling_edge) dataIR |= 1;
	    cntIRbits++;

	    if (is_half_bit) data_half = 0;
	    else if (!is_full_bit) reset = 1;
	} else {
	    /* 
	     * We started at a sampling cycle, so we shall only get half bit,
	     * otherwise, something is wrong!
	     */
	    if (is_half_bit) data_half = 1;
	    else reset = 1;
	}

	if ((cntIRbits == 12) && !falling_edge && data_half) {
	    /* This is the last rising edge, no more. So collect the bit */
	    dataIR <<= 1;
	    dataIR |= 1;
	    cntIRbits = 13;
	}

	if (reset) {
	    /* 
	     * Abnormal exist. Maybe we are out of sync. If this
	     * is falling edge, maybe this is the sync of a new
	     * input!
	     */
	    stateIR = IR_IDLE;
	    if (falling_edge) stateIR = IR_LEADER;
	} else if (cntIRbits == 13) {
	    /* We only care the case when system code matches */
	    if (((dataIR >> 6) & 0x1f) == sysIRcode) {
		unsigned int prevctlbit;
		prevctlbit = IR_ctlbit;

		IR_ctlbit = (dataIR >> 11) & 1;
		if ((unsigned int) IR_ctlbit != prevctlbit) {
		    int tmp = (dataIR >> 12) & 1;
		    if (tmp) tmp = 0x40;
		    codeIR = (dataIR & 0x3f) | tmp | 0x100;
		    IR_rep_cnt = 0;
		} else
		  IR_rep_cnt++;
		IR_int_time = (unsigned int) mvd[riface_timer2];
	    }
	    stateIR = IR_IDLE;
	}
    }
}
#endif /* IR_PHILIPS */

/*
 * DBG IRQ  INTERUPT SERVICE for IR
 *
 * This routine recognizes IR input and selectively retransmit signals.
 */
void IR_recv_interrupt_service()
{
    /* I shift data bit coming from IR from LSB to the left.	*/
    int falling_edge = 0, tmp;
    unsigned int currIRtime, tmp1;
    currIRtime = ((unsigned int) mvd[riface_timer2]);
    tmp1 = currIRtime - prevIRtime;
    if (currIRtime < prevIRtime) {/* Wrap around case */
	tmp1 += -timer2_period;
    }
    diffIR[cntIRchg++] = tmp1;
    prevIRtime = currIRtime;

#ifdef IRQSHARE
    if (xor1value) {
	falling_edge = 1;
	CLEAR_XOR1;
	xor1value = 0;
	tmp = killIR? 1: 0;
	}
    else {
	falling_edge = 0;
	SET_XOR1;
	xor1value = 1;
	tmp = killIR? 0: 1;
	}
#else

    /* Toggle XOR to get next interupt */
#ifdef FLIP_IR
    /*
     * If the polarity of the incoming IR is flipped (e.g. on the Internet
     * board), then if the internal XOR input is 1, we received a falling
     * edge from the remote sensor, and we want to send out a rising edge.
     * Vice versa.
     *
     * To make minimum change to the remaining code, when we recive a 
     * falling edge, we'll tell the internal code that we have received
     * a rising edge. Vice versa.
     */
    if (IS_IRXOR_HIGH) {
	CLEAR_IRXOR;		/* set to low */
	/* If we want to kill IR, then send 0; else send 1 */
	tmp = killIR ? 0 : 1;
    } else {
	SET_IRXOR;
	falling_edge = 1; 	/* Interupt caused by IR falling edge */
	/* If we want to kill IR, then send 1; else send 0 */
	tmp = killIR ? 1 : 0;
    }
#else
    if (IS_IRXOR_HIGH) {
	CLEAR_IRXOR;		/* set to low */
	falling_edge = 1; 	/* Interupt caused by IR falling edge */
	/* If we want to kill IR, then send 1; else send 0 */
	tmp = killIR ? 1 : 0;
    } else {
	SET_IRXOR;
	/* If we want to kill IR, then send 0; else send 1 */
	tmp = killIR ? 0 : 1;
    }
#endif

#endif IRQSHARE

    mvd[riface_clear_dbgirq] = 0;	/* Clear debug_irq	*/

#ifdef IRXMT
    if (!connect_inout) {
	/* IR comes from us, so we'll send it now */
	if (tmp) {OUTIR_HIGH;}
	else     {OUTIR_LOW;}
    }

    /* 
     * If we meant to kill IR, then IR is effectly killed now
     * i.e. CD won't get the correct key bar.
     */
    killIR = 0;	
#endif

#if (IR_NEC || IR_SANYO)
    IR_core_NEC(falling_edge);
#endif /* IR_NEC || IR_SAYNO */

#ifdef IR_PHILIPS
    IR_core_Philips(falling_edge);
#endif /* IR_PHILIPS */

#if defined(WEBDVD) && defined(SLAVE)
    CLEAR_AUX0;
    _8259_EOI();
    SET_AUX0;
#endif

}

#endif /* else of DSC_IRQ */
#endif /* IR */

#ifdef IRXMT

PRIVATE	void		RISC_start_timer1(unsigned int);
/************************************************************************
 * Local typedef.							*
 ************************************************************************/
typedef struct {
    unsigned char  level;	/* Assert this output level		*/
    unsigned char  next;	/* Goto this state			*/
    unsigned short timer;	/* Timer1 value (need to << 9)		*/
} IR_XMIT_INFO;


/* For IR transmission */
PRIVATE	unsigned char	IR_xmit_state	 = IR_XMIT_IDLE;
PRIVATE	unsigned char	IR_xmit_bitcount = 0;
PRIVATE	unsigned int	IR_xmit_code;
PRIVATE	char		origConnectInOut;

/* State machine for transmitting IR					*/
PRIVATE IR_XMIT_INFO IR_xmit_array[] = {	/* Current state	*/
    {0, IR_XMIT_LEADER_LOW,  IRW_LEADER_LOW},	/* IR_XMIT_IDLE		*/
    {1, IR_XMIT_LEADER_HIGH, IRW_LEADER_HIGH},	/* IR_XMIT_LEADER_LOW	*/
    {0, IR_XMIT_GAP,         IRW_GAP_LOW},	/* IR_XMIT_LEADER_HIGH	*/
    {0, IR_XMIT_GAP,         IRW_GAP_LOW},	/* IR_XMIT_DATA		*/
    {1, IR_XMIT_DATA,        IRW_DATA_ONE},	/* IR_XMIT_GAP		*
						 * (Possible targets 	*
						 * are IDLE, DATA, and	*
						 * REP_HIGH1)		*/
    {0, IR_XMIT_REP_LOW1,    IRW_REP_LOW1},	/* IR_XMIT_REP_HIGH1	*/
    {1, IR_XMIT_REP_HIGH2,   IRW_REP_HIGH2},	/* IR_XMIT_REP_LOW1	*/
    {0, IR_XMIT_REP_LOW2,    IRW_REP_LOW2},	/* IR_XMIT_REP_HIGH2	*/
    						/* IR_XMIT_REP_LOW2	*
						 * (disable timer1)	*/
};

/************************************************************************
 * Start timer1 (for transmitting IR signals)				*
 ************************************************************************/
PRIVATE void RISC_start_timer1(period)
unsigned int period;
{
    mvd[riface_clear_timer1] = 0;
    mvd[riface_timer1] = 0 - (period << 9);
    /* 
     * Since this routine will be called repeatedly, it is better
     * to enable interrupt outside.
     */
}

/*
 * Main routine to start tranmission of IR signal. IR transmission is
 * interrupt driven (by timer1). Therefore, this routine will enable
 * the timer1 interrupt.
 *
 * Inputs;
 *	code:		user code to be transmitted
 *	repeate:	1 transmit repeat
 *			0 transmit code
 */
void IR_send_data(unsigned char code, int repeat)
{
    register int psw;
    unsigned char code_bar;
    unsigned int begTimer = glbTimer;
    unsigned int period;

    /* 
     * We'll do detailed checking only if interrupt is enabled. 
     * If this routine is called inside the interrupt service routine,
     * then interrupt can't come in (i.e. glbTimer won't change).
     * In which case, just send the code (at worst, we'll loss the code,
     * but the machine won't hang)
     */
    asm volatile("movfrs psw,%0":  "=r" (psw) ); 

    if (!(psw & 0x10)) {
	/*
	 * If we are in the middle of receiving, then wait up to 1/8 of 
	 * a second to finish reciving. Otherwise, if we are in the middle
	 * of FF/FB/SLOW, IR misses at high frequency.
	 */
	do {
	    if (stateIR == IR_IDLE) break;
	} while ((glbTimer - begTimer) < EIGHTH_SECOND);
	
	/*
	 * If we are in the middle of transmitting an IR, then wait it to
	 * finish
	 */
	begTimer = glbTimer;
	do {
	    if (IR_xmit_state == IR_XMIT_IDLE) break;
	} while ((glbTimer - begTimer) < EIGHTH_SECOND);
    }

    /* reverse data to meet NEC remote control standard	*/
    mvd[riface_reflect] = code;
    code = mvd[riface_reflect];

    code_bar = ~code;
    IR_xmit_code = (((unsigned int) sysIRcode) << 16) | (code << 8) | code_bar;

    origConnectInOut = connect_inout;

    connect_inout = 1; /* While transmitting IR, don't relay any IR input */
    if (repeat) {
	IR_xmit_state = IR_XMIT_REP_LOW1;
	period = IRW_REP_LOW1;
    } else {
	/* Leader low is 9ms wide */
	IR_xmit_bitcount = 32;
	IR_xmit_state = IR_XMIT_LEADER_LOW;
	period = IRW_LEADER_LOW;
    }
    OUTIR_LOW;
    RISC_start_timer1(period);
    enable_int(tim1);
}


/*
 * Timer 1 interrupt service routine. This service routine goes through
 * a state machine to transmit IR.
 */
void IR_xmit_interrupt_service(void)
{
    IR_XMIT_INFO *ptrXmit = &IR_xmit_array[IR_xmit_state];

    if (IR_xmit_state == IR_XMIT_REP_LOW2) {
	OUTIR_HIGH;
	IR_xmit_state = IR_XMIT_IDLE;
	disable_int(tim1);
	connect_inout = origConnectInOut;
    } else if (IR_xmit_state == IR_XMIT_GAP) {
	/* We have to make some decision here */
	OUTIR_HIGH;
	if (IR_xmit_bitcount != 0) {
	    /* More bits to transmit */
	    IR_xmit_state = IR_XMIT_DATA;
	    RISC_start_timer1((IR_xmit_code & x80000000) ? IRW_DATA_ONE
			      				 : IRW_DATA_ZERO);
	    IR_xmit_code <<= 1;
	    IR_xmit_bitcount--;
	} else {
#ifdef JIANGHAI
	    IR_xmit_state = IR_XMIT_REP_HIGH1;
	    RISC_start_timer1(IRW_REP_HIGH1);
#else
	    IR_xmit_state = IR_XMIT_IDLE;
	    disable_int(tim1);
	    connect_inout = origConnectInOut;
#endif
	}
    } else {
	/* Do a table lookup */
	IR_xmit_state = ptrXmit->next;
	if (ptrXmit->level) {OUTIR_HIGH;}
	else {OUTIR_LOW;}
	RISC_start_timer1((unsigned int) ptrXmit->timer);
    }
}

#endif /* IRXMT */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩一二三区| 136国产福利精品导航| 26uuu亚洲| 亚洲品质自拍视频| 久久99精品久久久久| 在线免费亚洲电影| 国产日本一区二区| 看片的网站亚洲| 欧美日韩一区不卡| 国产精品免费网站在线观看| 婷婷开心久久网| 99久久精品国产毛片| 国产亚洲精品免费| 久久成人羞羞网站| 6080亚洲精品一区二区| 亚洲自拍偷拍九九九| 成人听书哪个软件好| 日韩欧美亚洲一区二区| 亚洲尤物视频在线| 99re这里只有精品6| 欧美国产国产综合| 国产成人免费av在线| 精品88久久久久88久久久| 日韩黄色片在线观看| 欧美色手机在线观看| 亚洲午夜三级在线| 欧美性受xxxx黑人xyx| 一区二区三区毛片| 91蜜桃视频在线| 亚洲日本丝袜连裤袜办公室| 盗摄精品av一区二区三区| 欧美国产日韩一二三区| 成人激情图片网| 中文字幕久久午夜不卡| 国产成人精品一区二| 欧美激情综合在线| a美女胸又www黄视频久久| 国产精品久久久久婷婷| av不卡在线播放| 亚洲女同女同女同女同女同69| 不卡一区二区中文字幕| 亚洲青青青在线视频| 色婷婷综合久久久中文一区二区 | 国产一区二区精品久久| 精品国精品国产| 国产一区欧美二区| 久久精品一区二区| av激情综合网| 一区二区三区免费在线观看| 欧美日韩另类一区| 日本不卡一二三| 久久嫩草精品久久久久| 成人久久18免费网站麻豆| 亚洲欧洲日韩一区二区三区| 色国产精品一区在线观看| 午夜国产不卡在线观看视频| 欧美一区二区视频在线观看 | 亚洲国产成人精品视频| 欧美日韩电影在线| 国内成+人亚洲+欧美+综合在线 | 欧美日韩精品欧美日韩精品一| 亚洲成a天堂v人片| 亚洲精品在线一区二区| 91美女片黄在线| 奇米色777欧美一区二区| 国产日韩欧美综合在线| 欧美三区免费完整视频在线观看| 全国精品久久少妇| 中文在线资源观看网站视频免费不卡| av资源网一区| 久久精品av麻豆的观看方式| 国产精品第四页| 日韩视频免费观看高清完整版在线观看 | 亚洲电影中文字幕在线观看| 精品少妇一区二区| av亚洲精华国产精华精华| 肉丝袜脚交视频一区二区| 久久久亚洲高清| 欧美在线视频不卡| 国产精品一二二区| 亚洲成av人片观看| 国产精品女同互慰在线看| 在线电影一区二区三区| 不卡在线视频中文字幕| 精品一区二区日韩| 亚洲国产cao| 国产精品美女视频| 欧美精品一区二区三区在线| 欧洲一区二区三区免费视频| 国产麻豆日韩欧美久久| 五月天视频一区| 综合自拍亚洲综合图不卡区| 久久婷婷成人综合色| 欧美日韩高清影院| 色婷婷一区二区三区四区| 国产成人精品影院| 久久精品99国产精品| 亚洲成在线观看| 亚洲色图视频网站| 中文字幕在线观看一区| 精品国产乱码久久久久久免费| 欧美日韩高清一区二区| 色88888久久久久久影院野外| 国产99精品在线观看| 久久99久久99| 免费看精品久久片| 日韩av电影天堂| 午夜精品久久久久久久| 一区二区高清在线| 亚洲欧美日韩精品久久久久| 国产欧美日韩精品a在线观看| 精品国产伦一区二区三区观看体验| 欧美日韩国产综合久久| 欧美日韩一区高清| 日本乱码高清不卡字幕| 在线一区二区三区做爰视频网站| 成+人+亚洲+综合天堂| 成人av综合在线| 不卡av电影在线播放| 国产一区二区三区四区在线观看| 久国产精品韩国三级视频| 麻豆freexxxx性91精品| 免费观看成人av| 久久99精品久久久久久久久久久久| 美国毛片一区二区三区| 激情图片小说一区| 粉嫩欧美一区二区三区高清影视| 国产宾馆实践打屁股91| 91亚洲国产成人精品一区二区三 | 在线观看视频一区| 欧美日韩国产一二三| 欧美精品日韩一本| 日韩视频在线观看一区二区| 欧美电影免费观看高清完整版 | 最近日韩中文字幕| 最新日韩在线视频| 亚洲丶国产丶欧美一区二区三区| 午夜欧美在线一二页| 老司机免费视频一区二区三区| 蜜臀av性久久久久蜜臀aⅴ | 国产成人午夜99999| 国产999精品久久久久久绿帽| 国产不卡在线视频| 欧美无砖砖区免费| 精品电影一区二区三区| 国产精品国产自产拍高清av| 一个色在线综合| 美女一区二区视频| av激情成人网| 日韩欧美国产综合| 亚洲欧美在线另类| 日韩1区2区日韩1区2区| 国产高清在线精品| 欧美日韩视频在线观看一区二区三区 | 99re成人精品视频| 6080日韩午夜伦伦午夜伦| 国产校园另类小说区| 亚洲国产日韩一区二区| 国产在线看一区| 色狠狠色噜噜噜综合网| 精品国产欧美一区二区| 亚洲精品国久久99热| 久久99蜜桃精品| 欧美亚洲综合一区| 亚洲国产精品精华液ab| 亚洲成人在线网站| 国产传媒一区在线| 9191国产精品| 亚洲另类春色校园小说| 国产综合色产在线精品| 欧美日韩情趣电影| 亚洲女同一区二区| 国产精品资源在线看| 欧美一区二区网站| 亚洲福利一二三区| 99久久99久久精品免费看蜜桃| 日韩欧美国产麻豆| 天堂va蜜桃一区二区三区 | 国产成人免费视频精品含羞草妖精| 91福利视频久久久久| 国产精品久久久久一区二区三区| 日本特黄久久久高潮| 欧美视频一区二区三区在线观看| 中文av一区二区| 国产精品亚洲一区二区三区在线| 日韩欧美一二三四区| 五月激情综合网| 91精品福利视频| 亚洲日本一区二区三区| 暴力调教一区二区三区| 久久久国产综合精品女国产盗摄| 久久成人精品无人区| 欧美精品视频www在线观看| 亚洲综合清纯丝袜自拍| 色8久久人人97超碰香蕉987| 亚洲精品国产a| 色婷婷综合久久久中文一区二区| 亚洲欧洲av一区二区三区久久| 成人一区二区视频| 国产精品美女久久久久aⅴ|