From 0ebc6b70fb7f04c53999ffdc0daefa29a6f55691 Mon Sep 17 00:00:00 2001 From: Ryan Pavlik Date: Mon, 2 May 2011 13:47:52 -0500 Subject: [PATCH] saturate the interpolated balance data --- src/wiiboard.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/wiiboard.c b/src/wiiboard.c index dd6fd04..6085214 100644 --- a/src/wiiboard.c +++ b/src/wiiboard.c @@ -110,12 +110,14 @@ void wii_board_disconnected(struct wii_board_t* wb) { static float do_interpolate(uint16_t raw, uint16_t cal[3]) { #define WIIBOARD_MIDDLE_CALIB 17.0f - if (raw < cal[1]) { + if (raw < cal[0]) { + return 0.0f; + } else if (raw < cal[1]) { return ((raw-cal[0]) * WIIBOARD_MIDDLE_CALIB)/(float)(cal[1] - cal[0]); - } else if (raw > cal[1]) { + } else if (raw < cal[2]) { return ((raw-cal[1]) * WIIBOARD_MIDDLE_CALIB)/(float)(cal[2] - cal[1]) + WIIBOARD_MIDDLE_CALIB; } else { - return WIIBOARD_MIDDLE_CALIB; + return WIIBOARD_MIDDLE_CALIB * 2.0f; } }