STAR
Cal STAR — firmware, DAQ server, and engine design
Loading...
Searching...
No Matches
EthernetHandler.cpp
Go to the documentation of this file.
1
#include "
EthernetHandler.h
"
2
3
#include <
Arduino.h
>
4
#include <ETH.h>
5
#include <
Ethernet.h
>
6
#include <
EthernetUdp.h
>
7
#include <
SPI.h
>
8
#include <WiFiUdp.h>
9
#include <esp_system.h>
10
11
namespace
{
12
EthernetConfig
currentConfig
{};
13
EthernetUDP
spiUdp
;
14
WiFiUDP
nativeUdp
;
15
bool
initialized
=
false
;
16
bool
usingNative
=
false
;
17
}
// namespace
18
19
void
EthernetInit
(
const
EthernetConfig
&
config
) {
20
currentConfig
=
config
;
21
usingNative
=
config
.useNativeEth;
22
23
if
(
usingNative
) {
24
if
(!
ETH
.begin()) {
25
initialized
=
false
;
26
return
;
27
}
28
29
ETH
.config(
config
.staticIP,
config
.gateway,
config
.subnet,
config
.dns);
30
nativeUdp
.begin(
config
.localPort);
31
initialized
=
true
;
32
return
;
33
}
34
35
uint64_t chipid =
ESP
.getEfuseMac();
36
byte
mac
[6];
37
mac
[0] = 0x02;
38
mac
[1] = 0x00;
39
mac
[2] = (chipid >> 32) & 0xFF;
40
mac
[3] = (chipid >> 24) & 0xFF;
41
mac
[4] = (chipid >> 16) & 0xFF;
42
mac
[5] = (chipid >> 8) & 0xFF;
43
44
SPI.begin(
config
.pins.clk,
config
.pins.miso,
config
.pins.mosi,
config
.pins.cs);
45
Ethernet
.init(
config
.pins.cs);
46
Ethernet
.begin(
mac
,
config
.staticIP,
config
.dns,
config
.gateway,
47
config
.subnet);
48
49
spiUdp
.begin(
config
.localPort);
50
initialized
=
true
;
51
}
52
53
void
sendPacket
(
const
uint8_t *data,
size_t
len) {
54
if
(!
initialized
|| data ==
nullptr
|| len == 0) {
55
return
;
56
}
57
58
if
(
usingNative
) {
59
nativeUdp
.beginPacket(
currentConfig
.
receiverIP
,
currentConfig
.
receiverPort
);
60
nativeUdp
.write(data, len);
61
nativeUdp
.endPacket();
62
}
else
{
63
spiUdp
.beginPacket(
currentConfig
.
receiverIP
,
currentConfig
.
receiverPort
);
64
spiUdp
.write(data, len);
65
spiUdp
.endPacket();
66
}
67
}
68
69
void
sendPacket
(
const
String &data) {
70
if
(!
initialized
|| data.isEmpty()) {
71
return
;
72
}
73
sendPacket
(
reinterpret_cast<
const
uint8_t *
>
(data.c_str()),
74
static_cast<
size_t
>
(data.length()));
75
}
76
77
IPAddress
getLocalIP
() {
78
if
(
usingNative
) {
79
return
ETH
.localIP();
80
}
81
return
Ethernet
.localIP();
82
}
83
84
bool
ethernetReady
() {
return
initialized
; }
Arduino.h
ESP
static ESPClassStub ESP
Definition
Arduino.h:139
EthernetInit
void EthernetInit(const EthernetConfig &config)
Definition
EthernetHandler.cpp:19
getLocalIP
IPAddress getLocalIP()
Definition
EthernetHandler.cpp:77
ethernetReady
bool ethernetReady()
Definition
EthernetHandler.cpp:84
sendPacket
void sendPacket(const uint8_t *data, size_t len)
Definition
EthernetHandler.cpp:53
EthernetHandler.h
EthernetUdp.h
Ethernet.h
Ethernet
static EthernetClass Ethernet
Definition
Ethernet.h:116
SPI.h
IPAddress
Definition
Arduino.h:63
mac
byte mac[6]
Definition
main.cpp:31
ETH
#define ETH
Definition
stm32h723xx.h:2666
config
static const idle_config_t config
Definition
idle_task.c:17
anonymous_namespace{EthernetHandler.cpp}::currentConfig
EthernetConfig currentConfig
Definition
EthernetHandler.cpp:12
anonymous_namespace{EthernetHandler.cpp}::usingNative
bool usingNative
Definition
EthernetHandler.cpp:16
anonymous_namespace{EthernetHandler.cpp}::spiUdp
EthernetUDP spiUdp
Definition
EthernetHandler.cpp:13
anonymous_namespace{EthernetHandler.cpp}::initialized
bool initialized
Definition
EthernetHandler.cpp:15
anonymous_namespace{EthernetHandler.cpp}::nativeUdp
WiFiUDP nativeUdp
Definition
EthernetHandler.cpp:14
EthernetConfig
Definition
EthernetHandler.h:13
EthernetConfig::receiverIP
IPAddress receiverIP
Definition
EthernetHandler.h:19
EthernetConfig::receiverPort
uint16_t receiverPort
Definition
EthernetHandler.h:20
firmware
libraries
EthernetHandler
src
EthernetHandler.cpp
Generated by
1.15.0