17#include "firmware_hash.h"
23#ifndef MAX_PACKET_SIZE
24#define MAX_PACKET_SIZE 512
27#ifndef SENSOR_UDP_LISTEN_PORT
28#define SENSOR_UDP_LISTEN_PORT 5005
38static EthernetUDP
udp;
70 daq::BoardHeartbeatPacket hb;
90 Serial.println(
"Stacklight Driver starting...");
94 Serial.print(
"Board ID / IP: ");
96 Serial.print(
" / 192.168.2.");
101 ESP_ERROR_CHECK(esp_read_mac(
mac, ESP_MAC_ETH));
109 Serial.print(
"UDP listen port ");
112 Serial.print(
"OTA TCP port ");
114 Serial.print(
"Ethernet IP: ");
124 int packetSize =
udp.parsePacket();
125 if (packetSize > 0) {
129 bytesRead >=
static_cast<int>(
sizeof(daq::PacketHeader))) {
130 daq::PacketHeader hdr;
132 switch (hdr.packet_type) {
134 daq::PacketHeader dummy;
135 daq::ServerHeartbeatPacket sh;
145 daq::PacketHeader dummy;
146 daq::StacklightCommandPacket cmd;
161 unsigned long now =
millis();
void digitalWrite(int, int)
#define ETHERNET_INIT_DELAY_MS
#define ETHERNET_BEGIN_DELAY_MS
#define BOARD_HEARTBEAT_INTERVAL_MS
#define ETHERNET_SPI_DELAY_MS
static EthernetClass Ethernet
#define SENSOR_UDP_LISTEN_PORT
static unsigned long lastHeartbeatMillis
static unsigned long last_server_heartbeat_ms
IPAddress dns(192, 168, 2, 1)
IPAddress subnet(255, 255, 255, 0)
IPAddress staticIP(192, 168, 2, BOARD_ID_DEFAULT)
IPAddress serverIP(192, 168, 2, 20)
IPAddress gateway(0, 0, 0, 0)
StarOTA::Server otaServer(OTA_TCP_PORT)
char packetBuffer[UDP_TX_PACKET_MAX_SIZE]
static constexpr int ETH_CS
Ball Valve Hotfire — motorized ball valve prototype board.
static constexpr int ETH_SCLK
static constexpr int ETH_MISO
static constexpr int ETH_MOSI
static StarOTA::Server otaServer(HOTFIRE_OTA_PORT)
static void initOutputs()
static IPAddress dns(192, 168, 2, 1)
static IPAddress subnet(255, 255, 255, 0)
static void applyStacklightOutputs(uint8_t red, uint8_t yellow, uint8_t green, uint8_t buzzer)
static daq::EngineState last_engine_state
static IPAddress staticIP(192, 168, 2, BOARD_ID)
static void sendBoardHeartbeat()
static IPAddress gateway(0, 0, 0, 0)
static IPAddress serverIP(192, 168, 2, HOTFIRE_SERVER_IP_OCTET_4)
#define HOTFIRE_SERVER_PORT
#define HOTFIRE_SERVER_IP_OCTET_4
void printTestMessage()
Bench-test helper: prints STAR_OTA_TEST_MESSAGE on a timer as.
bool parse_server_heartbeat_packet(const uint8_t *buffer, size_t buffer_size, PacketHeader &header_out, ServerHeartbeatPacket &data_out)
Parses a Server Heartbeat packet from buffer.
EngineState
Defines the overall state of the engine system.
size_t create_board_heartbeat_packet(const BoardHeartbeatPacket &data, uint32_t timestamp_ms, uint8_t *buffer, size_t buffer_size)
Creates a complete Board Heartbeat packet in the provided buffer.
bool parse_stacklight_command_packet(const uint8_t *buffer, size_t buffer_size, PacketHeader &header_out, StacklightCommandPacket &data_out)
Parses a Stacklight Command packet from buffer.
Stacklight Driver PCB — GPIO assignments.