forked from m000c400/Mitsubishi-CN105-Protocol-Decode
-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathMELCloudDecoder.h
101 lines (82 loc) · 3.96 KB
/
MELCloudDecoder.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
#ifndef MELCLOUDDECODER_h
#define MELCLOUDDECODER_h
#include <stdint.h>
#include <time.h>
#include <string.h>
#include "EcodanDecoder.h" // To get some of the definitions
typedef struct _MelCloudMessgeStruct {
uint8_t SyncByte;
uint8_t PacketType;
uint8_t Preamble[PREAMBLESIZE];
uint8_t PayloadSize;
uint8_t Payload[MAXDATABLOCKSIZE];
uint8_t Checksum;
} MelCloudMessgeStruct;
typedef struct _MelCloudStatus {
uint8_t ReplyNow, ActiveMessage, Write_To_Melcloud_OK;
uint8_t ConnectRequest, MELRequest1, MELRequest2;
} MelCloudStatus;
class MELCLOUDDECODER {
public:
MELCLOUDDECODER(void);
uint8_t Process(uint8_t c);
void CreateBlankTxMessage(uint8_t PacketType, uint8_t PayloadSize);
void SetPayloadByte(uint8_t Data, uint8_t Location);
uint8_t PrepareTxCommand(uint8_t *Buffer);
MelCloudStatus Status;
protected:
private:
MessageStruct RxMessage;
MessageStruct TxMessage;
uint8_t Preamble[PREAMBLESIZE];
uint8_t CheckForSyncMsg1(MessageStruct *Message, uint8_t c);
uint8_t CheckForSyncMsg2(MessageStruct *Message, uint8_t c);
uint8_t BuildRxMessage(MessageStruct *Message, uint8_t c);
void CreateBlankMessageTemplate(MessageStruct *Message, uint8_t PacketType, uint8_t PayloadSize);
uint8_t PrepareCommand(MessageStruct *Message, uint8_t *Buffer);
uint8_t CheckSum(uint8_t *Buffer, uint8_t len);
void Process0x5A(uint8_t *Payload, MelCloudStatus *Status);
void Process0xFF(uint8_t *Payload, MelCloudStatus *Status, uint8_t type);
void Process0x01(uint8_t *Payload, MelCloudStatus *Status);
void Process0x02(uint8_t *Payload, MelCloudStatus *Status);
void Process0x03(uint8_t *Payload, MelCloudStatus *Status);
void Process0x04(uint8_t *Payload, MelCloudStatus *Status);
void Process0x05(uint8_t *Payload, MelCloudStatus *Status);
void Process0x06(uint8_t *Payload, MelCloudStatus *Status);
void Process0x07(uint8_t *Payload, MelCloudStatus *Status);
void Process0x09(uint8_t *Payload, MelCloudStatus *Status);
void Process0x0B(uint8_t *Payload, MelCloudStatus *Status);
void Process0x0C(uint8_t *Payload, MelCloudStatus *Status);
void Process0x0D(uint8_t *Payload, MelCloudStatus *Status);
void Process0x0E(uint8_t *Payload, MelCloudStatus *Status);
void Process0x0F(uint8_t *Payload, MelCloudStatus *Status);
void Process0x10(uint8_t *Payload, MelCloudStatus *Status);
void Process0x11(uint8_t *Payload, MelCloudStatus *Status);
void Process0x13(uint8_t *Payload, MelCloudStatus *Status);
void Process0x14(uint8_t *Payload, MelCloudStatus *Status);
void Process0x15(uint8_t *Payload, MelCloudStatus *Status);
void Process0x16(uint8_t *Payload, MelCloudStatus *Status);
void Process0x17(uint8_t *Payload, MelCloudStatus *Status);
void Process0x18(uint8_t *Payload, MelCloudStatus *Status);
void Process0x19(uint8_t *Payload, MelCloudStatus *Status);
void Process0x1a(uint8_t *Payload, MelCloudStatus *Status);
void Process0x1b(uint8_t *Payload, MelCloudStatus *Status);
void Process0x1c(uint8_t *Payload, MelCloudStatus *Status);
void Process0x1d(uint8_t *Payload, MelCloudStatus *Status);
void Process0x1e(uint8_t *Payload, MelCloudStatus *Status);
void Process0x1f(uint8_t *Payload, MelCloudStatus *Status);
void Process0x20(uint8_t *Payload, MelCloudStatus *Status);
void Process0x26(uint8_t *Payload, MelCloudStatus *Status);
void Process0x27(uint8_t *Payload, MelCloudStatus *Status);
void Process0x28(uint8_t *Payload, MelCloudStatus *Status);
void Process0x29(uint8_t *Payload, MelCloudStatus *Status);
void Process0xA1(uint8_t *Payload, MelCloudStatus *Status);
void Process0xA2(uint8_t *Payload, MelCloudStatus *Status);
void Process0xC9(uint8_t *Payload, MelCloudStatus *Status);
void Process0x32(uint8_t *Payload, MelCloudStatus *Status);
void Process0x33(uint8_t *Payload, MelCloudStatus *Status);
void Process0x34(uint8_t *Payload, MelCloudStatus *Status);
void Process0x35(uint8_t *Payload, MelCloudStatus *Status);
void WriteOK(uint8_t *Payload, MelCloudStatus *Status);
};
#endif