Add continous vibration for first triangle
This commit is contained in:
1 parent
272adbebcc
commit
7a955d0f3a
2 files changed
+9
-18
No files matched your search
@@ -24,7 +24,6 @@ Trigalarm is meant to be adapted to your needs with as little confusion as possi
|
||||
- There is a "Reset Alarm" button in the phone-side settings to help if you make an unsolvable alarm configuration by mistake.
|
||||
|
||||
## Some Neat Stuff
|
||||
- The vibration pattern is randomized. It derives the length of the three pulses from the angles in the generated triangle. Neat!
|
||||
- Some of the alarm scheduling code was taken from [Gentle Wake](https://github.com/SeaPea/GentleWake). It seems trusted by the community, so... I stole it! The beauty of open source, no AI needed!
|
||||
- A custom font was made to satisfy the need for something that looks like LECO but is monospaced. The version I made contains only numbers, period, and colon, but if you want to build off of it, [it's public](https://git.wetfence.xyz/RandyTheSilly/pebble-misc/src/branch/main/fonts) and easy to modify!
|
||||
|
||||
|
||||
+9
-17
@@ -67,10 +67,9 @@ static uint8_t s_selected_indices[3] = {9, 9, 9};
|
||||
static uint8_t s_countdown_int = 0;
|
||||
static char s_countdown_buf[4];
|
||||
static char s_progress_buf[9];
|
||||
static uint32_t s_vibe_segments[5];
|
||||
static VibePattern s_vibe_pattern;
|
||||
|
||||
// constants
|
||||
//// shared (setter+alarm)
|
||||
static const uint8_t s_edge_bar_height = ((PBL_DISPLAY_HEIGHT / 7) * 2);
|
||||
static const GRect s_top_bar_grect = GRect(0, 0, PBL_DISPLAY_WIDTH, s_edge_bar_height);
|
||||
static const GRect s_bottom_bar_grect = GRect(0, PBL_DISPLAY_HEIGHT - s_edge_bar_height, PBL_DISPLAY_WIDTH, s_edge_bar_height);
|
||||
@@ -86,6 +85,11 @@ static const char *s_tan_arr[2] = {"tan¯¹", "cot¯¹"};
|
||||
static const char *s_sin;
|
||||
static const char *s_cos;
|
||||
static const char *s_tan;
|
||||
static const uint32_t s_first_triangle_vibe_segments[] = {900};
|
||||
static const VibePattern s_first_triangle_vibe_pattern = {
|
||||
.durations = s_first_triangle_vibe_segments,
|
||||
.num_segments = ARRAY_LENGTH(s_first_triangle_vibe_segments),
|
||||
};
|
||||
|
||||
// alarm drop menu options
|
||||
static const char *s_options_function[3];
|
||||
@@ -424,20 +428,6 @@ static void update_for_new_triangle() {
|
||||
s_options_function[1] = s_cos;
|
||||
s_options_function[2] = s_tan;
|
||||
|
||||
// setup vibes
|
||||
static const uint32_t VIBE_ON_FLOOR = 120; // ensure motor is on long enough to be felt
|
||||
static const uint32_t VIBE_ON_SCALE = 4;
|
||||
static const uint32_t VIBE_GAP = 40;
|
||||
s_vibe_segments[0] = VIBE_ON_FLOOR + (uint32_t)s_triangle_layer->angle_A * VIBE_ON_SCALE;
|
||||
s_vibe_segments[1] = VIBE_GAP;
|
||||
s_vibe_segments[2] = VIBE_ON_FLOOR + (uint32_t)s_triangle_layer->angle_B * VIBE_ON_SCALE;
|
||||
s_vibe_segments[3] = VIBE_GAP;
|
||||
s_vibe_segments[4] = VIBE_ON_FLOOR + (uint32_t)s_triangle_layer->angle_C * VIBE_ON_SCALE;
|
||||
s_vibe_pattern = (VibePattern){
|
||||
.durations = s_vibe_segments,
|
||||
.num_segments = ARRAY_LENGTH(s_vibe_segments),
|
||||
};
|
||||
|
||||
// setup countdown
|
||||
s_countdown_int = settings.TriangleSecsMin + ((settings.TriangleCount - s_current_triangle_num) * settings.TriangleSecsStep);
|
||||
snprintf(s_countdown_buf, sizeof(s_countdown_buf), "%03u", s_countdown_int);
|
||||
@@ -450,6 +440,9 @@ static void update_for_new_triangle() {
|
||||
|
||||
static void alarm_seconds_handler(struct tm *tick_time, TimeUnits units_changed) {
|
||||
s_countdown_int--;
|
||||
if (s_current_triangle_num == 1) {
|
||||
vibes_enqueue_custom_pattern(s_first_triangle_vibe_pattern);
|
||||
}
|
||||
snprintf(s_countdown_buf, sizeof(s_countdown_buf), "%03u", s_countdown_int);
|
||||
text_layer_set_text(s_countdown_txt_layer, s_countdown_buf);
|
||||
if (s_countdown_int == 0) {
|
||||
@@ -742,7 +735,6 @@ static void alarm_window_load() {
|
||||
}
|
||||
|
||||
static void alarm_window_unload() {
|
||||
vibes_cancel();
|
||||
tick_timer_service_unsubscribe();
|
||||
text_layer_destroy(s_countdown_txt_layer);
|
||||
window_destroy(s_drop_window);
|
||||
|
||||
Reference in new issue
Block a user