Update repo

This commit is contained in:
2026-08-28 00:03:42 -07:00
parent 9179f5f0a4
commit 6240f5bc73
5 changed files with 56 additions and 12 deletions
@@ -9,15 +9,15 @@ extern "C" {
#endif
// Replace these values for the Wi-Fi network and TCP server used for testing
#define WIFI_PASSTHROUGH_SSID "HC_HOME"
#define WIFI_PASSTHROUGH_PASSWORD "$Bb1988121!"
#define WIFI_PASSTHROUGH_SERVER_IP "192.168.1.176"
#define WIFI_PASSTHROUGH_SSID "WIFI_SSID"
#define WIFI_PASSTHROUGH_PASSWORD "WIFI_PASSWORD"
#define WIFI_PASSTHROUGH_SERVER_IP "SERVER_IP"
#define WIFI_PASSTHROUGH_SERVER_PORT 8000U
// Set to 0 to disable generated traffic and use only the USART1 bridge
#define WIFI_PASSTHROUGH_ENABLE_TEST_PAYLOAD 1U
#define WIFI_PASSTHROUGH_TEST_INTERVAL_MS 1000U
#define WIFI_PASSTHROUGH_TEST_LINE_REPEAT 40U
#define WIFI_PASSTHROUGH_TEST_INTERVAL_MS 2000U
#define WIFI_PASSTHROUGH_TEST_LINE_REPEAT 2U
void WiFiPassthrough_Run(UART_HandleTypeDef *console_uart,
ringBuffer_t *console_rx_buffer);
@@ -4,8 +4,18 @@
#include "stm32f407xx_esp8266.h"
#include "wifi_passthrough.h"
/* Maximum bytes transferred per loop iteration in either direction:
* UART1 console <-> UART3 ESP8266/TCP. */
#define WIFI_BRIDGE_CHUNK_SIZE 64U
#if (WIFI_BRIDGE_CHUNK_SIZE == 0U) || \
(WIFI_BRIDGE_CHUNK_SIZE >= RING_BUFFER_SIZE)
#error "WIFI_BRIDGE_CHUNK_SIZE must be between 1 and RING_BUFFER_SIZE - 1"
#endif
/* Configure the ESP8266, open the TCP connection, and leave the module in
* transparent mode. Once this succeeds, bytes written to the ESP8266 UART
* are TCP payload rather than AT commands. */
static HAL_StatusTypeDef WiFiPassthrough_Connect(void) {
HAL_StatusTypeDef status;
@@ -68,6 +78,8 @@ static bool WiFiPassthrough_UpdateClosedState(uint8_t data) {
return false;
}
/* Move all currently queued console bytes (up to one chunk) to the TCP connection.
* HAL_OK with an empty console buffer is normal, not an error. */
static HAL_StatusTypeDef WiFiPassthrough_ForwardConsole(
ringBuffer_t *console_rx_buffer) {
uint8_t data[WIFI_BRIDGE_CHUNK_SIZE];
@@ -89,6 +101,9 @@ static HAL_StatusTypeDef WiFiPassthrough_ForwardConsole(
return ESP8266_Transmit(data, length, 1000U);
}
/* Move all currently queued ESP8266 bytes (up to one chunk) to the console.
* The bytes are also inspected for the asynchronous "CLOSED" notification.
* Returning true tells the caller to reset and reconnect the module. */
static bool WiFiPassthrough_ForwardNetwork(UART_HandleTypeDef *console_uart) {
uint8_t data[WIFI_BRIDGE_CHUNK_SIZE];
uint16_t length = 0U;
@@ -120,6 +135,8 @@ static HAL_StatusTypeDef WiFiPassthrough_SendTestPayload(void) {
return status;
}
}
static const uint8_t end_line[] = "\r\n";
ESP8266_Transmit(end_line, (uint16_t) (sizeof(end_line) - 1U), 1000U);
return HAL_OK;
}
@@ -130,6 +147,8 @@ void WiFiPassthrough_Run(UART_HandleTypeDef *console_uart,
uint32_t next_test_tick = 0U;
bool connection_closed = false;
/* Initial connection failures are retried forever because this function is
* the application's long-running bridge task. */
while (WiFiPassthrough_Connect() != HAL_OK) {
printf("ESP8266: Connection failed; resetting and retrying\r\n");
ESP8266_Reset();
@@ -139,10 +158,13 @@ void WiFiPassthrough_Run(UART_HandleTypeDef *console_uart,
next_test_tick = HAL_GetTick();
for (;;) {
/* A UART transmit failure is treated as loss of the ESP8266 data path.
* This is the first path that can set connection_closed. */
if (WiFiPassthrough_ForwardConsole(console_rx_buffer) != HAL_OK) {
connection_closed = true;
}
/* A "CLOSED" notification received from the ESP8266 is the second
* path that can set connection_closed. */
if (WiFiPassthrough_ForwardNetwork(console_uart)) {
connection_closed = true;
}
@@ -9,15 +9,15 @@ extern "C" {
#endif
// Replace these values for the Wi-Fi network and TCP server used for testing
#define WIFI_PASSTHROUGH_SSID "HC_HOME"
#define WIFI_PASSTHROUGH_PASSWORD "$Bb1988121!"
#define WIFI_PASSTHROUGH_SERVER_IP "192.168.1.176"
#define WIFI_PASSTHROUGH_SSID "WIFI_SSID"
#define WIFI_PASSTHROUGH_PASSWORD "WIFI_PASSWORD"
#define WIFI_PASSTHROUGH_SERVER_IP "SERVER_IP"
#define WIFI_PASSTHROUGH_SERVER_PORT 8000U
// Set to 0 to disable generated traffic and use only the USART1 bridge
#define WIFI_PASSTHROUGH_ENABLE_TEST_PAYLOAD 1U
#define WIFI_PASSTHROUGH_TEST_INTERVAL_MS 1000U
#define WIFI_PASSTHROUGH_TEST_LINE_REPEAT 40U
#define WIFI_PASSTHROUGH_TEST_INTERVAL_MS 2000U
#define WIFI_PASSTHROUGH_TEST_LINE_REPEAT 2U
void WiFiPassthrough_Run(UART_HandleTypeDef *console_uart,
ringBuffer_t *console_rx_buffer);
@@ -4,8 +4,18 @@
#include "stm32f407xx_esp8266.h"
#include "wifi_passthrough.h"
/* Maximum bytes transferred per loop iteration in either direction:
* UART1 console <-> UART3 ESP8266/TCP. */
#define WIFI_BRIDGE_CHUNK_SIZE 64U
#if (WIFI_BRIDGE_CHUNK_SIZE == 0U) || \
(WIFI_BRIDGE_CHUNK_SIZE >= RING_BUFFER_SIZE)
#error "WIFI_BRIDGE_CHUNK_SIZE must be between 1 and RING_BUFFER_SIZE - 1"
#endif
/* Configure the ESP8266, open the TCP connection, and leave the module in
* transparent mode. Once this succeeds, bytes written to the ESP8266 UART
* are TCP payload rather than AT commands. */
static HAL_StatusTypeDef WiFiPassthrough_Connect(void) {
HAL_StatusTypeDef status;
@@ -68,6 +78,8 @@ static bool WiFiPassthrough_UpdateClosedState(uint8_t data) {
return false;
}
/* Move all currently queued console bytes (up to one chunk) to the TCP connection.
* HAL_OK with an empty console buffer is normal, not an error. */
static HAL_StatusTypeDef WiFiPassthrough_ForwardConsole(
ringBuffer_t *console_rx_buffer) {
uint8_t data[WIFI_BRIDGE_CHUNK_SIZE];
@@ -89,6 +101,9 @@ static HAL_StatusTypeDef WiFiPassthrough_ForwardConsole(
return ESP8266_Transmit(data, length, 1000U);
}
/* Move all currently queued ESP8266 bytes (up to one chunk) to the console.
* The bytes are also inspected for the asynchronous "CLOSED" notification.
* Returning true tells the caller to reset and reconnect the module. */
static bool WiFiPassthrough_ForwardNetwork(UART_HandleTypeDef *console_uart) {
uint8_t data[WIFI_BRIDGE_CHUNK_SIZE];
uint16_t length = 0U;
@@ -120,6 +135,8 @@ static HAL_StatusTypeDef WiFiPassthrough_SendTestPayload(void) {
return status;
}
}
static const uint8_t end_line[] = "\r\n";
ESP8266_Transmit(end_line, (uint16_t) (sizeof(end_line) - 1U), 1000U);
return HAL_OK;
}
@@ -130,6 +147,8 @@ void WiFiPassthrough_Run(UART_HandleTypeDef *console_uart,
uint32_t next_test_tick = 0U;
bool connection_closed = false;
/* Initial connection failures are retried forever because this function is
* the application's long-running bridge task. */
while (WiFiPassthrough_Connect() != HAL_OK) {
printf("ESP8266: Connection failed; resetting and retrying\r\n");
ESP8266_Reset();
@@ -139,10 +158,13 @@ void WiFiPassthrough_Run(UART_HandleTypeDef *console_uart,
next_test_tick = HAL_GetTick();
for (;;) {
/* A UART transmit failure is treated as loss of the ESP8266 data path.
* This is the first path that can set connection_closed. */
if (WiFiPassthrough_ForwardConsole(console_rx_buffer) != HAL_OK) {
connection_closed = true;
}
/* A "CLOSED" notification received from the ESP8266 is the second
* path that can set connection_closed. */
if (WiFiPassthrough_ForwardNetwork(console_uart)) {
connection_closed = true;
}