mirror of
				https://github.com/mfulz/qmk_firmware.git
				synced 2025-10-31 05:12:33 +01:00 
			
		
		
		
	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
					
				| @ -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…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Konstantin Đorđević
						Konstantin Đorđević