backlight-control.c 793 B

1234567891011121314151617181920212223242526272829
  1. #include <furi.h>
  2. #include <api-hal.h>
  3. #define BACKLIGHT_TIME 30000
  4. #define BACKLIGHT_FLAG_ACTIVITY 0x00000001U
  5. static void event_cb(const void* value, void* ctx) {
  6. osThreadFlagsSet((osThreadId_t)ctx, BACKLIGHT_FLAG_ACTIVITY);
  7. }
  8. int32_t backlight_control(void* p) {
  9. // open record
  10. PubSub* event_record = furi_record_open("input_events");
  11. subscribe_pubsub(event_record, event_cb, (void*)osThreadGetId());
  12. api_hal_light_set(LightBacklight, 0xFF);
  13. while(1) {
  14. // wait for event
  15. if(osThreadFlagsWait(BACKLIGHT_FLAG_ACTIVITY, osFlagsWaitAny, BACKLIGHT_TIME) ==
  16. BACKLIGHT_FLAG_ACTIVITY) {
  17. api_hal_light_set(LightBacklight, 0xFF);
  18. } else {
  19. api_hal_light_set(LightBacklight, 0x00);
  20. }
  21. }
  22. return 0;
  23. }