mirror of
https://github.com/Telecominfraproject/OpenCellular.git
synced 2025-12-27 18:25:05 +00:00
Remove PULSE and TEST sequences from lightbar module
PULSE and TEST sequences are not used anywhere. Remove them to save flash space. Also, fix msleep(MSEC) calls in the unit test; it's essentially usleep(SECOND) written in an incorrect way. BUG=chrome-os-partner:32203 TEST=make buildall BRANCH=None Change-Id: I61ba897df632538eb89364a4c913d5fee87f3864 Signed-off-by: Vic Yang <victoryang@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/220711 Reviewed-by: Bill Richardson <wfrichar@chromium.org>
This commit is contained in:
committed by
chrome-internal-fetch
parent
a3ddf04ca9
commit
91cfdd0dac
@@ -223,32 +223,6 @@ void lb_on(void)
|
||||
controller_write(1, 0x01, 0x20);
|
||||
}
|
||||
|
||||
/*
|
||||
* This sets up the auto-cycling features of the controllers to make a
|
||||
* semi-random pattern of slowly fading colors. This is interesting only
|
||||
* because it doesn't require any effort from the EC.
|
||||
*/
|
||||
void lb_start_builtin_cycle(void)
|
||||
{
|
||||
int r = scale(255, MAX_RED);
|
||||
int g = scale(255, MAX_BLUE);
|
||||
int b = scale(255, MAX_GREEN);
|
||||
struct initdata_s pulse_vals[] = {
|
||||
{0x11, 0xce},
|
||||
{0x12, 0x67},
|
||||
{0x13, 0xef},
|
||||
{0x15, b},
|
||||
{0x16, r},
|
||||
{0x17, g},
|
||||
{0x18, b},
|
||||
{0x19, r},
|
||||
{0x1a, g},
|
||||
};
|
||||
|
||||
set_from_array(pulse_vals, ARRAY_SIZE(pulse_vals));
|
||||
controller_write(1, 0x13, 0xcd); /* this one's different */
|
||||
}
|
||||
|
||||
static const uint8_t dump_reglist[] = {
|
||||
0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
|
||||
0x08, 0x09, 0x0a, 0x0f,
|
||||
|
||||
@@ -639,75 +639,6 @@ static uint32_t sequence_S5(void)
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Used by factory. */
|
||||
static uint32_t sequence_TEST_inner(void)
|
||||
{
|
||||
int i, k, r, g, b;
|
||||
int kmax = 254;
|
||||
int kstep = 8;
|
||||
|
||||
static const struct rgb_s testcolors[] = {
|
||||
{0xff, 0x00, 0x00},
|
||||
{0xff, 0xff, 0x00},
|
||||
{0x00, 0xff, 0x00},
|
||||
{0x00, 0x00, 0xff},
|
||||
{0x00, 0xff, 0xff},
|
||||
{0xff, 0x00, 0xff},
|
||||
{0xff, 0xff, 0xff},
|
||||
};
|
||||
|
||||
lb_init();
|
||||
lb_on();
|
||||
for (i = 0; i < ARRAY_SIZE(testcolors); i++) {
|
||||
for (k = 0; k <= kmax; k += kstep) {
|
||||
r = testcolors[i].r ? k : 0;
|
||||
g = testcolors[i].g ? k : 0;
|
||||
b = testcolors[i].b ? k : 0;
|
||||
lb_set_rgb(NUM_LEDS, r, g, b);
|
||||
WAIT_OR_RET(10000);
|
||||
}
|
||||
for (k = kmax; k >= 0; k -= kstep) {
|
||||
r = testcolors[i].r ? k : 0;
|
||||
g = testcolors[i].g ? k : 0;
|
||||
b = testcolors[i].b ? k : 0;
|
||||
lb_set_rgb(NUM_LEDS, r, g, b);
|
||||
WAIT_OR_RET(10000);
|
||||
}
|
||||
}
|
||||
|
||||
lb_set_rgb(NUM_LEDS, 0, 0, 0);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static uint32_t sequence_TEST(void)
|
||||
{
|
||||
int tmp;
|
||||
uint32_t r;
|
||||
|
||||
/* Force brightness to max, then restore it */
|
||||
tmp = lb_get_brightness();
|
||||
lb_set_brightness(255);
|
||||
r = sequence_TEST_inner();
|
||||
lb_set_brightness(tmp);
|
||||
return r;
|
||||
}
|
||||
|
||||
static uint32_t sequence_PULSE(void)
|
||||
{
|
||||
uint32_t msg;
|
||||
|
||||
lb_init();
|
||||
lb_on();
|
||||
|
||||
lb_start_builtin_cycle();
|
||||
|
||||
/* Not using WAIT_OR_RET() here, because we want to clean up when we're
|
||||
* done. The only way out is to get a message. */
|
||||
msg = task_wait_event(-1);
|
||||
lb_init();
|
||||
return TASK_EVENT_CUSTOM(msg);
|
||||
}
|
||||
|
||||
/* The AP is going to poke at the lightbar directly, so we don't want the EC
|
||||
* messing with it. We'll just sit here and ignore all other messages until
|
||||
* we're told to continue (or until we think the AP is shutting down).
|
||||
@@ -1351,7 +1282,6 @@ void lightbar_task(void)
|
||||
case LIGHTBAR_S3S5:
|
||||
st.cur_seq = LIGHTBAR_S5;
|
||||
break;
|
||||
case LIGHTBAR_TEST:
|
||||
case LIGHTBAR_STOP:
|
||||
case LIGHTBAR_RUN:
|
||||
case LIGHTBAR_ERROR:
|
||||
|
||||
@@ -233,7 +233,6 @@ void lb_on(void)
|
||||
fake_power = 1;
|
||||
update_window();
|
||||
};
|
||||
void lb_start_builtin_cycle(void) { };
|
||||
void lb_hc_cmd_dump(struct ec_response_lightbar *out)
|
||||
{
|
||||
printf("lightbar is %s\n", fake_power ? "on" : "off");
|
||||
|
||||
@@ -28,8 +28,6 @@ void lb_init(void);
|
||||
void lb_off(void);
|
||||
/* Enable the LED current. */
|
||||
void lb_on(void);
|
||||
/* Instruct the IC to run a built-in sequence of color changes. */
|
||||
void lb_start_builtin_cycle(void);
|
||||
/* Fill in the response fields for the LIGHTBAR_CMD_DUMP command. */
|
||||
void lb_hc_cmd_dump(struct ec_response_lightbar *out);
|
||||
/* Write the IC controller register given by the LIGHTBAR_CMD_REG command. */
|
||||
|
||||
@@ -17,8 +17,6 @@
|
||||
LBMSG(S3S5), /* 7 */ \
|
||||
LBMSG(STOP), /* 8 */ \
|
||||
LBMSG(RUN), /* 9 */ \
|
||||
LBMSG(PULSE), /* A */ \
|
||||
LBMSG(TEST), /* B */ \
|
||||
LBMSG(KONAMI), /* C */ \
|
||||
LBMSG(TAP), /* D */ \
|
||||
LBMSG(PROGRAM), /* E */
|
||||
LBMSG(KONAMI), /* A */ \
|
||||
LBMSG(TAP), /* B */ \
|
||||
LBMSG(PROGRAM), /* C */
|
||||
|
||||
104
test/lightbar.c
104
test/lightbar.c
@@ -56,69 +56,69 @@ static int test_double_oneshots(void)
|
||||
{
|
||||
/* Start in S0 */
|
||||
TEST_ASSERT(set_seq(LIGHTBAR_S0) == EC_RES_SUCCESS);
|
||||
msleep(MSEC);
|
||||
usleep(SECOND);
|
||||
TEST_ASSERT(get_seq() == LIGHTBAR_S0);
|
||||
/* Invoke the oneshot */
|
||||
TEST_ASSERT(set_seq(LIGHTBAR_TEST) == EC_RES_SUCCESS);
|
||||
msleep(MSEC);
|
||||
TEST_ASSERT(get_seq() == LIGHTBAR_TEST);
|
||||
TEST_ASSERT(set_seq(LIGHTBAR_TAP) == EC_RES_SUCCESS);
|
||||
usleep(SECOND);
|
||||
TEST_ASSERT(get_seq() == LIGHTBAR_TAP);
|
||||
/* Switch to a different oneshot while that one's running */
|
||||
TEST_ASSERT(set_seq(LIGHTBAR_KONAMI) == EC_RES_SUCCESS);
|
||||
msleep(MSEC);
|
||||
usleep(SECOND);
|
||||
TEST_ASSERT(get_seq() == LIGHTBAR_KONAMI);
|
||||
/* Afterwards, it should go back to the original normal state */
|
||||
msleep(30 * MSEC);
|
||||
usleep(30 * SECOND);
|
||||
TEST_ASSERT(get_seq() == LIGHTBAR_S0);
|
||||
|
||||
/* Same test, but with a bunch more oneshots. */
|
||||
TEST_ASSERT(set_seq(LIGHTBAR_S0) == EC_RES_SUCCESS);
|
||||
msleep(MSEC);
|
||||
usleep(SECOND);
|
||||
TEST_ASSERT(get_seq() == LIGHTBAR_S0);
|
||||
TEST_ASSERT(set_seq(LIGHTBAR_TEST) == EC_RES_SUCCESS);
|
||||
msleep(MSEC);
|
||||
TEST_ASSERT(get_seq() == LIGHTBAR_TEST);
|
||||
TEST_ASSERT(set_seq(LIGHTBAR_TAP) == EC_RES_SUCCESS);
|
||||
usleep(SECOND);
|
||||
TEST_ASSERT(get_seq() == LIGHTBAR_TAP);
|
||||
TEST_ASSERT(set_seq(LIGHTBAR_KONAMI) == EC_RES_SUCCESS);
|
||||
msleep(MSEC);
|
||||
usleep(SECOND);
|
||||
TEST_ASSERT(get_seq() == LIGHTBAR_KONAMI);
|
||||
TEST_ASSERT(set_seq(LIGHTBAR_TAP) == EC_RES_SUCCESS);
|
||||
msleep(MSEC);
|
||||
usleep(SECOND);
|
||||
TEST_ASSERT(get_seq() == LIGHTBAR_TAP);
|
||||
TEST_ASSERT(set_seq(LIGHTBAR_PULSE) == EC_RES_SUCCESS);
|
||||
msleep(MSEC);
|
||||
TEST_ASSERT(get_seq() == LIGHTBAR_PULSE);
|
||||
TEST_ASSERT(set_seq(LIGHTBAR_KONAMI) == EC_RES_SUCCESS);
|
||||
msleep(MSEC);
|
||||
usleep(SECOND);
|
||||
TEST_ASSERT(get_seq() == LIGHTBAR_KONAMI);
|
||||
TEST_ASSERT(set_seq(LIGHTBAR_TAP) == EC_RES_SUCCESS);
|
||||
usleep(SECOND);
|
||||
TEST_ASSERT(get_seq() == LIGHTBAR_TAP);
|
||||
/* It should still go back to the original normal state */
|
||||
msleep(30 * MSEC);
|
||||
usleep(30 * SECOND);
|
||||
TEST_ASSERT(get_seq() == LIGHTBAR_S0);
|
||||
|
||||
/* But if the interruption is a normal state, that should stick. */
|
||||
TEST_ASSERT(set_seq(LIGHTBAR_S0) == EC_RES_SUCCESS);
|
||||
msleep(MSEC);
|
||||
usleep(SECOND);
|
||||
TEST_ASSERT(get_seq() == LIGHTBAR_S0);
|
||||
TEST_ASSERT(set_seq(LIGHTBAR_TEST) == EC_RES_SUCCESS);
|
||||
msleep(MSEC);
|
||||
TEST_ASSERT(get_seq() == LIGHTBAR_TEST);
|
||||
TEST_ASSERT(set_seq(LIGHTBAR_TAP) == EC_RES_SUCCESS);
|
||||
usleep(SECOND);
|
||||
TEST_ASSERT(get_seq() == LIGHTBAR_TAP);
|
||||
TEST_ASSERT(set_seq(LIGHTBAR_KONAMI) == EC_RES_SUCCESS);
|
||||
msleep(MSEC);
|
||||
usleep(SECOND);
|
||||
TEST_ASSERT(get_seq() == LIGHTBAR_KONAMI);
|
||||
/* Here's a normal sequence */
|
||||
TEST_ASSERT(set_seq(LIGHTBAR_S3) == EC_RES_SUCCESS);
|
||||
msleep(MSEC);
|
||||
usleep(SECOND);
|
||||
TEST_ASSERT(get_seq() == LIGHTBAR_S3);
|
||||
/* And another one-shot */
|
||||
TEST_ASSERT(set_seq(LIGHTBAR_TAP) == EC_RES_SUCCESS);
|
||||
msleep(MSEC);
|
||||
usleep(SECOND);
|
||||
TEST_ASSERT(get_seq() == LIGHTBAR_TAP);
|
||||
TEST_ASSERT(set_seq(LIGHTBAR_PULSE) == EC_RES_SUCCESS);
|
||||
msleep(MSEC);
|
||||
TEST_ASSERT(get_seq() == LIGHTBAR_PULSE);
|
||||
TEST_ASSERT(set_seq(LIGHTBAR_KONAMI) == EC_RES_SUCCESS);
|
||||
msleep(MSEC);
|
||||
usleep(SECOND);
|
||||
TEST_ASSERT(get_seq() == LIGHTBAR_KONAMI);
|
||||
TEST_ASSERT(set_seq(LIGHTBAR_TAP) == EC_RES_SUCCESS);
|
||||
usleep(SECOND);
|
||||
TEST_ASSERT(get_seq() == LIGHTBAR_TAP);
|
||||
/* It should go back to the new normal sequence */
|
||||
msleep(30 * MSEC);
|
||||
usleep(30 * SECOND);
|
||||
TEST_ASSERT(get_seq() == LIGHTBAR_S3);
|
||||
|
||||
return EC_SUCCESS;
|
||||
@@ -128,8 +128,6 @@ static int test_oneshots_norm_msg(void)
|
||||
{
|
||||
/* Revert to the next state when interrupted with a normal message. */
|
||||
enum lightbar_sequence seqs[] = {
|
||||
LIGHTBAR_PULSE,
|
||||
LIGHTBAR_TEST,
|
||||
LIGHTBAR_KONAMI,
|
||||
LIGHTBAR_TAP,
|
||||
};
|
||||
@@ -138,17 +136,17 @@ static int test_oneshots_norm_msg(void)
|
||||
for (i = 0; i < ARRAY_SIZE(seqs); i++) {
|
||||
/* Start in S0 */
|
||||
TEST_ASSERT(set_seq(LIGHTBAR_S0) == EC_RES_SUCCESS);
|
||||
msleep(MSEC);
|
||||
usleep(SECOND);
|
||||
/* Invoke the oneshot */
|
||||
TEST_ASSERT(set_seq(seqs[i]) == EC_RES_SUCCESS);
|
||||
msleep(MSEC);
|
||||
usleep(SECOND);
|
||||
/* Interrupt with S0S3 */
|
||||
TEST_ASSERT(set_seq(LIGHTBAR_S0S3) == EC_RES_SUCCESS);
|
||||
msleep(MSEC);
|
||||
usleep(SECOND);
|
||||
/* It should be back right away */
|
||||
TEST_ASSERT(get_seq() == LIGHTBAR_S0S3);
|
||||
/* And transition on to the correct value */
|
||||
msleep(30 * MSEC);
|
||||
usleep(30 * SECOND);
|
||||
TEST_ASSERT(get_seq() == LIGHTBAR_S3);
|
||||
}
|
||||
|
||||
@@ -162,14 +160,14 @@ static int test_stop_timeout(void)
|
||||
for (i = 0; i < LIGHTBAR_NUM_SEQUENCES; i++) {
|
||||
/* Start in S0 */
|
||||
TEST_ASSERT(set_seq(LIGHTBAR_S0) == EC_RES_SUCCESS);
|
||||
msleep(MSEC);
|
||||
usleep(SECOND);
|
||||
/* Tell it to stop */
|
||||
TEST_ASSERT(set_seq(LIGHTBAR_STOP) == EC_RES_SUCCESS);
|
||||
msleep(MSEC);
|
||||
usleep(SECOND);
|
||||
TEST_ASSERT(get_seq() == LIGHTBAR_STOP);
|
||||
/* Try to interrupt it */
|
||||
TEST_ASSERT(set_seq(i) == EC_RES_SUCCESS);
|
||||
msleep(MSEC);
|
||||
usleep(SECOND);
|
||||
/* What happened? */
|
||||
if (i == LIGHTBAR_RUN ||
|
||||
i == LIGHTBAR_S0S3 || i == LIGHTBAR_S3 ||
|
||||
@@ -182,7 +180,7 @@ static int test_stop_timeout(void)
|
||||
|
||||
/* Let it RUN again for the next iteration */
|
||||
TEST_ASSERT(set_seq(LIGHTBAR_RUN) == EC_RES_SUCCESS);
|
||||
msleep(MSEC);
|
||||
usleep(SECOND);
|
||||
}
|
||||
|
||||
TEST_ASSERT(set_seq(LIGHTBAR_S0) == EC_RES_SUCCESS);
|
||||
@@ -194,7 +192,6 @@ static int test_oneshots_timeout(void)
|
||||
/* These should revert to the previous state after running */
|
||||
enum lightbar_sequence seqs[] = {
|
||||
LIGHTBAR_RUN,
|
||||
LIGHTBAR_TEST,
|
||||
LIGHTBAR_KONAMI,
|
||||
LIGHTBAR_TAP,
|
||||
};
|
||||
@@ -202,15 +199,15 @@ static int test_oneshots_timeout(void)
|
||||
|
||||
for (i = 0; i < ARRAY_SIZE(seqs); i++) {
|
||||
TEST_ASSERT(set_seq(LIGHTBAR_S0) == EC_RES_SUCCESS);
|
||||
msleep(MSEC);
|
||||
usleep(SECOND);
|
||||
TEST_ASSERT(set_seq(seqs[i]) == EC_RES_SUCCESS);
|
||||
/* Assume the oneshot sequence takes at least a second (except
|
||||
* for LIGHTBAR_RUN, which returns immediately) */
|
||||
if (seqs[i] != LIGHTBAR_RUN) {
|
||||
msleep(MSEC);
|
||||
usleep(SECOND);
|
||||
TEST_ASSERT(get_seq() == seqs[i]);
|
||||
}
|
||||
msleep(30 * MSEC);
|
||||
usleep(30 * SECOND);
|
||||
TEST_ASSERT(get_seq() == LIGHTBAR_S0);
|
||||
}
|
||||
|
||||
@@ -221,22 +218,22 @@ static int test_transition_states(void)
|
||||
{
|
||||
/* S5S3 */
|
||||
TEST_ASSERT(set_seq(LIGHTBAR_S5S3) == EC_RES_SUCCESS);
|
||||
msleep(10 * MSEC);
|
||||
usleep(10 * SECOND);
|
||||
TEST_ASSERT(get_seq() == LIGHTBAR_S3);
|
||||
|
||||
/* S3S0 */
|
||||
TEST_ASSERT(set_seq(LIGHTBAR_S3S0) == EC_RES_SUCCESS);
|
||||
msleep(10 * MSEC);
|
||||
usleep(10 * SECOND);
|
||||
TEST_ASSERT(get_seq() == LIGHTBAR_S0);
|
||||
|
||||
/* S0S3 */
|
||||
TEST_ASSERT(set_seq(LIGHTBAR_S0S3) == EC_RES_SUCCESS);
|
||||
msleep(10 * MSEC);
|
||||
usleep(10 * SECOND);
|
||||
TEST_ASSERT(get_seq() == LIGHTBAR_S3);
|
||||
|
||||
/* S3S5 */
|
||||
TEST_ASSERT(set_seq(LIGHTBAR_S3S5) == EC_RES_SUCCESS);
|
||||
msleep(10 * MSEC);
|
||||
usleep(10 * SECOND);
|
||||
TEST_ASSERT(get_seq() == LIGHTBAR_S5);
|
||||
|
||||
return EC_SUCCESS;
|
||||
@@ -254,31 +251,24 @@ static int test_stable_states(void)
|
||||
|
||||
/* It should stay there */
|
||||
for (i = 0; i < 30; i++) {
|
||||
msleep(MSEC);
|
||||
usleep(SECOND);
|
||||
TEST_ASSERT(get_seq() == LIGHTBAR_S5);
|
||||
}
|
||||
|
||||
/* S3 is sticky, too */
|
||||
TEST_ASSERT(set_seq(LIGHTBAR_S3) == EC_RES_SUCCESS);
|
||||
for (i = 0; i < 30; i++) {
|
||||
msleep(MSEC);
|
||||
usleep(SECOND);
|
||||
TEST_ASSERT(get_seq() == LIGHTBAR_S3);
|
||||
}
|
||||
|
||||
/* And S0 */
|
||||
TEST_ASSERT(set_seq(LIGHTBAR_S0) == EC_RES_SUCCESS);
|
||||
for (i = 0; i < 30; i++) {
|
||||
msleep(MSEC);
|
||||
usleep(SECOND);
|
||||
TEST_ASSERT(get_seq() == LIGHTBAR_S0);
|
||||
}
|
||||
|
||||
/* PULSE is stable too, but nobody should care. Test it anyway. */
|
||||
TEST_ASSERT(set_seq(LIGHTBAR_PULSE) == EC_RES_SUCCESS);
|
||||
for (i = 0; i < 30; i++) {
|
||||
msleep(MSEC);
|
||||
TEST_ASSERT(get_seq() == LIGHTBAR_PULSE);
|
||||
}
|
||||
|
||||
return EC_SUCCESS;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user