Zap user if not responding to main alarm

This commit is contained in:
RandyTheSilly committed 2026-08-27 13:40:49 -04:00
1 parent ba25924451
commit 23ff3c1941
6 files changed
+64 -26

No files matched your search

+26 -9
View File
@@ -61,9 +61,10 @@ static bool s_skip_current_day = false;
static WakeupReason s_alarm_reason;
static uint8_t s_solution_indices[3];
static uint8_t s_selected_indices[3] = {9, 9, 9};
static uint8_t s_main_countdown_till_zap;
static uint8_t s_awareness_countdown_int = 0;
static char s_awareness_countdown_buf[4];
static uint8_t s_awareness_zap_repeat_countdown = 0;
static uint8_t s_alarm_zap_repeat_countdown = 0;
static uint8_t s_awareness_zap_intensity = 0;
static bool s_hide_countdown = true;
static uint32_t s_vibe_segments[5];
@@ -296,8 +297,9 @@ static void inbox_received_handler(DictionaryIterator *iter, void *context) {
apply_uint8_from_tuple(iter, MESSAGE_KEY_PKJS_PAVLOK_ENABLE, &settings.PavlokEnabled);
apply_uint8_from_tuple(iter, MESSAGE_KEY_PKJS_PAVLOK_ZAP_INTERVAL, &settings.PavlokIntervalSeconds);
apply_uint8_from_tuple(iter, MESSAGE_KEY_PKJS_PAVLOK_ZAP_MIN, &settings.PavlokMin);
apply_uint8_from_tuple(iter, MESSAGE_KEY_PKJS_PAVLOK_ZAP_STEP, &settings.PavlokStep);
apply_uint8_from_tuple(iter, MESSAGE_KEY_PKJS_PAVLOK_ZAP_MAX, &settings.PavlokMax);
apply_uint8_from_tuple(iter, MESSAGE_KEY_PKJS_PAVLOK_ZAP_STEP, &settings.PavlokStep);
apply_uint8_from_tuple(iter, MESSAGE_KEY_PKJS_PAVLOK_ZAP_MAIN_DELAY, &settings.PavlokMainDelay);
apply_uint8_from_tuple(iter, MESSAGE_KEY_PKJS_AWARENESS_TIME_GAP, &settings.AwarenessTimeGapMinutes);
apply_uint8_from_tuple(iter, MESSAGE_KEY_PKJS_AWARENESS_TIME_LIMIT, &settings.AwarenessTimeLimitSeconds);
if (settings.PavlokMax <= settings.PavlokMin) {
@@ -329,6 +331,19 @@ static void send_zap(uint8_t intensity) {
////////////////////// ALARM //////////////////////
static void main_alarm_seconds_handler(struct tm *tick_time, TimeUnits units_changed) {
if (s_main_countdown_till_zap > 0) {
s_main_countdown_till_zap--;
if (s_main_countdown_till_zap == 0) {
send_zap(settings.PavlokMin);
s_alarm_zap_repeat_countdown = settings.PavlokIntervalSeconds;
}
} else if (s_alarm_zap_repeat_countdown > 0) {
s_alarm_zap_repeat_countdown--;
if (s_alarm_zap_repeat_countdown == 0) {
send_zap(settings.PavlokMin);
s_alarm_zap_repeat_countdown = settings.PavlokIntervalSeconds;
}
}
vibes_enqueue_custom_pattern(s_vibe_pattern);
}
@@ -339,14 +354,14 @@ static void awareness_alarm_seconds_handler(struct tm *tick_time, TimeUnits unit
text_layer_set_text(s_countdown_txt_layer, s_awareness_countdown_buf);
if (s_awareness_countdown_int == 0) {
send_zap(s_awareness_zap_intensity);
s_awareness_zap_repeat_countdown = settings.PavlokIntervalSeconds;
s_alarm_zap_repeat_countdown = settings.PavlokIntervalSeconds;
}
} else {
if (s_awareness_zap_repeat_countdown > 0) {
s_awareness_zap_repeat_countdown--;
if (s_awareness_zap_repeat_countdown == 0) {
if (s_alarm_zap_repeat_countdown > 0) {
s_alarm_zap_repeat_countdown--;
if (s_alarm_zap_repeat_countdown == 0) {
send_zap(s_awareness_zap_intensity);
s_awareness_zap_repeat_countdown = settings.PavlokIntervalSeconds;
s_alarm_zap_repeat_countdown = settings.PavlokIntervalSeconds;
}
}
layer_set_hidden(text_layer_get_layer(s_countdown_txt_layer), s_hide_countdown);
@@ -754,9 +769,9 @@ static void alarm_window_load() {
text_layer_set_background_color(s_countdown_txt_layer, GColorClear);
text_layer_set_text_color(s_countdown_txt_layer, GColorWhite);
text_layer_set_text_alignment(s_countdown_txt_layer, GTextAlignmentCenter);
s_alarm_zap_repeat_countdown = 0;
if (s_alarm_reason == WAKE_AWARENESS_ALARM || s_alarm_reason == WAKE_RECOVERY_AWARENESS_ALARM) {
s_awareness_countdown_int = settings.AwarenessTimeLimitSeconds;
s_awareness_zap_repeat_countdown = 0;
text_layer_set_font(s_countdown_txt_layer, s_font_lecoish_small);
snprintf(s_awareness_countdown_buf, sizeof(s_awareness_countdown_buf), "%03u", s_awareness_countdown_int);
text_layer_set_text(s_countdown_txt_layer, s_awareness_countdown_buf);
@@ -766,6 +781,7 @@ static void alarm_window_load() {
tick_timer_service_subscribe(SECOND_UNIT, awareness_alarm_seconds_handler);
} else {
s_awareness_countdown_int = 0;
s_main_countdown_till_zap = settings.PavlokMainDelay;
text_layer_set_font(s_countdown_txt_layer, s_font_mansalva_small);
text_layer_set_text(s_countdown_txt_layer, "🏁 hold select 🏁");
layer_add_child(window_layer, text_layer_get_layer(s_countdown_txt_layer));
@@ -1067,8 +1083,9 @@ static void init() {
settings.PavlokEnabled = false;
settings.PavlokIntervalSeconds = 10;
settings.PavlokMin = 30;
settings.PavlokStep = 10;
settings.PavlokMax = 60;
settings.PavlokStep = 10;
settings.PavlokMainDelay = 60;
settings.AwarenessTimeGapMinutes = 9;
settings.AwarenessTimeLimitSeconds = 30;
}