backlight-control.c 938 B

123456789101112131415161718192021222324252627282930
  1. #include "flipper.h"
  2. static void event_cb(const void* value, size_t size, void* ctx) {
  3. xSemaphoreGive((SemaphoreHandle_t*)ctx);
  4. }
  5. const uint32_t BACKLIGHT_TIME = 10000;
  6. void backlight_control(void* p) {
  7. // TODO use FURI
  8. HAL_GPIO_WritePin(DISPLAY_BACKLIGHT_GPIO_Port, DISPLAY_BACKLIGHT_Pin, GPIO_PIN_SET);
  9. StaticSemaphore_t event_descriptor;
  10. SemaphoreHandle_t update = xSemaphoreCreateCountingStatic(255, 0, &event_descriptor);
  11. // open record
  12. furi_open_deprecated("input_events", false, false, event_cb, NULL, (void*)update);
  13. // we ready to work
  14. furiac_ready();
  15. while(1) {
  16. // wait for event
  17. if(xSemaphoreTake(update, BACKLIGHT_TIME) == pdTRUE) {
  18. HAL_GPIO_WritePin(DISPLAY_BACKLIGHT_GPIO_Port, DISPLAY_BACKLIGHT_Pin, GPIO_PIN_SET);
  19. } else {
  20. HAL_GPIO_WritePin(DISPLAY_BACKLIGHT_GPIO_Port, DISPLAY_BACKLIGHT_Pin, GPIO_PIN_RESET);
  21. }
  22. }
  23. }