summaryrefslogtreecommitdiff
path: root/src/c/fastforge.h
blob: d7c4b9b3fe91973f4759ea9f1a7044a038f9ab6e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#ifndef FASTFORGE_H
#define FASTFORGE_H

#include <pebble.h>

typedef struct {
  time_t start_time;
  time_t end_time;           // 0 = currently running
  uint16_t target_minutes;
  char note[32];
  uint8_t max_stage_reached; // 0=none, 1=12h, 2=18h, 3=24h+
} FastEntry;

typedef struct {
  uint16_t current_streak;
  uint16_t longest_streak;
  time_t last_completed_fast_end;
} StreakData;

#define MAX_FASTS 64
#define DEFAULT_TARGET_MINUTES (16 * 60)

#define KEY_HISTORY_COUNT 1
#define KEY_HISTORY_DATA 2
#define KEY_CURRENT_FAST 3
#define KEY_TARGET_MIN 4
#define KEY_STREAK_DATA 5

extern FastEntry history[MAX_FASTS];
extern int history_count;
extern FastEntry current_fast;
extern uint16_t global_target_minutes;
extern StreakData streak_data;
extern AppTimer *alarm_timer;
extern time_t target_time;

void save_all_data(void);
void load_all_data(void);
bool fast_is_running(void);
bool fast_start(uint16_t preset_target_minutes);
bool fast_stop(void);

#endif