Tidy up IS_{,HOST_}LED_{ON,OFF} macros (#4894)
* Tidy up IS_{,HOST_}LED_{ON,OFF} macros * Tweak LED control docs
This commit is contained in:
parent
58993d3cde
commit
0f8431a57f
2 changed files with 15 additions and 29 deletions
|
@ -106,10 +106,8 @@ There are two ways to get the host LED state:
|
||||||
|
|
||||||
## `led_set_user()`
|
## `led_set_user()`
|
||||||
|
|
||||||
This function will be called when the state of one of those 5 LEDs changes.
|
This function will be called when the state of one of those 5 LEDs changes. It receives the LED state as a parameter.
|
||||||
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.
|
||||||
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.
|
!> `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()`
|
## `host_keyboard_leds()`
|
||||||
|
|
||||||
Call this function to get the last received LED state.
|
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).
|
||||||
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.
|
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()`
|
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.
|
||||||
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.
|
|
||||||
|
|
||||||
In addition, it is possible to specify the brightness level with `ergodox_led_all_set(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)`.
|
||||||
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)`.
|
|
||||||
|
|
||||||
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
|
# Matrix Initialization Code
|
||||||
|
|
||||||
|
|
|
@ -15,14 +15,18 @@ You should have received a copy of the GNU General Public License
|
||||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef HOST_H
|
#pragma once
|
||||||
#define HOST_H
|
|
||||||
|
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
#include "report.h"
|
#include "report.h"
|
||||||
#include "host_driver.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
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
|
@ -31,7 +35,6 @@ extern "C" {
|
||||||
extern uint8_t keyboard_idle;
|
extern uint8_t keyboard_idle;
|
||||||
extern uint8_t keyboard_protocol;
|
extern uint8_t keyboard_protocol;
|
||||||
|
|
||||||
|
|
||||||
/* host driver */
|
/* host driver */
|
||||||
void host_set_driver(host_driver_t *driver);
|
void host_set_driver(host_driver_t *driver);
|
||||||
host_driver_t *host_get_driver(void);
|
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_system_report(void);
|
||||||
uint16_t host_last_consumer_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
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
Loading…
Reference in a new issue