This commit is contained in:
Ken Van Hoeylandt 2026-07-24 12:18:27 +02:00
parent abc42be9be
commit c903c5c432
5 changed files with 17 additions and 4 deletions

View File

@ -10,6 +10,7 @@
#include <tactility/time.h> #include <tactility/time.h>
#include <cstring> #include <cstring>
#include <cstdlib>
namespace gps_ublox { namespace gps_ublox {

View File

@ -406,7 +406,7 @@ void run(Module* dtsModules[], DtsDevice dtsDevices[]) {
}); });
check(module_construct(&lvgl_module) == ERROR_NONE); check(module_construct(&lvgl_module) == ERROR_NONE);
check(module_add(&lvgl_module) == ERROR_NONE); check(module_add(&lvgl_module) == ERROR_NONE);
module_start(&lvgl_module); check(module_start(&lvgl_module) == ERROR_NONE);
registerAndStartSecondaryServices(); registerAndStartSecondaryServices();

View File

@ -22,6 +22,7 @@ class KeyboardIdleService final : public Service {
bool keyboardDimmed = false; bool keyboardDimmed = false;
settings::keyboard::KeyboardSettings cachedKeyboardSettings; settings::keyboard::KeyboardSettings cachedKeyboardSettings;
// TODO: This only works for the fist active keyboard. Update it so it works for all keyboards with a backlight.
static Device* getKeyboardBacklight() { static Device* getKeyboardBacklight() {
::Device* keyboard; ::Device* keyboard;
if (device_get_first_active_by_type(&KEYBOARD_TYPE, &keyboard) == ERROR_NONE) { if (device_get_first_active_by_type(&KEYBOARD_TYPE, &keyboard) == ERROR_NONE) {
@ -31,13 +32,19 @@ class KeyboardIdleService final : public Service {
return backlight; // WARNING: did not increase refcount return backlight; // WARNING: did not increase refcount
} }
// TODO: Remove after all drivers are migrated // TODO: Remove after all drivers are migrated
return device_find_by_name("keyboard_backlight"); ::Device* backlight;
if (device_get_by_name("keyboard_backlight", &backlight) != ERROR_NONE) {
return nullptr;
}
return backlight;
} }
void setKeyboardBacklightBrightness(uint8_t brightness) { void setKeyboardBacklightBrightness(uint8_t brightness) {
Device* backlight = getKeyboardBacklight(); Device* backlight = getKeyboardBacklight();
if (backlight != nullptr) { if (backlight != nullptr) {
backlight_set_brightness(backlight, brightness); backlight_set_brightness(backlight, brightness);
device_put(backlight);
} }
} }
@ -50,6 +57,9 @@ class KeyboardIdleService final : public Service {
if (lvgl_try_lock(100)) { if (lvgl_try_lock(100)) {
inactive_ms = lv_display_get_inactive_time(nullptr); inactive_ms = lv_display_get_inactive_time(nullptr);
lvgl_unlock(); lvgl_unlock();
} else {
// Assume it's not used
inactive_ms = 100;
} }
// Handle keyboard backlight // Handle keyboard backlight

View File

@ -388,7 +388,7 @@ error_t device_get_first_by_type(const struct DeviceType* type, struct Device**
* @param[in] type non-null device type pointer * @param[in] type non-null device type pointer
* @param[out] out_device receives the found device on success; untouched on failure * @param[out] out_device receives the found device on success; untouched on failure
* @retval ERROR_NOT_FOUND if no started device of that type exists * @retval ERROR_NOT_FOUND if no started device of that type exists
* @retval ERROR_NONE on success; caller must call device_put(*out_device) exactly once * @retval ERROR_NONE if a started device of that type exists; must call device_put() exactly once afterwards.
*/ */
error_t device_get_first_active_by_type(const struct DeviceType* type, struct Device** out_device); error_t device_get_first_active_by_type(const struct DeviceType* type, struct Device** out_device);
@ -397,7 +397,7 @@ error_t device_get_first_active_by_type(const struct DeviceType* type, struct De
* *
* @param[in] type non-null device type pointer * @param[in] type non-null device type pointer
* @retval ERROR_NOT_FOUND if no started device of that type exists * @retval ERROR_NOT_FOUND if no started device of that type exists
* @retval ERROR_NONE on success; caller must call device_put(*out_device) exactly once * @retval ERROR_NONE if a started device of that type exists
*/ */
bool device_has_active_by_type(const struct DeviceType* type); bool device_has_active_by_type(const struct DeviceType* type);

View File

@ -40,6 +40,7 @@ struct KeyboardApi {
/** /**
* @brief Returns the baclight if the keyboard has one. * @brief Returns the baclight if the keyboard has one.
* @warning Returns a referenced device. Must call device_put() afterwards.
* @param[in] device the keyboard device * @param[in] device the keyboard device
* @param[out] backlight_device the output backlight device * @param[out] backlight_device the output backlight device
* @retval ERROR_NONE when the backlight_device was set * @retval ERROR_NONE when the backlight_device was set
@ -55,6 +56,7 @@ error_t keyboard_read_key(struct Device* device, struct KeyboardKeyData* data);
/** /**
* @brief Returns the backlight if the keyboard has one. * @brief Returns the backlight if the keyboard has one.
* @warning Returns a referenced device. Must call device_put() afterwards.
* @param[in] device the keyboard device * @param[in] device the keyboard device
* @param[out] backlight_device the output backlight device * @param[out] backlight_device the output backlight device
* @retval ERROR_NONE when the backlight_device was set * @retval ERROR_NONE when the backlight_device was set