1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
|
/* Copyright 2022 The ChromiumOS Authors
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*/
#include <zephyr/ztest.h>
#include <zephyr/ztest_assert.h>
#include <zephyr/device.h>
#include <zephyr/drivers/pwm.h>
#include "ec_commands.h"
#include "led.h"
#include "led_common.h"
#include "pwm_mock.h"
#include "test/drivers/test_state.h"
#include "test/drivers/utils.h"
ZTEST_SUITE(pwm_led_driver, drivers_predicate_post_main, NULL, NULL, NULL,
NULL);
ZTEST(pwm_led_driver, test_led_set_brightness)
{
const uint8_t brightness_off[EC_LED_COLOR_COUNT] = {};
const uint8_t brightness_white[EC_LED_COLOR_COUNT] = {
[EC_LED_COLOR_WHITE] = 1
};
const uint8_t brightness_amber[EC_LED_COLOR_COUNT] = {
[EC_LED_COLOR_AMBER] = 1
};
const struct device *pwm_blue_left =
DEVICE_DT_GET(DT_NODELABEL(pwm_blue_left));
const struct device *pwm_white_left =
DEVICE_DT_GET(DT_NODELABEL(pwm_white_left));
const struct device *pwm_amber_right =
DEVICE_DT_GET(DT_NODELABEL(pwm_amber_right));
const struct device *pwm_white_right =
DEVICE_DT_GET(DT_NODELABEL(pwm_white_right));
/* Turn off all LEDs */
led_set_brightness(EC_LED_ID_LEFT_LED, brightness_off);
led_set_brightness(EC_LED_ID_RIGHT_LED, brightness_off);
zassert_equal(pwm_mock_get_duty(pwm_blue_left, 0), 0, NULL);
zassert_equal(pwm_mock_get_duty(pwm_white_left, 0), 0, NULL);
zassert_equal(pwm_mock_get_duty(pwm_amber_right, 0), 0, NULL);
zassert_equal(pwm_mock_get_duty(pwm_white_right, 0), 0, NULL);
/* Call led_set_color(LED_WHITE, LEFT_LED) */
led_set_brightness(EC_LED_ID_LEFT_LED, brightness_white);
zassert_equal(pwm_mock_get_duty(pwm_blue_left, 0), 0, NULL);
zassert_equal(pwm_mock_get_duty(pwm_white_left, 0), 100, NULL);
zassert_equal(pwm_mock_get_duty(pwm_amber_right, 0), 0, NULL);
zassert_equal(pwm_mock_get_duty(pwm_white_right, 0), 0, NULL);
/* Unsupporte, call led_set_color(LED_OFF, LEFT_LED) */
led_set_brightness(EC_LED_ID_LEFT_LED, brightness_amber);
zassert_equal(pwm_mock_get_duty(pwm_blue_left, 0), 0, NULL);
zassert_equal(pwm_mock_get_duty(pwm_white_left, 0), 0, NULL);
zassert_equal(pwm_mock_get_duty(pwm_amber_right, 0), 0, NULL);
zassert_equal(pwm_mock_get_duty(pwm_white_right, 0), 0, NULL);
/* Call led_set_color(AMBER, RIGHT_LED) */
led_set_brightness(EC_LED_ID_RIGHT_LED, brightness_amber);
zassert_equal(pwm_mock_get_duty(pwm_blue_left, 0), 0, NULL);
zassert_equal(pwm_mock_get_duty(pwm_white_left, 0), 0, NULL);
zassert_equal(pwm_mock_get_duty(pwm_amber_right, 0), 100, NULL);
zassert_equal(pwm_mock_get_duty(pwm_white_right, 0), 0, NULL);
}
ZTEST(pwm_led_driver, test_led_get_brightness)
{
uint8_t brightness[EC_LED_COLOR_COUNT];
const uint8_t expected_left[EC_LED_COLOR_COUNT] = {
[EC_LED_COLOR_BLUE] = 100,
[EC_LED_COLOR_WHITE] = 100,
};
const uint8_t expected_right[EC_LED_COLOR_COUNT] = {
[EC_LED_COLOR_WHITE] = 100,
[EC_LED_COLOR_AMBER] = 100,
};
/* Verify LED colors defined in device tree are reflected in the
* brightness array.
*/
memset(brightness, 255, sizeof(brightness));
led_get_brightness_range(EC_LED_ID_LEFT_LED, brightness);
zassert_mem_equal(brightness, expected_left, sizeof(brightness), NULL);
memset(brightness, 255, sizeof(brightness));
led_get_brightness_range(EC_LED_ID_RIGHT_LED, brightness);
zassert_mem_equal(brightness, expected_right, sizeof(brightness), NULL);
}
|