You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

193 lines
5.1 KiB

  1. /*
  2. Copyright 2013 Mathias Andersson <wraul@dbox.se>
  3. This program is free software: you can redistribute it and/or modify
  4. it under the terms of the GNU General Public License as published by
  5. the Free Software Foundation, either version 2 of the License, or
  6. (at your option) any later version.
  7. This program is distributed in the hope that it will be useful,
  8. but WITHOUT ANY WARRANTY; without even the implied warranty of
  9. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  10. GNU General Public License for more details.
  11. You should have received a copy of the GNU General Public License
  12. along with this program. If not, see <http://www.gnu.org/licenses/>.
  13. */
  14. #include "backlight.h"
  15. #include "eeconfig.h"
  16. #include "debug.h"
  17. backlight_config_t backlight_config;
  18. /** \brief Backlight initialization
  19. *
  20. * FIXME: needs doc
  21. */
  22. void backlight_init(void) {
  23. /* check signature */
  24. if (!eeconfig_is_enabled()) {
  25. eeconfig_init();
  26. }
  27. backlight_config.raw = eeconfig_read_backlight();
  28. if (backlight_config.level > BACKLIGHT_LEVELS) {
  29. backlight_config.level = BACKLIGHT_LEVELS;
  30. }
  31. backlight_set(backlight_config.enable ? backlight_config.level : 0);
  32. }
  33. /** \brief Backlight increase
  34. *
  35. * FIXME: needs doc
  36. */
  37. void backlight_increase(void) {
  38. if (backlight_config.level < BACKLIGHT_LEVELS) {
  39. backlight_config.level++;
  40. }
  41. backlight_config.enable = 1;
  42. eeconfig_update_backlight(backlight_config.raw);
  43. dprintf("backlight increase: %u\n", backlight_config.level);
  44. backlight_set(backlight_config.level);
  45. }
  46. /** \brief Backlight decrease
  47. *
  48. * FIXME: needs doc
  49. */
  50. void backlight_decrease(void) {
  51. if (backlight_config.level > 0) {
  52. backlight_config.level--;
  53. backlight_config.enable = !!backlight_config.level;
  54. eeconfig_update_backlight(backlight_config.raw);
  55. }
  56. dprintf("backlight decrease: %u\n", backlight_config.level);
  57. backlight_set(backlight_config.level);
  58. }
  59. /** \brief Backlight toggle
  60. *
  61. * FIXME: needs doc
  62. */
  63. void backlight_toggle(void) {
  64. bool enabled = backlight_config.enable;
  65. dprintf("backlight toggle: %u\n", enabled);
  66. if (enabled)
  67. backlight_disable();
  68. else
  69. backlight_enable();
  70. }
  71. /** \brief Enable backlight
  72. *
  73. * FIXME: needs doc
  74. */
  75. void backlight_enable(void) {
  76. if (backlight_config.enable) return; // do nothing if backlight is already on
  77. backlight_config.enable = true;
  78. if (backlight_config.raw == 1) // enabled but level == 0
  79. backlight_config.level = 1;
  80. eeconfig_update_backlight(backlight_config.raw);
  81. dprintf("backlight enable\n");
  82. backlight_set(backlight_config.level);
  83. }
  84. /** \brief Disable backlight
  85. *
  86. * FIXME: needs doc
  87. */
  88. void backlight_disable(void) {
  89. if (!backlight_config.enable) return; // do nothing if backlight is already off
  90. backlight_config.enable = false;
  91. eeconfig_update_backlight(backlight_config.raw);
  92. dprintf("backlight disable\n");
  93. backlight_set(0);
  94. }
  95. /** /brief Get the backlight status
  96. *
  97. * FIXME: needs doc
  98. */
  99. bool is_backlight_enabled(void) { return backlight_config.enable; }
  100. /** \brief Backlight step through levels
  101. *
  102. * FIXME: needs doc
  103. */
  104. void backlight_step(void) {
  105. backlight_config.level++;
  106. if (backlight_config.level > BACKLIGHT_LEVELS) {
  107. backlight_config.level = 0;
  108. }
  109. backlight_config.enable = !!backlight_config.level;
  110. eeconfig_update_backlight(backlight_config.raw);
  111. dprintf("backlight step: %u\n", backlight_config.level);
  112. backlight_set(backlight_config.level);
  113. }
  114. /** \brief Backlight set level
  115. *
  116. * FIXME: needs doc
  117. */
  118. void backlight_level(uint8_t level) {
  119. if (level > BACKLIGHT_LEVELS) level = BACKLIGHT_LEVELS;
  120. backlight_config.level = level;
  121. backlight_config.enable = !!backlight_config.level;
  122. eeconfig_update_backlight(backlight_config.raw);
  123. backlight_set(backlight_config.level);
  124. }
  125. /** \brief Get backlight level
  126. *
  127. * FIXME: needs doc
  128. */
  129. uint8_t get_backlight_level(void) { return backlight_config.level; }
  130. #ifdef BACKLIGHT_BREATHING
  131. /** \brief Backlight breathing toggle
  132. *
  133. * FIXME: needs doc
  134. */
  135. void backlight_toggle_breathing(void) {
  136. bool breathing = backlight_config.breathing;
  137. dprintf("backlight breathing toggle: %u\n", breathing);
  138. if (breathing)
  139. backlight_disable_breathing();
  140. else
  141. backlight_enable_breathing();
  142. }
  143. /** \brief Enable backlight breathing
  144. *
  145. * FIXME: needs doc
  146. */
  147. void backlight_enable_breathing(void) {
  148. if (backlight_config.breathing) return; // do nothing if breathing is already on
  149. backlight_config.breathing = true;
  150. eeconfig_update_backlight(backlight_config.raw);
  151. dprintf("backlight breathing enable\n");
  152. breathing_enable();
  153. }
  154. /** \brief Disable backlight breathing
  155. *
  156. * FIXME: needs doc
  157. */
  158. void backlight_disable_breathing(void) {
  159. if (!backlight_config.breathing) return; // do nothing if breathing is already off
  160. backlight_config.breathing = false;
  161. eeconfig_update_backlight(backlight_config.raw);
  162. dprintf("backlight breathing disable\n");
  163. breathing_disable();
  164. }
  165. /** \brief Get the backlight breathing status
  166. *
  167. * FIXME: needs doc
  168. */
  169. bool is_backlight_breathing(void) { return backlight_config.breathing; }
  170. #endif