diff --git a/@postman/src/main.cpp b/@postman/src/main.cpp index b6a8efe..8b06993 100644 --- a/@postman/src/main.cpp +++ b/@postman/src/main.cpp @@ -14,19 +14,12 @@ // this module will be an esp-now node in a group. // like, a bird in a group of birds. // -// esp-now @ esp8266 DO support broadcast address (FF:FF:FF:FF:FF:FF) -// w/ NONOS-SDK of espressif -// and you can enable that w/ Platformio, applying some special build flags. -// --> https://github.com/esp8266/Arduino/issues/6174#issuecomment-509115454 -// (yet, w/ Arduino, this is not available yet.) -// -// so, at first, we will simply/stably go w/o broadcasting. -// and, if broadcast is really needed we can activate (@Platformio) +// esp-now @ esp8266 w/ broadcast address (FF:FF:FF:FF:FF:FF) +// always broadcasting. everyone is 'talkative'. // // then, let is save a value in EEPROM (object with memory) -// no broadcast for now. if needed we can achieve that too. @@ -66,12 +59,6 @@ //======================== // -#define MY_BOOK ("root") -// #define MY_BOOK ("friend") -// #define MY_BOOK ("sampler") -// -#define PEER_COUNT_MAX (20) -// #define LED_PERIOD (11111) #define LED_ONTIME (1) #define LED_GAPTIME (222) @@ -109,7 +96,6 @@ //post & addresses #include "../../post.h" -AddressLibrary library; //espnow #include @@ -215,60 +201,6 @@ void blink() { } Task blink_task(0, TASK_FOREVER, &blink, &runner, true); // -> ENABLED, at start-up. -//task #1 : regular post collection -#if defined(HAVE_CLIENT) -void collect_post() { - // - //postman (serial comm.) - static bool insync = false; - if (insync == false) { - while (Serial.available() > 0) { - // search the last byte - char last = Serial.read(); - // expectable last of the messages - if (last == ']' || last == '}') { - insync = true; - } - } - } else { - // - if (Serial.available() > 0) { - // - char type = Serial.peek(); - // - if (type == '[') { - //expecting a Note message. - uint8_t frm_size = sizeof(Note) + 2; - // - if (Serial.available() >= frm_size) { - // - uint8_t frm[frm_size]; - // - Serial.readBytes(frm, frm_size); - char first = frm[0]; - char last = frm[frm_size - 1]; - if (first == '[' && last == ']') { - // - //good. ==> ok, post it. - // - //pseudo-broadcast using peer-list! - // - esp_now_send(NULL, frm, frm_size); - // - MONITORING_SERIAL.write(frm, frm_size); - MONITORING_SERIAL.print(" ==(esp_now_send/0)==> "); - // - } else { - insync = false; //error! - } - } - } - } - } -} -Task collect_post_task(1, TASK_FOREVER, &collect_post, &runner, true); // by default, ENABLED -#endif - // void setup() { @@ -301,16 +233,6 @@ void setup() { #if defined(HAVE_CLIENT_I2C) Serial.println("- ======== 'HAVE_CLIENT_I2C' ========"); #endif - Serial.println("-"); - Serial.println("- * address library >>>"); - for (uint32_t j = 0; j < library.lib.size(); j++) { - Serial.println("-"); - Serial.println("- * (" + String(j + 1) + ") - \"" + library.lib[j].title + "\" >>>"); - Serial.println("-"); - for (uint32_t i = 0; i < library.lib[j].list.size(); i++) { - Serial.println("- " + library.lib[j].list[i].to_string()); - } - } Serial.println("-"); Serial.println("\".-.-.-. :)\""); Serial.println(); @@ -331,43 +253,13 @@ void setup() { esp_now_set_self_role(ESP_NOW_ROLE_COMBO); esp_now_register_send_cb(onDataSent); esp_now_register_recv_cb(onDataReceive); + // + Serial.println("-"); + Serial.println("- we will broadcast everything. ==> add only the 'broadcast peer' (FF:FF:FF:FF:FF:FF)."); + uint8_t broadcastmac[6] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}; + esp_now_add_peer(broadcastmac, ESP_NOW_ROLE_COMBO, 1, NULL, 0); // - AddressBook* members = library.getBookByTitle(MY_BOOK); - Serial.println("! registering peers in the book titled: \"" + String(MY_BOOK) + "\""); - - // - if (members == NULL) { - //oh, no such book! - Serial.println("---- :( oh, no such book! ===> " + String(MY_BOOK)); - Serial.println(" .... no peer will be registered. come back with different 'title' !"); - } else { - Serial.println("---- :) oki-doki, found it!"); - Serial.println(); - // - for (uint32_t i = 0; i < members->list.size(); i++) { - if (i >= PEER_COUNT_MAX) { - Serial.println("(!) @@@@ Hey, no more free-slot. @@@@ ==> " + members->list[i].to_string() + " ==> IGNORED :("); - } else { - //some decoration? - Serial.print("" + String((i + 1)%10) + "_ "); - for (uint32_t k = 0; k < i; k++) Serial.print(" "); - // - Serial.println("~~>> 'esp_now_add_peer' with ... " + members->list[i].to_string()); - esp_now_add_peer(members->list[i].mac, ESP_NOW_ROLE_COMBO, 1, NULL, 0); // <-- '1' : "Channel does not affect any function" ... *.-a - // - // int esp_now_add_peer(u8 *mac_addr, u8 role, u8 channel, u8 *key, u8 key_len) - // - https://www.espressif.com/sites/default/files/documentation/2c-esp8266_non_os_sdk_api_reference_en.pdf - // - // "Channel does not affect any function, but only stores the channel information - // for the application layer. The value is defined by the application layer. For - // example, 0 means that the channel is not defined; 1 ~ 14 mean valid - // channels; all the rest values can be assigned functions that are specified - // by the application layer." - // - https://www.espressif.com/sites/default/files/documentation/esp-now_user_guide_en.pdf - } - } - } Serial.println("-"); Serial.println("\".-.-.-. :)\""); Serial.println(); diff --git a/crickets/src/main.cpp b/crickets/src/main.cpp index c6b07bd..b65a199 100755 --- a/crickets/src/main.cpp +++ b/crickets/src/main.cpp @@ -9,6 +9,12 @@ // // 2021 02 15 // +// this module will be an esp-now node in a group. +// like, a bird in a group of birds. +// +// esp-now @ esp8266 w/ broadcast address (FF:FF:FF:FF:FF:FF) +// always broadcasting. everyone is 'talkative'. +// //===================== // @@ -32,39 +38,17 @@ #elif 0 #define SERIAL_SWAP #define HAVE_CLIENT -// (3) sampler client -#elif 0 -#define SERIAL_SWAP -#define HAVE_CLIENT -#define DISABLE_AP // #endif // //==================== -//======================== -#define CRICKET_A_KEY 120 // geared (esp8266) -#define CRICKET_E_KEY 121 // geared (esp8266) -#define CRICKET_I_KEY 122 // geared (esp8266) -#define CRICKET_O_KEY 123 // geared (esp8266) // servo pin is different (D7) -#define CRICKET_U_KEY 124 -#define CRICKET_W_KEY 125 -#define CRICKET_Y_KEY 126 -#define CRICKET_N_KEY 127 // fishing-fly (esp32) -//======================= - //======================== #define ID_KEY 126 //======================= //======================== // -#define MY_BOOK ("root") -// #define MY_BOOK ("friend") -// #define MY_BOOK ("sampler") -// -#define PEER_COUNT_MAX (20) -// #define LED_PERIOD (11111) #define LED_ONTIME (1) #define LED_GAPTIME (222) @@ -99,7 +83,6 @@ //post & addresses #include "../../post.h" -AddressLibrary library; //espnow #include @@ -145,12 +128,10 @@ void hello() { memcpy(frm + 1, (uint8_t *) &hello, sizeof(Hello)); frm[frm_size - 1] = '}'; // - //pseudo-broadcast using peer-list! - // - esp_now_send(AddressBook("root").list[0].mac, frm, frm_size); + esp_now_send(NULL, frm, frm_size); // just broadcast. // MONITORING_SERIAL.write(frm, frm_size); - MONITORING_SERIAL.println(" ==(esp_now_send/\"root\")==> "); + MONITORING_SERIAL.println(" ==(esp_now_send/BROADCAST)==> "); // if (hello_delay > 0) { if (hello_delay < 100) hello_delay = 100; @@ -258,16 +239,6 @@ void setup() { #if defined(DISABLE_AP) Serial.println("- ======== 'DISABLE_AP' ========"); #endif - Serial.println("-"); - Serial.println("- * address library >>>"); - for (uint32_t j = 0; j < library.lib.size(); j++) { - Serial.println("-"); - Serial.println("- * (" + String(j + 1) + ") - \"" + library.lib[j].title + "\" >>>"); - Serial.println("-"); - for (uint32_t i = 0; i < library.lib[j].list.size(); i++) { - Serial.println("- " + library.lib[j].list[i].to_string()); - } - } Serial.println("-"); Serial.println("\".-.-.-. :)\""); Serial.println(); @@ -288,43 +259,13 @@ void setup() { esp_now_set_self_role(ESP_NOW_ROLE_COMBO); esp_now_register_send_cb(onDataSent); esp_now_register_recv_cb(onDataReceive); + // + Serial.println("-"); + Serial.println("- we will broadcast everything. ==> add only the 'broadcast peer' (FF:FF:FF:FF:FF:FF)."); + uint8_t broadcastmac[6] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}; + esp_now_add_peer(broadcastmac, ESP_NOW_ROLE_COMBO, 1, NULL, 0); // - AddressBook* members = library.getBookByTitle(MY_BOOK); - Serial.println("! registering peers in the book titled: \"" + String(MY_BOOK) + "\""); - - // - if (members == NULL) { - //oh, no such book! - Serial.println("---- :( oh, no such book! ===> " + String(MY_BOOK)); - Serial.println(" .... no peer will be registered. come back with different 'title' !"); - } else { - Serial.println("---- :) oki-doki, found it!"); - Serial.println(); - // - for (uint32_t i = 0; i < members->list.size(); i++) { - if (i >= PEER_COUNT_MAX) { - Serial.println("(!) @@@@ Hey, no more free-slot. @@@@ ==> " + members->list[i].to_string() + " ==> IGNORED :("); - } else { - //some decoration? - Serial.print("" + String((i + 1)%10) + "_ "); - for (uint32_t k = 0; k < i; k++) Serial.print(" "); - // - Serial.println("~~>> 'esp_now_add_peer' with ... " + members->list[i].to_string()); - esp_now_add_peer(members->list[i].mac, ESP_NOW_ROLE_COMBO, 1, NULL, 0); // <-- '1' : "Channel does not affect any function" ... *.-a - // - // int esp_now_add_peer(u8 *mac_addr, u8 role, u8 channel, u8 *key, u8 key_len) - // - https://www.espressif.com/sites/default/files/documentation/2c-esp8266_non_os_sdk_api_reference_en.pdf - // - // "Channel does not affect any function, but only stores the channel information - // for the application layer. The value is defined by the application layer. For - // example, 0 means that the channel is not defined; 1 ~ 14 mean valid - // channels; all the rest values can be assigned functions that are specified - // by the application layer." - // - https://www.espressif.com/sites/default/files/documentation/esp-now_user_guide_en.pdf - } - } - } Serial.println("-"); Serial.println("\".-.-.-. :)\""); Serial.println(); diff --git a/gonggong/src/main.cpp b/gonggong/src/main.cpp index a27b114..6087009 100644 --- a/gonggong/src/main.cpp +++ b/gonggong/src/main.cpp @@ -9,6 +9,12 @@ // // 2021 02 15 // +// this module will be an esp-now node in a group. +// like, a bird in a group of birds. +// +// esp-now @ esp8266 w/ broadcast address (FF:FF:FF:FF:FF:FF) +// always broadcasting. everyone is 'talkative'. +// //===================== // @@ -54,12 +60,6 @@ //======================== // -#define MY_BOOK ("root") -// #define MY_BOOK ("friend") -// #define MY_BOOK ("sampler") -// -#define PEER_COUNT_MAX (20) -// #define LED_PERIOD (11111) #define LED_ONTIME (1) #define LED_GAPTIME (222) @@ -94,7 +94,6 @@ //post & addresses #include "../../post.h" -AddressLibrary library; //espnow #include @@ -213,6 +212,33 @@ Task head_release_task(0, TASK_ONCE, &head_release); // Task head_release_task(0, TASK_ONCE, &head_release); //*-*-*-*-*-*-*-*-*-*-*-*-* +// +extern Task hello_task; +static int hello_delay = 0; +void hello() { + // + Hello hello = { + ID_KEY + }; + // + uint8_t frm_size = sizeof(Hello) + 2; + uint8_t frm[frm_size]; + frm[0] = '{'; + memcpy(frm + 1, (uint8_t *) &hello, sizeof(Hello)); + frm[frm_size - 1] = '}'; + // + esp_now_send(NULL, frm, frm_size); // just broadcast. + // + MONITORING_SERIAL.write(frm, frm_size); + MONITORING_SERIAL.println(" ==(esp_now_send/BROADCAST)==> "); + // + if (hello_delay > 0) { + if (hello_delay < 100) hello_delay = 100; + hello_task.restartDelayed(hello_delay); + } +} +Task hello_task(0, TASK_ONCE, &hello); + //task #0 : blink led extern Task blink_task; void blink() { @@ -241,70 +267,6 @@ void blink() { } Task blink_task(0, TASK_FOREVER, &blink, &runner, true); // -> ENABLED, at start-up. -//task #1 : regular post collection -#if defined(HAVE_CLIENT) -void collect_post() { - // - //postman (serial comm.) - static bool insync = false; - if (insync == false) { - while (Serial.available() > 0) { - // search the last byte - char last = Serial.read(); - // expectable last of the messages - if (last == ']' || last == '}') { - insync = true; - } - } - } else { - // - if (Serial.available() > 0) { - // - char type = Serial.peek(); - // - if (type == '[') { - //expecting a Note message. - uint8_t frm_size = sizeof(Note) + 2; - // - if (Serial.available() >= frm_size) { - // - uint8_t frm[frm_size]; - // - Serial.readBytes(frm, frm_size); - char first = frm[0]; - char last = frm[frm_size - 1]; - if (first == '[' && last == ']') { - // - //good. ==> ok, post it. - // - //pseudo-broadcast using addressbook! - // - for (uint32_t i = 0; i < members.list.size(); i++) { - esp_now_send(members.list[i].mac, frm, frm_size); - // - MONITORING_SERIAL.write(frm, frm_size); - MONITORING_SERIAL.print(" ==(esp_now_send)==> "); - // - MONITORING_SERIAL.print(members.list[i].mac[0], HEX); - for (int j = 1; j < 6; j++) { - MONITORING_SERIAL.print(":"); - MONITORING_SERIAL.print(members.list[i].mac[j], HEX); - } - MONITORING_SERIAL.print(" ==> " + members.list[i].name); - // - } - // - } else { - insync = false; //error! - } - } - } - } - } -} -Task collect_post_task(1, TASK_FOREVER, &collect_post, &runner, true); // by default, ENABLED -#endif - // on 'Note' void onNoteHandler(Note & n) { // @@ -393,16 +355,6 @@ void setup() { #if defined(DISABLE_AP) Serial.println("- ======== 'DISABLE_AP' ========"); #endif - Serial.println("-"); - Serial.println("- * address library >>>"); - for (uint32_t j = 0; j < library.lib.size(); j++) { - Serial.println("-"); - Serial.println("- * (" + String(j + 1) + ") - \"" + library.lib[j].title + "\" >>>"); - Serial.println("-"); - for (uint32_t i = 0; i < library.lib[j].list.size(); i++) { - Serial.println("- " + library.lib[j].list[i].to_string()); - } - } Serial.println("-"); Serial.println("\".-.-.-. :)\""); Serial.println(); @@ -423,43 +375,13 @@ void setup() { esp_now_set_self_role(ESP_NOW_ROLE_COMBO); esp_now_register_send_cb(onDataSent); esp_now_register_recv_cb(onDataReceive); + // + Serial.println("-"); + Serial.println("- we will broadcast everything. ==> add only the 'broadcast peer' (FF:FF:FF:FF:FF:FF)."); + uint8_t broadcastmac[6] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}; + esp_now_add_peer(broadcastmac, ESP_NOW_ROLE_COMBO, 1, NULL, 0); // - AddressBook* members = library.getBookByTitle(MY_BOOK); - Serial.println("! registering peers in the book titled: \"" + String(MY_BOOK) + "\""); - - // - if (members == NULL) { - //oh, no such book! - Serial.println("---- :( oh, no such book! ===> " + String(MY_BOOK)); - Serial.println(" .... no peer will be registered. come back with different 'title' !"); - } else { - Serial.println("---- :) oki-doki, found it!"); - Serial.println(); - // - for (uint32_t i = 0; i < members->list.size(); i++) { - if (i >= PEER_COUNT_MAX) { - Serial.println("(!) @@@@ Hey, no more free-slot. @@@@ ==> " + members->list[i].to_string() + " ==> IGNORED :("); - } else { - //some decoration? - Serial.print("" + String((i + 1)%10) + "_ "); - for (uint32_t k = 0; k < i; k++) Serial.print(" "); - // - Serial.println("~~>> 'esp_now_add_peer' with ... " + members->list[i].to_string()); - esp_now_add_peer(members->list[i].mac, ESP_NOW_ROLE_COMBO, 1, NULL, 0); // <-- '1' : "Channel does not affect any function" ... *.-a - // - // int esp_now_add_peer(u8 *mac_addr, u8 role, u8 channel, u8 *key, u8 key_len) - // - https://www.espressif.com/sites/default/files/documentation/2c-esp8266_non_os_sdk_api_reference_en.pdf - // - // "Channel does not affect any function, but only stores the channel information - // for the application layer. The value is defined by the application layer. For - // example, 0 means that the channel is not defined; 1 ~ 14 mean valid - // channels; all the rest values can be assigned functions that are specified - // by the application layer." - // - https://www.espressif.com/sites/default/files/documentation/esp-now_user_guide_en.pdf - } - } - } Serial.println("-"); Serial.println("\".-.-.-. :)\""); Serial.println(); @@ -482,6 +404,7 @@ void setup() { randomSeed(analogRead(0)); //tasks + runner.addTask(hello_task); runner.addTask(ring_side_task); runner.addTask(ring_side_move_task); runner.addTask(side_release_task); diff --git a/postman/src/main.cpp b/postman/src/main.cpp index 0027795..0a23ce3 100644 --- a/postman/src/main.cpp +++ b/postman/src/main.cpp @@ -14,19 +14,12 @@ // this module will be an esp-now node in a group. // like, a bird in a group of birds. // -// esp-now @ esp8266 DO support broadcast address (FF:FF:FF:FF:FF:FF) -// w/ NONOS-SDK of espressif -// and you can enable that w/ Platformio, applying some special build flags. -// --> https://github.com/esp8266/Arduino/issues/6174#issuecomment-509115454 -// (yet, w/ Arduino, this is not available yet.) -// -// so, at first, we will simply/stably go w/o broadcasting. -// and, if broadcast is really needed we can activate (@Platformio) +// esp-now @ esp8266 w/ broadcast address (FF:FF:FF:FF:FF:FF) +// always broadcasting. everyone is 'talkative'. // // then, let is save a value in EEPROM (object with memory) -// no broadcast for now. if needed we can achieve that too. @@ -59,12 +52,6 @@ //======================== // -// #define MY_BOOK ("root") -// #define MY_BOOK ("friend") -#define MY_BOOK ("sampler") -// -#define PEER_COUNT_MAX (20) -// #define LED_PERIOD (11111) #define LED_ONTIME (1) #define LED_GAPTIME (222) @@ -99,7 +86,6 @@ //post & addresses #include "../../post.h" -AddressLibrary library; //espnow #include @@ -252,16 +238,6 @@ void setup() { #if defined(DISABLE_AP) Serial.println("- ======== 'DISABLE_AP' ========"); #endif - Serial.println("-"); - Serial.println("- * address library >>>"); - for (uint32_t j = 0; j < library.lib.size(); j++) { - Serial.println("-"); - Serial.println("- * (" + String(j + 1) + ") - \"" + library.lib[j].title + "\" >>>"); - Serial.println("-"); - for (uint32_t i = 0; i < library.lib[j].list.size(); i++) { - Serial.println("- " + library.lib[j].list[i].to_string()); - } - } Serial.println("-"); Serial.println("\".-.-.-. :)\""); Serial.println(); @@ -282,43 +258,13 @@ void setup() { esp_now_set_self_role(ESP_NOW_ROLE_COMBO); esp_now_register_send_cb(onDataSent); esp_now_register_recv_cb(onDataReceive); + // + Serial.println("-"); + Serial.println("- we will broadcast everything. ==> add only the 'broadcast peer' (FF:FF:FF:FF:FF:FF)."); + uint8_t broadcastmac[6] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}; + esp_now_add_peer(broadcastmac, ESP_NOW_ROLE_COMBO, 1, NULL, 0); // - AddressBook* members = library.getBookByTitle(MY_BOOK); - Serial.println("! registering peers in the book titled: \"" + String(MY_BOOK) + "\""); - - // - if (members == NULL) { - //oh, no such book! - Serial.println("---- :( oh, no such book! ===> " + String(MY_BOOK)); - Serial.println(" .... no peer will be registered. come back with different 'title' !"); - } else { - Serial.println("---- :) oki-doki, found it!"); - Serial.println(); - // - for (uint32_t i = 0; i < members->list.size(); i++) { - if (i >= PEER_COUNT_MAX) { - Serial.println("(!) @@@@ Hey, no more free-slot. @@@@ ==> " + members->list[i].to_string() + " ==> IGNORED :("); - } else { - //some decoration? - Serial.print("" + String((i + 1)%10) + "_ "); - for (uint32_t k = 0; k < i; k++) Serial.print(" "); - // - Serial.println("~~>> 'esp_now_add_peer' with ... " + members->list[i].to_string()); - esp_now_add_peer(members->list[i].mac, ESP_NOW_ROLE_COMBO, 1, NULL, 0); // <-- '1' : "Channel does not affect any function" ... *.-a - // - // int esp_now_add_peer(u8 *mac_addr, u8 role, u8 channel, u8 *key, u8 key_len) - // - https://www.espressif.com/sites/default/files/documentation/2c-esp8266_non_os_sdk_api_reference_en.pdf - // - // "Channel does not affect any function, but only stores the channel information - // for the application layer. The value is defined by the application layer. For - // example, 0 means that the channel is not defined; 1 ~ 14 mean valid - // channels; all the rest values can be assigned functions that are specified - // by the application layer." - // - https://www.espressif.com/sites/default/files/documentation/esp-now_user_guide_en.pdf - } - } - } Serial.println("-"); Serial.println("\".-.-.-. :)\""); Serial.println(); diff --git a/puredata/piano_access_mesh_x_2.pd b/puredata/piano_access_mesh_x_2.pd index 04eb647..d924f81 100644 --- a/puredata/piano_access_mesh_x_2.pd +++ b/puredata/piano_access_mesh_x_2.pd @@ -1,4 +1,4 @@ -#N canvas 542 326 804 465 10; +#N canvas 238 195 804 465 10; #X obj 397 140 print CTRL; #X obj 397 82 r CTRL; #X obj 397 103 spigot; @@ -10,16 +10,16 @@ #X obj 125 292 packOSC; #X obj 125 267 r OSC2; #X obj 317 103 spigot; -#X obj 366 88 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 +#X obj 366 88 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1 1; #X obj 317 82 r OSC2; #X obj 317 140 print OSC2; -#N canvas 196 89 718 806 crickets 0; +#N canvas 0 89 1440 811 crickets 1; #X obj 129 363 pack f f; #X obj 175 185 tgl 20 0 empty empty 120 17 7 0 10 -257985 -1 -1 0 1 ; #X obj 91 289 hsl 128 15 0 300 0 0 empty empty empty -2 -8 0 10 -262144 --1 -1 0 1; +-1 -1 4032 1; #X floatatom 139 311 5 0 0 0 - - -; #X obj 1077 528 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 1; @@ -94,7 +94,7 @@ #X obj 114 701 t b a; #X obj 32 248 f; #X obj 32 269 + 1; -#X obj 32 186 tgl 20 0 empty empty empty 17 7 0 10 -262130 -1 -1 0 +#X obj 32 186 tgl 20 0 empty empty empty 17 7 0 10 -262130 -1 -1 1 1; #X floatatom 31 366 5 0 0 0 - - -; #X floatatom 31 407 5 0 0 0 - - -; @@ -190,7 +190,7 @@ #X obj 591 183 tgl 20 0 empty empty 122 17 7 0 10 -257985 -1 -1 0 1 ; #X obj 507 287 hsl 128 15 0 300 0 0 empty empty empty -2 -8 0 10 -262144 --1 -1 0 1; +-1 -1 4193 1; #X floatatom 555 309 5 0 0 0 - - -; #X obj 545 405 s CTRL; #X obj 448 246 f; @@ -265,10 +265,10 @@ #X obj 40 668 + 1; #X obj 39 629 metro 1000; #X obj 752 357 pack f f; -#X obj 798 179 tgl 20 0 empty empty 123 17 7 0 10 -257985 -1 -1 0 1 +#X obj 798 179 tgl 20 0 empty empty 123 17 7 0 10 -257985 -1 -1 1 1 ; #X obj 714 283 hsl 128 15 0 300 0 0 empty empty empty -2 -8 0 10 -262144 --1 -1 0 1; +-1 -1 3064 1; #X floatatom 762 305 5 0 0 0 - - -; #X obj 752 401 s CTRL; #X obj 655 242 f; @@ -286,12 +286,12 @@ #X obj 1006 174 tgl 20 0 empty empty 124 17 7 0 10 -257985 -1 -1 0 1; #X obj 922 278 hsl 128 15 0 300 0 0 empty empty empty -2 -8 0 10 -262144 --1 -1 0 1; +-1 -1 2258 1; #X floatatom 970 300 5 0 0 0 - - -; #X obj 960 396 s CTRL; #X obj 863 237 f; #X obj 863 258 + 1; -#X obj 863 175 tgl 20 0 empty empty empty 17 7 0 10 -262130 -1 -1 0 +#X obj 863 175 tgl 20 0 empty empty empty 17 7 0 10 -262130 -1 -1 1 1; #X floatatom 862 355 5 0 0 0 - - -; #X floatatom 862 396 5 0 0 0 - - -; @@ -307,13 +307,13 @@ #X obj 1216 171 tgl 20 0 empty empty 125 17 7 0 10 -257985 -1 -1 0 1; #X obj 1132 275 hsl 128 15 0 300 0 0 empty empty empty -2 -8 0 10 -262144 --1 -1 0 1; +-1 -1 9434 1; #X floatatom 1180 297 5 0 0 0 - - -; #X obj 1170 393 s CTRL; #X obj 1073 234 f; #X obj 1073 255 + 1; #X obj 1073 172 tgl 20 0 empty empty empty 17 7 0 10 -262130 -1 -1 -0 1; +1 1; #X floatatom 1072 352 5 0 0 0 - - -; #X floatatom 1072 393 5 0 0 0 - - -; #X floatatom 1073 297 5 0 0 0 - - -; @@ -344,13 +344,13 @@ #X obj 1364 392 tgl 20 0 empty empty 125 17 7 0 10 -257985 -1 -1 0 1; #X obj 1280 496 hsl 128 15 0 300 0 0 empty empty empty -2 -8 0 10 -262144 --1 -1 0 1; +-1 -1 12700 1; #X floatatom 1328 518 5 0 0 0 - - -; #X obj 1318 614 s CTRL; #X obj 1221 455 f; #X obj 1221 476 + 1; #X obj 1221 393 tgl 20 0 empty empty empty 17 7 0 10 -262130 -1 -1 -0 1; +1 1; #X floatatom 1220 573 5 0 0 0 - - -; #X floatatom 1220 614 5 0 0 0 - - -; #X floatatom 1221 518 5 0 0 0 - - -; @@ -387,10 +387,8 @@ #X obj 538 764 * 300; #X obj 1221 497 mod 50; #X text 701 184 3 찌; -#X obj 447 384 * 200; #X text 491 187 2 찌; #X text 283 189 1 찌; -#X obj 31 386 * 100; #X text 907 181 가방진; #X text 1121 177 노란이 1; #X text 1271 395 노란이 2; @@ -526,12 +524,10 @@ #X msg 364 971 154 50 1; #X obj 364 932 metro 500; #X msg 49 1081 1002 0 1; -#X obj 1072 372 * 800; #X obj 1220 593 * 1200; #X obj 721 802 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 -1; #X obj 638 788 * 50; -#X obj 641 618 metro 50; #X obj 1520 978 s CTRL; #X obj 1494 723 f; #X obj 1494 744 + 1; @@ -558,6 +554,10 @@ #X text 1865 1168 >>>; #X obj 539 615 metro 1000; #X floatatom 587 842 5 0 0 0 - - -; +#X obj 31 386 * 400; +#X obj 641 618 metro 500; +#X obj 447 384 * 800; +#X obj 1092 372 * 600; #X connect 0 0 72 0; #X connect 1 0 0 1; #X connect 2 0 0 0; @@ -591,7 +591,7 @@ #X connect 39 0 38 1; #X connect 39 0 119 0; #X connect 40 0 44 0; -#X connect 41 0 228 0; +#X connect 41 0 367 0; #X connect 42 0 2 0; #X connect 43 0 87 0; #X connect 44 0 38 0; @@ -608,7 +608,7 @@ #X connect 64 0 63 1; #X connect 64 0 70 0; #X connect 65 0 69 0; -#X connect 66 0 343 0; +#X connect 66 0 341 0; #X connect 67 0 59 0; #X connect 68 0 62 0; #X connect 69 0 63 0; @@ -623,7 +623,7 @@ #X connect 79 0 78 1; #X connect 79 0 120 0; #X connect 80 0 84 0; -#X connect 81 0 225 0; +#X connect 81 0 369 0; #X connect 82 0 75 0; #X connect 83 0 86 0; #X connect 84 0 78 0; @@ -637,7 +637,7 @@ #X connect 96 0 97 0; #X connect 97 0 96 1; #X connect 97 0 106 0; -#X connect 98 0 243 0; +#X connect 98 0 241 0; #X connect 99 0 173 0; #X connect 100 0 93 0; #X connect 101 0 107 0; @@ -653,7 +653,7 @@ #X connect 111 0 112 0; #X connect 112 0 111 1; #X connect 112 0 154 0; -#X connect 113 0 369 0; +#X connect 113 0 365 0; #X connect 114 0 118 0; #X connect 115 0 153 0; #X connect 116 0 114 0; @@ -704,7 +704,7 @@ #X connect 162 0 161 1; #X connect 162 0 168 0; #X connect 163 0 167 0; -#X connect 164 0 347 0; +#X connect 164 0 370 0; #X connect 165 0 158 0; #X connect 166 0 169 0; #X connect 167 0 161 0; @@ -738,7 +738,7 @@ #X connect 194 0 193 1; #X connect 194 0 223 0; #X connect 195 0 199 0; -#X connect 196 0 348 0; +#X connect 196 0 345 0; #X connect 197 0 190 0; #X connect 198 0 200 0; #X connect 199 0 193 0; @@ -747,10 +747,10 @@ #X connect 203 0 204 0; #X connect 204 0 203 1; #X connect 204 0 215 0; -#X connect 205 0 351 0; +#X connect 205 0 368 0; #X connect 206 0 210 0; #X connect 207 0 214 0; -#X connect 208 0 350 0; +#X connect 208 0 347 0; #X connect 209 0 208 0; #X connect 210 1 211 0; #X connect 211 0 212 0; @@ -764,137 +764,137 @@ #X connect 221 0 184 0; #X connect 222 0 116 0; #X connect 223 0 198 0; -#X connect 225 0 82 0; -#X connect 228 0 42 0; -#X connect 234 0 235 0; -#X connect 235 0 234 1; -#X connect 235 0 239 0; -#X connect 236 0 240 0; -#X connect 237 0 238 0; -#X connect 239 0 237 0; -#X connect 240 0 234 0; -#X connect 241 0 242 0; -#X connect 242 0 233 0; -#X connect 243 0 96 0; -#X connect 245 0 246 0; -#X connect 246 0 244 0; -#X connect 248 0 258 0; +#X connect 232 0 233 0; +#X connect 233 0 232 1; +#X connect 233 0 237 0; +#X connect 234 0 238 0; +#X connect 235 0 236 0; +#X connect 237 0 235 0; +#X connect 238 0 232 0; +#X connect 239 0 240 0; +#X connect 240 0 231 0; +#X connect 241 0 96 0; +#X connect 243 0 244 0; +#X connect 244 0 242 0; +#X connect 246 0 256 0; +#X connect 247 0 248 0; +#X connect 248 0 249 0; #X connect 249 0 250 0; +#X connect 249 0 247 1; #X connect 250 0 251 0; -#X connect 251 0 252 0; -#X connect 251 0 249 1; -#X connect 252 0 253 0; -#X connect 253 0 295 0; -#X connect 253 1 296 0; -#X connect 256 0 254 0; -#X connect 257 0 255 0; -#X connect 258 0 260 0; -#X connect 259 0 262 0; -#X connect 260 0 346 0; -#X connect 260 1 249 0; -#X connect 260 2 257 0; -#X connect 260 3 259 0; -#X connect 261 0 259 0; -#X connect 268 0 338 0; -#X connect 269 0 270 0; -#X connect 270 0 337 0; -#X connect 271 0 339 0; -#X connect 274 0 272 0; -#X connect 275 0 273 0; -#X connect 276 0 278 0; -#X connect 277 0 322 0; -#X connect 277 1 269 0; -#X connect 277 2 275 0; -#X connect 277 3 276 0; -#X connect 283 0 276 0; -#X connect 285 0 284 0; -#X connect 287 0 290 1; -#X connect 288 0 286 0; -#X connect 288 0 285 0; +#X connect 251 0 293 0; +#X connect 251 1 294 0; +#X connect 254 0 252 0; +#X connect 255 0 253 0; +#X connect 256 0 258 0; +#X connect 257 0 260 0; +#X connect 258 0 344 0; +#X connect 258 1 247 0; +#X connect 258 2 255 0; +#X connect 258 3 257 0; +#X connect 259 0 257 0; +#X connect 266 0 336 0; +#X connect 267 0 268 0; +#X connect 268 0 335 0; +#X connect 269 0 337 0; +#X connect 272 0 270 0; +#X connect 273 0 271 0; +#X connect 274 0 276 0; +#X connect 275 0 320 0; +#X connect 275 1 267 0; +#X connect 275 2 273 0; +#X connect 275 3 274 0; +#X connect 281 0 274 0; +#X connect 283 0 282 0; +#X connect 285 0 288 1; +#X connect 286 0 284 0; +#X connect 286 0 283 0; +#X connect 288 0 287 0; +#X connect 289 0 286 0; #X connect 290 0 289 0; #X connect 291 0 288 0; -#X connect 292 0 291 0; -#X connect 293 0 290 0; -#X connect 294 0 257 0; -#X connect 295 0 256 0; -#X connect 296 0 256 0; +#X connect 292 0 255 0; +#X connect 293 0 254 0; +#X connect 294 0 254 0; +#X connect 296 0 298 0; +#X connect 297 0 310 0; +#X connect 298 0 299 0; #X connect 298 0 300 0; -#X connect 299 0 312 0; -#X connect 300 0 301 0; -#X connect 300 0 302 0; -#X connect 301 0 300 1; -#X connect 302 0 317 0; -#X connect 303 0 304 0; -#X connect 303 0 311 0; -#X connect 304 0 303 1; -#X connect 305 0 318 0; -#X connect 306 0 307 0; -#X connect 307 0 292 0; -#X connect 309 0 319 0; -#X connect 309 1 308 1; -#X connect 310 0 309 0; -#X connect 311 0 306 0; -#X connect 312 0 298 0; -#X connect 312 1 313 0; -#X connect 313 0 300 0; -#X connect 314 0 315 0; -#X connect 315 0 346 0; -#X connect 315 1 256 0; -#X connect 315 2 259 0; -#X connect 315 3 257 0; -#X connect 316 0 303 0; -#X connect 317 0 310 0; -#X connect 318 0 303 0; -#X connect 319 0 308 0; -#X connect 322 0 267 0; +#X connect 299 0 298 1; +#X connect 300 0 315 0; +#X connect 301 0 302 0; +#X connect 301 0 309 0; +#X connect 302 0 301 1; +#X connect 303 0 316 0; +#X connect 304 0 305 0; +#X connect 305 0 290 0; +#X connect 307 0 317 0; +#X connect 307 1 306 1; +#X connect 308 0 307 0; +#X connect 309 0 304 0; +#X connect 310 0 296 0; +#X connect 310 1 311 0; +#X connect 311 0 298 0; +#X connect 312 0 313 0; +#X connect 313 0 344 0; +#X connect 313 1 254 0; +#X connect 313 2 257 0; +#X connect 313 3 255 0; +#X connect 314 0 301 0; +#X connect 315 0 308 0; +#X connect 316 0 301 0; +#X connect 317 0 306 0; +#X connect 320 0 265 0; +#X connect 321 0 322 0; #X connect 323 0 324 0; +#X connect 324 0 320 0; +#X connect 324 1 272 0; +#X connect 324 2 274 0; +#X connect 324 3 273 0; #X connect 325 0 326 0; -#X connect 326 0 322 0; -#X connect 326 1 274 0; -#X connect 326 2 276 0; -#X connect 326 3 275 0; +#X connect 326 0 327 0; #X connect 327 0 328 0; -#X connect 328 0 329 0; -#X connect 329 0 330 0; -#X connect 329 1 331 0; -#X connect 330 0 332 0; -#X connect 330 0 334 0; -#X connect 336 0 345 0; -#X connect 337 0 271 0; -#X connect 337 0 269 1; -#X connect 338 0 277 0; -#X connect 339 0 340 0; -#X connect 339 1 342 0; -#X connect 340 0 274 0; -#X connect 341 0 274 0; -#X connect 342 0 274 0; -#X connect 343 0 67 0; -#X connect 344 0 335 0; -#X connect 345 0 344 0; -#X connect 346 0 247 0; -#X connect 347 0 165 0; -#X connect 348 0 197 0; -#X connect 349 0 211 0; -#X connect 350 0 206 0; -#X connect 351 0 203 0; -#X connect 353 0 354 0; -#X connect 354 0 353 1; -#X connect 354 0 362 0; -#X connect 355 0 367 0; -#X connect 356 0 360 0; -#X connect 357 0 365 0; -#X connect 358 0 356 0; -#X connect 359 0 363 0; -#X connect 360 1 361 0; -#X connect 361 0 366 0; -#X connect 362 0 357 0; -#X connect 363 0 358 0; -#X connect 365 0 359 0; -#X connect 366 0 352 0; -#X connect 367 0 353 0; -#X connect 369 0 111 0; -#X connect 369 0 370 0; -#X connect 370 0 50 0; +#X connect 327 1 329 0; +#X connect 328 0 330 0; +#X connect 328 0 332 0; +#X connect 334 0 343 0; +#X connect 335 0 269 0; +#X connect 335 0 267 1; +#X connect 336 0 275 0; +#X connect 337 0 338 0; +#X connect 337 1 340 0; +#X connect 338 0 272 0; +#X connect 339 0 272 0; +#X connect 340 0 272 0; +#X connect 341 0 67 0; +#X connect 342 0 333 0; +#X connect 343 0 342 0; +#X connect 344 0 245 0; +#X connect 345 0 197 0; +#X connect 346 0 211 0; +#X connect 347 0 206 0; +#X connect 349 0 350 0; +#X connect 350 0 349 1; +#X connect 350 0 358 0; +#X connect 351 0 363 0; +#X connect 352 0 356 0; +#X connect 353 0 361 0; +#X connect 354 0 352 0; +#X connect 355 0 359 0; +#X connect 356 1 357 0; +#X connect 357 0 362 0; +#X connect 358 0 353 0; +#X connect 359 0 354 0; +#X connect 361 0 355 0; +#X connect 362 0 348 0; +#X connect 363 0 349 0; +#X connect 365 0 111 0; +#X connect 365 0 366 0; +#X connect 366 0 50 0; +#X connect 367 0 42 0; +#X connect 368 0 203 0; +#X connect 369 0 82 0; +#X connect 370 0 165 0; #X restore 261 206 pd crickets nanokontrol2; #X text 576 69 /pitch /velocity /onoff; #X obj 530 69 r CTRL; @@ -964,7 +964,7 @@ pollintervall 1 \, verbose 1; #X obj 125 392 unpackOSC; #X obj 125 415 routeOSC /hello; #X obj 252 404 s HELLO; -#N canvas 133 398 1214 393 roundly 0; +#N canvas 133 398 1214 393 roundly 1; #X floatatom 925 227 5 0 0 0 - - -; #X obj 925 249 s PS; #X msg 354 139 \$1 5000; @@ -987,7 +987,7 @@ pollintervall 1 \, verbose 1; #X obj 253 209 s CTRL; #X floatatom 253 99 5 0 0 0 target_pos - -; #X obj 97 31 hsl 1000 15 -50000 50000 0 0 empty empty empty -2 -8 0 -10 -260097 -262144 -1 49950 1; +10 -260097 -262144 -1 25950 1; #X obj 97 51 hsl 1000 15 -50000 50000 0 0 empty empty empty -2 -8 0 10 -13381 -262144 -1 49950 1; #X obj 253 121 t b a; @@ -1111,7 +1111,7 @@ pollintervall 1 \, verbose 1; #X restore 102 45 pd bluetooth-keyboard; #X text 1 2 <<<; #X text 401 2 >>>; -#N canvas 429 89 696 411 OSC-keyboard-samplers 1; +#N canvas 699 114 696 411 OSC-keyboard-samplers 1; #X obj 27 148 o.io.slipserial; #X msg 56 97 devices; #X msg 143 102 close; @@ -1121,7 +1121,7 @@ pollintervall 1 \, verbose 1; #X obj 591 82 print NOTE; #X obj 511 82 print OSC; #X obj 511 55 spigot; -#X obj 560 40 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1 +#X obj 560 40 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 1; #X msg 134 60 devicename /dev/tty.usbmodem48710501 \, baud 57600 \, pollintervall 1 \, verbose 1; @@ -1146,7 +1146,7 @@ pollintervall 1 \, verbose 1; #X text 193 296 BIG; #X text 31 296 SMALL; #X obj 69 297 hradio 15 1 0 8 empty empty vol._override 0 -8 0 10 -257985 --1 -1 3; +-1 -1 4; #X obj 69 320 tabread \$0-volume-list; #N canvas 817 360 501 420 volume-list 0; #X msg 146 359 \; \$1-volume-list 0 0 10 25 50 127 180 255 500; @@ -1251,7 +1251,7 @@ pollintervall 1 \, verbose 1; #X restore 189 204 pd buildOSC; #X floatatom 243 240 5 0 0 3 r:0-vol #0-vol -; #X obj 286 232 nbx 5 25 -1e+37 1e+37 0 0 empty empty volume-now 0 -12 -0 20 -262130 -159808 -159808 50 256; +0 20 -262130 -159808 -159808 127 256; #X msg 225 109 devicename /dev/ttyACM0 \, baud 57600 \, pollintervall 1 \, verbose 1; #X obj 541 212 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 diff --git a/roundly/src/main.cpp b/roundly/src/main.cpp index 231e994..f8f4458 100644 --- a/roundly/src/main.cpp +++ b/roundly/src/main.cpp @@ -9,6 +9,12 @@ // // 2021 02 15 // +// this module will be an esp-now node in a group. +// like, a bird in a group of birds. +// +// esp-now @ esp8266 w/ broadcast address (FF:FF:FF:FF:FF:FF) +// always broadcasting. everyone is 'talkative'. +// //===================== // @@ -32,39 +38,17 @@ #elif 0 #define SERIAL_SWAP #define HAVE_CLIENT -// (3) sampler client -#elif 0 -#define SERIAL_SWAP -#define HAVE_CLIENT -#define DISABLE_AP // #endif // //==================== -//======================== -#define ROUNDLY_A_KEY 2000 // A-E-I-O-U-W-Y-N (up to 8 roundlys) - KEY 200 ~ 207 -#define ROUNDLY_E_KEY 2001 -#define ROUNDLY_I_KEY 2002 -#define ROUNDLY_O_KEY 2003 -#define ROUNDLY_U_KEY 2004 -#define ROUNDLY_W_KEY 2005 -#define ROUNDLY_Y_KEY 2006 -#define ROUNDLY_N_KEY 2007 -//======================= - //======================== -#define ID_KEY ROUNDLY_E_KEY +#define ID_KEY 2000 //======================= //======================== // -#define MY_BOOK ("root") -// #define MY_BOOK ("friend") -// #define MY_BOOK ("sampler") -// -#define PEER_COUNT_MAX (20) -// #define LED_PERIOD (11111) #define LED_ONTIME (1) #define LED_GAPTIME (222) @@ -99,7 +83,6 @@ //post & addresses #include "../../post.h" -AddressLibrary library; //espnow #include @@ -186,8 +169,6 @@ void hello() { Hello hello = { ID_KEY, stepper.currentPosition(), - stepper.distanceToGo(), - stepper.distanceToGo(), stepper.distanceToGo() }; // @@ -197,12 +178,10 @@ void hello() { memcpy(frm + 1, (uint8_t *) &hello, sizeof(Hello)); frm[frm_size - 1] = '}'; // - //pseudo-broadcast using peer-list! - // - esp_now_send(AddressBook("root").list[0].mac, frm, frm_size); + esp_now_send(NULL, frm, frm_size); // just broadcast. // MONITORING_SERIAL.write(frm, frm_size); - MONITORING_SERIAL.println(" ==(esp_now_send/\"root\")==> "); + MONITORING_SERIAL.println(" ==(esp_now_send/BROADCAST)==> "); // if (hello_delay > 0) { if (hello_delay < 100) hello_delay = 100; @@ -316,16 +295,6 @@ void setup() { #if defined(DISABLE_AP) Serial.println("- ======== 'DISABLE_AP' ========"); #endif - Serial.println("-"); - Serial.println("- * address library >>>"); - for (uint32_t j = 0; j < library.lib.size(); j++) { - Serial.println("-"); - Serial.println("- * (" + String(j + 1) + ") - \"" + library.lib[j].title + "\" >>>"); - Serial.println("-"); - for (uint32_t i = 0; i < library.lib[j].list.size(); i++) { - Serial.println("- " + library.lib[j].list[i].to_string()); - } - } Serial.println("-"); Serial.println("\".-.-.-. :)\""); Serial.println(); @@ -346,43 +315,13 @@ void setup() { esp_now_set_self_role(ESP_NOW_ROLE_COMBO); esp_now_register_send_cb(onDataSent); esp_now_register_recv_cb(onDataReceive); + // + Serial.println("-"); + Serial.println("- we will broadcast everything. ==> add only the 'broadcast peer' (FF:FF:FF:FF:FF:FF)."); + uint8_t broadcastmac[6] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}; + esp_now_add_peer(broadcastmac, ESP_NOW_ROLE_COMBO, 1, NULL, 0); // - AddressBook* members = library.getBookByTitle(MY_BOOK); - Serial.println("! registering peers in the book titled: \"" + String(MY_BOOK) + "\""); - - // - if (members == NULL) { - //oh, no such book! - Serial.println("---- :( oh, no such book! ===> " + String(MY_BOOK)); - Serial.println(" .... no peer will be registered. come back with different 'title' !"); - } else { - Serial.println("---- :) oki-doki, found it!"); - Serial.println(); - // - for (uint32_t i = 0; i < members->list.size(); i++) { - if (i >= PEER_COUNT_MAX) { - Serial.println("(!) @@@@ Hey, no more free-slot. @@@@ ==> " + members->list[i].to_string() + " ==> IGNORED :("); - } else { - //some decoration? - Serial.print("" + String((i + 1)%10) + "_ "); - for (uint32_t k = 0; k < i; k++) Serial.print(" "); - // - Serial.println("~~>> 'esp_now_add_peer' with ... " + members->list[i].to_string()); - esp_now_add_peer(members->list[i].mac, ESP_NOW_ROLE_COMBO, 1, NULL, 0); // <-- '1' : "Channel does not affect any function" ... *.-a - // - // int esp_now_add_peer(u8 *mac_addr, u8 role, u8 channel, u8 *key, u8 key_len) - // - https://www.espressif.com/sites/default/files/documentation/2c-esp8266_non_os_sdk_api_reference_en.pdf - // - // "Channel does not affect any function, but only stores the channel information - // for the application layer. The value is defined by the application layer. For - // example, 0 means that the channel is not defined; 1 ~ 14 mean valid - // channels; all the rest values can be assigned functions that are specified - // by the application layer." - // - https://www.espressif.com/sites/default/files/documentation/esp-now_user_guide_en.pdf - } - } - } Serial.println("-"); Serial.println("\".-.-.-. :)\""); Serial.println(); @@ -414,9 +353,9 @@ void setup() { #endif //tasks + runner.addTask(hello_task); runner.addTask(stepping_task); runner.addTask(rest_task); - runner.addTask(hello_task); rest_task.restartDelayed(500); } diff --git a/taak/src/main.cpp b/taak/src/main.cpp index 3485713..846881b 100644 --- a/taak/src/main.cpp +++ b/taak/src/main.cpp @@ -9,6 +9,12 @@ // // 2021 02 15 // +// this module will be an esp-now node in a group. +// like, a bird in a group of birds. +// +// esp-now @ esp8266 w/ broadcast address (FF:FF:FF:FF:FF:FF) +// always broadcasting. everyone is 'talkative'. +// //===================== // @@ -42,29 +48,12 @@ // //==================== -//======================== -#define TAAK_A_KEY 150 //solenoid -#define TAAK_E_KEY 151 //valve -#define TAAK_I_KEY 152 -#define TAAK_O_KEY 153 -#define TAAK_U_KEY 154 -#define TAAK_W_KEY 155 -#define TAAK_Y_KEY 156 -#define TAAK_N_KEY 157 -//======================= - //======================== #define ID_KEY 151 //======================= //======================== // -#define MY_BOOK ("root") -// #define MY_BOOK ("friend") -// #define MY_BOOK ("sampler") -// -#define PEER_COUNT_MAX (20) -// #define LED_PERIOD (11111) #define LED_ONTIME (1) #define LED_GAPTIME (222) @@ -99,7 +88,6 @@ //post & addresses #include "../../post.h" -AddressLibrary library; //espnow #include @@ -123,6 +111,33 @@ void taak_off() { Task taak_off_task(0, TASK_ONCE, &taak_off); //*-*-*-*-*-*-*-*-*-*-*-*-* +// +extern Task hello_task; +static int hello_delay = 0; +void hello() { + // + Hello hello = { + ID_KEY + }; + // + uint8_t frm_size = sizeof(Hello) + 2; + uint8_t frm[frm_size]; + frm[0] = '{'; + memcpy(frm + 1, (uint8_t *) &hello, sizeof(Hello)); + frm[frm_size - 1] = '}'; + // + esp_now_send(NULL, frm, frm_size); // just broadcast. + // + MONITORING_SERIAL.write(frm, frm_size); + MONITORING_SERIAL.println(" ==(esp_now_send/BROADCAST)==> "); + // + if (hello_delay > 0) { + if (hello_delay < 100) hello_delay = 100; + hello_task.restartDelayed(hello_delay); + } +} +Task hello_task(0, TASK_ONCE, &hello); + //task #0 : blink led extern Task blink_task; void blink() { @@ -151,70 +166,6 @@ void blink() { } Task blink_task(0, TASK_FOREVER, &blink, &runner, true); // -> ENABLED, at start-up. -//task #1 : regular post collection -#if defined(HAVE_CLIENT) -void collect_post() { - // - //postman (serial comm.) - static bool insync = false; - if (insync == false) { - while (Serial.available() > 0) { - // search the last byte - char last = Serial.read(); - // expectable last of the messages - if (last == ']' || last == '}') { - insync = true; - } - } - } else { - // - if (Serial.available() > 0) { - // - char type = Serial.peek(); - // - if (type == '[') { - //expecting a Note message. - uint8_t frm_size = sizeof(Note) + 2; - // - if (Serial.available() >= frm_size) { - // - uint8_t frm[frm_size]; - // - Serial.readBytes(frm, frm_size); - char first = frm[0]; - char last = frm[frm_size - 1]; - if (first == '[' && last == ']') { - // - //good. ==> ok, post it. - // - //pseudo-broadcast using addressbook! - // - for (uint32_t i = 0; i < members.list.size(); i++) { - esp_now_send(members.list[i].mac, frm, frm_size); - // - MONITORING_SERIAL.write(frm, frm_size); - MONITORING_SERIAL.print(" ==(esp_now_send)==> "); - // - MONITORING_SERIAL.print(members.list[i].mac[0], HEX); - for (int j = 1; j < 6; j++) { - MONITORING_SERIAL.print(":"); - MONITORING_SERIAL.print(members.list[i].mac[j], HEX); - } - MONITORING_SERIAL.print(" ==> " + members.list[i].name); - // - } - // - } else { - insync = false; //error! - } - } - } - } - } -} -Task collect_post_task(1, TASK_FOREVER, &collect_post, &runner, true); // by default, ENABLED -#endif - // on 'Note' void onNoteHandler(Note & n) { //is it for me? @@ -294,16 +245,6 @@ void setup() { #if defined(DISABLE_AP) Serial.println("- ======== 'DISABLE_AP' ========"); #endif - Serial.println("-"); - Serial.println("- * address library >>>"); - for (uint32_t j = 0; j < library.lib.size(); j++) { - Serial.println("-"); - Serial.println("- * (" + String(j + 1) + ") - \"" + library.lib[j].title + "\" >>>"); - Serial.println("-"); - for (uint32_t i = 0; i < library.lib[j].list.size(); i++) { - Serial.println("- " + library.lib[j].list[i].to_string()); - } - } Serial.println("-"); Serial.println("\".-.-.-. :)\""); Serial.println(); @@ -324,43 +265,13 @@ void setup() { esp_now_set_self_role(ESP_NOW_ROLE_COMBO); esp_now_register_send_cb(onDataSent); esp_now_register_recv_cb(onDataReceive); + // + Serial.println("-"); + Serial.println("- we will broadcast everything. ==> add only the 'broadcast peer' (FF:FF:FF:FF:FF:FF)."); + uint8_t broadcastmac[6] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}; + esp_now_add_peer(broadcastmac, ESP_NOW_ROLE_COMBO, 1, NULL, 0); // - AddressBook* members = library.getBookByTitle(MY_BOOK); - Serial.println("! registering peers in the book titled: \"" + String(MY_BOOK) + "\""); - - // - if (members == NULL) { - //oh, no such book! - Serial.println("---- :( oh, no such book! ===> " + String(MY_BOOK)); - Serial.println(" .... no peer will be registered. come back with different 'title' !"); - } else { - Serial.println("---- :) oki-doki, found it!"); - Serial.println(); - // - for (uint32_t i = 0; i < members->list.size(); i++) { - if (i >= PEER_COUNT_MAX) { - Serial.println("(!) @@@@ Hey, no more free-slot. @@@@ ==> " + members->list[i].to_string() + " ==> IGNORED :("); - } else { - //some decoration? - Serial.print("" + String((i + 1)%10) + "_ "); - for (uint32_t k = 0; k < i; k++) Serial.print(" "); - // - Serial.println("~~>> 'esp_now_add_peer' with ... " + members->list[i].to_string()); - esp_now_add_peer(members->list[i].mac, ESP_NOW_ROLE_COMBO, 1, NULL, 0); // <-- '1' : "Channel does not affect any function" ... *.-a - // - // int esp_now_add_peer(u8 *mac_addr, u8 role, u8 channel, u8 *key, u8 key_len) - // - https://www.espressif.com/sites/default/files/documentation/2c-esp8266_non_os_sdk_api_reference_en.pdf - // - // "Channel does not affect any function, but only stores the channel information - // for the application layer. The value is defined by the application layer. For - // example, 0 means that the channel is not defined; 1 ~ 14 mean valid - // channels; all the rest values can be assigned functions that are specified - // by the application layer." - // - https://www.espressif.com/sites/default/files/documentation/esp-now_user_guide_en.pdf - } - } - } Serial.println("-"); Serial.println("\".-.-.-. :)\""); Serial.println(); @@ -383,6 +294,7 @@ void setup() { pinMode(D6, OUTPUT); //tasks + runner.addTask(hello_task); runner.addTask(taak_on_task); runner.addTask(taak_off_task); }