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
11namespace {
13EthernetUDP spiUdp;
14WiFiUDP nativeUdp;
15bool initialized = false;
16bool usingNative = false;
17} // namespace
18
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
53void sendPacket(const uint8_t *data, size_t len) {
54 if (!initialized || data == nullptr || len == 0) {
55 return;
56 }
57
58 if (usingNative) {
60 nativeUdp.write(data, len);
61 nativeUdp.endPacket();
62 } else {
64 spiUdp.write(data, len);
65 spiUdp.endPacket();
66 }
67}
68
69void 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
78 if (usingNative) {
79 return ETH.localIP();
80 }
81 return Ethernet.localIP();
82}
83
84bool ethernetReady() { return initialized; }
static ESPClassStub ESP
Definition Arduino.h:139
void EthernetInit(const EthernetConfig &config)
IPAddress getLocalIP()
bool ethernetReady()
void sendPacket(const uint8_t *data, size_t len)
static EthernetClass Ethernet
Definition Ethernet.h:116
byte mac[6]
Definition main.cpp:31
#define ETH
static const idle_config_t config
Definition idle_task.c:17
IPAddress receiverIP
uint16_t receiverPort