mirror of
https://github.com/meshtastic/firmware.git
synced 2026-01-09 11:27:29 +00:00
mqtt: send packets after they are encrypted
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
#include "MQTT.h"
|
||||
#include "MQTTPlugin.h"
|
||||
#include "NodeDB.h"
|
||||
#include "main.h"
|
||||
#include "mesh/Channels.h"
|
||||
#include "mesh/generated/mqtt.pb.h"
|
||||
#include <WiFi.h>
|
||||
#include <assert.h>
|
||||
@@ -27,7 +27,6 @@ void mqttInit()
|
||||
DEBUG_MSG("WiFi is not connected, can not start MQTT\n");
|
||||
else {
|
||||
new MQTT();
|
||||
new MQTTPlugin();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -74,13 +73,13 @@ int32_t MQTT::runOnce()
|
||||
return 20;
|
||||
}
|
||||
|
||||
void MQTT::publish(const MeshPacket &mp)
|
||||
void MQTT::onSend(const MeshPacket &mp, ChannelIndex chIndex)
|
||||
{
|
||||
// don't bother sending if not connected...
|
||||
if (pubSub.connected()) {
|
||||
// FIXME - check uplink enabled
|
||||
|
||||
const char *channelId = "fixmechan";
|
||||
const char *channelId = channels.getName(chIndex); // FIXME, for now we just use the human name for the channel
|
||||
|
||||
ServiceEnvelope env = ServiceEnvelope_init_default;
|
||||
env.channel_id = (char *)channelId;
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
#include "configuration.h"
|
||||
|
||||
#include "concurrency/OSThread.h"
|
||||
#include "mesh/Channels.h"
|
||||
#include <PubSubClient.h>
|
||||
#include <WiFiClient.h>
|
||||
|
||||
@@ -23,8 +24,13 @@ class MQTT : private concurrency::OSThread
|
||||
|
||||
/**
|
||||
* Publish a packet on the glboal MQTT server.
|
||||
* This hook must be called **after** the packet is encrypted (including the channel being changed to a hash).
|
||||
* @param chIndex the index of the channel for this message
|
||||
*
|
||||
* Note: for messages we are forwarding on the mesh that we can't find the channel for (because we don't have the keys), we
|
||||
* can not forward those messages to the cloud - becuase no way to find a global channel ID.
|
||||
*/
|
||||
void publish(const MeshPacket &mp);
|
||||
void onSend(const MeshPacket &mp, ChannelIndex chIndex);
|
||||
|
||||
protected:
|
||||
virtual int32_t runOnce();
|
||||
|
||||
@@ -1,18 +0,0 @@
|
||||
#include "MQTTPlugin.h"
|
||||
#include "MQTT.h"
|
||||
#include "MeshService.h"
|
||||
#include "NodeDB.h"
|
||||
#include "Router.h"
|
||||
#include "configuration.h"
|
||||
#include "main.h"
|
||||
|
||||
MQTTPlugin::MQTTPlugin() : MeshPlugin("mqtt")
|
||||
{
|
||||
isPromiscuous = true; // We always want to update our nodedb, even if we are sniffing on others
|
||||
}
|
||||
|
||||
bool MQTTPlugin::handleReceived(const MeshPacket &mp)
|
||||
{
|
||||
mqtt->publish(mp);
|
||||
return false; // never claim handled
|
||||
}
|
||||
@@ -1,17 +0,0 @@
|
||||
#pragma once
|
||||
#include "MeshPlugin.h"
|
||||
|
||||
/**
|
||||
* NodeInfo plugin for sending/receiving NodeInfos into the mesh
|
||||
*/
|
||||
class MQTTPlugin : public MeshPlugin
|
||||
{
|
||||
public:
|
||||
MQTTPlugin();
|
||||
|
||||
protected:
|
||||
/** We sniff all packets */
|
||||
virtual bool handleReceived(const MeshPacket &mp);
|
||||
|
||||
virtual bool wantPacket(const MeshPacket *p) { return true; }
|
||||
};
|
||||
Reference in New Issue
Block a user