/
chat.h
76 lines (65 loc) · 1.17 KB
/
chat.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
#ifndef CHAT_H
#define CHAT_H
#include <Arduino.h>
enum class ChatSource {
Debug,
Main,
SimonSays,
Password,
Buttons,
Clock,
Wires,
Hieroglyphs,
BinaryCounter,
Maze,
Keypad,
Mastermind,
Memory,
LAST_VALUE
};
enum class MessageType
{
Debug,
Reset,
Disarm,
Strike,
Detonate,
Difficulty,
Time1,
Time2,
Time3,
Time4,
Win,
Quote,
LAST_VALUE
};
const uint8_t DIFFICULTY_NO_FAIL = 0;
const uint8_t DIFFICULTY_EASY = 1;
const uint8_t DIFFICULTY_NORMAL = 2;
const uint8_t DIFFICULTY_HEROIC = 3;
const uint8_t DIFFICULTY_LEGENDARY = 4;
const MessageType timeMessages[] = { MessageType::Time1, MessageType::Time2, MessageType::Time3, MessageType::Time4 };
struct ChatMessage
{
uint8_t sender;
MessageType message;
uint8_t data;
};
class Chat
{
private:
short me;
HardwareSerial *serial;
bool handleDebugMessage(ChatMessage *msg);
bool recover(uint8_t *buf);
protected:
virtual void write(uint8_t *buf, int len);
public:
Chat(ChatSource id);
void begin();
void send(MessageType message, uint8_t data = 0);
bool receive(ChatMessage* message);
void debug(String s);
void reset();
};
#endif