ir.c

来自「键盘设备驱动,只需修改代码里的功能码和系统码即可使用」· C语言 代码 · 共 72 行

C
72
字号
#include <linux/kernel.h>#include <linux/module.h>#include "iop.h"void init_ir(void);#define	UINT32	u32#define	UINT16	u16UINT32 *iop_data=(UINT32 *)0xbffe8720;#define IR_PHILIPS#define  IR_IDcode                      0x0007#ifdef IR_PHILIPS       #define IOP_IR_DATA()		((iop_data[6]>>6)&0x5f)  //((iop_data[6]>>6)&0x5f)#define TRANS_IR_CODE(rx)	(rx&0x003f)#else#define IOP_IR_DATA()		(iop_data[6])#define TRANS_IR_CODE(rx)	reverse_fun(rx)#endifint ir_flag = 0;void reset_ir(void){	iop_data[IR_PORT]|=IrRepeatRate(4);}void init_ir(){	reset_ir();}int read_ir(void){	UINT16 rx;    	UINT16 unCustId;	rx = iop_data[IR_PORT];	if (!(rx & IR_RDY)) {		return /*IRC_NULL*/-1;	}	else {		unCustId = IOP_IR_DATA();        		iop_data[IR_PORT] = rx & (~IR_RDY);  		rx = rx & 0x0ff;				 if(unCustId==IR_IDcode)		 {  		 	//printk("unCustId=%x\n",unCustId);			ir_flag = 0;		  	return rx;		 }		else if(unCustId == 0x0003)		 {		 	ir_flag = 1;		   	return rx;		}		else		{			rx=0x007f;   // return none      huang		   	return rx;		}			/*		printk("unCustId=%x\n",unCustId);		printk("rx = %x\n",rx);		return rx;		*/		}}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?