mirror of
https://github.com/meshtastic/firmware.git
synced 2025-06-15 01:22:04 +00:00
fix static initializer bug with mesh plugins
This commit is contained in:
parent
0b0d293a66
commit
5138aff4b2
2
proto
2
proto
@ -1 +1 @@
|
||||
Subproject commit 95ef921604cdab46e32adc245a8d72c7bdbbe319
|
||||
Subproject commit 7c1016b8a01d4d019c4239fe46624dee7bde22c7
|
@ -1,10 +1,18 @@
|
||||
#include "MeshPlugin.h"
|
||||
#include <assert.h>
|
||||
|
||||
std::vector<MeshPlugin *> MeshPlugin::plugins;
|
||||
std::vector<MeshPlugin *> *MeshPlugin::plugins;
|
||||
|
||||
MeshPlugin::MeshPlugin(const char *_name) : name(_name) {
|
||||
plugins.push_back(this);
|
||||
MeshPlugin::MeshPlugin(const char *_name) : name(_name)
|
||||
{
|
||||
// Can't trust static initalizer order, so we check each time
|
||||
if(!plugins)
|
||||
plugins = new std::vector<MeshPlugin *>();
|
||||
|
||||
plugins->push_back(this);
|
||||
}
|
||||
|
||||
void MeshPlugin::setup() {
|
||||
}
|
||||
|
||||
MeshPlugin::~MeshPlugin()
|
||||
@ -14,9 +22,17 @@ MeshPlugin::~MeshPlugin()
|
||||
|
||||
void MeshPlugin::callPlugins(const MeshPacket &mp)
|
||||
{
|
||||
for (auto i = plugins.begin(); i != plugins.end(); ++i) {
|
||||
if ((*i)->wantPortnum(mp.decoded.data.portnum))
|
||||
if ((*i)->handleReceived(mp))
|
||||
DEBUG_MSG("In call plugins\n");
|
||||
for (auto i = plugins->begin(); i != plugins->end(); ++i) {
|
||||
auto &pi = **i;
|
||||
if (pi.wantPortnum(mp.decoded.data.portnum)) {
|
||||
bool handled = pi.handleReceived(mp);
|
||||
DEBUG_MSG("Plugin %s handled=%d\n", pi.name, handled);
|
||||
if (handled)
|
||||
break;
|
||||
}
|
||||
else {
|
||||
DEBUG_MSG("Plugin %s not interested\n", pi.name);
|
||||
}
|
||||
}
|
||||
}
|
@ -16,7 +16,7 @@ class MeshPlugin
|
||||
{
|
||||
const char *name;
|
||||
|
||||
static std::vector<MeshPlugin *> plugins;
|
||||
static std::vector<MeshPlugin *> *plugins;
|
||||
|
||||
public:
|
||||
/** Constructor
|
||||
@ -30,7 +30,7 @@ class MeshPlugin
|
||||
* Initialize your plugin. This setup function is called once after all hardware and mesh protocol layers have
|
||||
* been initialized
|
||||
*/
|
||||
virtual void setup() {}
|
||||
virtual void setup();
|
||||
|
||||
/**
|
||||
* @return true if you want to receive the specified portnum
|
||||
|
Loading…
Reference in New Issue
Block a user