Skip to content

Commit

Permalink
move backlight variable declarations from header to c file
Browse files Browse the repository at this point in the history
  • Loading branch information
DJFliX committed Jul 10, 2022
1 parent 5f38b9b commit f2c43e1
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 22 deletions.
41 changes: 24 additions & 17 deletions app/backlight.c
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,16 @@

#define BACKLIGHT_IDLE_POLLING_RATE_MS 500

static struct {
uint64_t last_triggered;
bool idling;
bool alarm_is_set;
uint8_t backlight_level;
} self;

void backlight_sync(void)
{
pwm_set_gpio_level(PIN_BKL, backlight_level * 0x80);
pwm_set_gpio_level(PIN_BKL, self.backlight_level * 0x80);
}

static int64_t idle_detector_timer_task(alarm_id_t id, void *user_data)
Expand All @@ -18,50 +25,50 @@ static int64_t idle_detector_timer_task(alarm_id_t id, void *user_data)

uint8_t current_dimming_delay = reg_get_value(REG_ID_BK3);
if (current_dimming_delay == 0) {
idling = true;
self.idling = true;
cancel_alarm(id);
alarm_is_set = false;
} else if (!idling && to_ms_since_boot(get_absolute_time()) - last_triggered > (current_dimming_delay * 500)) {
idling = true;
self.alarm_is_set = false;
} else if (!self.idling && to_ms_since_boot(get_absolute_time()) - self.last_triggered > (current_dimming_delay * 500)) {
self.idling = true;
cancel_alarm(id);
alarm_is_set = false;
backlight_level = reg_get_value(REG_ID_BK4);
self.alarm_is_set = false;
self.backlight_level = reg_get_value(REG_ID_BK4);
backlight_sync();
}
return BACKLIGHT_IDLE_POLLING_RATE_MS * 1000;
}

void backlight_trigger(void)
{
idling = false;
last_triggered = to_ms_since_boot(get_absolute_time());
self.idling = false;
self.last_triggered = to_ms_since_boot(get_absolute_time());
uint8_t desired_brightness = reg_get_value(REG_ID_BKL);
if (backlight_level < desired_brightness) {
backlight_level = desired_brightness;
if (self.backlight_level < desired_brightness) {
self.backlight_level = desired_brightness;
backlight_sync();
}
if (!alarm_is_set) {
if (!self.alarm_is_set) {
add_alarm_in_ms(BACKLIGHT_IDLE_POLLING_RATE_MS, idle_detector_timer_task, NULL, true);
alarm_is_set = true;
self.alarm_is_set = true;
}
}

void backlight_init(void)
{
idling = false;
self.idling = false;
gpio_set_function(PIN_BKL, GPIO_FUNC_PWM);

const uint slice_num = pwm_gpio_to_slice_num(PIN_BKL);

pwm_config config = pwm_get_default_config();
pwm_init(slice_num, &config, true);

backlight_level = reg_get_value(REG_ID_BKL);
self.backlight_level = reg_get_value(REG_ID_BKL);
backlight_sync();
last_triggered = 0;
self.last_triggered = 0;

if (reg_get_value(REG_ID_BK3) > 0) {
add_alarm_in_ms(BACKLIGHT_IDLE_POLLING_RATE_MS, idle_detector_timer_task, NULL, true);
alarm_is_set = true;
self.alarm_is_set = true;
}
}
5 changes: 0 additions & 5 deletions app/backlight.h
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,6 @@
#include <stdint.h>
#include <stdbool.h>

uint64_t last_triggered;
bool idling;
bool alarm_is_set;
uint8_t backlight_level;

void backlight_trigger(void);
void backlight_sync(void);
void backlight_init(void);

0 comments on commit f2c43e1

Please sign in to comment.