/* * Copyright 2024 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "drivers/backlight.h" #include "process_management/pebble_process_md.h" #include "services/normal/activity/activity.h" #include "services/normal/timeline/peek.h" #include "shell/prefs.h" #include "util/uuid.h" #include void app_idle_timeout_start(void) { } void app_idle_timeout_refresh(void) { } void app_idle_timeout_stop(void) { } void watchface_start_low_power(bool enable) { } uint32_t backlight_get_timeout_ms(void) { return DEFAULT_BACKLIGHT_TIMEOUT_MS; } #define SDKSHELL_BACKLIGHT_ON_PERCENT 25 // Same as snowy bb2 uint16_t backlight_get_intensity(void) { return (BACKLIGHT_BRIGHTNESS_MAX * SDKSHELL_BACKLIGHT_ON_PERCENT / 100); } uint8_t backlight_get_intensity_percent(void) { return (backlight_get_intensity() * 100) / BACKLIGHT_BRIGHTNESS_MAX; } void backlight_set_timeout_ms(uint32_t timeout_ms) { } BacklightBehaviour backlight_get_behaviour(void) { return BacklightBehaviour_On; } bool backlight_is_enabled(void) { return true; } bool backlight_is_ambient_sensor_enabled(void) { return false; } bool backlight_is_motion_enabled(void) { return false; } #include "process_management/app_install_types.h" void worker_preferences_set_default_worker(AppInstallId id) { } AppInstallId worker_preferences_get_default_worker(void) { return INSTALL_ID_INVALID; } #if !CAPABILITY_HAS_SDK_SHELL4 const char *app_custom_get_title(AppInstallId id) { return NULL; } void customizable_app_protocol_msg_callback(void *session, const uint8_t* data, size_t length) { } #endif // Used by the alarm service to add alarm pins to the timeline const PebbleProcessMd* alarms_app_get_info(void) { static const PebbleProcessMdSystem s_alarms_app_info = { .common = { .main_func = NULL, // UUID: 67a32d95-ef69-46d4-a0b9-854cc62f97f9 .uuid = {0x67, 0xa3, 0x2d, 0x95, 0xef, 0x69, 0x46, 0xd4, 0xa0, 0xb9, 0x85, 0x4c, 0xc6, 0x2f, 0x97, 0xf9}, }, .name = "Alarms", }; return (const PebbleProcessMd*) &s_alarms_app_info; } // This stub isn't needed on tintin as it uses a different launcher #if !PLATFORM_TINTIN && !CAPABILITY_HAS_SDK_SHELL4 #include "apps/system_apps/launcher/launcher_app.h" const LauncherDrawState *launcher_app_get_draw_state(void) { return NULL; } #endif void analytics_external_update(void) { } bool shell_prefs_get_stationary_enabled(void) { return false; } bool shell_prefs_get_language_english(void) { return true; } void shell_prefs_set_language_english(bool english) { } void shell_prefs_toggle_language_english(void) { } void language_ui_display_changed(const char *lang_name) { } void timeline_peek_prefs_set_enabled(bool enabled) {} bool timeline_peek_prefs_get_enabled(void) { return true; } void timeline_peek_prefs_set_before_time(uint16_t before_time_m) {} uint16_t timeline_peek_prefs_get_before_time(void) { return (TIMELINE_PEEK_DEFAULT_SHOW_BEFORE_TIME_S / SECONDS_PER_MINUTE); } bool workout_utils_find_ongoing_activity_session(ActivitySession *session_out) { return false; } uint8_t activity_prefs_heart_get_resting_hr(void) { return 70; } uint8_t activity_prefs_heart_get_elevated_hr(void) { return 100; } uint8_t activity_prefs_heart_get_max_hr(void) { return 190; } uint8_t activity_prefs_heart_get_zone1_threshold(void) { return 130; } uint8_t activity_prefs_heart_get_zone2_threshold(void) { return 154; } uint8_t activity_prefs_heart_get_zone3_threshold(void) { return 172; }