From 3e1e72f76342e1a98ef40063ed85ee18de4ab711 Mon Sep 17 00:00:00 2001 From: martin-ger Date: Sun, 27 Jan 2019 17:37:33 +0100 Subject: [PATCH] Added AP channel config --- .vscode/c_cpp_properties.json | 16 ++++++++++++++++ README.md | 1 + firmware/0x00000.bin | Bin 42384 -> 42416 bytes firmware/0x10000.bin | Bin 310764 -> 310940 bytes firmware/sha1sums | 4 ++-- user/cli.c | 34 ++++++++++++++++++++++------------ user/config_flash.c | 1 + user/config_flash.h | 5 +++-- user/user_config.h | 3 ++- user/user_main.c | 7 ++++--- 10 files changed, 51 insertions(+), 20 deletions(-) create mode 100644 .vscode/c_cpp_properties.json diff --git a/.vscode/c_cpp_properties.json b/.vscode/c_cpp_properties.json new file mode 100644 index 0000000..0b0eed0 --- /dev/null +++ b/.vscode/c_cpp_properties.json @@ -0,0 +1,16 @@ +{ + "configurations": [ + { + "name": "Linux", + "includePath": [ + "${workspaceFolder}/**" + ], + "defines": [], + "compilerPath": "/usr/bin/gcc", + "cStandard": "c11", + "cppStandard": "c++17", + "intelliSenseMode": "clang-x64" + } + ], + "version": 4 +} \ No newline at end of file diff --git a/README.md b/README.md index fb3905c..1db27ea 100644 --- a/README.md +++ b/README.md @@ -48,6 +48,7 @@ WiFi and network related commands: - set [ssid|password] _value_: changes the settings for the uplink AP (WiFi config of your home-router) - set [ap_ssid|ap_password] _value_: changes the settings for the soft-AP of the ESP (for your stations) +- set ap_channel [1-13]: sets the channel of the SoftAP (default 1) - set ap_on [0|1]: selects, whether the soft-AP is disabled (ap_on=0) or enabled (ap_on=1, default) - set ap_open [0|1]: selects, whether the soft-AP uses WPA2 security (ap_open=0, automatic, if an ap_password is set) or open (ap_open=1) - set auto_connect [0|1]: selects, whether the WiFi client should automatically retry to connect to the uplink AP (default: on=1) diff --git a/firmware/0x00000.bin b/firmware/0x00000.bin index a9fbf0a98f24889c8d10aae26bb73aed849f05df..0f3ea7057a1da6d9888613188daf76bb80a2ec86 100644 GIT binary patch delta 1796 zcmZvc4Nz276vyv%M(P*66AzNKWsljFK#dLMnsW0?P=F;+9BCql-z4 zm>;WGO_^fWFjKNbuhultNa{?6Htraen$0j}jZJDeqfQ#`>rbwY)AVM3^FQa@^X@(G z+;^}4tkQZ`@dvo|$liIJyTm-j-8HV4%h_pK;gWN zgM!HGmJ4HE<-ALL8>!&tyM~Qysk4$tlq-TpS%ugunsJv`$R1{ae ztd9SV^DL2@@C^^j5s70Io-Jl44dLB#SyH~DST@O%1Dd!(n`FtrOoh)8?+pHd9}}yG z6eV~zX~Y@x_@S*JAb%Mmc)uV_>t>V%Wt)XB<+4&+D@uk2N4c!6F09_bs2N!Ep z@;g;JSE`czj-4F8+Nl73XR%5LMlrg&U8S}eSZlgQ(SDWEkkf70q#Vu_?+q;C0_Ymc z>$R~M_4+3{i^Sya9U=WeS{^Szd@|xaW<$TSMWgcG9PGT0o3Ew#wovTuL z5WmA68)ecJqD#pHMP*>FjXNPSX<4s08V?Q}NM6BJ*zY=fS z8~AFGtl9ZmnW=5(aam|wbey5vBbX~FE{$Aos)Dyl6hC>2rwJ`}vBnxTvM}Zv3b0GA zjQ)mxy*{LyVPD*%kpuo|c_ei!S1gTk>Zq8=WXti8KGrbCMKE*X$LqOSiR)%0iboIU zPO)zER(@3`j9H$jA;#jan3WJ;Klp zFJl3@uCPeqsp7|?dTteE3)H?DDAF+gGO+A|&-(Cok?Yo#-TUPhcSj_5h{B4TsLuN# zy*yL2RLmN55hlLgU@^>PFvIBT_2U_LV6NN z2F7{A*e7=`_x65J^2_Y$qy5qTr`0>SWYgVAe3)gzRDo$e?cs8t${P?inJNAF% zBcAivSnqq&K)etC{C`NPdl+-R@lcz?(qQlu$N)3IT+sFyWw5Kl{(9(k zuotw-J>I9e_ZV)9Hn1YB4bZ*dFqm`~?FjP#e*ee(kzqRxnv$VWQJ4x`gT3}A#Txxw zf_t-6qZ2@PKeX$hzk_i1#j5I*u|0>di|FmYI|APdvVj}af&e%Ty1;F*ZQTjJO3r@W zF!3rmdqb+iC&`+PE$06DD=V!tiz}_;(ye3DGsinJ$B&okZ;{DbT3%dPS+x!}}Yt?eA=8lVDa>d(mea(TxSasw-SLOSE18-EHjsO4v delta 1767 zcmZvd4NO&K7{}lDz(qbT3J8WFdc5acC3AuXism{`%G3l5f>H+<;B|`ggUXEj=w4G$ z#1wti@*{>{n;-@B-kL63q;8>NGP6>{?ap+gjTtUz`E^eJo4B#o-Tm$VJpboC_kGX% zb(=0K)%ezO)_iC#=Opg)%Qm0KNfGjr^1Tw2Y??-Cx!iACp@dd9n}(;{N!8^dDtLiX zTQ1%XUNf)>PCM{{?sEAccpOh*74Ry9mV9cXJ)l&|-Y7+zPpWDGHMyqGr#+lWNB zZ->o3AI=Dcigf}roE{&2w8kh=VBQS**9MsyS(@79f2@j~Cbu-#vkjIy5 zbnU)_n7HrgjX!UX$_!7MCdRL|$hYcB#(Bqd#%rt=#%^Vt7h$@aw~8vgl9!1Xr_R^Q zDb8IyTpwu}otRWTfEBii>!UW>a>FfSo+ui9mPZR`!eVFXKI|~Y3Wou#Qeo_1%jnu{ z8g|69{59msvN>S~S3LXVv@xN9G2LF%7;jk<0+>DOtBu^Qgm*Jl6pb5!J-%Vw4xTF` z6IVtlwTH!rFV`q7hoxiM3Wc}GooSajPnJb9rrUUvJeGcz^9Wgz*~mkWKQ@i_O{U=+ zDIKrg#j!XhqO$)|db~39wY>^j9m-u8$UVX~e{syzdegA1Zp(u~wgp&*<;Ibe8|LRJ zJXqY!+sv6*l&^)ve(7)a&_cKQUk~85BGY9koyX*M*M&eHA?BB)2YDZu#zve8$fzA0TnDdC%vrzJrhaDPWd6SX9ZYe-2X1#9PNNsR(5FxH0e!i@_J5?qpWd(L zf9^#vpaOgTKg4W$;-!^8(F1+;whHYf3fQAj6c`DTfC1(JZ$AnUFYC+KLbrl_;JDo9 zexAGaUY*8*-*992^*%HbIs()IZy(E{8~f#Z`{JX}k0v?kVjtIW4f^BJMNY~o#?D>n zq(smN{BaM+bNzdT`xiizt&Sgmt-&<9!P6D#IAI!(fDVs9K3E58!D-Mgc5e6<8$A0% z%f_>0_Lc;Nr^+>3>+OT*E^?`}i&m)W1T|^Wl#~fmQpU?kACpZUI2aNVQPzk*iBV5( ILUeZXA0@7p%m4rY diff --git a/firmware/0x10000.bin b/firmware/0x10000.bin index 788962fba48a71871592715de88807a12a5c1c25..d59c8c74ef392884efa435a8c32633d08978c2f7 100644 GIT binary patch delta 39018 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

eL}jWB;j|htQPdp_ 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 QORT~OzSe@>a=63)0Ny6Dh5!Hn diff --git a/firmware/sha1sums b/firmware/sha1sums index b8881ee..29c1b93 100644 --- a/firmware/sha1sums +++ b/firmware/sha1sums @@ -1,2 +1,2 @@ -834399a6fc66a609ab06b6ac58e0e371d853d256 0x00000.bin -bad4fb09c6ac1b86e06de459e570fe3aee8186e0 0x10000.bin +37945197125bf88858db1d45157f6b44bfa712be 0x00000.bin +6c2b41b31e46c4498114174796de0322d5bd7e1b 0x10000.bin diff --git a/user/cli.c b/user/cli.c index e25e2dd..0f253bf 100644 --- a/user/cli.c +++ b/user/cli.c @@ -747,20 +747,31 @@ void ICACHE_FLASH_ATTR console_handle_command(struct espconn *pespconn) { } if (strcmp(tokens[1], "ap_password") == 0) { - if (os_strlen(tokens[2]) < 8) { - os_sprintf_flash(response, "Password to short (min. 8)\r\n"); - } else { - os_sprintf(config.ap_password, "%s", tokens[2]); - config.ap_open = 0; - os_sprintf_flash(response, "AP Password set\r\n"); - } - goto command_handled; + if (os_strlen(tokens[2]) < 8) { + os_sprintf_flash(response, "Password to short (min. 8)\r\n"); + } else { + os_sprintf(config.ap_password, "%s", tokens[2]); + config.ap_open = 0; + os_sprintf_flash(response, "AP Password set\r\n"); + } + goto command_handled; } + if (strcmp(tokens[1],"ap_channel") == 0) { + uint8_t chan = atoi(tokens[2]); + if (chan >= 1 && chan <= 13) { + config.ap_channel = chan; + os_sprintf(response, "AP channel set to %d\r\n", config.ap_channel); + } else { + os_sprintf_flash(response, "Invalid channel (1-13)\r\n"); + } + goto command_handled; + } + if (strcmp(tokens[1], "ap_open") == 0) { - config.ap_open = atoi(tokens[2]); - os_sprintf_flash(response, "Open Auth set\r\n"); - goto command_handled; + config.ap_open = atoi(tokens[2]); + os_sprintf_flash(response, "Open Auth set\r\n"); + goto command_handled; } if (strcmp(tokens[1], "ap_on") == 0) { @@ -774,7 +785,6 @@ void ICACHE_FLASH_ATTR console_handle_command(struct espconn *pespconn) { } else { os_sprintf_flash(response, "AP already on\r\n"); } - } else { if (config.ap_on) { wifi_set_opmode(STATION_MODE); diff --git a/user/config_flash.c b/user/config_flash.c index 0c459f7..eb34a83 100644 --- a/user/config_flash.c +++ b/user/config_flash.c @@ -19,6 +19,7 @@ void ICACHE_FLASH_ATTR config_load_default(sysconfig_p config) { config->auto_connect = 0; os_sprintf(config->ap_ssid, "%s", WIFI_AP_SSID); os_sprintf(config->ap_password, "%s", WIFI_AP_PASSWORD); + config->ap_channel = WIFI_AP_CHANNEL; config->ap_open = 1; config->ap_on = 1; diff --git a/user/config_flash.h b/user/config_flash.h index ec793d1..231cf74 100644 --- a/user/config_flash.h +++ b/user/config_flash.h @@ -13,7 +13,7 @@ #define FLASH_BLOCK_NO 0xc -#define MAGIC_NUMBER 0x015005fd +#define MAGIC_NUMBER 0x015034fd #define SYSTEM_OUTPUT_INFO 2 #define SYSTEM_OUTPUT_CMD 1 @@ -37,8 +37,9 @@ typedef struct uint8_t ap_ssid[32]; // SSID of the own AP uint8_t ap_password[64]; // Password of the own network + uint8_t ap_channel; // Channel of the AP uint8_t ap_open; // Should we use no WPA? - uint8_t ap_on; // AP enabled? + uint8_t ap_on; // AP enabled? uint8_t locked; // Should we allow for config changes uint8_t lock_password[32]; // Password of config lock diff --git a/user/user_config.h b/user/user_config.h index 171bbf5..86ab232 100644 --- a/user/user_config.h +++ b/user/user_config.h @@ -1,13 +1,14 @@ #ifndef _USER_CONFIG_ #define _USER_CONFIG_ -#define ESP_UBROKER_VERSION "V2.0.8" +#define ESP_UBROKER_VERSION "V2.0.9" #define WIFI_SSID "ssid" #define WIFI_PASSWORD "password" #define WIFI_AP_SSID "MyAP" #define WIFI_AP_PASSWORD "none" +#define WIFI_AP_CHANNEL 1 #define MAX_CLIENTS 8 diff --git a/user/user_main.c b/user/user_main.c index c3d7a43..84abc78 100644 --- a/user/user_main.c +++ b/user/user_main.c @@ -659,12 +659,13 @@ void ICACHE_FLASH_ATTR user_set_softap_wifi_config(void) { os_sprintf(apConfig.ssid, "%s", config.ap_ssid); os_memset(apConfig.password, 0, 64); os_sprintf(apConfig.password, "%s", config.ap_password); + apConfig.channel = config.ap_channel; if (!config.ap_open) - apConfig.authmode = AUTH_WPA_WPA2_PSK; + apConfig.authmode = AUTH_WPA_WPA2_PSK; else - apConfig.authmode = AUTH_OPEN; + apConfig.authmode = AUTH_OPEN; + apConfig.ssid_len = 0; // or its actual length - apConfig.max_connection = MAX_CLIENTS; // how many stations can connect to ESP8266 softAP at most. // Set ESP8266 softap config