}
}
+#define MAX_dir_str 3
static void input_assistant_bezel_logger(struct input_handle *handle,
const struct input_value *vals, unsigned int count)
{
struct input_handler *handler = handle->handler;
struct input_assistant_data *data = handler->private;
- int i, wheel = 0, x = 0;
- const char* direction_str[] = {
+ int i, wheel = 0, x = 0, update = 0;
+ const char* dir_str[MAX_dir_str] = {
"ccw",
- "return",
"none",
- "leave",
"cw",
};
switch (vals[i].code) {
case REL_WHEEL:
- wheel = vals[i].value;
+ wheel = vals[i].value+1;
+ update = true;
break;
case REL_X:
x = ~vals[i].value & 0x07;
}
}
- pr_info("%s: state:[%d][%s]\n", __func__, x, direction_str[wheel+2]);
+ if (update) {
+ if (((wheel) >= MAX_dir_str) || ((wheel) < 0))
+ pr_err("%s: invalid state:[%d][%d]\n", __func__, x, wheel-1);
+ else
+ pr_info("%s: state:[%d][%s]\n", __func__, x, dir_str[wheel]);
+ }
}
static void input_assistant_events(struct input_handle *handle,
extern struct class *sec_class;
#endif
-enum direction_patten {
- BZ_CC = -2,
- BZ_RT = -1,
+enum bezel_event {
+ BZ_CC = -1,
BZ_NA = 0,
- BZ_LV = 1,
- BZ_CW = 2,
+ BZ_CW = 1,
BZ_MAX,
};
static int bezel_get_direction(struct bezel_ddata *ddata, int value)
{
- const int magic_pattern[Status_MAX][Status_MAX] = {
- {BZ_RT, BZ_LV, BZ_LV, BZ_NA, BZ_LV,},
- {BZ_LV, BZ_RT, BZ_CC, BZ_NA, BZ_CW,},
- {BZ_LV, BZ_CW, BZ_RT, BZ_NA, BZ_CC,},
+ const int dir_ptrn[Status_MAX][Status_MAX] = {
{BZ_NA, BZ_NA, BZ_NA, BZ_NA, BZ_NA,},
- {BZ_LV, BZ_CC, BZ_CW, BZ_NA, BZ_RT,} };
+ {BZ_NA, BZ_NA, BZ_CC, BZ_NA, BZ_CW,},
+ {BZ_NA, BZ_CW, BZ_NA, BZ_NA, BZ_CC,},
+ {BZ_NA, BZ_NA, BZ_NA, BZ_NA, BZ_NA,},
+ {BZ_NA, BZ_CC, BZ_CW, BZ_NA, BZ_NA,} };
if ((ddata->last_status >= Status_MAX) ||
(ddata->last_status <= Status_S))
- return BZ_RT;
+ return BZ_NA;
if ((value >= Status_MAX) || (value < Status_S))
- return BZ_RT;
+ return BZ_NA;
- return magic_pattern[value][ddata->last_status];
+ return dir_ptrn[value][ddata->last_status];
}
static int bezel_get_status(struct bezel_ddata *ddata)