-
Notifications
You must be signed in to change notification settings - Fork 1
/
esp-phillips-3200.h
103 lines (88 loc) · 2.69 KB
/
esp-phillips-3200.h
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
#ifndef PHILLIPS_3200
#define PHILLIPS_3200
#if defined(ESP8266)
#include <SoftwareSerial.h>
#else
#include <HardwareSerial.h>
#endif
#include <string>
#include "Arduino.h"
#if defined(ESP8266)
#ifndef RX2_PIN
#define RX2_PIN 14 // Rx from display
#endif
#ifndef TX2_PIN
#define TX2_PIN 12 // Tx not used
#endif
#ifndef NPN_E_PIN
#define NPN_E_PIN 13 // Gnd for display (to switch it on and off)
#endif
#else
#ifndef RX2_PIN
#define RX2_PIN 16 // Rx from display
#endif
#ifndef TX2_PIN
#define TX2_PIN 17 // Tx not used
#endif
#ifndef NPN_E_PIN
#define NPN_E_PIN 23 // Gnd for display (to switch it on and off)
#endif
#endif
#define MachineSerial Serial // UART0
const size_t _machine_cmd_buf_size = 18;
class Phillips3200 {
public:
#if defined(ESP8266)
SoftwareSerial DisplayOutSerial = SoftwareSerial(RX2_PIN, TX2_PIN);
#else
HardwareSerial DisplayOutSerial = HardwareSerial(2); // UART2
#endif
/* curent state */
bool current_power_status = false;
std::string current_machine_status = "";
std::string current_brew = "";
uint8_t current_strength_level = 0;
uint8_t current_grinder_type = 0;
uint8_t current_water_level = 0;
uint8_t current_milk_level = 0;
/* hooks */
void setup(std::function<void ()> on_machine_state_changed);
void loop();
/* machine_cmd */
void send_cmd(const std::string &command);
private:
/* machine_cmd */
void _send_buf(const byte buf_command[]);
void _send_power_on();
/* display_out */
void _display_out_loop();
/* machine_out */
std::function<void ()> _on_machine_state_changed;
char _current_machine_cmd_buf[_machine_cmd_buf_size + 2];
char _prev_machine_cmd_buf[_machine_cmd_buf_size + 2];
size_t _machine_cmd_buf_idx = 0;
void _on_machine_out_buffer_changed();
void _machine_out_loop();
/* machine_states */
uint8_t machine_states_get_level_from_byte(byte value);
uint8_t machine_states_get_grinder_from_byte(byte mode);
std::string machine_states_get_machine_status_from_buf(char *buffer);
std::string machine_states_get_brew_from_buf(char *buffer);
static byte _buf_power_on[12];
static byte _buf_power_on1[12];
static byte _buf_power_off[12];
static byte _buf_espresso[12];
static byte _buf_coffee[12];
static byte _buf_americano[12];
static byte _buf_cappuccino[12];
static byte _buf_latte[12];
static byte _buf_hot_water[12];
static byte _buf_coffee_strength_level[12];
static byte _buf_coffee_water_level[12];
static byte _buf_coffee_milk_level[12];
static byte _buf_aqua_clean[12];
static byte _buf_calc_clean[12];
static byte _buf_start_pause[12];
static byte _buf_request_info[12];
};
#endif