-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathHostComm.h
81 lines (56 loc) · 1.46 KB
/
HostComm.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
#ifndef HOSTCOMM_H_9VL69MSF
#define HOSTCOMM_H_9VL69MSF
#include <inttypes.h>
#include "RingBuffer.h"
#include "Packet.h"
#include "config.h"
#include "Commands.h"
#define PACKET_START_BYTE 0xD5
enum HostState
{
WAIT_PACKET,
PACKET_LEN,
PACKET_PAYLOAD,
PACKET_CRC,
};
class HostComm
{
public:
HostComm();
void update();
void processCommandBuffer();
bool hasFullPacket() { return false; }
Packet& getPacket() { return mPacket; }
Packet& getReplyPacket() { return mReplyPacket; }
void updateSlaveWaitState();
protected:
void processPacket();
void sendReply(HostReply r);
void sendReply();
uint8_t mReceiveBuffer[HOST_RECEIVE_BUFFER_SIZE];
uint8_t mReplyBuffer[HOST_REPLY_BUFFER_SIZE];
uint8_t mSlaveBuffer[HOST_SLAVE_BUFFER_SIZE];
uint8_t mSlaveReplyBuffer[HOST_SLAVE_REPLY_BUFFER_SIZE];
uint8_t mCommandBuf[COMMAND_BUFFER_SIZE];
void copyPacketTo(Packet& rPacket,Packet& rDestPacket);
void packetFromCommandBuffer(Packet& rPacket);
void sendSlavePacket();
bool sendSlaveQuery();
bool sendSlaveQuery(SlaveCommand cmd);
bool readSlaveReply();
Packet mPacket;
Packet mReplyPacket;
Packet mSlavePacket;
Packet mSlaveReplyPacket;
RingBuffer mCommandBuffer;
HostState mState;
HostState mSlaveState;
uint32_t mLastSlaveReadyCheck;
uint32_t mSlaveWaitTimeout;
uint8_t mCrc;
uint16_t mPacketLen;
uint32_t lastMillis;
uint32_t mCommandsProcessed;
};
extern HostComm hostComm;
#endif /* end of include guard: HOSTCOMM_H_9VL69MSF */