Browse Source

feat(backlight): add tests

xmkb
Alessandro Bortolin 3 years ago committed by Pete Johanson
parent
commit
2c0fe3934d
  1. 2
      app/Kconfig
  2. 2
      app/src/backlight.c
  3. 1
      app/tests/backlight/basic/events.patterns
  4. 9
      app/tests/backlight/basic/keycode_events.snapshot
  5. 14
      app/tests/backlight/basic/native_posix.conf
  6. 30
      app/tests/backlight/basic/native_posix.keymap
  7. 34
      app/tests/backlight/behavior_keymap.dtsi
  8. 1
      app/tests/backlight/config-brt/events.patterns
  9. 3
      app/tests/backlight/config-brt/keycode_events.snapshot
  10. 15
      app/tests/backlight/config-brt/native_posix.conf
  11. 12
      app/tests/backlight/config-brt/native_posix.keymap
  12. 1
      app/tests/backlight/config-on/events.patterns
  13. 3
      app/tests/backlight/config-on/keycode_events.snapshot
  14. 15
      app/tests/backlight/config-on/native_posix.conf
  15. 12
      app/tests/backlight/config-on/native_posix.keymap
  16. 1
      app/tests/backlight/config-step/events.patterns
  17. 11
      app/tests/backlight/config-step/keycode_events.snapshot
  18. 16
      app/tests/backlight/config-step/native_posix.conf
  19. 36
      app/tests/backlight/config-step/native_posix.keymap
  20. 1
      app/tests/backlight/low-brightness/events.patterns
  21. 12
      app/tests/backlight/low-brightness/keycode_events.snapshot
  22. 14
      app/tests/backlight/low-brightness/native_posix.conf
  23. 39
      app/tests/backlight/low-brightness/native_posix.keymap
  24. 4
      docs/docs/features/backlight.md

2
app/Kconfig

@ -330,9 +330,7 @@ endif
menuconfig ZMK_BACKLIGHT menuconfig ZMK_BACKLIGHT
bool "LED backlight" bool "LED backlight"
select PWM
select LED select LED
select ZMK_LED_PWM
if ZMK_BACKLIGHT if ZMK_BACKLIGHT

2
app/src/backlight.c

