diff --git a/proto b/proto index 39bb8b26..b8c0499f 160000 --- a/proto +++ b/proto @@ -1 +1 @@ -Subproject commit 39bb8b26bbc107aae3586d5a5e11a06ea12680bc +Subproject commit b8c0499f28f9673d1df17d04da562e30703f01cb diff --git a/src/mesh/generated/admin.pb.h b/src/mesh/generated/admin.pb.h index d68103ce..cf71a9cb 100644 --- a/src/mesh/generated/admin.pb.h +++ b/src/mesh/generated/admin.pb.h @@ -25,6 +25,7 @@ typedef struct _AdminMessage { Channel get_channel_response; bool confirm_set_channel; bool confirm_set_radio; + bool exit_simulator; }; } AdminMessage; @@ -47,6 +48,7 @@ extern "C" { #define AdminMessage_get_channel_response_tag 7 #define AdminMessage_confirm_set_channel_tag 32 #define AdminMessage_confirm_set_radio_tag 33 +#define AdminMessage_exit_simulator_tag 34 /* Struct field encoding specification for nanopb */ #define AdminMessage_FIELDLIST(X, a) \ @@ -58,7 +60,8 @@ X(a, STATIC, ONEOF, MESSAGE, (variant,get_radio_response,get_radio_respons X(a, STATIC, ONEOF, UINT32, (variant,get_channel_request,get_channel_request), 6) \ X(a, STATIC, ONEOF, MESSAGE, (variant,get_channel_response,get_channel_response), 7) \ X(a, STATIC, ONEOF, BOOL, (variant,confirm_set_channel,confirm_set_channel), 32) \ -X(a, STATIC, ONEOF, BOOL, (variant,confirm_set_radio,confirm_set_radio), 33) +X(a, STATIC, ONEOF, BOOL, (variant,confirm_set_radio,confirm_set_radio), 33) \ +X(a, STATIC, ONEOF, BOOL, (variant,exit_simulator,exit_simulator), 34) #define AdminMessage_CALLBACK NULL #define AdminMessage_DEFAULT NULL #define AdminMessage_variant_set_radio_MSGTYPE RadioConfig diff --git a/src/plugins/AdminPlugin.cpp b/src/plugins/AdminPlugin.cpp index 96b5c51a..9d935b26 100644 --- a/src/plugins/AdminPlugin.cpp +++ b/src/plugins/AdminPlugin.cpp @@ -6,6 +6,10 @@ #include "configuration.h" #include "main.h" +#ifdef PORTDUINO +#include "unistd.h" +#endif + AdminPlugin *adminPlugin; void AdminPlugin::handleGetChannel(const MeshPacket &req, uint32_t channelIndex) @@ -65,6 +69,13 @@ bool AdminPlugin::handleReceivedProtobuf(const MeshPacket &mp, const AdminMessag handleGetRadio(mp); break; +#ifdef PORTDUINO + case AdminMessage_exit_simulator_tag: + DEBUG_MSG("Exiting simulator"); + _exit(0); + break; +#endif + default: // Probably a message sent by us or sent to our local node. FIXME, we should avoid scanning these messages DEBUG_MSG("Ignoring nonrelevant admin %d\n", r->which_variant);