From 31b84e695c74d59536c393e40e4879133b3d3654 Mon Sep 17 00:00:00 2001 From: dannybackx Date: Tue, 1 Nov 2016 08:04:13 +0100 Subject: [PATCH] More cleanup of my mess --- Makefile | 9 -------- serial/serbridge.c | 55 ++++++++++++++++++++++++---------------------- serial/serbridge.h | 3 +-- 3 files changed, 30 insertions(+), 37 deletions(-) diff --git a/Makefile b/Makefile index c626ff2..0b52b9f 100644 --- a/Makefile +++ b/Makefile @@ -99,15 +99,6 @@ MCU_ISP_PIN ?= 13 LED_CONN_PIN ?= 0 # GPIO pin used for "serial activity" LED, active low LED_SERIAL_PIN ?= 14 -# -# Default settings for access over TCP/IP connections -# -# Modes are 0 (unsecure), 1 (disabled), 2 (secure) -# -PORT1_MODE ?= 0 -PORT1_PORTNUMBER ?= 23 -PORT2_MODE ?= 0 -PORT2_PORTNUMBER ?= 2323 # --------------- esp-link modules config options --------------- diff --git a/serial/serbridge.c b/serial/serbridge.c index 02517cf..cebc561 100644 --- a/serial/serbridge.c +++ b/serial/serbridge.c @@ -16,8 +16,9 @@ #define syslog(X1...) #endif -static struct espconn serbridgeConn[2]; // plain bridging port -static esp_tcp serbridgeTcp[2]; +static struct espconn serbridgeConn1; // plain bridging port +static struct espconn serbridgeConn2; // programming port +static esp_tcp serbridgeTcp1, serbridgeTcp2; static int8_t mcu_reset_pin, mcu_isp_pin; uint8_t in_mcu_flashing; // for disabling slip during MCU flashing @@ -420,7 +421,7 @@ serbridgeConnectCb(void *arg) connData[i].readytosend = true; connData[i].conn_mode = cmInit; // if it's the second port we start out in programming mode - if (conn->proto.tcp->local_port == serbridgeConn[1].proto.tcp->local_port) + if (conn->proto.tcp->local_port == serbridgeConn2.proto.tcp->local_port) connData[i].conn_mode = cmPGMInit; espconn_regist_recvcb(conn, serbridgeRecvCb); @@ -469,33 +470,35 @@ serbridgeInitPins() // Start transparent serial bridge TCP server on specified port (typ. 23) void ICACHE_FLASH_ATTR -serbridgeInit() +serbridgeInit(int port1, int port2) { serbridgeInitPins(); os_memset(connData, 0, sizeof(connData)); - os_memset(&serbridgeTcp[0], 0, sizeof(serbridgeTcp[0])); - os_memset(&serbridgeTcp[1], 0, sizeof(serbridgeTcp[1])); -} - -// Start transparent serial bridge TCP server on specified port (typ. 23) -void ICACHE_FLASH_ATTR -serbridgeStart(int ix, int port, int mode) -{ - if (ix < 0 || ix > 2) // FIXME hardcoded limit - return; - if (0 < port && port < 65536) { - // set-up the primary port for plain bridging - serbridgeConn[ix].type = ESPCONN_TCP; - serbridgeConn[ix].state = ESPCONN_NONE; - serbridgeTcp[ix].local_port = port; - serbridgeConn[ix].proto.tcp = &serbridgeTcp[ix]; - - espconn_regist_connectcb(&serbridgeConn[ix], serbridgeConnectCb); - espconn_accept(&serbridgeConn[ix]); - espconn_tcp_set_max_con_allow(&serbridgeConn[ix], MAX_CONN); - espconn_regist_time(&serbridgeConn[ix], SER_BRIDGE_TIMEOUT, 0); - } + os_memset(&serbridgeTcp1, 0, sizeof(serbridgeTcp1)); + os_memset(&serbridgeTcp2, 0, sizeof(serbridgeTcp2)); + + // set-up the primary port for plain bridging + serbridgeConn1.type = ESPCONN_TCP; + serbridgeConn1.state = ESPCONN_NONE; + serbridgeTcp1.local_port = port1; + serbridgeConn1.proto.tcp = &serbridgeTcp1; + + espconn_regist_connectcb(&serbridgeConn1, serbridgeConnectCb); + espconn_accept(&serbridgeConn1); + espconn_tcp_set_max_con_allow(&serbridgeConn1, MAX_CONN); + espconn_regist_time(&serbridgeConn1, SER_BRIDGE_TIMEOUT, 0); + + // set-up the secondary port for programming + serbridgeConn2.type = ESPCONN_TCP; + serbridgeConn2.state = ESPCONN_NONE; + serbridgeTcp2.local_port = port2; + serbridgeConn2.proto.tcp = &serbridgeTcp2; + + espconn_regist_connectcb(&serbridgeConn2, serbridgeConnectCb); + espconn_accept(&serbridgeConn2); + espconn_tcp_set_max_con_allow(&serbridgeConn2, MAX_CONN); + espconn_regist_time(&serbridgeConn2, SER_BRIDGE_TIMEOUT, 0); } int ICACHE_FLASH_ATTR serbridgeInMCUFlashing() diff --git a/serial/serbridge.h b/serial/serbridge.h index 36f66d0..ed661e1 100644 --- a/serial/serbridge.h +++ b/serial/serbridge.h @@ -31,8 +31,7 @@ typedef struct serbridgeConnData { } serbridgeConnData; // port1 is transparent&programming, second port is programming only -void ICACHE_FLASH_ATTR serbridgeInit(); -void ICACHE_FLASH_ATTR serbridgeStart(int ix, int port, int mode); +void ICACHE_FLASH_ATTR serbridgeInit(int port1, int port2); void ICACHE_FLASH_ATTR serbridgeInitPins(void); void ICACHE_FLASH_ATTR serbridgeUartCb(char *buf, short len); void ICACHE_FLASH_ATTR serbridgeReset();