add SinglePortPlugin to simpilify api

1.2-legacy
Kevin Hester 2020-12-05 10:14:15 +08:00
rodzic ae7d3ee5ed
commit b6e21bcbcd
4 zmienionych plików z 31 dodań i 16 usunięć

Wyświetl plik

@ -13,7 +13,7 @@ For app cleanup:
* on python side print error messages if old position/user messages seen
* on python side handle new position/user messages
* DONE fix position sending to use new plugin
* Add SinglePortNumPlugin - as the new most useful baseclass
* DONE Add SinglePortNumPlugin - as the new most useful baseclass
* DONE move positions into regular data packets (use new app framework)
* DONE move user info into regular data packets (use new app framework)
* test that positions, text messages and user info still work

Wyświetl plik

@ -1,5 +1,5 @@
#pragma once
#include "MeshPlugin.h"
#include "SinglePortPlugin.h"
#include "Router.h"
/**
@ -9,25 +9,20 @@
* If you are using protobufs to encode your packets (recommended) you can use this as a baseclass for your plugin
* and avoid a bunch of boilerplate code.
*/
template <class T> class ProtobufPlugin : private MeshPlugin
template <class T> class ProtobufPlugin : private SinglePortPlugin
{
const pb_msgdesc_t *fields;
PortNum ourPortNum;
public:
/** Constructor
* name is for debugging output
*/
ProtobufPlugin(const char *_name, PortNum _ourPortNum, const pb_msgdesc_t *_fields)
: MeshPlugin(_name), fields(_fields), ourPortNum(_ourPortNum)
: SinglePortPlugin(_name, _ourPortNum), fields(_fields)
{
}
protected:
/**
* @return true if you want to receive the specified portnum
*/
virtual bool wantPortnum(PortNum p) { return p == ourPortNum; }
/**
* Handle a received message, the data field in the message is already decoded and is provided

Wyświetl plik

@ -0,0 +1,24 @@
#pragma once
#include "MeshPlugin.h"
/**
* Most plugins are only interested in sending/receving one particular portnum. This baseclass simplifies that common
* case.
*/
class SinglePortPlugin : public MeshPlugin
{
protected:
PortNum ourPortNum;
public:
/** Constructor
* name is for debugging output
*/
SinglePortPlugin(const char *_name, PortNum _ourPortNum) : MeshPlugin(_name), ourPortNum(_ourPortNum) {}
protected:
/**
* @return true if you want to receive the specified portnum
*/
virtual bool wantPortnum(PortNum p) { return p == ourPortNum; }
};

Wyświetl plik

@ -1,23 +1,19 @@
#pragma once
#include "MeshPlugin.h"
#include "SinglePortPlugin.h"
#include "Observer.h"
/**
* Text message handling for meshtastic - draws on the OLED display the most recent received message
*/
class TextMessagePlugin : public MeshPlugin, public Observable<const MeshPacket *>
class TextMessagePlugin : public SinglePortPlugin, public Observable<const MeshPacket *>
{
public:
/** Constructor
* name is for debugging output
*/
TextMessagePlugin() : MeshPlugin("text") {}
TextMessagePlugin() : SinglePortPlugin("text", PortNum_TEXT_MESSAGE_APP) {}
protected:
/**
* @return true if you want to receive the specified portnum
*/
virtual bool wantPortnum(PortNum p) { return p == PortNum_TEXT_MESSAGE_APP; }
/** Called to handle a particular incoming message