mirror of
https://github.com/Telecominfraproject/OpenCellular.git
synced 2025-12-27 18:25:05 +00:00
Add lid switch test and enable kb_mkbp test
BUG=chrome-os-partner:19236 TEST=Pass both tests BRANCH=None CQ-DEPEND=CL:50467 Change-Id: I59cc407c2d1bf7f549ff9c46226cf7fa60fe7157 Signed-off-by: Vic Yang <victoryang@chromium.org> Reviewed-on: https://gerrit.chromium.org/gerrit/50466
This commit is contained in:
@@ -9,4 +9,5 @@
|
||||
|
||||
const struct gpio_info gpio_list[GPIO_COUNT] = {
|
||||
{"EC_INT", 0, 0, 0, 0},
|
||||
{"LID_OPEN", 0, 0, 0, 0},
|
||||
};
|
||||
|
||||
@@ -11,9 +11,11 @@
|
||||
#define CONFIG_HOST_EMU
|
||||
#define CONFIG_HOSTCMD
|
||||
#define CONFIG_KEYBOARD_PROTOCOL_MKBP
|
||||
#define CONFIG_LID_SWITCH
|
||||
|
||||
enum gpio_signal {
|
||||
GPIO_EC_INT,
|
||||
GPIO_LID_OPEN,
|
||||
|
||||
GPIO_COUNT
|
||||
};
|
||||
|
||||
@@ -22,3 +22,8 @@ test_mockable void gpio_set_level(enum gpio_signal signal, int value)
|
||||
{
|
||||
/* Nothing */
|
||||
}
|
||||
|
||||
test_mockable int gpio_enable_interrupt(enum gpio_signal signal)
|
||||
{
|
||||
return EC_SUCCESS;
|
||||
}
|
||||
|
||||
@@ -64,7 +64,7 @@ static void lid_switch_close(void)
|
||||
host_set_single_event(EC_HOST_EVENT_LID_CLOSED);
|
||||
}
|
||||
|
||||
int lid_is_open(void)
|
||||
test_mockable int lid_is_open(void)
|
||||
{
|
||||
return debounced_lid_open;
|
||||
}
|
||||
|
||||
@@ -25,11 +25,12 @@ test-list-$(BOARD_link)=
|
||||
test-list-$(BOARD_slippy)=
|
||||
|
||||
# Emulator tests
|
||||
test-list-host=mutex pingpong utils kb_scan
|
||||
test-list-host=mutex pingpong utils kb_scan kb_mkbp lid_sw
|
||||
|
||||
flash-y=flash.o
|
||||
kb_mkbp-y=kb_mkbp.o
|
||||
kb_scan-y=kb_scan.o
|
||||
lid_sw-y=lid_sw.o
|
||||
mutex-y=mutex.o
|
||||
pingpong-y=pingpong.o
|
||||
powerdemo-y=powerdemo.o
|
||||
|
||||
@@ -36,6 +36,11 @@ void gpio_set_level(enum gpio_signal signal, int level)
|
||||
ec_int_level = !!level;
|
||||
}
|
||||
|
||||
int lid_is_open(void)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/* Test utilities */
|
||||
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
#include "gpio.h"
|
||||
#include "keyboard_raw.h"
|
||||
#include "keyboard_scan.h"
|
||||
#include "lid_switch.h"
|
||||
#include "task.h"
|
||||
#include "timer.h"
|
||||
#include "util.h"
|
||||
@@ -53,11 +54,9 @@ static int error_count;
|
||||
static int lid_open;
|
||||
|
||||
#ifdef CONFIG_LID_SWITCH
|
||||
int gpio_get_level(enum gpio_signal signal)
|
||||
int lid_is_open(void)
|
||||
{
|
||||
if (signal == GPIO_LID_OPEN)
|
||||
return lid_open;
|
||||
return 0;
|
||||
return lid_open;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
127
test/lid_sw.c
Normal file
127
test/lid_sw.c
Normal file
@@ -0,0 +1,127 @@
|
||||
/* Copyright (c) 2013 The Chromium OS Authors. All rights reserved.
|
||||
* Use of this source code is governed by a BSD-style license that can be
|
||||
* found in the LICENSE file.
|
||||
*
|
||||
* Test lid switch.
|
||||
*/
|
||||
|
||||
#include "common.h"
|
||||
#include "console.h"
|
||||
#include "hooks.h"
|
||||
#include "host_command.h"
|
||||
#include "lid_switch.h"
|
||||
#include "timer.h"
|
||||
#include "util.h"
|
||||
|
||||
static int error_count;
|
||||
|
||||
static int mock_lid;
|
||||
static int lid_hook_count;
|
||||
|
||||
#define RUN_TEST(n) \
|
||||
do { \
|
||||
ccprintf("Running %s...", #n); \
|
||||
cflush(); \
|
||||
if (n() == EC_SUCCESS) { \
|
||||
ccputs("OK\n"); \
|
||||
} else { \
|
||||
ccputs("Fail\n"); \
|
||||
error_count++; \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
#define TEST_ASSERT(n) \
|
||||
do { \
|
||||
if (!(n)) \
|
||||
return EC_ERROR_UNKNOWN; \
|
||||
} while (0)
|
||||
|
||||
int gpio_get_level(enum gpio_signal signal)
|
||||
{
|
||||
if (signal == GPIO_LID_OPEN)
|
||||
return mock_lid;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void lid_change_hook(void)
|
||||
{
|
||||
lid_hook_count++;
|
||||
}
|
||||
DECLARE_HOOK(HOOK_LID_CHANGE, lid_change_hook, HOOK_PRIO_DEFAULT);
|
||||
|
||||
static int test_hook(void)
|
||||
{
|
||||
/* Close lid for testing */
|
||||
mock_lid = 0;
|
||||
lid_interrupt(GPIO_LID_OPEN);
|
||||
msleep(100);
|
||||
lid_hook_count = 0;
|
||||
host_clear_events(0xffffffff);
|
||||
|
||||
mock_lid = 1;
|
||||
lid_interrupt(GPIO_LID_OPEN);
|
||||
msleep(50);
|
||||
TEST_ASSERT(lid_hook_count == 1);
|
||||
TEST_ASSERT(lid_is_open());
|
||||
TEST_ASSERT(host_get_events() &
|
||||
EC_HOST_EVENT_MASK(EC_HOST_EVENT_LID_OPEN));
|
||||
|
||||
mock_lid = 0;
|
||||
lid_interrupt(GPIO_LID_OPEN);
|
||||
msleep(50);
|
||||
TEST_ASSERT(lid_hook_count == 2);
|
||||
TEST_ASSERT(!lid_is_open());
|
||||
TEST_ASSERT(host_get_events() &
|
||||
EC_HOST_EVENT_MASK(EC_HOST_EVENT_LID_CLOSED));
|
||||
|
||||
return EC_SUCCESS;
|
||||
}
|
||||
|
||||
static int test_debounce(void)
|
||||
{
|
||||
/* Close lid for testing */
|
||||
mock_lid = 0;
|
||||
lid_interrupt(GPIO_LID_OPEN);
|
||||
msleep(100);
|
||||
lid_hook_count = 0;
|
||||
host_clear_events(0xffffffff);
|
||||
|
||||
mock_lid = 1;
|
||||
lid_interrupt(GPIO_LID_OPEN);
|
||||
msleep(20);
|
||||
TEST_ASSERT(lid_hook_count == 0);
|
||||
TEST_ASSERT(!lid_is_open());
|
||||
TEST_ASSERT(!(host_get_events() &
|
||||
EC_HOST_EVENT_MASK(EC_HOST_EVENT_LID_OPEN)));
|
||||
|
||||
mock_lid = 0;
|
||||
lid_interrupt(GPIO_LID_OPEN);
|
||||
msleep(50);
|
||||
TEST_ASSERT(lid_hook_count == 0);
|
||||
TEST_ASSERT(!lid_is_open());
|
||||
TEST_ASSERT(!(host_get_events() &
|
||||
EC_HOST_EVENT_MASK(EC_HOST_EVENT_LID_OPEN)));
|
||||
|
||||
return EC_SUCCESS;
|
||||
}
|
||||
|
||||
void run_test(void)
|
||||
{
|
||||
error_count = 0;
|
||||
|
||||
RUN_TEST(test_hook);
|
||||
RUN_TEST(test_debounce);
|
||||
|
||||
if (error_count)
|
||||
ccprintf("Fail!\n", error_count);
|
||||
else
|
||||
ccprintf("Pass!\n");
|
||||
}
|
||||
|
||||
static int command_run_test(int argc, char **argv)
|
||||
{
|
||||
run_test();
|
||||
return EC_SUCCESS;
|
||||
}
|
||||
DECLARE_CONSOLE_COMMAND(runtest, command_run_test,
|
||||
NULL, NULL, NULL);
|
||||
17
test/lid_sw.tasklist
Normal file
17
test/lid_sw.tasklist
Normal file
@@ -0,0 +1,17 @@
|
||||
/* Copyright (c) 2013 The Chromium OS Authors. All rights reserved.
|
||||
* Use of this source code is governed by a BSD-style license that can be
|
||||
* found in the LICENSE file.
|
||||
*/
|
||||
|
||||
/**
|
||||
* List of enabled tasks in the priority order
|
||||
*
|
||||
* The first one has the lowest priority.
|
||||
*
|
||||
* For each task, use the macro TASK_TEST(n, r, d, s) where :
|
||||
* 'n' in the name of the task
|
||||
* 'r' in the main routine of the task
|
||||
* 'd' in an opaque parameter passed to the routine at startup
|
||||
* 's' is the stack size in bytes; must be a multiple of 8
|
||||
*/
|
||||
#define CONFIG_TEST_TASK_LIST /* No test task */
|
||||
Reference in New Issue
Block a user