From 3a40ff141abca7d9c5a1e3f47e41c26d9bc3b3ff Mon Sep 17 00:00:00 2001 From: notaz Date: Thu, 1 Mar 2012 23:34:16 +0200 Subject: improve vibration support for Caanoo ..maybe, not tested much. --- plugins/dfinput/pad.c | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) (limited to 'plugins/dfinput/pad.c') diff --git a/plugins/dfinput/pad.c b/plugins/dfinput/pad.c index ab55db0..a8019b9 100644 --- a/plugins/dfinput/pad.c +++ b/plugins/dfinput/pad.c @@ -206,11 +206,21 @@ static void do_cmd2(unsigned char value) case CMD_READ_DATA_AND_VIBRATE: if (value == 1 && CurPad == 0 && in_enable_vibration) - plat_trigger_vibrate(); + plat_trigger_vibrate(0); break; } } +static void do_cmd3(unsigned char value) +{ + if (in_enable_vibration && CurCmd == CMD_READ_DATA_AND_VIBRATE && CurPad == 0) { + if (value >= 0xf0) + plat_trigger_vibrate(1); + else if (value > 0x40) + plat_trigger_vibrate(0); + } +} + #if 0 #include unsigned char PADpoll_(unsigned char value); @@ -224,7 +234,8 @@ unsigned char PADpoll(unsigned char value) { unsigned char PADpoll_pad(unsigned char value) { - if (CurByte == 0) { + switch (CurByte) { + case 0: CurCmd = value; CurByte++; @@ -233,10 +244,13 @@ unsigned char PADpoll_pad(unsigned char value) { CurCmd = CMD_READ_DATA_AND_VIBRATE; return do_cmd(); - } - - if (CurByte == 2) + case 2: do_cmd2(value); + break; + case 3: + do_cmd3(value); + break; + } if (CurByte >= CmdLen) return 0xff; // verified -- cgit v1.2.3