input:ABS_DISTANCE上報空指標錯誤
阿新 • • 發佈:2019-01-26
在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); }