66
77#define BACKLIGHT_IDLE_POLLING_RATE_MS 500
88
9+ static struct {
10+ uint64_t last_triggered ;
11+ bool idling ;
12+ bool alarm_is_set ;
13+ uint8_t backlight_level ;
14+ } self ;
15+
916void backlight_sync (void )
1017{
11- pwm_set_gpio_level (PIN_BKL , backlight_level * 0x80 );
18+ pwm_set_gpio_level (PIN_BKL , self . backlight_level * 0x80 );
1219}
1320
1421static int64_t idle_detector_timer_task (alarm_id_t id , void * user_data )
@@ -18,50 +25,50 @@ static int64_t idle_detector_timer_task(alarm_id_t id, void *user_data)
1825
1926 uint8_t current_dimming_delay = reg_get_value (REG_ID_BK3 );
2027 if (current_dimming_delay == 0 ) {
21- idling = true;
28+ self . idling = true;
2229 cancel_alarm (id );
23- alarm_is_set = false;
24- } else if (!idling && to_ms_since_boot (get_absolute_time ()) - last_triggered > (current_dimming_delay * 500 )) {
25- idling = true;
30+ self . alarm_is_set = false;
31+ } else if (!self . idling && to_ms_since_boot (get_absolute_time ()) - self . last_triggered > (current_dimming_delay * 500 )) {
32+ self . idling = true;
2633 cancel_alarm (id );
27- alarm_is_set = false;
28- backlight_level = reg_get_value (REG_ID_BK4 );
34+ self . alarm_is_set = false;
35+ self . backlight_level = reg_get_value (REG_ID_BK4 );
2936 backlight_sync ();
3037 }
3138 return BACKLIGHT_IDLE_POLLING_RATE_MS * 1000 ;
3239}
3340
3441void backlight_trigger (void )
3542{
36- idling = false;
37- last_triggered = to_ms_since_boot (get_absolute_time ());
43+ self . idling = false;
44+ self . last_triggered = to_ms_since_boot (get_absolute_time ());
3845 uint8_t desired_brightness = reg_get_value (REG_ID_BKL );
39- if (backlight_level < desired_brightness ) {
40- backlight_level = desired_brightness ;
46+ if (self . backlight_level < desired_brightness ) {
47+ self . backlight_level = desired_brightness ;
4148 backlight_sync ();
4249 }
43- if (!alarm_is_set ) {
50+ if (!self . alarm_is_set ) {
4451 add_alarm_in_ms (BACKLIGHT_IDLE_POLLING_RATE_MS , idle_detector_timer_task , NULL , true);
45- alarm_is_set = true;
52+ self . alarm_is_set = true;
4653 }
4754}
4855
4956void backlight_init (void )
5057{
51- idling = false;
58+ self . idling = false;
5259 gpio_set_function (PIN_BKL , GPIO_FUNC_PWM );
5360
5461 const uint slice_num = pwm_gpio_to_slice_num (PIN_BKL );
5562
5663 pwm_config config = pwm_get_default_config ();
5764 pwm_init (slice_num , & config , true);
5865
59- backlight_level = reg_get_value (REG_ID_BKL );
66+ self . backlight_level = reg_get_value (REG_ID_BKL );
6067 backlight_sync ();
61- last_triggered = 0 ;
68+ self . last_triggered = 0 ;
6269
6370 if (reg_get_value (REG_ID_BK3 ) > 0 ) {
6471 add_alarm_in_ms (BACKLIGHT_IDLE_POLLING_RATE_MS , idle_detector_timer_task , NULL , true);
65- alarm_is_set = true;
72+ self . alarm_is_set = true;
6673 }
6774}
0 commit comments