Skip to content

Commit 3529eb5

Browse files
jplexerclaude
andcommitted
fw/services/common/accel_manager: add debug toggle for shake INFO logs
Add a "Shake Log Info" entry under Settings → System → Debugging that, when enabled, promotes accel shake detection logs from DEBUG to INFO so they are visible without a debug-level log filter. Defaults to disabled. Fixes FIRM-1626 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Signed-off-by: Joshua Jun <lets@throw.rocks>
1 parent 20ca8e6 commit 3529eb5

5 files changed

Lines changed: 37 additions & 0 deletions

File tree

src/fw/apps/system/settings/system.c

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,7 @@ enum {
6969
#if CAPABILITY_HAS_DYNAMIC_BACKLIGHT
7070
DebuggingItemDynamicBacklightMinThreshold,
7171
#endif
72+
DebuggingItemAccelShakeLogInfo,
7273
DebuggingItem_Count,
7374
};
7475

@@ -588,6 +589,7 @@ static const char* s_debugging_titles[DebuggingItem_Count] = {
588589
#if CAPABILITY_HAS_DYNAMIC_BACKLIGHT
589590
[DebuggingItemDynamicBacklightMinThreshold] = i18n_noop("Dyn BL Min Threshold"),
590591
#endif
592+
[DebuggingItemAccelShakeLogInfo] = i18n_noop("Shake Log Info"),
591593
};
592594

593595
static void prv_debugging_draw_row_callback(GContext* ctx, const Layer *cell_layer,
@@ -629,6 +631,10 @@ static void prv_debugging_draw_row_callback(GContext* ctx, const Layer *cell_lay
629631
subtitle_text = data->dyn_bl_min_threshold_buffer;
630632
}
631633
#endif
634+
else if (cell_index->row == DebuggingItemAccelShakeLogInfo) {
635+
subtitle_text = shell_prefs_get_accel_shake_log_info_enabled() ?
636+
i18n_get("Enabled", data) : i18n_get("Disabled", data);
637+
}
632638
menu_cell_basic_draw(ctx, cell_layer, title, subtitle_text, NULL);
633639
}
634640

@@ -673,6 +679,10 @@ static void prv_debugging_select_callback(MenuLayer *menu_layer,
673679
prv_dyn_bl_min_threshold_menu_push(data);
674680
break;
675681
#endif
682+
case DebuggingItemAccelShakeLogInfo:
683+
shell_prefs_set_accel_shake_log_info_enabled(
684+
!shell_prefs_get_accel_shake_log_info_enabled());
685+
break;
676686
default:
677687
WTF;
678688
}

src/fw/services/common/accel_manager/service.c

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -722,6 +722,13 @@ void accel_cb_shake_detected(IMUCoordinateAxis axis, int32_t direction) {
722722
return;
723723
}
724724

725+
extern bool shell_prefs_get_accel_shake_log_info_enabled(void);
726+
if (shell_prefs_get_accel_shake_log_info_enabled()) {
727+
PBL_LOG_INFO("Shake detected; axis=%d, direction=%" PRId32, axis, direction);
728+
} else {
729+
PBL_LOG_DBG("Shake detected; axis=%d, direction=%" PRId32, axis, direction);
730+
}
731+
725732
PebbleEvent e = {
726733
.type = PEBBLE_ACCEL_SHAKE_EVENT,
727734
.accel_tap = {

src/fw/shell/normal/prefs.c

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -218,11 +218,13 @@ static uint16_t s_timeline_peek_before_time_m =
218218

219219
#define PREF_KEY_POWER_MODE "powerMode"
220220
#define PREF_KEY_COREDUMP_ON_REQUEST "coredumpOnRequest"
221+
#define PREF_KEY_ACCEL_SHAKE_LOG_INFO "accelShakeLogInfo"
221222
#if CAPABILITY_HAS_APP_SCALING
222223
#define PREF_KEY_LEGACY_APP_RENDER_MODE "legacyAppRenderMode"
223224
#endif
224225
static uint8_t s_power_mode = PowerMode_HighPerformance;
225226
static bool s_coredump_on_request_enabled = false;
227+
static bool s_accel_shake_log_info_enabled = false;
226228
#if CAPABILITY_HAS_APP_SCALING
227229
static uint8_t s_legacy_app_render_mode = 1; // Default to scaled mode
228230
#endif
@@ -617,6 +619,11 @@ static bool prv_set_s_coredump_on_request_enabled(bool *enabled) {
617619
return true;
618620
}
619621

622+
static bool prv_set_s_accel_shake_log_info_enabled(bool *enabled) {
623+
s_accel_shake_log_info_enabled = *enabled;
624+
return true;
625+
}
626+
620627
#if CAPABILITY_HAS_APP_SCALING
621628
static bool prv_set_s_legacy_app_render_mode(uint8_t *mode) {
622629
if (*mode >= LegacyAppRenderModeCount) {
@@ -1685,6 +1692,14 @@ void shell_prefs_set_coredump_on_request(bool enabled) {
16851692
prv_pref_set(PREF_KEY_COREDUMP_ON_REQUEST, &enabled, sizeof(enabled));
16861693
}
16871694

1695+
bool shell_prefs_get_accel_shake_log_info_enabled(void) {
1696+
return s_accel_shake_log_info_enabled;
1697+
}
1698+
1699+
void shell_prefs_set_accel_shake_log_info_enabled(bool enabled) {
1700+
prv_pref_set(PREF_KEY_ACCEL_SHAKE_LOG_INFO, &enabled, sizeof(enabled));
1701+
}
1702+
16881703
#if CAPABILITY_HAS_APP_SCALING
16891704
LegacyAppRenderMode shell_prefs_get_legacy_app_render_mode(void) {
16901705
return (LegacyAppRenderMode)s_legacy_app_render_mode;

src/fw/shell/normal/prefs_values.h.inc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@
5151
#endif
5252
PREFS_MACRO(PREF_KEY_POWER_MODE, s_power_mode)
5353
PREFS_MACRO(PREF_KEY_COREDUMP_ON_REQUEST, s_coredump_on_request_enabled)
54+
PREFS_MACRO(PREF_KEY_ACCEL_SHAKE_LOG_INFO, s_accel_shake_log_info_enabled)
5455
#if CAPABILITY_HAS_APP_SCALING
5556
PREFS_MACRO(PREF_KEY_LEGACY_APP_RENDER_MODE, s_legacy_app_render_mode)
5657
#endif

src/fw/shell/prefs.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -139,6 +139,10 @@ void shell_prefs_set_power_mode(PowerMode mode);
139139
bool shell_prefs_can_coredump_on_request(void);
140140
void shell_prefs_set_coredump_on_request(bool enabled);
141141

142+
// When enabled, accel shake detection logs are emitted at INFO level instead of DEBUG.
143+
bool shell_prefs_get_accel_shake_log_info_enabled(void);
144+
void shell_prefs_set_accel_shake_log_info_enabled(bool enabled);
145+
142146
#if CAPABILITY_HAS_APP_SCALING
143147
// Legacy app rendering mode - whether to use bezel or scaling for legacy apps
144148
typedef enum LegacyAppRenderMode {

0 commit comments

Comments
 (0)