From 9b09545379e7aadc79db7582fe26a94248e4a0d8 Mon Sep 17 00:00:00 2001 From: Scott Powell Date: Thu, 16 Jan 2025 22:26:01 +1100 Subject: [PATCH] * new advertisement app_data format --- examples/simple_repeater/main.cpp | 30 ++++++++++++++++++++-------- examples/simple_secure_chat/main.cpp | 25 +++++++++++++++++++---- 2 files changed, 43 insertions(+), 12 deletions(-) diff --git a/examples/simple_repeater/main.cpp b/examples/simple_repeater/main.cpp index 938985e0..e372145e 100644 --- a/examples/simple_repeater/main.cpp +++ b/examples/simple_repeater/main.cpp @@ -16,16 +16,16 @@ #define LORA_FREQ 915.0 #endif #ifndef LORA_BW - #define LORA_BW 125 + #define LORA_BW 250 #endif #ifndef LORA_SF - #define LORA_SF 9 + #define LORA_SF 10 #endif #ifndef LORA_CR #define LORA_CR 5 #endif -#define ANNOUNCE_DATA "repeater:v1" +#define ANNOUNCE_NAME "repeater1" #define ADMIN_PASSWORD "h^(kl@#)" @@ -130,8 +130,7 @@ class MyMesh : public mesh::Mesh { } case CMD_SEND_ANNOUNCE: { // broadcast another self Advertisement - auto adv = createAdvert(self_id, (const uint8_t *)ANNOUNCE_DATA, strlen(ANNOUNCE_DATA)); - if (adv) sendFlood(adv, 1500); // send after slight delay + sendSelfAdvertisement(); memcpy(&reply_data[4], "OK", 2); return 4 + 2; // reply_len @@ -276,14 +275,29 @@ public: : mesh::Mesh(radio, ms, rng, rtc, *new StaticPoolPacketManager(32), tables) { my_radio = &radio; - airtime_factor = 5.0; // 1/6th + airtime_factor = 0.0; // 5.0; // 1/6th num_clients = 0; } + #define ADV_TYPE_NONE 0 // unknown + #define ADV_TYPE_CHAT 1 + #define ADV_TYPE_REPEATER 2 + //FUTURE: 3..15 + + #define ADV_LATLON_MASK 0x10 + #define ADV_BATTERY_MASK 0x20 + #define ADV_TEMPERATURE_MASK 0x40 + #define ADV_NAME_MASK 0x80 + void sendSelfAdvertisement() { - mesh::Packet* pkt = createAdvert(self_id, (const uint8_t *)ANNOUNCE_DATA, strlen(ANNOUNCE_DATA)); + uint8_t app_data[32]; + app_data[0] = ADV_TYPE_REPEATER | ADV_NAME_MASK; + strcpy((char *)&app_data[1], ANNOUNCE_NAME); + int app_data_len = 1 + strlen(ANNOUNCE_NAME); + + mesh::Packet* pkt = createAdvert(self_id, app_data, app_data_len); if (pkt) { - sendFlood(pkt); + sendFlood(pkt, 800); // add slight delay } else { MESH_DEBUG_PRINTLN("ERROR: unable to create advertisement packet!"); } diff --git a/examples/simple_secure_chat/main.cpp b/examples/simple_secure_chat/main.cpp index 4e0ea368..5aa5aba5 100644 --- a/examples/simple_secure_chat/main.cpp +++ b/examples/simple_secure_chat/main.cpp @@ -15,10 +15,10 @@ #define LORA_FREQ 915.0 #endif #ifndef LORA_BW - #define LORA_BW 125 + #define LORA_BW 250 #endif #ifndef LORA_SF - #define LORA_SF 9 + #define LORA_SF 10 #endif #ifndef LORA_CR #define LORA_CR 5 @@ -27,8 +27,10 @@ //#define RUN_AS_ALICE true #if RUN_AS_ALICE + #define USER_NAME "Alice" const char* alice_private = "B8830658388B2DDF22C3A508F4386975970CDE1E2A2A495C8F3B5727957A97629255A1392F8BA4C26A023A0DAB78BFC64D261C8E51507496DD39AFE3707E7B42"; #else + #define USER_NAME "Bob" const char *bob_private = "30BAA23CCB825D8020A59C936D0AB7773B07356020360FC77192813640BAD375E43BBF9A9A7537E4B9614610F1F2EF874AAB390BA9B0C2F01006B01FDDFEFF0C"; #endif const char *alice_public = "106A5136EC0DD797650AD204C065CF9B66095F6ED772B0822187785D65E11B1F"; @@ -232,10 +234,25 @@ public: return createDatagram(PAYLOAD_TYPE_TXT_MSG, recipient.id, recipient.shared_secret, temp, 5 + text_len); } + #define ADV_TYPE_NONE 0 // unknown + #define ADV_TYPE_CHAT 1 + #define ADV_TYPE_REPEATER 2 + //FUTURE: 3..15 + + #define ADV_LATLON_MASK 0x10 + #define ADV_BATTERY_MASK 0x20 + #define ADV_TEMPERATURE_MASK 0x40 + #define ADV_NAME_MASK 0x80 + void sendSelfAdvert() { - mesh::Packet* adv = createAdvert(self_id); + uint8_t app_data[32]; + app_data[0] = ADV_TYPE_CHAT | ADV_NAME_MASK; + strcpy((char *)&app_data[1], USER_NAME); + int app_data_len = 1 + strlen(USER_NAME); + + mesh::Packet* adv = createAdvert(self_id, app_data, app_data_len); if (adv) { - sendFlood(adv); + sendFlood(adv, 800); // add slight delay Serial.println(" (advert sent)."); } else { Serial.println(" ERROR: unable to create packet.");