1. 程式人生 > >input:ABS_DISTANCE上報空指標錯誤

input:ABS_DISTANCE上報空指標錯誤


在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);
}