Skip to content

Commit

Permalink
V4L/DVB: IR: JVC: make repeat work
Browse files Browse the repository at this point in the history
Currently, jvc decoder will attempt misdetect next press as a repeat
of last keypress, therefore second keypress isn't detected.

Signed-off-by: Maxim Levitsky <maximlevitsky@gmail.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
  • Loading branch information
Maxim Levitsky authored and Mauro Carvalho Chehab committed Aug 9, 2010
1 parent 0d2cb1d commit 39b2c06
Showing 1 changed file with 13 additions and 1 deletion.
14 changes: 13 additions & 1 deletion drivers/media/IR/ir-jvc-decoder.c
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ enum jvc_state {
STATE_BIT_SPACE,
STATE_TRAILER_PULSE,
STATE_TRAILER_SPACE,
STATE_CHECK_REPEAT,
};

/**
Expand Down Expand Up @@ -60,6 +61,7 @@ static int ir_jvc_decode(struct input_dev *input_dev, struct ir_raw_event ev)
IR_dprintk(2, "JVC decode started at state %d (%uus %s)\n",
data->state, TO_US(ev.duration), TO_STR(ev.pulse));

again:
switch (data->state) {

case STATE_INACTIVE:
Expand Down Expand Up @@ -149,8 +151,18 @@ static int ir_jvc_decode(struct input_dev *input_dev, struct ir_raw_event ev)
}

data->count = 0;
data->state = STATE_BIT_PULSE;
data->state = STATE_CHECK_REPEAT;
return 0;

case STATE_CHECK_REPEAT:
if (!ev.pulse)
break;

if (eq_margin(ev.duration, JVC_HEADER_PULSE, JVC_UNIT / 2))
data->state = STATE_INACTIVE;
else
data->state = STATE_BIT_PULSE;
goto again;
}

out:
Expand Down

0 comments on commit 39b2c06

Please sign in to comment.