From f1f3389bbca4b10ded2b9727796eaa15603ba7b0 Mon Sep 17 00:00:00 2001 From: Martin Ger Date: Thu, 30 Nov 2017 08:54:59 +0100 Subject: [PATCH] added serial config --- README.md | 2 ++ firmware/0x00000.bin | Bin 44608 -> 44864 bytes firmware/0x10000.bin | Bin 301180 -> 301404 bytes firmware/sha1sums | 4 ++-- user/config_flash.c | 5 ++++- user/config_flash.h | 3 +++ user/user_main.c | 36 +++++++++++++++++++++++++++++++++++- 7 files changed, 46 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 44493de..3d4e6b3 100644 --- a/README.md +++ b/README.md @@ -40,6 +40,8 @@ General commands: - set speed [80|160]: sets the CPU clock frequency (default 80 Mhz) - set config_port _portno_: sets the port number of the console login (default is 7777, 0 disables remote console config) - set config_access _mode_: controls the networks that allow config access (0: no access, 1: only internal, 2: only external, 3: both (default)) +- set bitrate [bps]: sets the serial bitrate (default 115200 bps) +- set system_output [0|1]: enables/disables system info/warning output to serial port (default: on=1) - quit: terminates a remote session WiFi and network related commands: diff --git a/firmware/0x00000.bin b/firmware/0x00000.bin index 29002e88fc5c6fb8e527c48f1618c38c9f26547e..6c15bd297f21f7eb2159a005ed70c775c472b66a 100644 GIT binary patch delta 6107 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 H;g|mgF0CQZ delta 5913 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 M=(ak#ryeB!3$10_t^fc4 diff --git a/firmware/0x10000.bin b/firmware/0x10000.bin index a27acdb472be13433614067d9c11c0d0e5562a40..2f92aaf6fe2406b1e0488133eefaa1ce34a76559 100644 GIT binary patch delta 37052 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 T!IBcoDjRO1-sZAU&T{&HE!ea* diff --git a/firmware/sha1sums b/firmware/sha1sums index 5e703cd..690205d 100644 --- a/firmware/sha1sums +++ b/firmware/sha1sums @@ -1,2 +1,2 @@ -dddf4cf10bd0ceea1a417ed44752dfa0c56b2b59 0x00000.bin -68cfc30d818bd0a8ca7bb77b4065cb69f712f8ef 0x10000.bin +2d114ceba82ee7e63b16726534888665fe1d7b22 0x00000.bin +bdb01713a737a6f328b6a5953825758622e9e894 0x10000.bin diff --git a/user/config_flash.c b/user/config_flash.c index f6a5e2a..8ca08ae 100644 --- a/user/config_flash.c +++ b/user/config_flash.c @@ -29,7 +29,10 @@ void config_load_default(sysconfig_p config) { config->dns_addr.addr = 0; // use DHCP config->my_addr.addr = 0; // use DHCP config->my_netmask.addr = 0; // use DHCP - config->my_gw.addr = 0; // use DHCP + config->my_gw.addr = 0; // use DHCP + + config->system_output = 1; + config->bit_rate = 115200; config->mdns_mode = 0; // no mDNS diff --git a/user/config_flash.h b/user/config_flash.h index 6abb008..0ec743b 100644 --- a/user/config_flash.h +++ b/user/config_flash.h @@ -49,6 +49,9 @@ typedef struct uint16_t config_port; // Port on which the concole listenes (0 if no access) uint8_t config_access; // Controls the interfaces that allow config access (default LOCAL_ACCESS | REMOTE_ACCESS) + uint8_t system_output; // Disable system info and warnings + uint32_t bit_rate; // Bit rate of serial link + uint16_t max_subscriptions; // Upper limit on subscribed topics uint16_t max_retained_messages; // Upper limit on stored retained messages uint16_t max_clients; // Upper limit on concurrently connected clients (0: mem is the limit) diff --git a/user/user_main.c b/user/user_main.c index 88d39f1..d069538 100644 --- a/user/user_main.c +++ b/user/user_main.c @@ -72,6 +72,7 @@ uint8_t remote_console_disconnect; struct espconn *console_conn; bool client_sent_pending; +LOCAL ICACHE_FLASH_ATTR void void_write_char(char c) {} void ICACHE_FLASH_ATTR to_console(char *str) { ringbuf_memcpy_into(console_tx_buffer, str, os_strlen(str)); @@ -453,7 +454,9 @@ void ICACHE_FLASH_ATTR console_handle_command(struct espconn *pespconn) { #endif os_sprintf(response, "set [ssid|password|auto_connect|ap_ssid|ap_password|ap_on|ap_open] \r\n"); to_console(response); - os_sprintf(response, "set [network|dns|ip|netmask|gw|config_port|config_access] \r\n"); + os_sprintf(response, "set [network|dns|ip|netmask|gw] \r\n"); + to_console(response); + os_sprintf(response, "set [config_port|config_access|bitrate|system_output] \r\n"); to_console(response); os_sprintf(response, "set [broker_user|broker_password|broker_access|broker_clients] \r\n"); to_console(response); @@ -571,6 +574,12 @@ void ICACHE_FLASH_ATTR console_handle_command(struct espconn *pespconn) { #endif os_sprintf(response, "Clock speed: %d\r\n", config.clock_speed); to_console(response); + + os_sprintf(response, "Serial bitrate: %d\r\n", config.bit_rate); + to_console(response); + if (!config.system_output) + to_console("System output: off\r\n"); + goto command_handled_2; } @@ -1067,9 +1076,24 @@ void ICACHE_FLASH_ATTR console_handle_command(struct espconn *pespconn) { goto command_handled; } + if (strcmp(tokens[1],"bitrate") == 0) + { + config.bit_rate = atoi(tokens[2]); + os_sprintf(response, "Bitrate set to %d\r\n", config.bit_rate); + goto command_handled; + } + + if (strcmp(tokens[1],"system_output") == 0) + { + config.system_output = atoi(tokens[2]); + os_sprintf(response, "System output %s\r\n", config.system_output?"on":"off"); + goto command_handled; + } + if (strcmp(tokens[1], "network") == 0) { config.network_addr.addr = ipaddr_addr(tokens[2]); ip4_addr4(&config.network_addr) = 0; + os_sprintf(response, "Network set to %d.%d.%d.%d\r\n", IP2STR(&config.network_addr)); goto command_handled; } @@ -1703,6 +1727,7 @@ void user_init() { #endif init_long_systime(); + // Temporarily initialize the UART with 115200 UART_init_console(BIT_RATE_115200, 0, console_rx_buffer, console_tx_buffer); os_printf("\r\n\r\nWiFi Router/MQTT Broker V2.0 starting\r\n"); @@ -1736,6 +1761,15 @@ void user_init() { } #endif + // Set bit rate to config value + uart_div_modify(0, UART_CLK_FREQ / config.bit_rate); + + if (!config.system_output) { + // all system output to /dev/null + system_set_os_print(0); + os_install_putc1(void_write_char); + } + // Configure the AP and start it, if required if (config.dns_addr.addr != 0)