summaryrefslogtreecommitdiff
path: root/test/button.c
diff options
context:
space:
mode:
authorAseda Aboagye <aaboagye@google.com>2017-11-15 22:23:00 -0800
committerchrome-bot <chrome-bot@chromium.org>2017-11-17 20:18:38 -0800
commit34a97f50d5275f1fa2f1cb377683c96286b2421d (patch)
tree2ea62dc537426fb252123fb93b3b4f05db5f1443 /test/button.c
parentf587852570770564e8a94b2c3f7ad7d97883c49a (diff)
downloadchrome-ec-34a97f50d5275f1fa2f1cb377683c96286b2421d.tar.gz
buttons: Make buttons[] common.
Nearly every board had a buttons array defined in which its contents had the standard volume buttons. This commit creates a single common buttons array that can contain the standard volume buttons and recovery buttons. If a board has volume up and down buttons, they can simply define CONFIG_VOLUME_BUTTONS and it will populate the buttons array with the standard definition. The buttons are active low and have a 30 ms debounce period. Similiarly, if a board has a dedicated recovery button, defining CONFIG_DEDICATED_RECOVERY_BUTTON will also populate the buttons array with a recovery button. BUG=chromium:783371 BRANCH=None TEST=make -j buildall. TEST=Flash a device with CONFIG_VOLUME_BUTTONS, verify pressing volume buttons still work. Change-Id: Ie5d63670ca4c6b146ec8ffb64d40ea9ce437b913 Signed-off-by: Aseda Aboagye <aaboagye@google.com> Reviewed-on: https://chromium-review.googlesource.com/773794 Commit-Ready: Aseda Aboagye <aaboagye@chromium.org> Tested-by: Aseda Aboagye <aaboagye@chromium.org> Reviewed-by: Daisuke Nojiri <dnojiri@chromium.org> Reviewed-by: Shawn N <shawnn@chromium.org>
Diffstat (limited to 'test/button.c')
-rw-r--r--test/button.c63
1 files changed, 31 insertions, 32 deletions
diff --git a/test/button.c b/test/button.c
index 2e8511df98..73172abbfd 100644
--- a/test/button.c
+++ b/test/button.c
@@ -18,14 +18,13 @@
#include "timer.h"
#include "keyboard_protocol.h"
-#define INDEX_VOL_DOWN 0
-#define INDEX_VOL_UP 1
#define UNCHANGED -1
-static const struct button_config *button_vol_down = &buttons[INDEX_VOL_DOWN];
-static const struct button_config *button_vol_up = &buttons[INDEX_VOL_UP];
+static const struct button_config *button_vol_down =
+ &buttons[BUTTON_VOLUME_DOWN];
+static const struct button_config *button_vol_up = &buttons[BUTTON_VOLUME_UP];
-static int button_state[CONFIG_BUTTON_COUNT];
+static int button_state[BUTTON_COUNT];
/*
* Callback from the button handling logic.
@@ -35,7 +34,7 @@ void keyboard_update_button(enum keyboard_button_type button, int is_pressed)
{
int i;
- for (i = 0; i < CONFIG_BUTTON_COUNT; i++) {
+ for (i = 0; i < BUTTON_COUNT; i++) {
if (buttons[i].type == button) {
button_state[i] = is_pressed;
break;
@@ -48,7 +47,7 @@ static int test_button_press(void)
{
gpio_set_level(button_vol_down->gpio, 0);
msleep(100);
- TEST_ASSERT(button_state[INDEX_VOL_DOWN] == 1);
+ TEST_ASSERT(button_state[BUTTON_VOLUME_DOWN] == 1);
return EC_SUCCESS;
}
@@ -56,11 +55,11 @@ static int test_button_press(void)
/* Test releasing a button */
static int test_button_release(void)
{
- gpio_set_level(button_vol_up->gpio, 1);
- msleep(100);
gpio_set_level(button_vol_up->gpio, 0);
msleep(100);
- TEST_ASSERT(button_state[INDEX_VOL_UP] == 0);
+ gpio_set_level(button_vol_up->gpio, 1);
+ msleep(100);
+ TEST_ASSERT(button_state[BUTTON_VOLUME_UP] == 0);
return EC_SUCCESS;
}
@@ -72,7 +71,7 @@ static int test_button_debounce_short_press(void)
msleep(10);
gpio_set_level(button_vol_down->gpio, 1);
msleep(100);
- TEST_ASSERT(button_state[INDEX_VOL_DOWN] == UNCHANGED);
+ TEST_ASSERT(button_state[BUTTON_VOLUME_DOWN] == UNCHANGED);
return EC_SUCCESS;
}
@@ -82,15 +81,15 @@ static int test_button_debounce_short_bounce(void)
{
gpio_set_level(button_vol_down->gpio, 0);
msleep(10);
- TEST_ASSERT(button_state[INDEX_VOL_DOWN] == UNCHANGED);
+ TEST_ASSERT(button_state[BUTTON_VOLUME_DOWN] == UNCHANGED);
gpio_set_level(button_vol_down->gpio, 1);
msleep(10);
- TEST_ASSERT(button_state[INDEX_VOL_DOWN] == UNCHANGED);
+ TEST_ASSERT(button_state[BUTTON_VOLUME_DOWN] == UNCHANGED);
gpio_set_level(button_vol_down->gpio, 0);
msleep(20);
- TEST_ASSERT(button_state[INDEX_VOL_DOWN] == UNCHANGED);
+ TEST_ASSERT(button_state[BUTTON_VOLUME_DOWN] == UNCHANGED);
msleep(20);
- TEST_ASSERT(button_state[INDEX_VOL_DOWN] == 1);
+ TEST_ASSERT(button_state[BUTTON_VOLUME_DOWN] == 1);
return EC_SUCCESS;
}
@@ -100,24 +99,24 @@ static int test_button_debounce_stability(void)
{
gpio_set_level(button_vol_down->gpio, 0);
msleep(20);
- TEST_ASSERT(button_state[INDEX_VOL_DOWN] == UNCHANGED);
+ TEST_ASSERT(button_state[BUTTON_VOLUME_DOWN] == UNCHANGED);
gpio_set_level(button_vol_down->gpio, 1);
msleep(20);
- TEST_ASSERT(button_state[INDEX_VOL_DOWN] == UNCHANGED);
+ TEST_ASSERT(button_state[BUTTON_VOLUME_DOWN] == UNCHANGED);
gpio_set_level(button_vol_down->gpio, 0);
msleep(20);
- TEST_ASSERT(button_state[INDEX_VOL_DOWN] == UNCHANGED);
+ TEST_ASSERT(button_state[BUTTON_VOLUME_DOWN] == UNCHANGED);
msleep(20);
- TEST_ASSERT(button_state[INDEX_VOL_DOWN] == 1);
+ TEST_ASSERT(button_state[BUTTON_VOLUME_DOWN] == 1);
msleep(60);
- TEST_ASSERT(button_state[INDEX_VOL_DOWN] == 1);
+ TEST_ASSERT(button_state[BUTTON_VOLUME_DOWN] == 1);
gpio_set_level(button_vol_down->gpio, 1);
msleep(20);
- TEST_ASSERT(button_state[INDEX_VOL_DOWN] == 1);
+ TEST_ASSERT(button_state[BUTTON_VOLUME_DOWN] == 1);
msleep(20);
- TEST_ASSERT(button_state[INDEX_VOL_DOWN] == 0);
+ TEST_ASSERT(button_state[BUTTON_VOLUME_DOWN] == 0);
msleep(60);
- TEST_ASSERT(button_state[INDEX_VOL_DOWN] == 0);
+ TEST_ASSERT(button_state[BUTTON_VOLUME_DOWN] == 0);
return EC_SUCCESS;
}
@@ -127,15 +126,15 @@ static int test_button_press_both(void)
{
gpio_set_level(button_vol_down->gpio, 0);
msleep(10);
- gpio_set_level(button_vol_up->gpio, 1);
- TEST_ASSERT(button_state[INDEX_VOL_DOWN] == UNCHANGED);
- TEST_ASSERT(button_state[INDEX_VOL_UP] == UNCHANGED);
+ gpio_set_level(button_vol_up->gpio, 0);
+ TEST_ASSERT(button_state[BUTTON_VOLUME_DOWN] == UNCHANGED);
+ TEST_ASSERT(button_state[BUTTON_VOLUME_UP] == UNCHANGED);
msleep(30);
- TEST_ASSERT(button_state[INDEX_VOL_DOWN] == 1);
- TEST_ASSERT(button_state[INDEX_VOL_UP] == UNCHANGED);
+ TEST_ASSERT(button_state[BUTTON_VOLUME_DOWN] == 1);
+ TEST_ASSERT(button_state[BUTTON_VOLUME_UP] == UNCHANGED);
msleep(40);
- TEST_ASSERT(button_state[INDEX_VOL_DOWN] == 1);
- TEST_ASSERT(button_state[INDEX_VOL_UP] == 1);
+ TEST_ASSERT(button_state[BUTTON_VOLUME_DOWN] == 1);
+ TEST_ASSERT(button_state[BUTTON_VOLUME_UP] == 1);
return EC_SUCCESS;
}
@@ -145,12 +144,12 @@ static void button_test_init(void)
int i;
ccprintf("[%T Setting button GPIOs to inactive state.]\n");
- for (i = 0; i < CONFIG_BUTTON_COUNT; i++)
+ for (i = 0; i < BUTTON_COUNT; i++)
gpio_set_level(buttons[i].gpio,
!(buttons[i].flags & BUTTON_FLAG_ACTIVE_HIGH));
msleep(100);
- for (i = 0; i < CONFIG_BUTTON_COUNT; i++)
+ for (i = 0; i < BUTTON_COUNT; i++)
button_state[i] = UNCHANGED;
}