From 791d22ecf1314d332159cc2f3cbbdf5af2c1c04d Mon Sep 17 00:00:00 2001 From: Joshua Jun Date: Mon, 13 Oct 2025 17:15:31 +0200 Subject: [PATCH] fw/services/common: conditionally initialize accel_manager Only initialize accel_manager if the accelerometer driver successfully initialized. Signed-off-by: Joshua Jun --- src/fw/services/common/services_common.c | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/fw/services/common/services_common.c b/src/fw/services/common/services_common.c index 9dc063eb..039aed75 100644 --- a/src/fw/services/common/services_common.c +++ b/src/fw/services/common/services_common.c @@ -27,6 +27,7 @@ #ifdef MICRO_FAMILY_STM32F2 #include "services/common/legacy/factory_registry.h" #endif +#include "drivers/accel.h" #include "services/common/accel_manager.h" #include "services/common/bluetooth/bluetooth_persistent_storage.h" #include "services/common/comm_session/app_session_capabilities.h" @@ -42,13 +43,25 @@ #include "services/common/touch/touch.h" #include "services/common/vibe_pattern.h" #include "services/runlevel_impl.h" +#include "system/logging.h" #include "util/size.h" +#define LOG_DOMAIN "services_common" + void services_common_init(void) { firmware_update_init(); put_bytes_init(); poll_remote_init(); - accel_manager_init(); + + // Only initialize the accelerometer manager if the accelerometer driver + // successfully initialized. We test this by attempting to peek at a sample. + AccelDriverSample probe_sample; + if (accel_peek(&probe_sample) == 0) { + accel_manager_init(); + } else { + PBL_LOG(LOG_LEVEL_WARNING, "Accelerometer driver not initialized, skipping accel_manager_init"); + } + light_init(); cron_service_init();