From 0f8431a57f4b1ce50528e4c1689e810ba9554e17 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Konstantin=20=C4=90or=C4=91evi=C4=87?= Date: Mon, 21 Jan 2019 05:16:36 +0100 Subject: [PATCH] Tidy up IS_{,HOST_}LED_{ON,OFF} macros (#4894) * Tidy up IS_{,HOST_}LED_{ON,OFF} macros * Tweak LED control docs --- docs/custom_quantum_functions.md | 27 +++++++++------------------ tmk_core/common/host.h | 17 ++++++----------- 2 files changed, 15 insertions(+), 29 deletions(-) diff --git a/docs/custom_quantum_functions.md b/docs/custom_quantum_functions.md index 3397bf2d4f..d44786e2d5 100644 --- a/docs/custom_quantum_functions.md +++ b/docs/custom_quantum_functions.md @@ -106,10 +106,8 @@ There are two ways to get the host LED state: ## `led_set_user()` -This function will be called when the state of one of those 5 LEDs changes. -It receives the LED state as parameter. -Use the `IS_LED_ON(USB_LED, LED_NAME)` and `IS_LED_OFF(USB_LED, LED_NAME)` -macros to check the LED status. +This function will be called when the state of one of those 5 LEDs changes. It receives the LED state as a parameter. +Use the `IS_LED_ON(usb_led, led_name)` and `IS_LED_OFF(usb_led, led_name)` macros to check the LED status. !> `host_keyboard_leds()` may already reflect a new value before `led_set_user()` is called. @@ -152,27 +150,20 @@ void led_set_user(uint8_t usb_led) { ## `host_keyboard_leds()` -Call this function to get the last received LED state. -This is useful for reading the LED state outside `led_set_*`, e.g. in [`matrix_scan_user()`](#matrix-scanning-code). +Call this function to get the last received LED state. This is useful for reading the LED state outside `led_set_*`, e.g. in [`matrix_scan_user()`](#matrix-scanning-code). +For convenience, you can use the `IS_HOST_LED_ON(led_name)` and `IS_HOST_LED_OFF(led_name)` macros instead of calling and checking `host_keyboard_leds()` directly. -For convenience, you can use the `IS_HOST_LED_ON(LED_NAME)` and `IS_HOST_LED_OFF(LED_NAME)` macros instead of calling `host_keyboard_leds()` directly. - -## Setting physical LED state +## Setting Physical LED State Some keyboard implementations provide convenience methods for setting the state of the physical LEDs. -### Ergodox and Ergodox EZ +### Ergodox Boards -The Ergodox EZ implementation provides `ergodox_right_led_``1`/`2`/`3_on`/`off()` -to turn individual LEDs on and off, as well as -`ergodox_right_led_on`/`off(uint8_t led)` -to turn them on and off by their number. +The Ergodox implementations provide `ergodox_right_led_1`/`2`/`3_on`/`off()` to turn individual LEDs on or off, as well as `ergodox_right_led_on`/`off(uint8_t led)` to turn them on or off by their index. -In addition, it is possible to specify the brightness level with `ergodox_led_all_set(uint8_t n)`, -for individual LEDs with `ergodox_right_led_1`/`2`/`3_set(uint8_t n)` -or by their number using `ergodox_right_led_set(uint8_t led, uint8_t n)`. +In addition, it is possible to specify the brightness level of all LEDs with `ergodox_led_all_set(uint8_t n)`; of individual LEDs with `ergodox_right_led_1`/`2`/`3_set(uint8_t n)`; or by index with `ergodox_right_led_set(uint8_t led, uint8_t n)`. -It defines `LED_BRIGHTNESS_LO` for the lowest brightness and `LED_BRIGHTNESS_HI` for the highest brightness, which is also the default. +Ergodox boards also define `LED_BRIGHTNESS_LO` for the lowest brightness and `LED_BRIGHTNESS_HI` for the highest brightness (which is the default). # Matrix Initialization Code diff --git a/tmk_core/common/host.h b/tmk_core/common/host.h index e70bb68533..3d172eed66 100644 --- a/tmk_core/common/host.h +++ b/tmk_core/common/host.h @@ -15,14 +15,18 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . */ -#ifndef HOST_H -#define HOST_H +#pragma once #include #include #include "report.h" #include "host_driver.h" +#define IS_LED_ON(leds, led_name) ( (leds) & (1 << (led_name))) +#define IS_LED_OFF(leds, led_name) (~(leds) & (1 << (led_name))) + +#define IS_HOST_LED_ON(led_name) IS_LED_ON(host_keyboard_leds(), led_name) +#define IS_HOST_LED_OFF(led_name) IS_LED_OFF(host_keyboard_leds(), led_name) #ifdef __cplusplus extern "C" { @@ -31,7 +35,6 @@ extern "C" { extern uint8_t keyboard_idle; extern uint8_t keyboard_protocol; - /* host driver */ void host_set_driver(host_driver_t *driver); host_driver_t *host_get_driver(void); @@ -46,14 +49,6 @@ void host_consumer_send(uint16_t data); uint16_t host_last_system_report(void); uint16_t host_last_consumer_report(void); -#define IS_LED_ON(USB_LED, LED_NAME) ((USB_LED) & (1 << (LED_NAME))) -#define IS_LED_OFF(USB_LED, LED_NAME) (~(USB_LED) & (1 << (LED_NAME))) - -#define IS_HOST_LED_ON(LED_NAME) IS_LED_ON(host_keyboard_leds(), (LED_NAME)) -#define IS_HOST_LED_OFF(LED_NAME) IS_LED_OFF(host_keyboard_leds(), (LED_NAME)) - #ifdef __cplusplus } #endif - -#endif