最近调试一个红外触摸屏,既有USB,又有串口两种协议,两种协议都会用到。
1. 需要通过串口发送命令去开关触摸屏的USB 触摸功能
2. 切换串口触摸的点数
static void gen_ir_process_data(struct gen_ir *pgen_ir)
{
struct input_dev *dev = pgen_ir->dev;
char num = pgen_ir->data[41];
char mtouch = 0;
unsigned char *buf = pgen_ir->data;
for(i=0; i< num; i++){
buf = &(pgen_ir->data[6*i+5]);
if(buf[0]==0x03 || (buf[0]==0x02 && touch[i] == 0xff))
{
mtouch = 1;
touch[i] = buf[0];
}
else if(buf[0]==0x02 && touch[i] == 0x03){
mtouch = 0;
touch[i] = 0xFF;
}
if(mtouch)
{
input_report_abs(dev, ABS_MT_POSITION_X, GEN_IR_GET_XC(buf));
input_report_abs(dev, ABS_MT_POSITION_Y, GEN_IR_GET_YC(buf));
input_mt_sync(dev);
}
else
{
if(num == 1)
input_mt_sync(dev);
}
}
input_sync(dev);
}
static irqreturn_t gen_ir_interrupt(struct serio *serio,
unsigned char data, unsigned int flags)
{
struct gen_ir* pgen_ir = serio_get_drvdata(serio)