@ -44,6 +44,8 @@ static struct backlight_state state = {.brightness = CONFIG_ZMK_BACKLIGHT_BRT_ST
static int zmk_backlight_update() { static int zmk_backlight_update() {
uint8_t brt = zmk_backlight_get_brt(); uint8_t brt = zmk_backlight_get_brt();
LOG_DBG("Update backlight brightness: %d%%", brt);
for (int i = 0; i < BACKLIGHT_NUM_LEDS; i++) { for (int i = 0; i < BACKLIGHT_NUM_LEDS; i++) {
int rc = led_set_brightness(backlight_dev, i, brt); int rc = led_set_brightness(backlight_dev, i, brt);
if (rc != 0) { if (rc != 0) {

1
app/tests/backlight/basic/events.patterns

@ -0,0 +1 @@
s/.*zmk_backlight_update: //p

9
app/tests/backlight/basic/keycode_events.snapshot

@ -0,0 +1,9 @@
Update backlight brightness: 40%
Update backlight brightness: 60%
Update backlight brightness: 80%
Update backlight brightness: 60%
Update backlight brightness: 40%
Update backlight brightness: 0%
Update backlight brightness: 0%
Update backlight brightness: 40%
Update backlight brightness: 40%

14
app/tests/backlight/basic/native_posix.conf

@ -0,0 +1,14 @@
CONFIG_KSCAN=n
CONFIG_ZMK_KSCAN_MOCK_DRIVER=y
CONFIG_ZMK_KSCAN_GPIO_DRIVER=n
CONFIG_GPIO=y
CONFIG_GPIO_EMUL=y
CONFIG_ZMK_BLE=n
CONFIG_LOG=y
CONFIG_LOG_BACKEND_SHOW_COLOR=n
CONFIG_ZMK_LOG_LEVEL_DBG=y
CONFIG_DEBUG=y
CONFIG_SYS_CLOCK_TICKS_PER_SEC=1000
CONFIG_LED_GPIO=y
CONFIG_ZMK_BACKLIGHT=y

30
app/tests/backlight/basic/native_posix.keymap

@ -0,0 +1,30 @@
#include "../behavior_keymap.dtsi"
&kscan {
events = <
/* BL_INC */
ZMK_MOCK_PRESS(0,0,10)
ZMK_MOCK_RELEASE(0,0,10)
/* BL_INC */
ZMK_MOCK_PRESS(0,0,10)
ZMK_MOCK_RELEASE(0,0,10)
/* BL_DEC */
ZMK_MOCK_PRESS(0,1,10)
ZMK_MOCK_RELEASE(0,1,10)
/* BL_DEC */
ZMK_MOCK_PRESS(0,1,10)
ZMK_MOCK_RELEASE(0,1,10)
/* BL_OFF */
ZMK_MOCK_PRESS(1,1,10)
ZMK_MOCK_RELEASE(1,1,10)
/* BL_OFF */
ZMK_MOCK_PRESS(1,1,10)
ZMK_MOCK_RELEASE(1,1,10)
/* BL_ON */
ZMK_MOCK_PRESS(1,0,10)
ZMK_MOCK_RELEASE(1,0,10)
/* BL_ON */
ZMK_MOCK_PRESS(1,0,10)
ZMK_MOCK_RELEASE(1,0,10)
>;
};

34
app/tests/backlight/behavior_keymap.dtsi

@ -0,0 +1,34 @@
#include <dt-bindings/zmk/keys.h>
#include <behaviors.dtsi>
#include <dt-bindings/zmk/kscan_mock.h>
#include <dt-bindings/zmk/backlight.h>
/ {
chosen {
zmk,backlight = &backlight;
};
backlight: leds {
compatible = "gpio-leds";
led_0 {
gpios = <&gpio0 0 GPIO_ACTIVE_HIGH>;
label = "Backlight LED 0";
};
led_1 {
gpios = <&gpio0 1 GPIO_ACTIVE_HIGH>;
label = "Backlight LED 1";
};
};
keymap {
compatible = "zmk,keymap";
label ="Default keymap";
default_layer {
bindings = <
&bl BL_INC &bl BL_DEC
&bl BL_ON &bl BL_OFF
>;
};
};
};

1
app/tests/backlight/config-brt/events.patterns

@ -0,0 +1 @@
s/.*zmk_backlight_update: //p

3
app/tests/backlight/config-brt/keycode_events.snapshot

@ -0,0 +1,3 @@
Update backlight brightness: 60%
Update backlight brightness: 80%
Update backlight brightness: 60%

15
app/tests/backlight/config-brt/native_posix.conf

@ -0,0 +1,15 @@
CONFIG_KSCAN=n
CONFIG_ZMK_KSCAN_MOCK_DRIVER=y
CONFIG_ZMK_KSCAN_GPIO_DRIVER=n
CONFIG_GPIO=y
CONFIG_GPIO_EMUL=y
CONFIG_ZMK_BLE=n
CONFIG_LOG=y
CONFIG_LOG_BACKEND_SHOW_COLOR=n
CONFIG_ZMK_LOG_LEVEL_DBG=y
CONFIG_DEBUG=y
CONFIG_SYS_CLOCK_TICKS_PER_SEC=1000
CONFIG_LED_GPIO=y
CONFIG_ZMK_BACKLIGHT=y
CONFIG_ZMK_BACKLIGHT_BRT_START=60

12
app/tests/backlight/config-brt/native_posix.keymap

@ -0,0 +1,12 @@
#include "../behavior_keymap.dtsi"
&kscan {
events = <
/* BL_INC */
ZMK_MOCK_PRESS(0,0,10)
ZMK_MOCK_RELEASE(0,0,10)
/* BL_DEC */
ZMK_MOCK_PRESS(0,1,10)
ZMK_MOCK_RELEASE(0,1,10)
>;
};

1
app/tests/backlight/config-on/events.patterns

@ -0,0 +1 @@
s/.*zmk_backlight_update: //p

3
app/tests/backlight/config-on/keycode_events.snapshot

@ -0,0 +1,3 @@
Update backlight brightness: 0%
Update backlight brightness: 40%
Update backlight brightness: 0%

15
app/tests/backlight/config-on/native_posix.conf

@ -0,0 +1,15 @@
CONFIG_KSCAN=n
CONFIG_ZMK_KSCAN_MOCK_DRIVER=y
CONFIG_ZMK_KSCAN_GPIO_DRIVER=n
CONFIG_GPIO=y
CONFIG_GPIO_EMUL=y
CONFIG_ZMK_BLE=n
CONFIG_LOG=y
CONFIG_LOG_BACKEND_SHOW_COLOR=n
CONFIG_ZMK_LOG_LEVEL_DBG=y
CONFIG_DEBUG=y
CONFIG_SYS_CLOCK_TICKS_PER_SEC=1000
CONFIG_LED_GPIO=y
CONFIG_ZMK_BACKLIGHT=y
CONFIG_ZMK_BACKLIGHT_ON_START=n

12
app/tests/backlight/config-on/native_posix.keymap

@ -0,0 +1,12 @@
#include "../behavior_keymap.dtsi"
&kscan {
events = <
/* BL_ON */
ZMK_MOCK_PRESS(1,0,10)
ZMK_MOCK_RELEASE(1,0,10)
/* BL_OFF */
ZMK_MOCK_PRESS(1,1,10)
ZMK_MOCK_RELEASE(1,1,10)
>;
};

1
app/tests/backlight/config-step/events.patterns

@ -0,0 +1 @@
s/.*zmk_backlight_update: //p

11
app/tests/backlight/config-step/keycode_events.snapshot

@ -0,0 +1,11 @@
Update backlight brightness: 60%
Update backlight brightness: 90%
Update backlight brightness: 100%
Update backlight brightness: 100%
Update backlight brightness: 70%
Update backlight brightness: 40%
Update backlight brightness: 10%
Update backlight brightness: 0%
Update backlight brightness: 0%
Update backlight brightness: 30%
Update backlight brightness: 60%

16
app/tests/backlight/config-step/native_posix.conf

@ -0,0 +1,16 @@
CONFIG_KSCAN=n
CONFIG_ZMK_KSCAN_MOCK_DRIVER=y
CONFIG_ZMK_KSCAN_GPIO_DRIVER=n
CONFIG_GPIO=y
CONFIG_GPIO_EMUL=y
CONFIG_ZMK_BLE=n
CONFIG_LOG=y
CONFIG_LOG_BACKEND_SHOW_COLOR=n
CONFIG_ZMK_LOG_LEVEL_DBG=y
CONFIG_DEBUG=y
CONFIG_SYS_CLOCK_TICKS_PER_SEC=1000
CONFIG_LED_GPIO=y
CONFIG_ZMK_BACKLIGHT=y
CONFIG_ZMK_BACKLIGHT_BRT_START=60
CONFIG_ZMK_BACKLIGHT_BRT_STEP=30

36
app/tests/backlight/config-step/native_posix.keymap

@ -0,0 +1,36 @@
#include "../behavior_keymap.dtsi"
&kscan {
events = <
/* BL_INC */
ZMK_MOCK_PRESS(0,0,10)
ZMK_MOCK_RELEASE(0,0,10)
/* BL_INC */
ZMK_MOCK_PRESS(0,0,10)
ZMK_MOCK_RELEASE(0,0,10)
/* BL_INC */
ZMK_MOCK_PRESS(0,0,10)
ZMK_MOCK_RELEASE(0,0,10)
/* BL_DEC */
ZMK_MOCK_PRESS(0,1,10)
ZMK_MOCK_RELEASE(0,1,10)
/* BL_DEC */
ZMK_MOCK_PRESS(0,1,10)
ZMK_MOCK_RELEASE(0,1,10)
/* BL_DEC */
ZMK_MOCK_PRESS(0,1,10)
ZMK_MOCK_RELEASE(0,1,10)
/* BL_DEC */
ZMK_MOCK_PRESS(0,1,10)
ZMK_MOCK_RELEASE(0,1,10)
/* BL_DEC */
ZMK_MOCK_PRESS(0,1,10)
ZMK_MOCK_RELEASE(0,1,10)
/* BL_INC */
ZMK_MOCK_PRESS(0,0,10)
ZMK_MOCK_RELEASE(0,0,10)
/* BL_INC */
ZMK_MOCK_PRESS(0,0,10)
ZMK_MOCK_RELEASE(0,0,10)
>;
};

1
app/tests/backlight/low-brightness/events.patterns

@ -0,0 +1 @@
s/.*zmk_backlight_update: //p

12
app/tests/backlight/low-brightness/keycode_events.snapshot

@ -0,0 +1,12 @@
Update backlight brightness: 40%
Update backlight brightness: 20%
Update backlight brightness: 0%
Update backlight brightness: 20%
Update backlight brightness: 0%
Update backlight brightness: 40%
Update backlight brightness: 60%
Update backlight brightness: 0%
Update backlight brightness: 40%
Update backlight brightness: 20%
Update backlight brightness: 0%
Update backlight brightness: 20%

14
app/tests/backlight/low-brightness/native_posix.conf

@ -0,0 +1,14 @@
CONFIG_KSCAN=n
CONFIG_ZMK_KSCAN_MOCK_DRIVER=y
CONFIG_ZMK_KSCAN_GPIO_DRIVER=n
CONFIG_GPIO=y
CONFIG_GPIO_EMUL=y
CONFIG_ZMK_BLE=n
CONFIG_LOG=y
CONFIG_LOG_BACKEND_SHOW_COLOR=n
CONFIG_ZMK_LOG_LEVEL_DBG=y
CONFIG_DEBUG=y
CONFIG_SYS_CLOCK_TICKS_PER_SEC=1000
CONFIG_LED_GPIO=y
CONFIG_ZMK_BACKLIGHT=y

39
app/tests/backlight/low-brightness/native_posix.keymap

@ -0,0 +1,39 @@
#include "../behavior_keymap.dtsi"
&kscan {
events = <
/* BL_DEC */
ZMK_MOCK_PRESS(0,1,10)
ZMK_MOCK_RELEASE(0,1,10)
/* BL_DEC */
ZMK_MOCK_PRESS(0,1,10)
ZMK_MOCK_RELEASE(0,1,10)
/* BL_ON */
ZMK_MOCK_PRESS(1,0,10)
ZMK_MOCK_RELEASE(1,0,10)
/* BL_OFF */
ZMK_MOCK_PRESS(1,1,10)
ZMK_MOCK_RELEASE(1,1,10)
/* BL_INC */
ZMK_MOCK_PRESS(0,0,10)
ZMK_MOCK_RELEASE(0,0,10)
/* BL_INC */
ZMK_MOCK_PRESS(0,0,10)
ZMK_MOCK_RELEASE(0,0,10)
/* BL_OFF */
ZMK_MOCK_PRESS(1,1,10)
ZMK_MOCK_RELEASE(1,1,10)
/* BL_DEC */
ZMK_MOCK_PRESS(0,1,10)
ZMK_MOCK_RELEASE(0,1,10)
/* BL_DEC */
ZMK_MOCK_PRESS(0,1,10)
ZMK_MOCK_RELEASE(0,1,10)
/* BL_DEC */
ZMK_MOCK_PRESS(0,1,10)
ZMK_MOCK_RELEASE(0,1,10)
/* BL_INC */
ZMK_MOCK_PRESS(0,0,10)
ZMK_MOCK_RELEASE(0,0,10)
>;
};

4
docs/docs/features/backlight.md

@ -7,9 +7,11 @@ Backlight is a feature used to control array of LEDs, usually placed through or
## Enabling Backlight ## Enabling Backlight
To enable backlight on your board or shield, simply enable the `CONFIG_ZMK_BACKLIGHT` configuration values in the `.conf` file of your user config directory as such: To enable backlight on your board or shield, add the following lines to your `.conf` file of your user config directory as such:
``` ```
CONFIG_PWM=y
CONFIG_LED_PWM=y
CONFIG_ZMK_BACKLIGHT=y CONFIG_ZMK_BACKLIGHT=y
``` ```

Loading…
Cancel
Save