Merge branch 'master' into master

This commit is contained in:
Jm Casler 2021-03-07 23:25:43 -08:00 committed by GitHub
commit 315cfe4f2d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 65 additions and 25 deletions

View File

@ -45,6 +45,18 @@ Recommended settings for a sender at different radio settings:
Medium ... range_test_plugin_sender = 15
Short Fast ... range_test_plugin_sender = 15
## Python API Examples
### Sender
meshtastic --set range_test_plugin_enabled 1
meshtastic --set range_test_plugin_sender 60
### Receiver
meshtastic --set range_test_plugin_enabled 1
meshtastic --set range_test_plugin_save 1
## Other things to keep in mind
Be sure to turn off either the plugin configured as a sender or the device where the plugin setup as sender when not in use. This will use a lot of time on air and will spam your channel.

View File

@ -26,26 +26,23 @@ int32_t StoreForwardPlugin::runOnce()
without having to configure it from the PythonAPI or WebUI.
*/
// radioConfig.preferences.store_forward_plugin_enabled = 1;
// radioConfig.preferences.is_router = 1;
radioConfig.preferences.store_forward_plugin_enabled = 1;
radioConfig.preferences.is_router = 0;
if (radioConfig.preferences.store_forward_plugin_enabled) {
if (firstTime) {
/*
*/
firstTime = 0;
if (radioConfig.preferences.is_router) {
DEBUG_MSG("Initializing Store & Forward Plugin - Enabled\n");
DEBUG_MSG("Initializing Store & Forward Plugin - Enabled as Router\n");
// Router
if (ESP.getPsramSize()) {
if (ESP.getFreePsram() >= 2048 * 1024) {
// Do the startup here
storeForwardPluginRadio = new StoreForwardPluginRadio();
firstTime = 0;
this->populatePSRAM();
// packetHistory[0].bytes;
@ -66,21 +63,30 @@ int32_t StoreForwardPlugin::runOnce()
}
} else {
DEBUG_MSG("Initializing Store & Forward Plugin - Enabled but is_router is not turned on.\n");
DEBUG_MSG(
"Initializing Store & Forward Plugin - If you want to use this plugin, you must also turn on is_router.\n");
// Non-Router
return (30 * 1000);
DEBUG_MSG("Initializing Store & Forward Plugin - Enabled as Client\n");
return (5 * 1000);
}
} else {
// What do we do if it's not our first time?
// Maybe some cleanup functions?
this->sawNodeReport();
this->historyReport();
return (10 * 1000);
if (radioConfig.preferences.is_router) {
// Maybe some cleanup functions?
this->sawNodeReport();
this->historyReport();
return (10 * 1000);
} else {
/*
* If the plugin is turned on and is_router is not enabled, then we'll send a heartbeat every
* few minutes.
*/
DEBUG_MSG("Store & Forward Plugin - Sending heartbeat\n");
// storeForwardPluginRadio->sendPayloadHeartbeat();
storeForwardPluginRadio->sendPayload();
return (1 * 60 * 1000);
}
}
} else {
@ -220,15 +226,32 @@ void StoreForwardPlugin::sawNodeReport()
MeshPacket *StoreForwardPluginRadio::allocReply()
{
auto reply = allocDataPacket(); // Allocate a packet for sending
return reply;
//auto reply = allocDataPacket(); // Allocate a packet for sending
//return reply;
}
void StoreForwardPluginRadio::sendPayload(NodeNum dest, bool wantReplies)
{
MeshPacket *p = allocReply();
MeshPacket *p = this->allocReply();
/*
p->to = dest;
p->decoded.want_response = wantReplies;
p->want_ack = true;
*/
// static char heartbeatString[20];
// snprintf(heartbeatString, sizeof(heartbeatString), "1");
// p->decoded.data.payload.size = strlen(heartbeatString); // You must specify how many bytes are in the reply
// memcpy(p->decoded.data.payload.bytes, "1", 1);
// service.sendToMesh(p);
}
void StoreForwardPluginRadio::sendPayloadHeartbeat(NodeNum dest, bool wantReplies)
{
DEBUG_MSG("Sending S&F Heartbeat\n");
MeshPacket *p = this->allocReply();
p->to = dest;
p->decoded.want_response = wantReplies;
@ -282,8 +305,8 @@ bool StoreForwardPluginRadio::handleReceived(const MeshPacket &mp)
}
if ((millis() - sawTime) > STOREFORWARD_SEND_HISTORY_SHORT) {
// Node has been away for a while.
storeForwardPlugin->historySend(sawTime, getFrom(&mp));
// Node has been away for a while.
storeForwardPlugin->historySend(sawTime, mp.from);
}
}

View File

@ -63,6 +63,11 @@ class StoreForwardPluginRadio : public SinglePortPlugin
*/
void sendPayload(NodeNum dest = NODENUM_BROADCAST, bool wantReplies = false);
/**
* Send our payload into the mesh
*/
void sendPayloadHeartbeat(NodeNum dest = NODENUM_BROADCAST, bool wantReplies = false);
protected:
virtual MeshPacket *allocReply();