]> git.donarmstrong.com Git - qmk_firmware.git/blobdiff - tmk_core/common/backlight.h
Extend maximum number of backlight levels to 31 (#6351)
[qmk_firmware.git] / tmk_core / common / backlight.h
index f5730926745c579426abd896010b2745193aff59..0a38771206071571048e2734e7015c5875b930ed 100644 (file)
@@ -15,17 +15,24 @@ You should have received a copy of the GNU General Public License
 along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
 
-#ifndef BACKLIGHT_H
-#define BACKLIGHT_H
+#pragma once
 
 #include <stdint.h>
 #include <stdbool.h>
 
+#ifndef BACKLIGHT_LEVELS
+  #define BACKLIGHT_LEVELS 3
+#elif BACKLIGHT_LEVELS > 31
+  #error "Maximum value of BACKLIGHT_LEVELS is 31"
+#endif
+
 typedef union {
     uint8_t raw;
     struct {
-        bool    enable :1;
-        uint8_t level  :7;
+        bool    enable    :1;
+        bool    breathing :1;
+        uint8_t reserved  :1; // Reserved for possible future backlight modes
+        uint8_t level     :5;
     };
 } backlight_config_t;
 
@@ -33,9 +40,19 @@ void backlight_init(void);
 void backlight_increase(void);
 void backlight_decrease(void);
 void backlight_toggle(void);
+void backlight_enable(void);
+void backlight_disable(void);
+bool is_backlight_enabled(void);
 void backlight_step(void);
 void backlight_set(uint8_t level);
 void backlight_level(uint8_t level);
 uint8_t get_backlight_level(void);
 
+#ifdef BACKLIGHT_BREATHING
+void backlight_toggle_breathing(void);
+void backlight_enable_breathing(void);
+void backlight_disable_breathing(void);
+bool is_backlight_breathing(void);
+void breathing_enable(void);
+void breathing_disable(void);
 #endif