diff --git a/conf.h b/conf.h index 8e6afbf..ed4f103 100644 --- a/conf.h +++ b/conf.h @@ -32,6 +32,7 @@ struct config bool skwf; bool bt; bool enow; + bool enowone; uint8_t pins[6]; uint8_t pinb; uint8_t pinp; diff --git a/main.cpp b/main.cpp index a6c4acf..dc9625b 100644 --- a/main.cpp +++ b/main.cpp @@ -22,7 +22,7 @@ char exjpg[5] = ".jpg"; char extxt[5] = ".txt"; struct config conf = { - "v0.14e", + "v0.15", "LedHDxx", {}, //macs 0, //macson @@ -37,6 +37,7 @@ struct config conf = { false, //skwf false, //bluetooth false, //enow + false, //enowone {22,25,26,27,0,0}, //pins BTN_PIN, PWR_PIN, diff --git a/sub_btn.cpp b/sub_btn.cpp index be73b81..cab2100 100644 --- a/sub_btn.cpp +++ b/sub_btn.cpp @@ -27,7 +27,7 @@ void check_off() { char ans[8]; sprintf(ans, "iamon%02d", enow_getorder()); - enow_send(String(ans)); + enow_send(ans); } if (offm != millis()) { diff --git a/sub_enow.cpp b/sub_enow.cpp index 361ac83..c1b7806 100644 --- a/sub_enow.cpp +++ b/sub_enow.cpp @@ -9,21 +9,9 @@ static uint16_t macmask; void enow_begin() { - WiFi.persistent(false); - WiFi.mode(WIFI_AP); - WiFi.softAP("ESPNOW", nullptr, WIFI_CHANNEL); - WiFi.softAPdisconnect(false); - - bool conENow = WifiEspNow.begin();//Broadcast - if (!conENow) - { - Serial.println("Enow failed"); - } - else - { - WifiEspNow.onReceive(enow_receive, nullptr);//Broadcast - Serial.println("Enow begin"); - } + bool conENow = WifiEspNowBroadcast.begin("ESPNOW", WIFI_CHANNEL); + if (!conENow) Serial.println("WifiEspNowBroadcast.begin() failed"); + else WifiEspNowBroadcast.onReceive(enow_receive, nullptr); macmask = 1; for (int i = 0; i <= conf.macslen; i++) macmask |= 1 << i; int me = enow_getorder(); @@ -32,12 +20,12 @@ void enow_begin() void enow_end() { - WifiEspNow.onReceive(nullptr, nullptr);//Broadcast + WifiEspNowBroadcast.onReceive(nullptr, nullptr); } void enow_poll() { - //WifiEspNow.loop();//Broadcast + WifiEspNowBroadcast.loop(); } void enow_receive(const uint8_t mac[6], const uint8_t * buf, size_t count, void * cbarg) @@ -60,7 +48,7 @@ void enow_receive(const uint8_t mac[6], const uint8_t * buf, size_t count, void for (int i = 0; i < count; ++i) buft[i] = buf[i]; //Serial.print(static_cast(buf[i])); buft[count] = 0; String q = String(buft); - Serial.println(String(millis()) + ": " + q); + Serial.println(q); if (q.startsWith("enow")) { int dei = q.indexOf("="); @@ -94,25 +82,20 @@ void enow_receive(const uint8_t mac[6], const uint8_t * buf, size_t count, void Serial.print(conf.macson, BIN); Serial.print(" "); Serial.println(macmask, BIN); if (conf.macson == macmask) { - //WifiEspNowBroadcast.send(reinterpret_cast < const uint8_t * > ("enow_go=1"), 9); - //WifiEspNowBroadcast.send(reinterpret_cast < const uint8_t * > ("enow_go=1"), 9); - for (int i = 0; i < conf.macslen; i++) {WifiEspNow.send(conf.macs[i], reinterpret_cast ("enow_go=1"), 9); delay(5);} - for (int i = 0; i < conf.macslen; i++) {WifiEspNow.send(conf.macs[i], reinterpret_cast ("enow_go=1"), 9); delay(5);} + WifiEspNowBroadcast.send(reinterpret_cast < const uint8_t * > ("enow_go=1"), 9); + WifiEspNowBroadcast.send(reinterpret_cast < const uint8_t * > ("enow_go=1"), 9); state.go = true; } } } -void enow_send(String txt) +void enow_send(char txt[]) { char msg[60]; - int len = txt.length(); - txt.toCharArray(msg, 60); - snprintf(msg, sizeof(msg), "%s", txt); - //WifiEspNowBroadcast.send(reinterpret_cast < const uint8_t * > (msg), len); - for (int i = 0; i < conf.macslen; i++) {WifiEspNow.send(conf.macs[i], reinterpret_cast (msg), len); delay(5);} - Serial.printf("Sending message (%d): %s\n", len, msg); - /* + int len = snprintf(msg, sizeof(msg), "%s", txt); + WifiEspNowBroadcast.send(reinterpret_cast < const uint8_t * > (msg), len); + Serial.println("Sending message"); + Serial.println(msg); Serial.print("Recipients:"); const int MAX_PEERS = 20; WifiEspNowPeerInfo peers[MAX_PEERS]; @@ -123,7 +106,6 @@ void enow_send(String txt) Serial.write(' '); } Serial.println(); - */ } int enow_getorder() @@ -172,15 +154,13 @@ void enow_wakeup() Serial.print("adding peer "); for (int m = 0; m < 6; m++) Serial.printf("%02X", conf.macs[i][m]); Serial.println(); - WifiEspNow.addPeer(conf.macs[i]); + WifiEspNow.addPeer(conf.macs[i], 3); } } int ord = enow_getorder(); if (ord == conf.macslen + 1) { - //WifiEspNowBroadcast.send(reinterpret_cast("go"), 2); - for (int i = 0; i < conf.macslen; i++) WifiEspNow.send(conf.macs[i], reinterpret_cast ("go"), 2); - + WifiEspNowBroadcast.send(reinterpret_cast("go"), 2); } } else diff --git a/sub_enow.h b/sub_enow.h index 0476e17..d18c019 100644 --- a/sub_enow.h +++ b/sub_enow.h @@ -7,7 +7,7 @@ void enow_begin(); void enow_end(); void enow_poll(); void enow_receive(const uint8_t mac[6], const uint8_t * buf, size_t count, void * cbarg); -void enow_send(String txt); +void enow_send(char txt[]); int enow_getorder(); void enow_wakeup2(); void enow_wakeup(); diff --git a/sub_http.cpp b/sub_http.cpp index 2687e9e..9313df4 100644 --- a/sub_http.cpp +++ b/sub_http.cpp @@ -213,6 +213,7 @@ static const char content_files1[] PROGMEM = R"=====( @@ -715,7 +716,7 @@ static const char content_prog[] PROGMEM = R"=====( poihd prog - + main    @@ -733,7 +734,7 @@ prog

- +
name
@@ -848,6 +849,17 @@ async function savep(){ loads(document.getElementById('progn').value); alert(t); } +function delp(){ + var a = document.getElementById('progs'); + var v = a.value, i = a.selectedIndex; + if (i == -1) return; + var t = a.options[i].text; + var q = confirm('delete '+t+' ?'); + if(q) fetch('/del?f='+encodeURI('/prog_'+v+'.txt')) + .then((response) => {return response.text();}) + .then((data) => {alert(data);if(data.indexOf('deleted')!=-1){a.remove(i); a.onchange();} + }) +} )====="; void handleProg() diff --git a/sub_json.cpp b/sub_json.cpp index 4975881..508baa0 100644 --- a/sub_json.cpp +++ b/sub_json.cpp @@ -69,9 +69,17 @@ void json_save() preferences.putBool( "skwf", conf.skwf); preferences.putBool( "blth", conf.bt); preferences.putBool( "enow", conf.enow); + preferences.putBool( "enow1", conf.enowone); preferences.putInt( "whdr", state.whdr); preferences.putUShort("bpms", state.bpm); - preferences.putString("prog", state.progname); + if (state.progname != "no_prog") + { + preferences.putString("prog", state.progname); + } + else + { + preferences.remove("prog"); + } if (ssid[1] != "spiffs" && pass[1] != "spiffs") { preferences.putString("ssd1", ssid[1]); @@ -112,6 +120,7 @@ void json_load() conf.skwf = preferences.getBool( "skwf", false); conf.bt = preferences.getBool( "blth", false); conf.enow = preferences.getBool( "enow", false); + conf.enowone = preferences.getBool( "enow1", false); state.whdr = preferences.getInt( "whdr", 3); state.bpm = preferences.getUShort("bpms", 4000); state.progname = preferences.getString("prog", "no_prog"); @@ -120,6 +129,27 @@ void json_load() ssid[2] = preferences.getString("ssd2", "spiffs"); pass[2] = preferences.getString("pss2", "spiffs"); preferences.end(); + if (conf.enowone) + { + preferences.begin("conf", false); + preferences.putBool( "skwf", false); + preferences.putBool( "enow", false); + preferences.putBool( "enow1", false); + preferences.end(); + } +} + +void json_del() +{ + Preferences preferences; + preferences.begin("conf", false); + conf.macslen = 0; + memset(conf.macs, 0, 96); + state.progname = "no_prog"; + preferences.putUChar( "mlen", conf.macslen); + preferences.putBytes( "mmac", conf.macs, 96); + preferences.remove("prog"); + preferences.end(); } void json_clear() diff --git a/sub_json.h b/sub_json.h index bc831ca..3d6ba5b 100644 --- a/sub_json.h +++ b/sub_json.h @@ -10,9 +10,10 @@ #include #include -void json_save(); -void json_load(); String str_encode(String in); void mac_decode(String in, uint8_t *ans); +void json_save(); +void json_load(); +void json_del(); #endif diff --git a/sub_udp.cpp b/sub_udp.cpp index 99eebe4..56d1a31 100644 --- a/sub_udp.cpp +++ b/sub_udp.cpp @@ -124,6 +124,12 @@ String get_answ(String san, String sav) conf.cont = savi; return "cont set ok " + sav; } + if (san == "delconf") + { + json_del(); + conf.macslen = 0; + return F("conf deleted"); + } if (san == "drip") { IPAddress myip = WiFi.localIP(); @@ -137,6 +143,7 @@ String get_answ(String san, String sav) conf.bt = false; conf.skwf = true; conf.enow = true; + conf.enowone = true; json_save(); return "enow on"; } @@ -220,8 +227,8 @@ String get_answ(String san, String sav) if (san == "macor") { int px = enow_getorder(); - led_clear(); - for (int i = 0; i < px; i++) led_setpx(i, green); + for (int i = 0; i < 22; i++) led_setpxall(i, black); + for (int i = 0; i < px; i++) led_setpxall(i, green); led_show(); return "mac order"; }