-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathRepeaterSender.h
47 lines (39 loc) · 1.38 KB
/
RepeaterSender.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
//Copyright (c) Piet Wauters 2024 <[email protected]>
#ifndef REPEATERSENDER
#define REPEATERSENDER
#include "SubjectObserverTemplate.h"
#include "FencingStateMachine.h"
#include "RepeaterDefs.h"
#include <esp_now.h>
#define HEART_RATE 61
class FencingStateMachine;
class RepeaterSender : public Observer<FencingStateMachine>, public SingletonMixin<RepeaterSender>
{
public:
/** Default destructor */
virtual ~RepeaterSender();
void update (FencingStateMachine *subject, uint32_t eventtype);
void RegisterRepeater(uint8_t *broadcastAddress);
void BroadcastHeartBeat();
void RepeatLastMessage();
void begin();
protected:
private:
// private methods
friend class SingletonMixin<RepeaterSender>;
/** Default constructor */
RepeaterSender(); // tickPeriod in miliseconds
esp_now_peer_info_t peerInfo;
struct_message m_message;
uint8_t m_receiverAddress[6] = {0x24,0xDC,0xC3,0x45,0xCD,0xA0};
uint8_t m_broadcastAddress[6] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
uint32_t m_HeartbeatCounter = 0;
long TimeToNextHeartbeat = 0;
long HeartPeriod = 60000/HEART_RATE;
long currentNewMessageCount = 0;
int m_resendCount = MESSAGE_REPETITION_FACTOR;
long m_nextResendTime = 0;
uint8_t m_ResendDelta[7]={5,3,2,1,2,1,2};
// private member variables
};
#endif // REPEATERSENDER