sforkowany z mirror/meshtastic-firmware
Merge branch 'master' into SX1262-Power
commit
b7eaeb8c31
|
@ -6,6 +6,10 @@ VERSION=`bin/buildinfo.py long`
|
|||
|
||||
# Must have a V prefix to trigger github
|
||||
git tag "v${VERSION}"
|
||||
git push root "v${VERSION}" # push the tag
|
||||
|
||||
# Commented out per https://github.com/meshtastic/Meshtastic-device/issues/947
|
||||
#git push root "v${VERSION}" # push the tag
|
||||
|
||||
git push origin "v${VERSION}" # push the tag
|
||||
|
||||
echo "Tag ${VERSION} pushed to github, github actions should now be building the draft release. If it seems good, click to publish it"
|
||||
|
|
|
@ -0,0 +1,2 @@
|
|||
@echo off
|
||||
if [%1]==[] (echo "Please specify a platformio NRF target (i.e. rak4631) as the first argument.") else (python3 .\bin\uf2conv.py .\.pio\build\%1\firmware.hex -c -o .\.pio\build\%1\firmware.uf2 -f 0xADA52840)
|
2
proto
2
proto
|
@ -1 +1 @@
|
|||
Subproject commit 0de53c84a26a42ce9405109e392ca1143de86f58
|
||||
Subproject commit 3ba36ec5db702ef0875128271ba20bf8558508a2
|
|
@ -4,9 +4,9 @@
|
|||
#ifndef PB_ADMIN_PB_H_INCLUDED
|
||||
#define PB_ADMIN_PB_H_INCLUDED
|
||||
#include <pb.h>
|
||||
#include "channel.pb.h"
|
||||
#include "mesh.pb.h"
|
||||
#include "radioconfig.pb.h"
|
||||
#include "channel.pb.h"
|
||||
|
||||
#if PB_PROTO_HEADER_VERSION != 40
|
||||
#error Regenerate this file with the current version of nanopb generator.
|
||||
|
|
|
@ -4,8 +4,8 @@
|
|||
#ifndef PB_DEVICEONLY_PB_H_INCLUDED
|
||||
#define PB_DEVICEONLY_PB_H_INCLUDED
|
||||
#include <pb.h>
|
||||
#include "mesh.pb.h"
|
||||
#include "channel.pb.h"
|
||||
#include "mesh.pb.h"
|
||||
#include "radioconfig.pb.h"
|
||||
|
||||
#if PB_PROTO_HEADER_VERSION != 40
|
||||
|
|
|
@ -6,13 +6,13 @@
|
|||
#error Regenerate this file with the current version of nanopb generator.
|
||||
#endif
|
||||
|
||||
PB_BIND(StoreAndForwardMessage, StoreAndForwardMessage, AUTO)
|
||||
PB_BIND(StoreAndForward, StoreAndForward, AUTO)
|
||||
|
||||
|
||||
PB_BIND(StoreAndForwardMessage_Statistics, StoreAndForwardMessage_Statistics, AUTO)
|
||||
PB_BIND(StoreAndForward_Statistics, StoreAndForward_Statistics, AUTO)
|
||||
|
||||
|
||||
PB_BIND(StoreAndForwardMessage_History, StoreAndForwardMessage_History, AUTO)
|
||||
PB_BIND(StoreAndForward_History, StoreAndForward_History, AUTO)
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -10,28 +10,27 @@
|
|||
#endif
|
||||
|
||||
/* Enum definitions */
|
||||
typedef enum _StoreAndForwardMessage_RequestResponse {
|
||||
StoreAndForwardMessage_RequestResponse_UNSET = 0,
|
||||
StoreAndForwardMessage_RequestResponse_ROUTER_ERROR = 1,
|
||||
StoreAndForwardMessage_RequestResponse_ROUTER_HEARTBEAT = 2,
|
||||
StoreAndForwardMessage_RequestResponse_ROUTER_PING = 3,
|
||||
StoreAndForwardMessage_RequestResponse_ROUTER_PONG = 4,
|
||||
StoreAndForwardMessage_RequestResponse_ROUTER_BUSY = 5,
|
||||
StoreAndForwardMessage_RequestResponse_CLIENT_ERROR = 101,
|
||||
StoreAndForwardMessage_RequestResponse_CLIENT_HISTORY = 102,
|
||||
StoreAndForwardMessage_RequestResponse_CLIENT_STATS = 103,
|
||||
StoreAndForwardMessage_RequestResponse_CLIENT_PING = 104,
|
||||
StoreAndForwardMessage_RequestResponse_CLIENT_PONG = 105,
|
||||
StoreAndForwardMessage_RequestResponse_MAX = 255
|
||||
} StoreAndForwardMessage_RequestResponse;
|
||||
typedef enum _StoreAndForward_RequestResponse {
|
||||
StoreAndForward_RequestResponse_UNSET = 0,
|
||||
StoreAndForward_RequestResponse_ROUTER_ERROR = 1,
|
||||
StoreAndForward_RequestResponse_ROUTER_HEARTBEAT = 2,
|
||||
StoreAndForward_RequestResponse_ROUTER_PING = 3,
|
||||
StoreAndForward_RequestResponse_ROUTER_PONG = 4,
|
||||
StoreAndForward_RequestResponse_ROUTER_BUSY = 5,
|
||||
StoreAndForward_RequestResponse_CLIENT_ERROR = 101,
|
||||
StoreAndForward_RequestResponse_CLIENT_HISTORY = 102,
|
||||
StoreAndForward_RequestResponse_CLIENT_STATS = 103,
|
||||
StoreAndForward_RequestResponse_CLIENT_PING = 104,
|
||||
StoreAndForward_RequestResponse_CLIENT_PONG = 105
|
||||
} StoreAndForward_RequestResponse;
|
||||
|
||||
/* Struct definitions */
|
||||
typedef struct _StoreAndForwardMessage_History {
|
||||
typedef struct _StoreAndForward_History {
|
||||
uint32_t HistoryMessages;
|
||||
uint32_t Window;
|
||||
} StoreAndForwardMessage_History;
|
||||
} StoreAndForward_History;
|
||||
|
||||
typedef struct _StoreAndForwardMessage_Statistics {
|
||||
typedef struct _StoreAndForward_Statistics {
|
||||
uint32_t MessagesTotal;
|
||||
uint32_t MessagesSaved;
|
||||
uint32_t MessagesMax;
|
||||
|
@ -41,21 +40,21 @@ typedef struct _StoreAndForwardMessage_Statistics {
|
|||
bool Heartbeat;
|
||||
uint32_t ReturnMax;
|
||||
uint32_t ReturnWindow;
|
||||
} StoreAndForwardMessage_Statistics;
|
||||
} StoreAndForward_Statistics;
|
||||
|
||||
typedef struct _StoreAndForwardMessage {
|
||||
StoreAndForwardMessage_RequestResponse rr;
|
||||
typedef struct _StoreAndForward {
|
||||
StoreAndForward_RequestResponse rr;
|
||||
bool has_stats;
|
||||
StoreAndForwardMessage_Statistics stats;
|
||||
StoreAndForward_Statistics stats;
|
||||
bool has_history;
|
||||
StoreAndForwardMessage_History history;
|
||||
} StoreAndForwardMessage;
|
||||
StoreAndForward_History history;
|
||||
} StoreAndForward;
|
||||
|
||||
|
||||
/* Helper constants for enums */
|
||||
#define _StoreAndForwardMessage_RequestResponse_MIN StoreAndForwardMessage_RequestResponse_UNSET
|
||||
#define _StoreAndForwardMessage_RequestResponse_MAX StoreAndForwardMessage_RequestResponse_MAX
|
||||
#define _StoreAndForwardMessage_RequestResponse_ARRAYSIZE ((StoreAndForwardMessage_RequestResponse)(StoreAndForwardMessage_RequestResponse_MAX+1))
|
||||
#define _StoreAndForward_RequestResponse_MIN StoreAndForward_RequestResponse_UNSET
|
||||
#define _StoreAndForward_RequestResponse_MAX StoreAndForward_RequestResponse_CLIENT_PONG
|
||||
#define _StoreAndForward_RequestResponse_ARRAYSIZE ((StoreAndForward_RequestResponse)(StoreAndForward_RequestResponse_CLIENT_PONG+1))
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
@ -63,40 +62,40 @@ extern "C" {
|
|||
#endif
|
||||
|
||||
/* Initializer values for message structs */
|
||||
#define StoreAndForwardMessage_init_default {_StoreAndForwardMessage_RequestResponse_MIN, false, StoreAndForwardMessage_Statistics_init_default, false, StoreAndForwardMessage_History_init_default}
|
||||
#define StoreAndForwardMessage_Statistics_init_default {0, 0, 0, 0, 0, 0, 0, 0, 0}
|
||||
#define StoreAndForwardMessage_History_init_default {0, 0}
|
||||
#define StoreAndForwardMessage_init_zero {_StoreAndForwardMessage_RequestResponse_MIN, false, StoreAndForwardMessage_Statistics_init_zero, false, StoreAndForwardMessage_History_init_zero}
|
||||
#define StoreAndForwardMessage_Statistics_init_zero {0, 0, 0, 0, 0, 0, 0, 0, 0}
|
||||
#define StoreAndForwardMessage_History_init_zero {0, 0}
|
||||
#define StoreAndForward_init_default {_StoreAndForward_RequestResponse_MIN, false, StoreAndForward_Statistics_init_default, false, StoreAndForward_History_init_default}
|
||||
#define StoreAndForward_Statistics_init_default {0, 0, 0, 0, 0, 0, 0, 0, 0}
|
||||
#define StoreAndForward_History_init_default {0, 0}
|
||||
#define StoreAndForward_init_zero {_StoreAndForward_RequestResponse_MIN, false, StoreAndForward_Statistics_init_zero, false, StoreAndForward_History_init_zero}
|
||||
#define StoreAndForward_Statistics_init_zero {0, 0, 0, 0, 0, 0, 0, 0, 0}
|
||||
#define StoreAndForward_History_init_zero {0, 0}
|
||||
|
||||
/* Field tags (for use in manual encoding/decoding) */
|
||||
#define StoreAndForwardMessage_History_HistoryMessages_tag 1
|
||||
#define StoreAndForwardMessage_History_Window_tag 2
|
||||
#define StoreAndForwardMessage_Statistics_MessagesTotal_tag 1
|
||||
#define StoreAndForwardMessage_Statistics_MessagesSaved_tag 2
|
||||
#define StoreAndForwardMessage_Statistics_MessagesMax_tag 3
|
||||
#define StoreAndForwardMessage_Statistics_UpTime_tag 4
|
||||
#define StoreAndForwardMessage_Statistics_Requests_tag 5
|
||||
#define StoreAndForwardMessage_Statistics_RequestsHistory_tag 6
|
||||
#define StoreAndForwardMessage_Statistics_Heartbeat_tag 7
|
||||
#define StoreAndForwardMessage_Statistics_ReturnMax_tag 8
|
||||
#define StoreAndForwardMessage_Statistics_ReturnWindow_tag 9
|
||||
#define StoreAndForwardMessage_rr_tag 1
|
||||
#define StoreAndForwardMessage_stats_tag 2
|
||||
#define StoreAndForwardMessage_history_tag 3
|
||||
#define StoreAndForward_History_HistoryMessages_tag 1
|
||||
#define StoreAndForward_History_Window_tag 2
|
||||
#define StoreAndForward_Statistics_MessagesTotal_tag 1
|
||||
#define StoreAndForward_Statistics_MessagesSaved_tag 2
|
||||
#define StoreAndForward_Statistics_MessagesMax_tag 3
|
||||
#define StoreAndForward_Statistics_UpTime_tag 4
|
||||
#define StoreAndForward_Statistics_Requests_tag 5
|
||||
#define StoreAndForward_Statistics_RequestsHistory_tag 6
|
||||
#define StoreAndForward_Statistics_Heartbeat_tag 7
|
||||
#define StoreAndForward_Statistics_ReturnMax_tag 8
|
||||
#define StoreAndForward_Statistics_ReturnWindow_tag 9
|
||||
#define StoreAndForward_rr_tag 1
|
||||
#define StoreAndForward_stats_tag 2
|
||||
#define StoreAndForward_history_tag 3
|
||||
|
||||
/* Struct field encoding specification for nanopb */
|
||||
#define StoreAndForwardMessage_FIELDLIST(X, a) \
|
||||
#define StoreAndForward_FIELDLIST(X, a) \
|
||||
X(a, STATIC, SINGULAR, UENUM, rr, 1) \
|
||||
X(a, STATIC, OPTIONAL, MESSAGE, stats, 2) \
|
||||
X(a, STATIC, OPTIONAL, MESSAGE, history, 3)
|
||||
#define StoreAndForwardMessage_CALLBACK NULL
|
||||
#define StoreAndForwardMessage_DEFAULT NULL
|
||||
#define StoreAndForwardMessage_stats_MSGTYPE StoreAndForwardMessage_Statistics
|
||||
#define StoreAndForwardMessage_history_MSGTYPE StoreAndForwardMessage_History
|
||||
#define StoreAndForward_CALLBACK NULL
|
||||
#define StoreAndForward_DEFAULT NULL
|
||||
#define StoreAndForward_stats_MSGTYPE StoreAndForward_Statistics
|
||||
#define StoreAndForward_history_MSGTYPE StoreAndForward_History
|
||||
|
||||
#define StoreAndForwardMessage_Statistics_FIELDLIST(X, a) \
|
||||
#define StoreAndForward_Statistics_FIELDLIST(X, a) \
|
||||
X(a, STATIC, SINGULAR, UINT32, MessagesTotal, 1) \
|
||||
X(a, STATIC, SINGULAR, UINT32, MessagesSaved, 2) \
|
||||
X(a, STATIC, SINGULAR, UINT32, MessagesMax, 3) \
|
||||
|
@ -106,28 +105,28 @@ X(a, STATIC, SINGULAR, UINT32, RequestsHistory, 6) \
|
|||
X(a, STATIC, SINGULAR, BOOL, Heartbeat, 7) \
|
||||
X(a, STATIC, SINGULAR, UINT32, ReturnMax, 8) \
|
||||
X(a, STATIC, SINGULAR, UINT32, ReturnWindow, 9)
|
||||
#define StoreAndForwardMessage_Statistics_CALLBACK NULL
|
||||
#define StoreAndForwardMessage_Statistics_DEFAULT NULL
|
||||
#define StoreAndForward_Statistics_CALLBACK NULL
|
||||
#define StoreAndForward_Statistics_DEFAULT NULL
|
||||
|
||||
#define StoreAndForwardMessage_History_FIELDLIST(X, a) \
|
||||
#define StoreAndForward_History_FIELDLIST(X, a) \
|
||||
X(a, STATIC, SINGULAR, UINT32, HistoryMessages, 1) \
|
||||
X(a, STATIC, SINGULAR, UINT32, Window, 2)
|
||||
#define StoreAndForwardMessage_History_CALLBACK NULL
|
||||
#define StoreAndForwardMessage_History_DEFAULT NULL
|
||||
#define StoreAndForward_History_CALLBACK NULL
|
||||
#define StoreAndForward_History_DEFAULT NULL
|
||||
|
||||
extern const pb_msgdesc_t StoreAndForwardMessage_msg;
|
||||
extern const pb_msgdesc_t StoreAndForwardMessage_Statistics_msg;
|
||||
extern const pb_msgdesc_t StoreAndForwardMessage_History_msg;
|
||||
extern const pb_msgdesc_t StoreAndForward_msg;
|
||||
extern const pb_msgdesc_t StoreAndForward_Statistics_msg;
|
||||
extern const pb_msgdesc_t StoreAndForward_History_msg;
|
||||
|
||||
/* Defines for backwards compatibility with code written before nanopb-0.4.0 */
|
||||
#define StoreAndForwardMessage_fields &StoreAndForwardMessage_msg
|
||||
#define StoreAndForwardMessage_Statistics_fields &StoreAndForwardMessage_Statistics_msg
|
||||
#define StoreAndForwardMessage_History_fields &StoreAndForwardMessage_History_msg
|
||||
#define StoreAndForward_fields &StoreAndForward_msg
|
||||
#define StoreAndForward_Statistics_fields &StoreAndForward_Statistics_msg
|
||||
#define StoreAndForward_History_fields &StoreAndForward_History_msg
|
||||
|
||||
/* Maximum encoded size of messages (where known) */
|
||||
#define StoreAndForwardMessage_size 69
|
||||
#define StoreAndForwardMessage_Statistics_size 50
|
||||
#define StoreAndForwardMessage_History_size 12
|
||||
#define StoreAndForward_size 68
|
||||
#define StoreAndForward_Statistics_size 50
|
||||
#define StoreAndForward_History_size 12
|
||||
|
||||
#ifdef __cplusplus
|
||||
} /* extern "C" */
|
||||
|
|
|
@ -145,7 +145,7 @@ int32_t PositionPlugin::runOnce()
|
|||
DEBUG_MSG("Sending pos@%x:6 to mesh (wantReplies=%d)\n", node->position.pos_timestamp, requestReplies);
|
||||
sendOurPosition(NODENUM_BROADCAST, requestReplies);
|
||||
} else if (radioConfig.preferences.position_broadcast_smart == true) {
|
||||
// NodeInfo *node = service.refreshMyNodeInfo(); // should guarantee there is now a position
|
||||
NodeInfo *node = service.refreshMyNodeInfo(); // should guarantee there is now a position
|
||||
|
||||
if (node->has_position && (node->position.latitude_i != 0 || node->position.longitude_i != 0)) {
|
||||
float distance = GeoCoord::latLongToMeter(lastGpsLatitude * 1e-7, lastGpsLongitude * 1e-7,
|
||||
|
@ -170,6 +170,11 @@ int32_t PositionPlugin::runOnce()
|
|||
|
||||
DEBUG_MSG("Sending smart pos@%x:6 to mesh (wantReplies=%d)\n", node->position.pos_timestamp, requestReplies);
|
||||
sendOurPosition(NODENUM_BROADCAST, requestReplies);
|
||||
|
||||
/* Update lastGpsSend to now. This means if the device is stationary, then
|
||||
getPref_position_broadcast_secs will still apply.
|
||||
*/
|
||||
lastGpsSend = now;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -229,11 +229,12 @@ ProcessMessage StoreForwardPlugin::handleReceived(const MeshPacket &mp)
|
|||
|
||||
DEBUG_MSG("--- S&F Received something\n");
|
||||
|
||||
/*
|
||||
StoreAndForwardMessage sfm = StoreAndForwardMessage_init_default;
|
||||
|
||||
switch (sfm.rr) {
|
||||
}
|
||||
|
||||
*/
|
||||
auto &p = mp.decoded;
|
||||
|
||||
// The router node should not be sending messages as a client.
|
||||
|
@ -279,6 +280,66 @@ ProcessMessage StoreForwardPlugin::handleReceived(const MeshPacket &mp)
|
|||
return ProcessMessage::CONTINUE; // Let others look at this message also if they want
|
||||
}
|
||||
|
||||
ProcessMessage StoreForwardPlugin::handleReceivedProtobuf(const MeshPacket &mp, StoreAndForward *p)
|
||||
{
|
||||
if (!radioConfig.preferences.store_forward_plugin_enabled) {
|
||||
// If this plugin is not enabled in any capacity, don't handle the packet, and allow other plugins to consume
|
||||
return ProcessMessage::CONTINUE;
|
||||
}
|
||||
|
||||
//auto sfp = *p;
|
||||
//auto p = *p;
|
||||
|
||||
// Advance states as needed
|
||||
switch (p->rr) {
|
||||
case StoreAndForward_RequestResponse_CLIENT_ERROR:
|
||||
// Do nothing
|
||||
break;
|
||||
|
||||
case StoreAndForward_RequestResponse_CLIENT_HISTORY:
|
||||
// Do nothing
|
||||
break;
|
||||
|
||||
case StoreAndForward_RequestResponse_CLIENT_PING:
|
||||
// Do nothing
|
||||
break;
|
||||
|
||||
case StoreAndForward_RequestResponse_CLIENT_PONG:
|
||||
// Do nothing
|
||||
break;
|
||||
|
||||
case StoreAndForward_RequestResponse_CLIENT_STATS:
|
||||
// Do nothing
|
||||
break;
|
||||
|
||||
case StoreAndForward_RequestResponse_ROUTER_BUSY:
|
||||
// Do nothing
|
||||
break;
|
||||
|
||||
case StoreAndForward_RequestResponse_ROUTER_ERROR:
|
||||
// Do nothing
|
||||
break;
|
||||
|
||||
case StoreAndForward_RequestResponse_ROUTER_HEARTBEAT:
|
||||
// Do nothing
|
||||
break;
|
||||
|
||||
case StoreAndForward_RequestResponse_ROUTER_PING:
|
||||
// Do nothing
|
||||
break;
|
||||
|
||||
case StoreAndForward_RequestResponse_ROUTER_PONG:
|
||||
// Do nothing
|
||||
break;
|
||||
|
||||
|
||||
default:
|
||||
assert(0); // unexpected state - FIXME, make an error code and reboot
|
||||
}
|
||||
|
||||
return ProcessMessage::CONTINUE; // Let others look at this message also if they want
|
||||
}
|
||||
|
||||
StoreForwardPlugin::StoreForwardPlugin()
|
||||
: SinglePortPlugin("StoreForwardPlugin", PortNum_TEXT_MESSAGE_APP), concurrency::OSThread("StoreForwardPlugin")
|
||||
{
|
||||
|
@ -311,12 +372,6 @@ StoreForwardPlugin::StoreForwardPlugin()
|
|||
// Popupate PSRAM with our data structures.
|
||||
this->populatePSRAM();
|
||||
|
||||
// Calculate the packet time.
|
||||
// this->packetTimeMax = RadioLibInterface::instance->getPacketTime(Constants_DATA_PAYLOAD_LEN);
|
||||
// RadioLibInterface::instance->getPacketTime(Constants_DATA_PAYLOAD_LEN);
|
||||
// RadioLibInterface::instance->getPacketTime(Constants_DATA_PAYLOAD_LEN);
|
||||
// RadioInterface::getPacketTime(500)l
|
||||
|
||||
this->packetTimeMax = 2000;
|
||||
|
||||
} else {
|
||||
|
|
|
@ -71,6 +71,8 @@ class StoreForwardPlugin : public SinglePortPlugin, private concurrency::OSThrea
|
|||
it
|
||||
*/
|
||||
virtual ProcessMessage handleReceived(const MeshPacket &mp);
|
||||
virtual ProcessMessage handleReceivedProtobuf(const MeshPacket &mp, StoreAndForward *p);
|
||||
|
||||
};
|
||||
|
||||
extern StoreForwardPlugin *storeForwardPlugin;
|
Ładowanie…
Reference in New Issue