10#define ETH_MOSI_PIN 40
21byte mac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED};
29 Serial.println(
"Ethernet Test Send Packet Suite");
30 Serial.println(
"================================");
48 Serial.println(
"\nInitial Board Configuration:");
50 Serial.println(
"\nEntering CLI mode...\n");
62 Serial.println(
"--- Board Network Information ---");
65 Serial.print(
"Static IP: ");
69 Serial.print(
"Subnet Mask: ");
71 Serial.print(
"DNS Server: ");
75 Serial.print(
"MAC Address: ");
76 for (
int i = 0; i < 6; i++) {
86 Serial.print(
"UDP Local Port: ");
88 Serial.print(
"UDP Receiver IP: ");
94 Serial.print(
"Ethernet Link Status: ");
95 if (
Ethernet.linkStatus() == LinkON) {
96 Serial.println(
"Connected");
97 }
else if (
Ethernet.linkStatus() == LinkOFF) {
98 Serial.println(
"Disconnected");
100 Serial.println(
"Unknown");
103 Serial.println(
"--------------------------------");
115 String sensorValue =
"Example data: " + String(random(0, 100));
116 unsigned long timestamp =
millis();
118 sensorValue +
", Timestamp: " + String(timestamp) +
"\n";
121 int dataLength = dataToSend.length();
122 char dataBuffer[dataLength + 1];
123 dataToSend.toCharArray(dataBuffer, dataLength + 1);
127 udp.write(dataBuffer, dataLength);
130 Serial.print(
"Sent (UDP) with length " + String(dataLength) +
": ");
142 daq::BoardHeartbeatPacket heartbeatData;
143 memset(heartbeatData.firmware_hash, 0,
sizeof(heartbeatData.firmware_hash));
144 heartbeatData.board_id = 1;
153 if (packetSize == 0) {
154 Serial.println(
"Error: Failed to create heartbeat packet");
163 Serial.print(
"Sent heartbeat packet (UDP) with length ");
165 Serial.print(
" bytes - Board ID: ");
166 Serial.print(heartbeatData.board_id);
167 Serial.print(
", Engine State: ");
168 Serial.print(
static_cast<int>(heartbeatData.engine_state));
169 Serial.print(
", Board State: ");
170 Serial.println(
static_cast<int>(heartbeatData.board_state));
180 Serial.println(
"\nStarting heartbeat packet loop...");
181 Serial.println(
"Send 'q' or 'quit' to stop sending heartbeats\n");
183 unsigned long lastSendTime = 0;
184 const unsigned long heartbeatInterval =
189 if (
Serial.available() > 0) {
190 String input =
Serial.readStringUntil(
'\n');
194 if (input ==
"q" || input ==
"quit") {
196 "\nStopping heartbeat loop. Returning to CLI...\n");
202 unsigned long currentTime =
millis();
203 if (currentTime - lastSendTime >= heartbeatInterval) {
205 lastSendTime = currentTime;
220 Serial.println(
"=== Ethernet Test Suite CLI ===");
221 Serial.println(
"Commands:");
222 Serial.println(
" 'i' or 'info' - Print board information");
223 Serial.println(
" 'h' or 'heartbeat' - Start sending heartbeat packets");
224 Serial.println(
" 'm' or 'menu' - Show this menu");
225 Serial.println(
"================================\n");
232 if (
Serial.available() > 0) {
233 String input =
Serial.readStringUntil(
'\n');
237 if (input.length() == 0) {
241 if (input ==
"i" || input ==
"info") {
245 }
else if (input ==
"h" || input ==
"heartbeat") {
248 }
else if (input ==
"m" || input ==
"menu") {
251 Serial.print(
"Unknown command: '");
253 Serial.println(
"'. Type 'm' or 'menu' for available commands.");
static EthernetClass Ethernet
IPAddress receiverIP(192, 168, 2, 20)
IPAddress dns(192, 168, 2, 1)
IPAddress subnet(255, 255, 255, 0)
IPAddress staticIP(192, 168, 2, BOARD_ID_DEFAULT)
IPAddress gateway(0, 0, 0, 0)
static IPAddress subnet(255, 255, 255, 0)
static IPAddress gateway(192, 168, 2, 1)
char packetBuffer[UDP_TX_PACKET_MAX_SIZE]
IPAddress dns(192, 168, 2, 1)
IPAddress staticIP(192, 168, 2, 101)
void printBoardInfo()
Prints all board networking information to Serial.
IPAddress receiverIP(192, 168, 2, 1)
void sendExampleMessage()
Sends an example message in the old format (string-based) This is the original implementation for tes...
void processCLI()
Processes CLI commands from Serial input.
void startHeartbeatLoop()
Continuously sends heartbeat packets until user cancels Checks for Serial input to allow cancellation...
void printMenu()
Prints the CLI menu options.
bool sendHeartbeatPacket()
Creates and sends a Board Heartbeat packet using DiabloComms library This uses the proper packet enco...
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.