multichannel send/rx kinda works

This commit is contained in:
Kevin Hester
2021-02-23 11:43:30 +08:00
parent ae6b7e7259
commit aa8b86c6b2
7 changed files with 20 additions and 19 deletions

View File

@@ -32,7 +32,8 @@ void MeshPlugin::callPlugins(const MeshPacket &mp)
assert(mp.which_payloadVariant == MeshPacket_decoded_tag); // I think we are guarnteed the packet is decoded by this point?
// Was this message directed to us specifically? Will be false if we are sniffing someone elses packets
bool toUs = mp.to == NODENUM_BROADCAST || mp.to == nodeDB.getNodeNum();
auto ourNodeNum = nodeDB.getNodeNum();
bool toUs = mp.to == NODENUM_BROADCAST || mp.to == ourNodeNum;
for (auto i = plugins->begin(); i != plugins->end(); ++i) {
auto &pi = **i;
@@ -45,8 +46,8 @@ void MeshPlugin::callPlugins(const MeshPacket &mp)
bool handled = pi.handleReceived(mp);
// Possibly send replies (but only if the message was directed to us specifically, i.e. not for promiscious sniffing)
if (mp.decoded.want_response && toUs) {
// Possibly send replies (but only if the message was directed to us specifically, i.e. not for promiscious sniffing), also not if we sent it
if (mp.decoded.want_response && toUs && mp.from != ourNodeNum) {
pi.sendResponse(mp);
DEBUG_MSG("Plugin %s sent a response\n", pi.name);
}

View File

@@ -148,7 +148,7 @@ void NodeDB::installDefaultDeviceState()
// Restore region if possible
if (oldRegionCode != RegionCode_Unset)
radioConfig.preferences.region = oldRegionCode;
if (oldRegion.length())
if (oldRegion.length()) // If the old style region was set, try to keep it up-to-date
strcpy(myNodeInfo.region, oldRegion.c_str());
}
@@ -400,7 +400,6 @@ void NodeDB::updateUser(uint32_t nodeId, const User &p)
void NodeDB::updateFrom(const MeshPacket &mp)
{
if (mp.which_payloadVariant == MeshPacket_decoded_tag) {
const Data &p = mp.decoded;
DEBUG_MSG("Update DB node 0x%x, rx_time=%u\n", mp.from, mp.rx_time);
NodeInfo *info = getOrCreateNode(mp.from);

View File

@@ -101,10 +101,6 @@ class PhoneAPI
*/
virtual void onNowHasData(uint32_t fromRadioNum) {}
void handleSetOwner(const User &o);
void handleSetChannel(const Channel &cc);
void handleSetRadio(const RadioConfig &r);
private:
/**
* Handle a packet that the phone wants us to send. It is our responsibility to free the packet to the pool

View File

@@ -274,7 +274,7 @@ void RadioLibInterface::handleReceiveInterrupt()
mp->from = h->from;
mp->to = h->to;
mp->id = h->id;
mp->channel = h->id;
mp->channel = h->channel;
assert(HOP_MAX <= PACKET_FLAGS_HOP_MASK); // If hopmax changes, carefully check this code
mp->hop_limit = h->flags & PACKET_FLAGS_HOP_MASK;
mp->want_ack = !!(h->flags & PACKET_FLAGS_WANT_ACK_MASK);