您的位置:首页 > 其它

input:ABS_DISTANCE上报空指针错误

2015-11-20 16:20 417 查看
在probe函数中设置事件类型EV_ABS和支持的事件码ABS_DISTANCE:

input_set_capability(input_dev, EV_ABS, ABS_DISTANCE);
然后在工作队列里上报传感器的数据:

input_report_abs(dt->input, ABS_DISTANCE, 1);
input_sync(dt->input);

运行程序,每次到上报时候就会出现空指针错误,内核就跑飞了。

解决办法:

因为ABS_DISTANCE需要使用下面的函数设置相关的参数,如距离的最小,最大值等。才能正常上报。

添加如下内容在probe函数中。

input_set_abs_params(input_dev, ABS_DISTANCE, 0, 1, 0, 0);

函数定义如下:
void input_set_abs_params(struct input_dev *dev, unsigned int axis,
<span>			</span>  int min, int max, int fuzz, int flat)
{
<span>	</span>struct input_absinfo *absinfo;

<span>	</span>input_alloc_absinfo(dev);
<span>	</span>if (!dev->absinfo)
<span>		</span>return;

<span>	</span>absinfo = &dev->absinfo[axis];
<span>	</span>absinfo->minimum = min;
<span>	</span>absinfo->maximum = max;
<span>	</span>absinfo->fuzz = fuzz;
<span>	</span>absinfo->flat = flat;

<span>	</span>dev->absbit[BIT_WORD(axis)] |= BIT_MASK(axis);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: