-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathespresso_guide.h
More file actions
146 lines (110 loc) · 3.03 KB
/
espresso_guide.h
File metadata and controls
146 lines (110 loc) · 3.03 KB
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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
/*
EspressoGuide
Copyright (C) 2015 Leonid Lezner
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef __ESPRESSO_GUIDE_H_
#define __ESPRESSO_GUIDE_H_
#include <stdint.h>
#define MEAS_DATA_MAXLEN 8
typedef enum __screen_type
{
SCREEN_WELCOME = 0,
SCREEN_BREW,
SCREEN_IDLE,
SCREEN_ERROR,
SCREEN_TEMPERATURE
} SCREEN_TYPE;
typedef enum __shot_state
{
SHOT_IDLE = 0,
SHOT_BREWING
} SHOT_STATE;
typedef enum __error_type
{
ERROR_NONE = 0,
ERROR_SENSOR_T1,
ERROR_SENSOR_T2
} ERROR_TYPE;
typedef struct __time
{
unsigned int hours;
unsigned int minutes;
unsigned int seconds;
} TIME;
typedef struct __point
{
uint16_t x;
uint16_t y;
} POINT;
typedef struct __meas_data
{
double values[MEAS_DATA_MAXLEN];
unsigned int length;
double average;
unsigned char full;
double last_sum;
double slope;
} MEAS_DATA;
typedef struct __current_state
{
/* Unfiltered temperature value */
double temperature_fast;
/* Filtered, slow temperature value */
double temperature;
/* last temperature value */
double last_temperature;
/* Raw value if the temperature sensor 1 */
double t1;
/* Raw value if the temperature sensor 2 */
double t2;
/* Pump state (1 = on, 0 = off) */
unsigned char pump;
/* Current error */
ERROR_TYPE error;
/* Current screen */
SCREEN_TYPE screen;
/* Time since power on */
TIME run_time;
/* Time since the pump was turned on */
TIME brew_time;
/* Time the machine was in idle */
TIME idle_time;
/* Shot was done */
SHOT_STATE shot_state;
/* Temperature trend (-1, 0, 1) */
int temp_trend;
/* Counter for blinking animation */
unsigned char blink_counter;
/* Counter for the welcome screen */
unsigned char welcome_counter;
/* Temperature data */
MEAS_DATA temp_data;
/* Count sensor errors until going to error state */
unsigned char error_counter[2];
/* T1 sensor connection state */
unsigned char tempSensorT1Available;
/* T2 sensor connection state */
unsigned char tempSensorT2Available;
} CURRENT_STATE;
typedef void (*ACTION_COUNTER_CALLBACK)(CURRENT_STATE*);
typedef struct __action_counter
{
unsigned long count;
unsigned int interval;
unsigned char elapsed;
ACTION_COUNTER_CALLBACK callback;
} ACTION_COUNTER;
#define DRAW_ICON(name, x, y) drawIcon(icon_data_##name, icon_count_##name, x, y);
#define ICON_WIDTH(name) icon_width_##name
#define printv(name) Serial.print(#name); Serial.print(": "); Serial.println(name);
#endif