From b8e63f4b71638851ea06c6fe55b7bf2c3e18df1f Mon Sep 17 00:00:00 2001 From: Thomas Dornberger <noreply@fortiss.org> Date: Thu, 29 Jun 2017 08:27:51 +0000 Subject: [PATCH] implement read and _is_noval functions for buttons, button value 2 is now interpreted as NoVal in AF3, reset button values after reading for each clock refs 7795 --- .../trunk/lib/src/Gamepad.c | 133 +++++++++++++++--- 1 file changed, 114 insertions(+), 19 deletions(-) diff --git a/org.fortiss.af3.platform.raspberry/trunk/lib/src/Gamepad.c b/org.fortiss.af3.platform.raspberry/trunk/lib/src/Gamepad.c index 5ea630c5..22fa2fcd 100644 --- a/org.fortiss.af3.platform.raspberry/trunk/lib/src/Gamepad.c +++ b/org.fortiss.af3.platform.raspberry/trunk/lib/src/Gamepad.c @@ -68,9 +68,23 @@ GEN_TYPE_boolean gp_terminated = false; void gp_init() { // important, since all btns are accessing the same method if(gp_initialized) return; - + + // Initialize Joystick Inputs to 0 + ie.btns.js1_ud = 0; + ie.btns.js2_lr = 0; + ie.btns.js2_ud = 0; + + // Initialize Button inputs to NoVal + ie.btns.bt_tri = 2; + ie.btns.bt_cir = 2; + ie.btns.bt_x = 2; + ie.btns.bt_sqr = 2; + ie.btns.bt_l1 = 2; + ie.btns.bt_l2 = 2; + ie.btns.bt_r1 = 2; + ie.btns.bt_r2 = 2; + gp_initialized = true; - // TODO initialize... } void gp_term() { @@ -81,37 +95,110 @@ void gp_term() { gp_is_running = false; } -// readers +// readers: Return button values (1 is true, 0 is false, 2 is NoVal) +// important: Reset button values to NoVal after reading GEN_TYPE_boolean gp_btn1_read() { - return ie.btns.bt_tri; + if (ie.btns.bt_tri == 1) + { + ie.btns.bt_tri = 2; + return 1; + } + else + { + ie.btns.bt_tri = 2; + return 0; + } } GEN_TYPE_boolean gp_btn2_read() { - return ie.btns.bt_cir; + if (ie.btns.bt_cir == 1) + { + ie.btns.bt_cir = 2; + return 1; + } + else + { + ie.btns.bt_cir = 2; + return 0; + } } GEN_TYPE_boolean gp_btn3_read() { - return ie.btns.bt_x; + if (ie.btns.bt_x == 1) + { + ie.btns.bt_x = 2; + return 1; + } + else + { + ie.btns.bt_x = 2; + return 0; + } } GEN_TYPE_boolean gp_btn4_read() { - return ie.btns.bt_sqr; + if (ie.btns.bt_sqr == 1) + { + ie.btns.bt_sqr = 2; + return 1; + } + else + { + ie.btns.bt_sqr = 2; + return 0; + } } GEN_TYPE_boolean gp_btnL1_read() { - return ie.btns.bt_l1; + if (ie.btns.bt_l1 == 1) + { + ie.btns.bt_l1 = 2; + return 1; + } + else + { + ie.btns.bt_l1 = 2; + return 0; + } } GEN_TYPE_boolean gp_btnL2_read() { - return ie.btns.bt_l2; + if (ie.btns.bt_l2 == 1) + { + ie.btns.bt_l2 = 2; + return 1; + } + else + { + ie.btns.bt_l2 = 2; + return 0; + } } GEN_TYPE_boolean gp_btnR1_read() { - return ie.btns.bt_r1; + if (ie.btns.bt_r1 == 1) + { + ie.btns.bt_r1 = 2; + return 1; + } + else + { + ie.btns.bt_r1 = 2; + return 0; + } } GEN_TYPE_boolean gp_btnR2_read() { - return ie.btns.bt_r2; + if (ie.btns.bt_r2 == 1) + { + ie.btns.bt_r2 = 2; + return 1; + } + else + { + ie.btns.bt_r2 = 2; + return 0; + } } GEN_TYPE_double gp_btnLX_read() { @@ -132,35 +219,43 @@ GEN_TYPE_double gp_btnRY_read() { // noval GEN_TYPE_boolean gp_btn1_is_noval() { - return false; + if (ie.btns.bt_tri == 2) return 1; + return 0; } GEN_TYPE_boolean gp_btn2_is_noval() { - return false; + if (ie.btns.bt_cir == 2) return 1; + return 0; } GEN_TYPE_boolean gp_btn3_is_noval() { - return false; + if (ie.btns.bt_x == 2) return 1; + return 0; } GEN_TYPE_boolean gp_btn4_is_noval() { - return false; + if (ie.btns.bt_sqr == 2) return 1; + return 0; } GEN_TYPE_boolean gp_btnL1_is_noval() { - return false; + if (ie.btns.bt_l1 == 2) return 1; + return 0; } GEN_TYPE_boolean gp_btnL2_is_noval() { - return false; + if (ie.btns.bt_l2 == 2) return 1; + return 0; } GEN_TYPE_boolean gp_btnR1_is_noval() { - return false; + if (ie.btns.bt_r1 == 2) return 1; + return 0; } GEN_TYPE_boolean gp_btnR2_is_noval() { - return false; + if (ie.btns.bt_r2 == 2) return 1; + return 0; } GEN_TYPE_boolean gp_btnLX_is_noval() { -- GitLab