mirror of
https://github.com/meshtastic/firmware.git
synced 2025-12-19 09:12:45 +00:00
re-add namespacing in protobufs. Let's see what i missed. Portduino likely ...
Checking in generated on purpose.
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
cd protobufs && ..\nanopb-0.4.7\generator-bin\protoc.exe --nanopb_out=-v:..\src\mesh\generated -I=..\protobufs ..\protobufs\meshtastic\*.proto
|
cd protobufs && ..\nanopb-0.4.7\generator-bin\protoc.exe --nanopb_out=-v:..\src\mesh\generated -I=..\protobufs ..\protobufs\meshtastic\*.proto
|
||||||
|
|
||||||
cd ../src/mesh/generated/meshtastic
|
@REM cd ../src/mesh/generated/meshtastic
|
||||||
sed -i 's/#include "meshtastic/#include "./g' *
|
@REM sed -i 's/#include "meshtastic/#include "./g' *
|
||||||
sed -i 's/meshtastic_//g' *
|
@REM sed -i 's/meshtastic_//g' *
|
||||||
|
|||||||
@@ -10,10 +10,10 @@ echo "prebuilt binaries for your computer into nanopb-0.4.7"
|
|||||||
cd protobufs
|
cd protobufs
|
||||||
../nanopb-0.4.7/generator-bin/protoc --nanopb_out=-v:../src/mesh/generated/ -I=../protobufs meshtastic/*.proto
|
../nanopb-0.4.7/generator-bin/protoc --nanopb_out=-v:../src/mesh/generated/ -I=../protobufs meshtastic/*.proto
|
||||||
|
|
||||||
cd ../src/mesh/generated/meshtastic
|
# cd ../src/mesh/generated/meshtastic
|
||||||
sed -i 's/#include "meshtastic/#include "./g' -- *
|
# sed -i 's/#include "meshtastic/#include "./g' -- *
|
||||||
|
|
||||||
sed -i 's/meshtastic_//g' -- *
|
# sed -i 's/meshtastic_//g' -- *
|
||||||
|
|
||||||
#echo "Regenerating protobuf documentation - if you see an error message"
|
#echo "Regenerating protobuf documentation - if you see an error message"
|
||||||
#echo "you can ignore it unless doing a new protobuf release to github."
|
#echo "you can ignore it unless doing a new protobuf release to github."
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ extra_scripts = bin/platformio-custom.py
|
|||||||
; The Radiolib stuff will speed up building considerably. Exclud all the stuff we dont need.
|
; The Radiolib stuff will speed up building considerably. Exclud all the stuff we dont need.
|
||||||
build_flags = -Wno-missing-field-initializers
|
build_flags = -Wno-missing-field-initializers
|
||||||
-Wno-format
|
-Wno-format
|
||||||
-Isrc -Isrc/mesh -Isrc/gps -Isrc/buzz -Wl,-Map,.pio/build/output.map
|
-Isrc -Isrc/mesh -Isrc/mesh/generated -Isrc/gps -Isrc/buzz -Wl,-Map,.pio/build/output.map
|
||||||
-DUSE_THREAD_NAMES
|
-DUSE_THREAD_NAMES
|
||||||
-DTINYGPS_OPTION_NO_CUSTOM_FIELDS
|
-DTINYGPS_OPTION_NO_CUSTOM_FIELDS
|
||||||
-DPB_ENABLE_MALLOC=1
|
-DPB_ENABLE_MALLOC=1
|
||||||
|
|||||||
@@ -22,13 +22,13 @@ class GPSStatus : public Status
|
|||||||
|
|
||||||
bool isPowerSaving = false; // Are we in power saving state
|
bool isPowerSaving = false; // Are we in power saving state
|
||||||
|
|
||||||
Position p = Position_init_default;
|
meshtastic_Position p = meshtastic_Position_init_default;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
GPSStatus() { statusType = STATUS_TYPE_GPS; }
|
GPSStatus() { statusType = STATUS_TYPE_GPS; }
|
||||||
|
|
||||||
// preferred method
|
// preferred method
|
||||||
GPSStatus(bool hasLock, bool isConnected, bool isPowerSaving, const Position &pos) : Status()
|
GPSStatus(bool hasLock, bool isConnected, bool isPowerSaving, const meshtastic_Position &pos) : Status()
|
||||||
{
|
{
|
||||||
this->hasLock = hasLock;
|
this->hasLock = hasLock;
|
||||||
this->isConnected = isConnected;
|
this->isConnected = isConnected;
|
||||||
@@ -55,7 +55,7 @@ class GPSStatus : public Status
|
|||||||
#ifdef GPS_EXTRAVERBOSE
|
#ifdef GPS_EXTRAVERBOSE
|
||||||
LOG_WARN("Using fixed latitude\n");
|
LOG_WARN("Using fixed latitude\n");
|
||||||
#endif
|
#endif
|
||||||
NodeInfo *node = nodeDB.getNode(nodeDB.getNodeNum());
|
meshtastic_NodeInfo *node = nodeDB.getNode(nodeDB.getNodeNum());
|
||||||
return node->position.latitude_i;
|
return node->position.latitude_i;
|
||||||
} else {
|
} else {
|
||||||
return p.latitude_i;
|
return p.latitude_i;
|
||||||
@@ -68,7 +68,7 @@ class GPSStatus : public Status
|
|||||||
#ifdef GPS_EXTRAVERBOSE
|
#ifdef GPS_EXTRAVERBOSE
|
||||||
LOG_WARN("Using fixed longitude\n");
|
LOG_WARN("Using fixed longitude\n");
|
||||||
#endif
|
#endif
|
||||||
NodeInfo *node = nodeDB.getNode(nodeDB.getNodeNum());
|
meshtastic_NodeInfo *node = nodeDB.getNode(nodeDB.getNodeNum());
|
||||||
return node->position.longitude_i;
|
return node->position.longitude_i;
|
||||||
} else {
|
} else {
|
||||||
return p.longitude_i;
|
return p.longitude_i;
|
||||||
@@ -81,7 +81,7 @@ class GPSStatus : public Status
|
|||||||
#ifdef GPS_EXTRAVERBOSE
|
#ifdef GPS_EXTRAVERBOSE
|
||||||
LOG_WARN("Using fixed altitude\n");
|
LOG_WARN("Using fixed altitude\n");
|
||||||
#endif
|
#endif
|
||||||
NodeInfo *node = nodeDB.getNode(nodeDB.getNodeNum());
|
meshtastic_NodeInfo *node = nodeDB.getNode(nodeDB.getNodeNum());
|
||||||
return node->position.altitude;
|
return node->position.altitude;
|
||||||
} else {
|
} else {
|
||||||
return p.altitude;
|
return p.altitude;
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ static bool isPowered()
|
|||||||
return true;
|
return true;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
bool isRouter = (config.device.role == Config_DeviceConfig_Role_ROUTER ? 1 : 0);
|
bool isRouter = (config.device.role == meshtastic_Config_DeviceConfig_Role_ROUTER ? 1 : 0);
|
||||||
|
|
||||||
// If we are not a router and we already have AC power go to POWER state after init, otherwise go to ON
|
// If we are not a router and we already have AC power go to POWER state after init, otherwise go to ON
|
||||||
// We assume routers might be powered all the time, but from a low current (solar) source
|
// We assume routers might be powered all the time, but from a low current (solar) source
|
||||||
@@ -238,7 +238,7 @@ Fsm powerFSM(&stateBOOT);
|
|||||||
|
|
||||||
void PowerFSM_setup()
|
void PowerFSM_setup()
|
||||||
{
|
{
|
||||||
bool isRouter = (config.device.role == Config_DeviceConfig_Role_ROUTER ? 1 : 0);
|
bool isRouter = (config.device.role == meshtastic_Config_DeviceConfig_Role_ROUTER ? 1 : 0);
|
||||||
bool hasPower = isPowered();
|
bool hasPower = isPowered();
|
||||||
|
|
||||||
LOG_INFO("PowerFSM init, USB power=%d\n", hasPower ? 1 : 0);
|
LOG_INFO("PowerFSM init, USB power=%d\n", hasPower ? 1 : 0);
|
||||||
|
|||||||
@@ -168,13 +168,13 @@ void scanI2Cdevice()
|
|||||||
registerValue = getRegisterValue(addr, 0xD0, 1); // GET_ID
|
registerValue = getRegisterValue(addr, 0xD0, 1); // GET_ID
|
||||||
if (registerValue == 0x61) {
|
if (registerValue == 0x61) {
|
||||||
LOG_INFO("BME-680 sensor found at address 0x%x\n", (uint8_t)addr);
|
LOG_INFO("BME-680 sensor found at address 0x%x\n", (uint8_t)addr);
|
||||||
nodeTelemetrySensorsMap[TelemetrySensorType_BME680] = addr;
|
nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_BME680] = addr;
|
||||||
} else if (registerValue == 0x60) {
|
} else if (registerValue == 0x60) {
|
||||||
LOG_INFO("BME-280 sensor found at address 0x%x\n", (uint8_t)addr);
|
LOG_INFO("BME-280 sensor found at address 0x%x\n", (uint8_t)addr);
|
||||||
nodeTelemetrySensorsMap[TelemetrySensorType_BME280] = addr;
|
nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_BME280] = addr;
|
||||||
} else {
|
} else {
|
||||||
LOG_INFO("BMP-280 sensor found at address 0x%x\n", (uint8_t)addr);
|
LOG_INFO("BMP-280 sensor found at address 0x%x\n", (uint8_t)addr);
|
||||||
nodeTelemetrySensorsMap[TelemetrySensorType_BMP280] = addr;
|
nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_BMP280] = addr;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (addr == INA_ADDR || addr == INA_ADDR_ALTERNATE) {
|
if (addr == INA_ADDR || addr == INA_ADDR_ALTERNATE) {
|
||||||
@@ -182,41 +182,41 @@ void scanI2Cdevice()
|
|||||||
LOG_DEBUG("Register MFG_UID: 0x%x\n", registerValue);
|
LOG_DEBUG("Register MFG_UID: 0x%x\n", registerValue);
|
||||||
if (registerValue == 0x5449) {
|
if (registerValue == 0x5449) {
|
||||||
LOG_INFO("INA260 sensor found at address 0x%x\n", (uint8_t)addr);
|
LOG_INFO("INA260 sensor found at address 0x%x\n", (uint8_t)addr);
|
||||||
nodeTelemetrySensorsMap[TelemetrySensorType_INA260] = addr;
|
nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA260] = addr;
|
||||||
} else { // Assume INA219 if INA260 ID is not found
|
} else { // Assume INA219 if INA260 ID is not found
|
||||||
LOG_INFO("INA219 sensor found at address 0x%x\n", (uint8_t)addr);
|
LOG_INFO("INA219 sensor found at address 0x%x\n", (uint8_t)addr);
|
||||||
nodeTelemetrySensorsMap[TelemetrySensorType_INA219] = addr;
|
nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA219] = addr;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (addr == MCP9808_ADDR) {
|
if (addr == MCP9808_ADDR) {
|
||||||
nodeTelemetrySensorsMap[TelemetrySensorType_MCP9808] = addr;
|
nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_MCP9808] = addr;
|
||||||
LOG_INFO("MCP9808 sensor found\n");
|
LOG_INFO("MCP9808 sensor found\n");
|
||||||
}
|
}
|
||||||
if (addr == SHT31_ADDR) {
|
if (addr == SHT31_ADDR) {
|
||||||
LOG_INFO("SHT31 sensor found\n");
|
LOG_INFO("SHT31 sensor found\n");
|
||||||
nodeTelemetrySensorsMap[TelemetrySensorType_SHT31] = addr;
|
nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_SHT31] = addr;
|
||||||
}
|
}
|
||||||
if (addr == SHTC3_ADDR) {
|
if (addr == SHTC3_ADDR) {
|
||||||
LOG_INFO("SHTC3 sensor found\n");
|
LOG_INFO("SHTC3 sensor found\n");
|
||||||
nodeTelemetrySensorsMap[TelemetrySensorType_SHTC3] = addr;
|
nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_SHTC3] = addr;
|
||||||
}
|
}
|
||||||
if (addr == LPS22HB_ADDR || addr == LPS22HB_ADDR_ALT) {
|
if (addr == LPS22HB_ADDR || addr == LPS22HB_ADDR_ALT) {
|
||||||
LOG_INFO("LPS22HB sensor found\n");
|
LOG_INFO("LPS22HB sensor found\n");
|
||||||
nodeTelemetrySensorsMap[TelemetrySensorType_LPS22] = addr;
|
nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_LPS22] = addr;
|
||||||
}
|
}
|
||||||
|
|
||||||
// High rate sensors, will be processed internally
|
// High rate sensors, will be processed internally
|
||||||
if (addr == QMC6310_ADDR) {
|
if (addr == QMC6310_ADDR) {
|
||||||
LOG_INFO("QMC6310 Highrate 3-Axis magnetic sensor found\n");
|
LOG_INFO("QMC6310 Highrate 3-Axis magnetic sensor found\n");
|
||||||
nodeTelemetrySensorsMap[TelemetrySensorType_QMC6310] = addr;
|
nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_QMC6310] = addr;
|
||||||
}
|
}
|
||||||
if (addr == QMI8658_ADDR) {
|
if (addr == QMI8658_ADDR) {
|
||||||
LOG_INFO("QMI8658 Highrate 6-Axis inertial measurement sensor found\n");
|
LOG_INFO("QMI8658 Highrate 6-Axis inertial measurement sensor found\n");
|
||||||
nodeTelemetrySensorsMap[TelemetrySensorType_QMI8658] = addr;
|
nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_QMI8658] = addr;
|
||||||
}
|
}
|
||||||
if (addr == QMC5883L_ADDR) {
|
if (addr == QMC5883L_ADDR) {
|
||||||
LOG_INFO("QMC5883L Highrate 3-Axis magnetic sensor found\n");
|
LOG_INFO("QMC5883L Highrate 3-Axis magnetic sensor found\n");
|
||||||
nodeTelemetrySensorsMap[TelemetrySensorType_QMC5883L] = addr;
|
nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_QMC5883L] = addr;
|
||||||
}
|
}
|
||||||
} else if (err == 4) {
|
} else if (err == 4) {
|
||||||
LOG_ERROR("Unknow error at address 0x%x\n", addr);
|
LOG_ERROR("Unknow error at address 0x%x\n", addr);
|
||||||
|
|||||||
@@ -8,5 +8,5 @@
|
|||||||
#define RECORD_CRITICALERROR(code) recordCriticalError(code, __LINE__, __FILE__)
|
#define RECORD_CRITICALERROR(code) recordCriticalError(code, __LINE__, __FILE__)
|
||||||
|
|
||||||
/// Record an error that should be reported via analytics
|
/// Record an error that should be reported via analytics
|
||||||
void recordCriticalError(CriticalErrorCode code = CriticalErrorCode_UNSPECIFIED, uint32_t address = 0,
|
void recordCriticalError(meshtastic_CriticalErrorCode code = meshtastic_CriticalErrorCode_UNSPECIFIED, uint32_t address = 0,
|
||||||
const char *filename = NULL);
|
const char *filename = NULL);
|
||||||
|
|||||||
@@ -486,7 +486,7 @@ int32_t GPS::runOnce()
|
|||||||
if (hasValidLocation) {
|
if (hasValidLocation) {
|
||||||
LOG_DEBUG("hasValidLocation FALLING EDGE (last read: %d)\n", gotLoc);
|
LOG_DEBUG("hasValidLocation FALLING EDGE (last read: %d)\n", gotLoc);
|
||||||
}
|
}
|
||||||
p = Position_init_default;
|
p = meshtastic_Position_init_default;
|
||||||
hasValidLocation = false;
|
hasValidLocation = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -54,7 +54,7 @@ class GPS : private concurrency::OSThread
|
|||||||
/** If !NULL we will use this serial port to construct our GPS */
|
/** If !NULL we will use this serial port to construct our GPS */
|
||||||
static HardwareSerial *_serial_gps;
|
static HardwareSerial *_serial_gps;
|
||||||
|
|
||||||
Position p = Position_init_default;
|
meshtastic_Position p = meshtastic_Position_init_default;
|
||||||
|
|
||||||
GPS() : concurrency::OSThread("GPS") {}
|
GPS() : concurrency::OSThread("GPS") {}
|
||||||
|
|
||||||
|
|||||||
@@ -159,7 +159,7 @@ bool NMEAGPS::lookForLocation()
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
p.location_source = Position_LocSource_LOC_INTERNAL;
|
p.location_source = meshtastic_Position_LocSource_LOC_INTERNAL;
|
||||||
|
|
||||||
// Dilution of precision (an accuracy metric) is reported in 10^2 units, so we need to scale down when we use it
|
// Dilution of precision (an accuracy metric) is reported in 10^2 units, so we need to scale down when we use it
|
||||||
#ifndef TINYGPS_OPTION_NO_CUSTOM_FIELDS
|
#ifndef TINYGPS_OPTION_NO_CUSTOM_FIELDS
|
||||||
|
|||||||
@@ -16,7 +16,7 @@
|
|||||||
* -------------------------------------------
|
* -------------------------------------------
|
||||||
*/
|
*/
|
||||||
|
|
||||||
uint32_t printWPL(char *buf, size_t bufsz, const Position &pos, const char *name)
|
uint32_t printWPL(char *buf, size_t bufsz, const meshtastic_Position &pos, const char *name)
|
||||||
{
|
{
|
||||||
GeoCoord geoCoord(pos.latitude_i, pos.longitude_i, pos.altitude);
|
GeoCoord geoCoord(pos.latitude_i, pos.longitude_i, pos.altitude);
|
||||||
uint32_t len = snprintf(buf, bufsz, "$GNWPL,%02d%07.4f,%c,%03d%07.4f,%c,%s", geoCoord.getDMSLatDeg(),
|
uint32_t len = snprintf(buf, bufsz, "$GNWPL,%02d%07.4f,%c,%03d%07.4f,%c,%s", geoCoord.getDMSLatDeg(),
|
||||||
@@ -53,7 +53,7 @@ uint32_t printWPL(char *buf, size_t bufsz, const Position &pos, const char *name
|
|||||||
* -------------------------------------------
|
* -------------------------------------------
|
||||||
*/
|
*/
|
||||||
|
|
||||||
uint32_t printGGA(char *buf, size_t bufsz, const Position &pos)
|
uint32_t printGGA(char *buf, size_t bufsz, const meshtastic_Position &pos)
|
||||||
{
|
{
|
||||||
GeoCoord geoCoord(pos.latitude_i, pos.longitude_i, pos.altitude);
|
GeoCoord geoCoord(pos.latitude_i, pos.longitude_i, pos.altitude);
|
||||||
uint32_t len =
|
uint32_t len =
|
||||||
|
|||||||
@@ -3,5 +3,5 @@
|
|||||||
#include "main.h"
|
#include "main.h"
|
||||||
#include <Arduino.h>
|
#include <Arduino.h>
|
||||||
|
|
||||||
uint32_t printWPL(char *buf, size_t bufsz, const Position &pos, const char *name);
|
uint32_t printWPL(char *buf, size_t bufsz, const meshtastic_Position &pos, const char *name);
|
||||||
uint32_t printGGA(char *buf, size_t bufsz, const Position &pos);
|
uint32_t printGGA(char *buf, size_t bufsz, const meshtastic_Position &pos);
|
||||||
|
|||||||
@@ -352,7 +352,7 @@ static void drawCriticalFaultFrame(OLEDDisplay *display, OLEDDisplayUiState *sta
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Ignore messages orginating from phone (from the current node 0x0) unless range test or store and forward module are enabled
|
// Ignore messages orginating from phone (from the current node 0x0) unless range test or store and forward module are enabled
|
||||||
static bool shouldDrawMessage(const MeshPacket *packet)
|
static bool shouldDrawMessage(const meshtastic_MeshPacket *packet)
|
||||||
{
|
{
|
||||||
return packet->from != 0 && !moduleConfig.range_test.enabled && !moduleConfig.store_forward.enabled;
|
return packet->from != 0 && !moduleConfig.range_test.enabled && !moduleConfig.store_forward.enabled;
|
||||||
}
|
}
|
||||||
@@ -365,8 +365,8 @@ static void drawTextMessageFrame(OLEDDisplay *display, OLEDDisplayUiState *state
|
|||||||
// the max length of this buffer is much longer than we can possibly print
|
// the max length of this buffer is much longer than we can possibly print
|
||||||
static char tempBuf[237];
|
static char tempBuf[237];
|
||||||
|
|
||||||
MeshPacket &mp = devicestate.rx_text_message;
|
meshtastic_MeshPacket &mp = devicestate.rx_text_message;
|
||||||
NodeInfo *node = nodeDB.getNode(getFrom(&mp));
|
meshtastic_NodeInfo *node = nodeDB.getNode(getFrom(&mp));
|
||||||
// LOG_DEBUG("drawing text message from 0x%x: %s\n", mp.from,
|
// LOG_DEBUG("drawing text message from 0x%x: %s\n", mp.from,
|
||||||
// mp.decoded.variant.data.decoded.bytes);
|
// mp.decoded.variant.data.decoded.bytes);
|
||||||
|
|
||||||
@@ -375,7 +375,7 @@ static void drawTextMessageFrame(OLEDDisplay *display, OLEDDisplayUiState *state
|
|||||||
// be wrapped. Currently only spaces and "-" are allowed for wrapping
|
// be wrapped. Currently only spaces and "-" are allowed for wrapping
|
||||||
display->setTextAlignment(TEXT_ALIGN_LEFT);
|
display->setTextAlignment(TEXT_ALIGN_LEFT);
|
||||||
display->setFont(FONT_SMALL);
|
display->setFont(FONT_SMALL);
|
||||||
if (config.display.displaymode == Config_DisplayConfig_DisplayMode_INVERTED) {
|
if (config.display.displaymode == meshtastic_Config_DisplayConfig_DisplayMode_INVERTED) {
|
||||||
display->fillRect(0 + x, 0 + y, x + display->getWidth(), y + FONT_HEIGHT_SMALL);
|
display->fillRect(0 + x, 0 + y, x + display->getWidth(), y + FONT_HEIGHT_SMALL);
|
||||||
display->setColor(BLACK);
|
display->setColor(BLACK);
|
||||||
}
|
}
|
||||||
@@ -556,7 +556,7 @@ static void drawGPSAltitude(OLEDDisplay *display, int16_t x, int16_t y, const GP
|
|||||||
} else {
|
} else {
|
||||||
geoCoord.updateCoords(int32_t(gps->getLatitude()), int32_t(gps->getLongitude()), int32_t(gps->getAltitude()));
|
geoCoord.updateCoords(int32_t(gps->getLatitude()), int32_t(gps->getLongitude()), int32_t(gps->getAltitude()));
|
||||||
displayLine = "Altitude: " + String(geoCoord.getAltitude()) + "m";
|
displayLine = "Altitude: " + String(geoCoord.getAltitude()) + "m";
|
||||||
if (config.display.units == Config_DisplayConfig_DisplayUnits_IMPERIAL)
|
if (config.display.units == meshtastic_Config_DisplayConfig_DisplayUnits_IMPERIAL)
|
||||||
displayLine = "Altitude: " + String(geoCoord.getAltitude() * METERS_TO_FEET) + "ft";
|
displayLine = "Altitude: " + String(geoCoord.getAltitude() * METERS_TO_FEET) + "ft";
|
||||||
display->drawString(x + (SCREEN_WIDTH - (display->getStringWidth(displayLine))) / 2, y, displayLine);
|
display->drawString(x + (SCREEN_WIDTH - (display->getStringWidth(displayLine))) / 2, y, displayLine);
|
||||||
}
|
}
|
||||||
@@ -578,21 +578,21 @@ static void drawGPScoordinates(OLEDDisplay *display, int16_t x, int16_t y, const
|
|||||||
|
|
||||||
geoCoord.updateCoords(int32_t(gps->getLatitude()), int32_t(gps->getLongitude()), int32_t(gps->getAltitude()));
|
geoCoord.updateCoords(int32_t(gps->getLatitude()), int32_t(gps->getLongitude()), int32_t(gps->getAltitude()));
|
||||||
|
|
||||||
if (gpsFormat != Config_DisplayConfig_GpsCoordinateFormat_DMS) {
|
if (gpsFormat != meshtastic_Config_DisplayConfig_GpsCoordinateFormat_DMS) {
|
||||||
char coordinateLine[22];
|
char coordinateLine[22];
|
||||||
if (gpsFormat == Config_DisplayConfig_GpsCoordinateFormat_DEC) { // Decimal Degrees
|
if (gpsFormat == meshtastic_Config_DisplayConfig_GpsCoordinateFormat_DEC) { // Decimal Degrees
|
||||||
snprintf(coordinateLine, sizeof(coordinateLine), "%f %f", geoCoord.getLatitude() * 1e-7,
|
snprintf(coordinateLine, sizeof(coordinateLine), "%f %f", geoCoord.getLatitude() * 1e-7,
|
||||||
geoCoord.getLongitude() * 1e-7);
|
geoCoord.getLongitude() * 1e-7);
|
||||||
} else if (gpsFormat == Config_DisplayConfig_GpsCoordinateFormat_UTM) { // Universal Transverse Mercator
|
} else if (gpsFormat == meshtastic_Config_DisplayConfig_GpsCoordinateFormat_UTM) { // Universal Transverse Mercator
|
||||||
snprintf(coordinateLine, sizeof(coordinateLine), "%2i%1c %06u %07u", geoCoord.getUTMZone(), geoCoord.getUTMBand(),
|
snprintf(coordinateLine, sizeof(coordinateLine), "%2i%1c %06u %07u", geoCoord.getUTMZone(), geoCoord.getUTMBand(),
|
||||||
geoCoord.getUTMEasting(), geoCoord.getUTMNorthing());
|
geoCoord.getUTMEasting(), geoCoord.getUTMNorthing());
|
||||||
} else if (gpsFormat == Config_DisplayConfig_GpsCoordinateFormat_MGRS) { // Military Grid Reference System
|
} else if (gpsFormat == meshtastic_Config_DisplayConfig_GpsCoordinateFormat_MGRS) { // Military Grid Reference System
|
||||||
snprintf(coordinateLine, sizeof(coordinateLine), "%2i%1c %1c%1c %05u %05u", geoCoord.getMGRSZone(),
|
snprintf(coordinateLine, sizeof(coordinateLine), "%2i%1c %1c%1c %05u %05u", geoCoord.getMGRSZone(),
|
||||||
geoCoord.getMGRSBand(), geoCoord.getMGRSEast100k(), geoCoord.getMGRSNorth100k(),
|
geoCoord.getMGRSBand(), geoCoord.getMGRSEast100k(), geoCoord.getMGRSNorth100k(),
|
||||||
geoCoord.getMGRSEasting(), geoCoord.getMGRSNorthing());
|
geoCoord.getMGRSEasting(), geoCoord.getMGRSNorthing());
|
||||||
} else if (gpsFormat == Config_DisplayConfig_GpsCoordinateFormat_OLC) { // Open Location Code
|
} else if (gpsFormat == meshtastic_Config_DisplayConfig_GpsCoordinateFormat_OLC) { // Open Location Code
|
||||||
geoCoord.getOLCCode(coordinateLine);
|
geoCoord.getOLCCode(coordinateLine);
|
||||||
} else if (gpsFormat == Config_DisplayConfig_GpsCoordinateFormat_OSGR) { // Ordnance Survey Grid Reference
|
} else if (gpsFormat == meshtastic_Config_DisplayConfig_GpsCoordinateFormat_OSGR) { // Ordnance Survey Grid Reference
|
||||||
if (geoCoord.getOSGRE100k() == 'I' || geoCoord.getOSGRN100k() == 'I') // OSGR is only valid around the UK region
|
if (geoCoord.getOSGRE100k() == 'I' || geoCoord.getOSGRN100k() == 'I') // OSGR is only valid around the UK region
|
||||||
snprintf(coordinateLine, sizeof(coordinateLine), "%s", "Out of Boundary");
|
snprintf(coordinateLine, sizeof(coordinateLine), "%s", "Out of Boundary");
|
||||||
else
|
else
|
||||||
@@ -699,7 +699,7 @@ static float estimatedHeading(double lat, double lon)
|
|||||||
|
|
||||||
/// Sometimes we will have Position objects that only have a time, so check for
|
/// Sometimes we will have Position objects that only have a time, so check for
|
||||||
/// valid lat/lon
|
/// valid lat/lon
|
||||||
static bool hasPosition(NodeInfo *n)
|
static bool hasPosition(meshtastic_NodeInfo *n)
|
||||||
{
|
{
|
||||||
return n->has_position && (n->position.latitude_i != 0 || n->position.longitude_i != 0);
|
return n->has_position && (n->position.latitude_i != 0 || n->position.longitude_i != 0);
|
||||||
}
|
}
|
||||||
@@ -709,7 +709,7 @@ static uint16_t getCompassDiam(OLEDDisplay *display)
|
|||||||
uint16_t diam = 0;
|
uint16_t diam = 0;
|
||||||
uint16_t offset = 0;
|
uint16_t offset = 0;
|
||||||
|
|
||||||
if (config.display.displaymode != Config_DisplayConfig_DisplayMode_DEFAULT)
|
if (config.display.displaymode != meshtastic_Config_DisplayConfig_DisplayMode_DEFAULT)
|
||||||
offset = FONT_HEIGHT_SMALL;
|
offset = FONT_HEIGHT_SMALL;
|
||||||
|
|
||||||
// get the smaller of the 2 dimensions and subtract 20
|
// get the smaller of the 2 dimensions and subtract 20
|
||||||
@@ -786,7 +786,7 @@ static void drawNodeInfo(OLEDDisplay *display, OLEDDisplayUiState *state, int16_
|
|||||||
prevFrame = state->currentFrame;
|
prevFrame = state->currentFrame;
|
||||||
|
|
||||||
nodeIndex = (nodeIndex + 1) % nodeDB.getNumNodes();
|
nodeIndex = (nodeIndex + 1) % nodeDB.getNumNodes();
|
||||||
NodeInfo *n = nodeDB.getNodeByIndex(nodeIndex);
|
meshtastic_NodeInfo *n = nodeDB.getNodeByIndex(nodeIndex);
|
||||||
if (n->num == nodeDB.getNodeNum()) {
|
if (n->num == nodeDB.getNodeNum()) {
|
||||||
// Don't show our node, just skip to next
|
// Don't show our node, just skip to next
|
||||||
nodeIndex = (nodeIndex + 1) % nodeDB.getNumNodes();
|
nodeIndex = (nodeIndex + 1) % nodeDB.getNumNodes();
|
||||||
@@ -795,14 +795,14 @@ static void drawNodeInfo(OLEDDisplay *display, OLEDDisplayUiState *state, int16_
|
|||||||
displayedNodeNum = n->num;
|
displayedNodeNum = n->num;
|
||||||
}
|
}
|
||||||
|
|
||||||
NodeInfo *node = nodeDB.getNodeByIndex(nodeIndex);
|
meshtastic_NodeInfo *node = nodeDB.getNodeByIndex(nodeIndex);
|
||||||
|
|
||||||
display->setFont(FONT_SMALL);
|
display->setFont(FONT_SMALL);
|
||||||
|
|
||||||
// The coordinates define the left starting point of the text
|
// The coordinates define the left starting point of the text
|
||||||
display->setTextAlignment(TEXT_ALIGN_LEFT);
|
display->setTextAlignment(TEXT_ALIGN_LEFT);
|
||||||
|
|
||||||
if (config.display.displaymode == Config_DisplayConfig_DisplayMode_INVERTED) {
|
if (config.display.displaymode == meshtastic_Config_DisplayConfig_DisplayMode_INVERTED) {
|
||||||
display->fillRect(0 + x, 0 + y, x + display->getWidth(), y + FONT_HEIGHT_SMALL);
|
display->fillRect(0 + x, 0 + y, x + display->getWidth(), y + FONT_HEIGHT_SMALL);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -832,12 +832,12 @@ static void drawNodeInfo(OLEDDisplay *display, OLEDDisplayUiState *state, int16_
|
|||||||
|
|
||||||
static char distStr[20];
|
static char distStr[20];
|
||||||
strncpy(distStr, "? km", sizeof(distStr)); // might not have location data
|
strncpy(distStr, "? km", sizeof(distStr)); // might not have location data
|
||||||
NodeInfo *ourNode = nodeDB.getNode(nodeDB.getNodeNum());
|
meshtastic_NodeInfo *ourNode = nodeDB.getNode(nodeDB.getNodeNum());
|
||||||
const char *fields[] = {username, distStr, signalStr, lastStr, NULL};
|
const char *fields[] = {username, distStr, signalStr, lastStr, NULL};
|
||||||
int16_t compassX = 0, compassY = 0;
|
int16_t compassX = 0, compassY = 0;
|
||||||
|
|
||||||
// coordinates for the center of the compass/circle
|
// coordinates for the center of the compass/circle
|
||||||
if (config.display.displaymode == Config_DisplayConfig_DisplayMode_DEFAULT) {
|
if (config.display.displaymode == meshtastic_Config_DisplayConfig_DisplayMode_DEFAULT) {
|
||||||
compassX = x + SCREEN_WIDTH - getCompassDiam(display) / 2 - 5;
|
compassX = x + SCREEN_WIDTH - getCompassDiam(display) / 2 - 5;
|
||||||
compassY = y + SCREEN_HEIGHT / 2;
|
compassY = y + SCREEN_HEIGHT / 2;
|
||||||
} else {
|
} else {
|
||||||
@@ -847,18 +847,18 @@ static void drawNodeInfo(OLEDDisplay *display, OLEDDisplayUiState *state, int16_
|
|||||||
bool hasNodeHeading = false;
|
bool hasNodeHeading = false;
|
||||||
|
|
||||||
if (ourNode && hasPosition(ourNode)) {
|
if (ourNode && hasPosition(ourNode)) {
|
||||||
Position &op = ourNode->position;
|
meshtastic_Position &op = ourNode->position;
|
||||||
float myHeading = estimatedHeading(DegD(op.latitude_i), DegD(op.longitude_i));
|
float myHeading = estimatedHeading(DegD(op.latitude_i), DegD(op.longitude_i));
|
||||||
drawCompassNorth(display, compassX, compassY, myHeading);
|
drawCompassNorth(display, compassX, compassY, myHeading);
|
||||||
|
|
||||||
if (hasPosition(node)) {
|
if (hasPosition(node)) {
|
||||||
// display direction toward node
|
// display direction toward node
|
||||||
hasNodeHeading = true;
|
hasNodeHeading = true;
|
||||||
Position &p = node->position;
|
meshtastic_Position &p = node->position;
|
||||||
float d =
|
float d =
|
||||||
GeoCoord::latLongToMeter(DegD(p.latitude_i), DegD(p.longitude_i), DegD(op.latitude_i), DegD(op.longitude_i));
|
GeoCoord::latLongToMeter(DegD(p.latitude_i), DegD(p.longitude_i), DegD(op.latitude_i), DegD(op.longitude_i));
|
||||||
|
|
||||||
if (config.display.units == Config_DisplayConfig_DisplayUnits_IMPERIAL) {
|
if (config.display.units == meshtastic_Config_DisplayConfig_DisplayUnits_IMPERIAL) {
|
||||||
if (d < (2 * MILES_TO_FEET))
|
if (d < (2 * MILES_TO_FEET))
|
||||||
snprintf(distStr, sizeof(distStr), "%.0f ft", d * METERS_TO_FEET);
|
snprintf(distStr, sizeof(distStr), "%.0f ft", d * METERS_TO_FEET);
|
||||||
else
|
else
|
||||||
@@ -887,7 +887,7 @@ static void drawNodeInfo(OLEDDisplay *display, OLEDDisplayUiState *state, int16_
|
|||||||
}
|
}
|
||||||
display->drawCircle(compassX, compassY, getCompassDiam(display) / 2);
|
display->drawCircle(compassX, compassY, getCompassDiam(display) / 2);
|
||||||
|
|
||||||
if (config.display.displaymode == Config_DisplayConfig_DisplayMode_INVERTED) {
|
if (config.display.displaymode == meshtastic_Config_DisplayConfig_DisplayMode_INVERTED) {
|
||||||
display->setColor(BLACK);
|
display->setColor(BLACK);
|
||||||
}
|
}
|
||||||
// Must be after distStr is populated
|
// Must be after distStr is populated
|
||||||
@@ -910,7 +910,7 @@ static void drawNodeInfo(OLEDDisplay *display, OLEDDisplayUiState *state, int16_
|
|||||||
// #else
|
// #else
|
||||||
Screen::Screen(uint8_t address, int sda, int scl)
|
Screen::Screen(uint8_t address, int sda, int scl)
|
||||||
: OSThread("Screen"), cmdQueue(32),
|
: OSThread("Screen"), cmdQueue(32),
|
||||||
dispdev(address, sda, scl, screen_model == Config_DisplayConfig_OledType_OLED_SH1107 ? GEOMETRY_128_128 : GEOMETRY_128_64),
|
dispdev(address, sda, scl, screen_model == meshtastic_Config_DisplayConfig_OledType_OLED_SH1107 ? GEOMETRY_128_128 : GEOMETRY_128_64),
|
||||||
ui(&dispdev)
|
ui(&dispdev)
|
||||||
{
|
{
|
||||||
address_found = address;
|
address_found = address;
|
||||||
@@ -961,8 +961,8 @@ void Screen::setup()
|
|||||||
useDisplay = true;
|
useDisplay = true;
|
||||||
|
|
||||||
#ifdef AutoOLEDWire_h
|
#ifdef AutoOLEDWire_h
|
||||||
if (screen_model == Config_DisplayConfig_OledType_OLED_SH1107)
|
if (screen_model == meshtastic_Config_DisplayConfig_OledType_OLED_SH1107)
|
||||||
screen_model = Config_DisplayConfig_OledType_OLED_SH1106;
|
screen_model = meshtastic_Config_DisplayConfig_OledType_OLED_SH1106;
|
||||||
dispdev.setDetected(screen_model);
|
dispdev.setDetected(screen_model);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -1084,7 +1084,7 @@ int32_t Screen::runOnce()
|
|||||||
}
|
}
|
||||||
|
|
||||||
#ifndef DISABLE_WELCOME_UNSET
|
#ifndef DISABLE_WELCOME_UNSET
|
||||||
if (showingNormalScreen && config.lora.region == Config_LoRaConfig_RegionCode_UNSET) {
|
if (showingNormalScreen && config.lora.region == meshtastic_Config_LoRaConfig_RegionCode_UNSET) {
|
||||||
setWelcomeFrames();
|
setWelcomeFrames();
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@@ -1404,7 +1404,7 @@ void DebugInfo::drawFrame(OLEDDisplay *display, OLEDDisplayUiState *state, int16
|
|||||||
// The coordinates define the left starting point of the text
|
// The coordinates define the left starting point of the text
|
||||||
display->setTextAlignment(TEXT_ALIGN_LEFT);
|
display->setTextAlignment(TEXT_ALIGN_LEFT);
|
||||||
|
|
||||||
if (config.display.displaymode == Config_DisplayConfig_DisplayMode_INVERTED) {
|
if (config.display.displaymode == meshtastic_Config_DisplayConfig_DisplayMode_INVERTED) {
|
||||||
display->fillRect(0 + x, 0 + y, x + display->getWidth(), y + FONT_HEIGHT_SMALL);
|
display->fillRect(0 + x, 0 + y, x + display->getWidth(), y + FONT_HEIGHT_SMALL);
|
||||||
display->setColor(BLACK);
|
display->setColor(BLACK);
|
||||||
}
|
}
|
||||||
@@ -1418,20 +1418,20 @@ void DebugInfo::drawFrame(OLEDDisplay *display, OLEDDisplayUiState *state, int16
|
|||||||
|
|
||||||
// Display power status
|
// Display power status
|
||||||
if (powerStatus->getHasBattery()) {
|
if (powerStatus->getHasBattery()) {
|
||||||
if (config.display.displaymode == Config_DisplayConfig_DisplayMode_DEFAULT) {
|
if (config.display.displaymode == meshtastic_Config_DisplayConfig_DisplayMode_DEFAULT) {
|
||||||
drawBattery(display, x, y + 2, imgBattery, powerStatus);
|
drawBattery(display, x, y + 2, imgBattery, powerStatus);
|
||||||
} else {
|
} else {
|
||||||
drawBattery(display, x + 1, y + 3, imgBattery, powerStatus);
|
drawBattery(display, x + 1, y + 3, imgBattery, powerStatus);
|
||||||
}
|
}
|
||||||
} else if (powerStatus->knowsUSB()) {
|
} else if (powerStatus->knowsUSB()) {
|
||||||
if (config.display.displaymode == Config_DisplayConfig_DisplayMode_DEFAULT) {
|
if (config.display.displaymode == meshtastic_Config_DisplayConfig_DisplayMode_DEFAULT) {
|
||||||
display->drawFastImage(x, y + 2, 16, 8, powerStatus->getHasUSB() ? imgUSB : imgPower);
|
display->drawFastImage(x, y + 2, 16, 8, powerStatus->getHasUSB() ? imgUSB : imgPower);
|
||||||
} else {
|
} else {
|
||||||
display->drawFastImage(x + 1, y + 3, 16, 8, powerStatus->getHasUSB() ? imgUSB : imgPower);
|
display->drawFastImage(x + 1, y + 3, 16, 8, powerStatus->getHasUSB() ? imgUSB : imgPower);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Display nodes status
|
// Display nodes status
|
||||||
if (config.display.displaymode == Config_DisplayConfig_DisplayMode_DEFAULT) {
|
if (config.display.displaymode == meshtastic_Config_DisplayConfig_DisplayMode_DEFAULT) {
|
||||||
drawNodes(display, x + (SCREEN_WIDTH * 0.25), y + 2, nodeStatus);
|
drawNodes(display, x + (SCREEN_WIDTH * 0.25), y + 2, nodeStatus);
|
||||||
} else {
|
} else {
|
||||||
drawNodes(display, x + (SCREEN_WIDTH * 0.25), y + 3, nodeStatus);
|
drawNodes(display, x + (SCREEN_WIDTH * 0.25), y + 3, nodeStatus);
|
||||||
@@ -1444,7 +1444,7 @@ void DebugInfo::drawFrame(OLEDDisplay *display, OLEDDisplayUiState *state, int16
|
|||||||
#endif
|
#endif
|
||||||
drawGPSpowerstat(display, x, yPos, gpsStatus);
|
drawGPSpowerstat(display, x, yPos, gpsStatus);
|
||||||
} else {
|
} else {
|
||||||
if (config.display.displaymode == Config_DisplayConfig_DisplayMode_DEFAULT) {
|
if (config.display.displaymode == meshtastic_Config_DisplayConfig_DisplayMode_DEFAULT) {
|
||||||
drawGPS(display, x + (SCREEN_WIDTH * 0.63), y + 2, gpsStatus);
|
drawGPS(display, x + (SCREEN_WIDTH * 0.63), y + 2, gpsStatus);
|
||||||
} else {
|
} else {
|
||||||
drawGPS(display, x + (SCREEN_WIDTH * 0.63), y + 3, gpsStatus);
|
drawGPS(display, x + (SCREEN_WIDTH * 0.63), y + 3, gpsStatus);
|
||||||
@@ -1517,7 +1517,7 @@ void DebugInfo::drawFrameWiFi(OLEDDisplay *display, OLEDDisplayUiState *state, i
|
|||||||
// The coordinates define the left starting point of the text
|
// The coordinates define the left starting point of the text
|
||||||
display->setTextAlignment(TEXT_ALIGN_LEFT);
|
display->setTextAlignment(TEXT_ALIGN_LEFT);
|
||||||
|
|
||||||
if (config.display.displaymode == Config_DisplayConfig_DisplayMode_INVERTED) {
|
if (config.display.displaymode == meshtastic_Config_DisplayConfig_DisplayMode_INVERTED) {
|
||||||
display->fillRect(0 + x, 0 + y, x + display->getWidth(), y + FONT_HEIGHT_SMALL);
|
display->fillRect(0 + x, 0 + y, x + display->getWidth(), y + FONT_HEIGHT_SMALL);
|
||||||
display->setColor(BLACK);
|
display->setColor(BLACK);
|
||||||
}
|
}
|
||||||
@@ -1649,7 +1649,7 @@ void DebugInfo::drawFrameSettings(OLEDDisplay *display, OLEDDisplayUiState *stat
|
|||||||
// The coordinates define the left starting point of the text
|
// The coordinates define the left starting point of the text
|
||||||
display->setTextAlignment(TEXT_ALIGN_LEFT);
|
display->setTextAlignment(TEXT_ALIGN_LEFT);
|
||||||
|
|
||||||
if (config.display.displaymode == Config_DisplayConfig_DisplayMode_INVERTED) {
|
if (config.display.displaymode == meshtastic_Config_DisplayConfig_DisplayMode_INVERTED) {
|
||||||
display->fillRect(0 + x, 0 + y, x + display->getWidth(), y + FONT_HEIGHT_SMALL);
|
display->fillRect(0 + x, 0 + y, x + display->getWidth(), y + FONT_HEIGHT_SMALL);
|
||||||
display->setColor(BLACK);
|
display->setColor(BLACK);
|
||||||
}
|
}
|
||||||
@@ -1676,25 +1676,25 @@ void DebugInfo::drawFrameSettings(OLEDDisplay *display, OLEDDisplayUiState *stat
|
|||||||
auto mode = "";
|
auto mode = "";
|
||||||
|
|
||||||
switch (config.lora.modem_preset) {
|
switch (config.lora.modem_preset) {
|
||||||
case Config_LoRaConfig_ModemPreset_SHORT_SLOW:
|
case meshtastic_Config_LoRaConfig_ModemPreset_SHORT_SLOW:
|
||||||
mode = "ShortS";
|
mode = "ShortS";
|
||||||
break;
|
break;
|
||||||
case Config_LoRaConfig_ModemPreset_SHORT_FAST:
|
case meshtastic_Config_LoRaConfig_ModemPreset_SHORT_FAST:
|
||||||
mode = "ShortF";
|
mode = "ShortF";
|
||||||
break;
|
break;
|
||||||
case Config_LoRaConfig_ModemPreset_MEDIUM_SLOW:
|
case meshtastic_Config_LoRaConfig_ModemPreset_MEDIUM_SLOW:
|
||||||
mode = "MedS";
|
mode = "MedS";
|
||||||
break;
|
break;
|
||||||
case Config_LoRaConfig_ModemPreset_MEDIUM_FAST:
|
case meshtastic_Config_LoRaConfig_ModemPreset_MEDIUM_FAST:
|
||||||
mode = "MedF";
|
mode = "MedF";
|
||||||
break;
|
break;
|
||||||
case Config_LoRaConfig_ModemPreset_LONG_SLOW:
|
case meshtastic_Config_LoRaConfig_ModemPreset_LONG_SLOW:
|
||||||
mode = "LongS";
|
mode = "LongS";
|
||||||
break;
|
break;
|
||||||
case Config_LoRaConfig_ModemPreset_LONG_FAST:
|
case meshtastic_Config_LoRaConfig_ModemPreset_LONG_FAST:
|
||||||
mode = "LongF";
|
mode = "LongF";
|
||||||
break;
|
break;
|
||||||
case Config_LoRaConfig_ModemPreset_VERY_LONG_SLOW:
|
case meshtastic_Config_LoRaConfig_ModemPreset_VERY_LONG_SLOW:
|
||||||
mode = "VeryL";
|
mode = "VeryL";
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
@@ -1756,7 +1756,7 @@ void DebugInfo::drawFrameSettings(OLEDDisplay *display, OLEDDisplayUiState *stat
|
|||||||
display->drawString(x + SCREEN_WIDTH - display->getStringWidth(chUtil), y + FONT_HEIGHT_SMALL * 1, chUtil);
|
display->drawString(x + SCREEN_WIDTH - display->getStringWidth(chUtil), y + FONT_HEIGHT_SMALL * 1, chUtil);
|
||||||
if (config.position.gps_enabled) {
|
if (config.position.gps_enabled) {
|
||||||
// Line 3
|
// Line 3
|
||||||
if (config.display.gps_format != Config_DisplayConfig_GpsCoordinateFormat_DMS) // if DMS then don't draw altitude
|
if (config.display.gps_format != meshtastic_Config_DisplayConfig_GpsCoordinateFormat_DMS) // if DMS then don't draw altitude
|
||||||
drawGPSAltitude(display, x, y + FONT_HEIGHT_SMALL * 2, gpsStatus);
|
drawGPSAltitude(display, x, y + FONT_HEIGHT_SMALL * 2, gpsStatus);
|
||||||
|
|
||||||
// Line 4
|
// Line 4
|
||||||
@@ -1804,7 +1804,7 @@ int Screen::handleStatusUpdate(const meshtastic::Status *arg)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int Screen::handleTextMessage(const MeshPacket *packet)
|
int Screen::handleTextMessage(const meshtastic_MeshPacket *packet)
|
||||||
{
|
{
|
||||||
if (showingNormalScreen) {
|
if (showingNormalScreen) {
|
||||||
setFrames(); // Regen the list of screens (will show new text message)
|
setFrames(); // Regen the list of screens (will show new text message)
|
||||||
|
|||||||
@@ -110,8 +110,8 @@ class Screen : public concurrency::OSThread
|
|||||||
CallbackObserver<Screen, const meshtastic::Status *>(this, &Screen::handleStatusUpdate);
|
CallbackObserver<Screen, const meshtastic::Status *>(this, &Screen::handleStatusUpdate);
|
||||||
CallbackObserver<Screen, const meshtastic::Status *> nodeStatusObserver =
|
CallbackObserver<Screen, const meshtastic::Status *> nodeStatusObserver =
|
||||||
CallbackObserver<Screen, const meshtastic::Status *>(this, &Screen::handleStatusUpdate);
|
CallbackObserver<Screen, const meshtastic::Status *>(this, &Screen::handleStatusUpdate);
|
||||||
CallbackObserver<Screen, const MeshPacket *> textMessageObserver =
|
CallbackObserver<Screen, const meshtastic_MeshPacket *> textMessageObserver =
|
||||||
CallbackObserver<Screen, const MeshPacket *>(this, &Screen::handleTextMessage);
|
CallbackObserver<Screen, const meshtastic_MeshPacket *>(this, &Screen::handleTextMessage);
|
||||||
CallbackObserver<Screen, const UIFrameEvent *> uiFrameEventObserver =
|
CallbackObserver<Screen, const UIFrameEvent *> uiFrameEventObserver =
|
||||||
CallbackObserver<Screen, const UIFrameEvent *>(this, &Screen::handleUIFrameEvent);
|
CallbackObserver<Screen, const UIFrameEvent *>(this, &Screen::handleUIFrameEvent);
|
||||||
|
|
||||||
@@ -273,7 +273,7 @@ class Screen : public concurrency::OSThread
|
|||||||
DebugInfo *debug_info() { return &debugInfo; }
|
DebugInfo *debug_info() { return &debugInfo; }
|
||||||
|
|
||||||
int handleStatusUpdate(const meshtastic::Status *arg);
|
int handleStatusUpdate(const meshtastic::Status *arg);
|
||||||
int handleTextMessage(const MeshPacket *arg);
|
int handleTextMessage(const meshtastic_MeshPacket *arg);
|
||||||
int handleUIFrameEvent(const UIFrameEvent *arg);
|
int handleUIFrameEvent(const UIFrameEvent *arg);
|
||||||
|
|
||||||
/// Used to force (super slow) eink displays to draw critical frames
|
/// Used to force (super slow) eink displays to draw critical frames
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ void RotaryEncoderInterruptBase::init(
|
|||||||
int32_t RotaryEncoderInterruptBase::runOnce()
|
int32_t RotaryEncoderInterruptBase::runOnce()
|
||||||
{
|
{
|
||||||
InputEvent e;
|
InputEvent e;
|
||||||
e.inputEvent = ModuleConfig_CannedMessageConfig_InputEventChar_NONE;
|
e.inputEvent = meshtastic_ModuleConfig_CannedMessageConfig_InputEventChar_NONE;
|
||||||
e.source = this->_originName;
|
e.source = this->_originName;
|
||||||
|
|
||||||
if (this->action == ROTARY_ACTION_PRESSED) {
|
if (this->action == ROTARY_ACTION_PRESSED) {
|
||||||
@@ -48,7 +48,7 @@ int32_t RotaryEncoderInterruptBase::runOnce()
|
|||||||
e.inputEvent = this->_eventCcw;
|
e.inputEvent = this->_eventCcw;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (e.inputEvent != ModuleConfig_CannedMessageConfig_InputEventChar_NONE) {
|
if (e.inputEvent != meshtastic_ModuleConfig_CannedMessageConfig_InputEventChar_NONE) {
|
||||||
this->notifyObservers(&e);
|
this->notifyObservers(&e);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -33,8 +33,8 @@ class RotaryEncoderInterruptBase : public Observable<const InputEvent *>, public
|
|||||||
private:
|
private:
|
||||||
uint8_t _pinA = 0;
|
uint8_t _pinA = 0;
|
||||||
uint8_t _pinB = 0;
|
uint8_t _pinB = 0;
|
||||||
char _eventCw = ModuleConfig_CannedMessageConfig_InputEventChar_NONE;
|
char _eventCw = meshtastic_ModuleConfig_CannedMessageConfig_InputEventChar_NONE;
|
||||||
char _eventCcw = ModuleConfig_CannedMessageConfig_InputEventChar_NONE;
|
char _eventCcw = meshtastic_ModuleConfig_CannedMessageConfig_InputEventChar_NONE;
|
||||||
char _eventPressed = ModuleConfig_CannedMessageConfig_InputEventChar_NONE;
|
char _eventPressed = meshtastic_ModuleConfig_CannedMessageConfig_InputEventChar_NONE;
|
||||||
const char *_originName;
|
const char *_originName;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -16,8 +16,8 @@ class UpDownInterruptBase : public Observable<const InputEvent *>
|
|||||||
private:
|
private:
|
||||||
uint8_t _pinDown = 0;
|
uint8_t _pinDown = 0;
|
||||||
uint8_t _pinUp = 0;
|
uint8_t _pinUp = 0;
|
||||||
char _eventDown = ModuleConfig_CannedMessageConfig_InputEventChar_NONE;
|
char _eventDown = meshtastic_ModuleConfig_CannedMessageConfig_InputEventChar_NONE;
|
||||||
char _eventUp = ModuleConfig_CannedMessageConfig_InputEventChar_NONE;
|
char _eventUp = meshtastic_ModuleConfig_CannedMessageConfig_InputEventChar_NONE;
|
||||||
char _eventPressed = ModuleConfig_CannedMessageConfig_InputEventChar_NONE;
|
char _eventPressed = meshtastic_ModuleConfig_CannedMessageConfig_InputEventChar_NONE;
|
||||||
const char *_originName;
|
const char *_originName;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -17,9 +17,9 @@ void UpDownInterruptImpl1::init()
|
|||||||
uint8_t pinDown = moduleConfig.canned_message.inputbroker_pin_b;
|
uint8_t pinDown = moduleConfig.canned_message.inputbroker_pin_b;
|
||||||
uint8_t pinPress = moduleConfig.canned_message.inputbroker_pin_press;
|
uint8_t pinPress = moduleConfig.canned_message.inputbroker_pin_press;
|
||||||
|
|
||||||
char eventDown = static_cast<char>(ModuleConfig_CannedMessageConfig_InputEventChar_DOWN);
|
char eventDown = static_cast<char>(meshtastic_ModuleConfig_CannedMessageConfig_InputEventChar_DOWN);
|
||||||
char eventUp = static_cast<char>(ModuleConfig_CannedMessageConfig_InputEventChar_UP);
|
char eventUp = static_cast<char>(meshtastic_ModuleConfig_CannedMessageConfig_InputEventChar_UP);
|
||||||
char eventPressed = static_cast<char>(ModuleConfig_CannedMessageConfig_InputEventChar_SELECT);
|
char eventPressed = static_cast<char>(meshtastic_ModuleConfig_CannedMessageConfig_InputEventChar_SELECT);
|
||||||
|
|
||||||
UpDownInterruptBase::init(pinDown, pinUp, pinPress, eventDown, eventUp, eventPressed, UpDownInterruptImpl1::handleIntDown,
|
UpDownInterruptBase::init(pinDown, pinUp, pinPress, eventDown, eventUp, eventPressed, UpDownInterruptImpl1::handleIntDown,
|
||||||
UpDownInterruptImpl1::handleIntUp, UpDownInterruptImpl1::handleIntPressed);
|
UpDownInterruptImpl1::handleIntUp, UpDownInterruptImpl1::handleIntPressed);
|
||||||
|
|||||||
@@ -70,35 +70,35 @@ int32_t KbI2cBase::runOnce()
|
|||||||
while (Wire.available()) {
|
while (Wire.available()) {
|
||||||
char c = Wire.read();
|
char c = Wire.read();
|
||||||
InputEvent e;
|
InputEvent e;
|
||||||
e.inputEvent = ModuleConfig_CannedMessageConfig_InputEventChar_NONE;
|
e.inputEvent = meshtastic_ModuleConfig_CannedMessageConfig_InputEventChar_NONE;
|
||||||
e.source = this->_originName;
|
e.source = this->_originName;
|
||||||
switch (c) {
|
switch (c) {
|
||||||
case 0x1b: // ESC
|
case 0x1b: // ESC
|
||||||
e.inputEvent = ModuleConfig_CannedMessageConfig_InputEventChar_CANCEL;
|
e.inputEvent = meshtastic_ModuleConfig_CannedMessageConfig_InputEventChar_CANCEL;
|
||||||
break;
|
break;
|
||||||
case 0x08: // Back
|
case 0x08: // Back
|
||||||
e.inputEvent = ModuleConfig_CannedMessageConfig_InputEventChar_BACK;
|
e.inputEvent = meshtastic_ModuleConfig_CannedMessageConfig_InputEventChar_BACK;
|
||||||
e.kbchar = c;
|
e.kbchar = c;
|
||||||
break;
|
break;
|
||||||
case 0xb5: // Up
|
case 0xb5: // Up
|
||||||
e.inputEvent = ModuleConfig_CannedMessageConfig_InputEventChar_UP;
|
e.inputEvent = meshtastic_ModuleConfig_CannedMessageConfig_InputEventChar_UP;
|
||||||
break;
|
break;
|
||||||
case 0xb6: // Down
|
case 0xb6: // Down
|
||||||
e.inputEvent = ModuleConfig_CannedMessageConfig_InputEventChar_DOWN;
|
e.inputEvent = meshtastic_ModuleConfig_CannedMessageConfig_InputEventChar_DOWN;
|
||||||
break;
|
break;
|
||||||
case 0xb4: // Left
|
case 0xb4: // Left
|
||||||
e.inputEvent = ModuleConfig_CannedMessageConfig_InputEventChar_LEFT;
|
e.inputEvent = meshtastic_ModuleConfig_CannedMessageConfig_InputEventChar_LEFT;
|
||||||
e.kbchar = c;
|
e.kbchar = c;
|
||||||
break;
|
break;
|
||||||
case 0xb7: // Right
|
case 0xb7: // Right
|
||||||
e.inputEvent = ModuleConfig_CannedMessageConfig_InputEventChar_RIGHT;
|
e.inputEvent = meshtastic_ModuleConfig_CannedMessageConfig_InputEventChar_RIGHT;
|
||||||
e.kbchar = c;
|
e.kbchar = c;
|
||||||
break;
|
break;
|
||||||
case 0x0d: // Enter
|
case 0x0d: // Enter
|
||||||
e.inputEvent = ModuleConfig_CannedMessageConfig_InputEventChar_SELECT;
|
e.inputEvent = meshtastic_ModuleConfig_CannedMessageConfig_InputEventChar_SELECT;
|
||||||
break;
|
break;
|
||||||
case 0x00: // nopress
|
case 0x00: // nopress
|
||||||
e.inputEvent = ModuleConfig_CannedMessageConfig_InputEventChar_NONE;
|
e.inputEvent = meshtastic_ModuleConfig_CannedMessageConfig_InputEventChar_NONE;
|
||||||
break;
|
break;
|
||||||
default: // all other keys
|
default: // all other keys
|
||||||
e.inputEvent = ANYKEY;
|
e.inputEvent = ANYKEY;
|
||||||
@@ -106,7 +106,7 @@ int32_t KbI2cBase::runOnce()
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (e.inputEvent != ModuleConfig_CannedMessageConfig_InputEventChar_NONE) {
|
if (e.inputEvent != meshtastic_ModuleConfig_CannedMessageConfig_InputEventChar_NONE) {
|
||||||
this->notifyObservers(&e);
|
this->notifyObservers(&e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
14
src/main.cpp
14
src/main.cpp
@@ -98,7 +98,7 @@ uint32_t serialSinceMsec;
|
|||||||
bool pmu_found;
|
bool pmu_found;
|
||||||
|
|
||||||
// Array map of sensor types (as array index) and i2c address as value we'll find in the i2c scan
|
// Array map of sensor types (as array index) and i2c address as value we'll find in the i2c scan
|
||||||
uint8_t nodeTelemetrySensorsMap[_TelemetrySensorType_MAX + 1] = {
|
uint8_t nodeTelemetrySensorsMap[_meshtastic_TelemetrySensorType_MAX + 1] = {
|
||||||
0}; // one is enough, missing elements will be initialized to 0 anyway.
|
0}; // one is enough, missing elements will be initialized to 0 anyway.
|
||||||
|
|
||||||
Router *router = NULL; // Users of router don't care what sort of subclass implements that API
|
Router *router = NULL; // Users of router don't care what sort of subclass implements that API
|
||||||
@@ -302,7 +302,7 @@ void setup()
|
|||||||
playStartMelody();
|
playStartMelody();
|
||||||
|
|
||||||
// fixed screen override?
|
// fixed screen override?
|
||||||
if (config.display.oled != Config_DisplayConfig_OledType_OLED_AUTO)
|
if (config.display.oled != meshtastic_Config_DisplayConfig_OledType_OLED_AUTO)
|
||||||
screen_model = config.display.oled;
|
screen_model = config.display.oled;
|
||||||
|
|
||||||
#if defined(USE_SH1107)
|
#if defined(USE_SH1107)
|
||||||
@@ -341,7 +341,7 @@ void setup()
|
|||||||
// Do this after service.init (because that clears error_code)
|
// Do this after service.init (because that clears error_code)
|
||||||
#ifdef HAS_PMU
|
#ifdef HAS_PMU
|
||||||
if (!pmu_found)
|
if (!pmu_found)
|
||||||
RECORD_CRITICALERROR(CriticalErrorCode_NO_AXP192); // Record a hardware fault for missing hardware
|
RECORD_CRITICALERROR(meshtastic_CriticalErrorCode_NO_AXP192); // Record a hardware fault for missing hardware
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Don't call screen setup until after nodedb is setup (because we need
|
// Don't call screen setup until after nodedb is setup (because we need
|
||||||
@@ -454,9 +454,9 @@ void setup()
|
|||||||
|
|
||||||
// check if the radio chip matches the selected region
|
// check if the radio chip matches the selected region
|
||||||
|
|
||||||
if ((config.lora.region == Config_LoRaConfig_RegionCode_LORA_24) && (!rIf->wideLora())) {
|
if ((config.lora.region == meshtastic_Config_LoRaConfig_RegionCode_LORA_24) && (!rIf->wideLora())) {
|
||||||
LOG_WARN("Radio chip does not support 2.4GHz LoRa. Reverting to unset.\n");
|
LOG_WARN("Radio chip does not support 2.4GHz LoRa. Reverting to unset.\n");
|
||||||
config.lora.region = Config_LoRaConfig_RegionCode_UNSET;
|
config.lora.region = meshtastic_Config_LoRaConfig_RegionCode_UNSET;
|
||||||
nodeDB.saveToDisk(SEGMENT_CONFIG);
|
nodeDB.saveToDisk(SEGMENT_CONFIG);
|
||||||
if (!rIf->reconfigure()) {
|
if (!rIf->reconfigure()) {
|
||||||
LOG_WARN("Reconfigure failed, rebooting\n");
|
LOG_WARN("Reconfigure failed, rebooting\n");
|
||||||
@@ -490,13 +490,13 @@ void setup()
|
|||||||
airTime = new AirTime();
|
airTime = new AirTime();
|
||||||
|
|
||||||
if (!rIf)
|
if (!rIf)
|
||||||
RECORD_CRITICALERROR(CriticalErrorCode_NO_RADIO);
|
RECORD_CRITICALERROR(meshtastic_CriticalErrorCode_NO_RADIO);
|
||||||
else {
|
else {
|
||||||
router->addInterface(rIf);
|
router->addInterface(rIf);
|
||||||
|
|
||||||
// Calculate and save the bit rate to myNodeInfo
|
// Calculate and save the bit rate to myNodeInfo
|
||||||
// TODO: This needs to be added what ever method changes the channel from the phone.
|
// TODO: This needs to be added what ever method changes the channel from the phone.
|
||||||
myNodeInfo.bitrate = (float(Constants_DATA_PAYLOAD_LEN) / (float(rIf->getPacketTime(Constants_DATA_PAYLOAD_LEN)))) * 1000;
|
myNodeInfo.bitrate = (float(meshtastic_Constants_DATA_PAYLOAD_LEN) / (float(rIf->getPacketTime(meshtastic_Constants_DATA_PAYLOAD_LEN)))) * 1000;
|
||||||
LOG_DEBUG("myNodeInfo.bitrate = %f bytes / sec\n", myNodeInfo.bitrate);
|
LOG_DEBUG("myNodeInfo.bitrate = %f bytes / sec\n", myNodeInfo.bitrate);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ extern bool isUSBPowered;
|
|||||||
extern ATECCX08A atecc;
|
extern ATECCX08A atecc;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
extern uint8_t nodeTelemetrySensorsMap[_TelemetrySensorType_MAX + 1];
|
extern uint8_t nodeTelemetrySensorsMap[_meshtastic_TelemetrySensorType_MAX + 1];
|
||||||
|
|
||||||
extern int TCPPort; // set by Portduino
|
extern int TCPPort; // set by Portduino
|
||||||
|
|
||||||
|
|||||||
@@ -45,23 +45,23 @@ int16_t Channels::generateHash(ChannelIndex channelNum)
|
|||||||
/**
|
/**
|
||||||
* Validate a channel, fixing any errors as needed
|
* Validate a channel, fixing any errors as needed
|
||||||
*/
|
*/
|
||||||
Channel &Channels::fixupChannel(ChannelIndex chIndex)
|
meshtastic_Channel &Channels::fixupChannel(ChannelIndex chIndex)
|
||||||
{
|
{
|
||||||
Channel &ch = getByIndex(chIndex);
|
meshtastic_Channel &ch = getByIndex(chIndex);
|
||||||
|
|
||||||
ch.index = chIndex; // Preinit the index so it be ready to share with the phone (we'll never change it later)
|
ch.index = chIndex; // Preinit the index so it be ready to share with the phone (we'll never change it later)
|
||||||
|
|
||||||
if (!ch.has_settings) {
|
if (!ch.has_settings) {
|
||||||
// No settings! Must disable and skip
|
// No settings! Must disable and skip
|
||||||
ch.role = Channel_Role_DISABLED;
|
ch.role = meshtastic_Channel_Role_DISABLED;
|
||||||
memset(&ch.settings, 0, sizeof(ch.settings));
|
memset(&ch.settings, 0, sizeof(ch.settings));
|
||||||
ch.has_settings = true;
|
ch.has_settings = true;
|
||||||
} else {
|
} else {
|
||||||
ChannelSettings &channelSettings = ch.settings;
|
meshtastic_ChannelSettings &meshtastic_channelSettings = ch.settings;
|
||||||
|
|
||||||
// Convert the old string "Default" to our new short representation
|
// Convert the old string "Default" to our new short representation
|
||||||
if (strcmp(channelSettings.name, "Default") == 0)
|
if (strcmp(meshtastic_channelSettings.name, "Default") == 0)
|
||||||
*channelSettings.name = '\0';
|
*meshtastic_channelSettings.name = '\0';
|
||||||
}
|
}
|
||||||
|
|
||||||
hashes[chIndex] = generateHash(chIndex);
|
hashes[chIndex] = generateHash(chIndex);
|
||||||
@@ -74,11 +74,11 @@ Channel &Channels::fixupChannel(ChannelIndex chIndex)
|
|||||||
*/
|
*/
|
||||||
void Channels::initDefaultChannel(ChannelIndex chIndex)
|
void Channels::initDefaultChannel(ChannelIndex chIndex)
|
||||||
{
|
{
|
||||||
Channel &ch = getByIndex(chIndex);
|
meshtastic_Channel &ch = getByIndex(chIndex);
|
||||||
ChannelSettings &channelSettings = ch.settings;
|
meshtastic_ChannelSettings &channelSettings = ch.settings;
|
||||||
Config_LoRaConfig &loraConfig = config.lora;
|
meshtastic_Config_LoRaConfig &loraConfig = config.lora;
|
||||||
|
|
||||||
loraConfig.modem_preset = Config_LoRaConfig_ModemPreset_LONG_FAST; // Default to Long Range & Fast
|
loraConfig.modem_preset = meshtastic_Config_LoRaConfig_ModemPreset_LONG_FAST; // Default to Long Range & Fast
|
||||||
loraConfig.use_preset = true;
|
loraConfig.use_preset = true;
|
||||||
loraConfig.tx_power = 0; // default
|
loraConfig.tx_power = 0; // default
|
||||||
uint8_t defaultpskIndex = 1;
|
uint8_t defaultpskIndex = 1;
|
||||||
@@ -87,25 +87,25 @@ void Channels::initDefaultChannel(ChannelIndex chIndex)
|
|||||||
strncpy(channelSettings.name, "", sizeof(channelSettings.name));
|
strncpy(channelSettings.name, "", sizeof(channelSettings.name));
|
||||||
|
|
||||||
ch.has_settings = true;
|
ch.has_settings = true;
|
||||||
ch.role = Channel_Role_PRIMARY;
|
ch.role = meshtastic_Channel_Role_PRIMARY;
|
||||||
}
|
}
|
||||||
|
|
||||||
CryptoKey Channels::getKey(ChannelIndex chIndex)
|
CryptoKey Channels::getKey(ChannelIndex chIndex)
|
||||||
{
|
{
|
||||||
Channel &ch = getByIndex(chIndex);
|
meshtastic_Channel &ch = getByIndex(chIndex);
|
||||||
const ChannelSettings &channelSettings = ch.settings;
|
const meshtastic_ChannelSettings &channelSettings = ch.settings;
|
||||||
assert(ch.has_settings);
|
assert(ch.has_settings);
|
||||||
|
|
||||||
CryptoKey k;
|
CryptoKey k;
|
||||||
memset(k.bytes, 0, sizeof(k.bytes)); // In case the user provided a short key, we want to pad the rest with zeros
|
memset(k.bytes, 0, sizeof(k.bytes)); // In case the user provided a short key, we want to pad the rest with zeros
|
||||||
|
|
||||||
if (ch.role == Channel_Role_DISABLED) {
|
if (ch.role == meshtastic_Channel_Role_DISABLED) {
|
||||||
k.length = -1; // invalid
|
k.length = -1; // invalid
|
||||||
} else {
|
} else {
|
||||||
memcpy(k.bytes, channelSettings.psk.bytes, channelSettings.psk.size);
|
memcpy(k.bytes, channelSettings.psk.bytes, channelSettings.psk.size);
|
||||||
k.length = channelSettings.psk.size;
|
k.length = channelSettings.psk.size;
|
||||||
if (k.length == 0) {
|
if (k.length == 0) {
|
||||||
if (ch.role == Channel_Role_SECONDARY) {
|
if (ch.role == meshtastic_Channel_Role_SECONDARY) {
|
||||||
LOG_DEBUG("Unset PSK for secondary channel %s. using primary key\n", ch.settings.name);
|
LOG_DEBUG("Unset PSK for secondary channel %s. using primary key\n", ch.settings.name);
|
||||||
k = getKey(primaryIndex);
|
k = getKey(primaryIndex);
|
||||||
} else
|
} else
|
||||||
@@ -182,24 +182,24 @@ void Channels::onConfigChanged()
|
|||||||
{
|
{
|
||||||
// Make sure the phone hasn't mucked anything up
|
// Make sure the phone hasn't mucked anything up
|
||||||
for (int i = 0; i < channelFile.channels_count; i++) {
|
for (int i = 0; i < channelFile.channels_count; i++) {
|
||||||
Channel &ch = fixupChannel(i);
|
meshtastic_Channel &ch = fixupChannel(i);
|
||||||
|
|
||||||
if (ch.role == Channel_Role_PRIMARY)
|
if (ch.role == meshtastic_Channel_Role_PRIMARY)
|
||||||
primaryIndex = i;
|
primaryIndex = i;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Channel &Channels::getByIndex(ChannelIndex chIndex)
|
meshtastic_Channel &Channels::getByIndex(ChannelIndex chIndex)
|
||||||
{
|
{
|
||||||
// remove this assert cause malformed packets can make our firmware reboot here.
|
// remove this assert cause malformed packets can make our firmware reboot here.
|
||||||
if (chIndex < channelFile.channels_count) { // This should be equal to MAX_NUM_CHANNELS
|
if (chIndex < channelFile.channels_count) { // This should be equal to MAX_NUM_CHANNELS
|
||||||
Channel *ch = channelFile.channels + chIndex;
|
meshtastic_Channel *ch = channelFile.channels + chIndex;
|
||||||
return *ch;
|
return *ch;
|
||||||
} else {
|
} else {
|
||||||
LOG_ERROR("Invalid channel index %d > %d, malformed packet received?\n", chIndex, channelFile.channels_count);
|
LOG_ERROR("Invalid channel index %d > %d, malformed packet received?\n", chIndex, channelFile.channels_count);
|
||||||
|
|
||||||
static Channel *ch = (Channel *)malloc(sizeof(Channel));
|
static meshtastic_Channel *ch = (meshtastic_Channel *)malloc(sizeof(meshtastic_Channel));
|
||||||
memset(ch, 0, sizeof(Channel));
|
memset(ch, 0, sizeof(meshtastic_Channel));
|
||||||
// ch.index -1 means we don't know the channel locally and need to look it up by settings.name
|
// ch.index -1 means we don't know the channel locally and need to look it up by settings.name
|
||||||
// not sure this is handled right everywhere
|
// not sure this is handled right everywhere
|
||||||
ch->index = -1;
|
ch->index = -1;
|
||||||
@@ -207,7 +207,7 @@ Channel &Channels::getByIndex(ChannelIndex chIndex)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Channel &Channels::getByName(const char *chName)
|
meshtastic_Channel &Channels::getByName(const char *chName)
|
||||||
{
|
{
|
||||||
for (ChannelIndex i = 0; i < getNumChannels(); i++) {
|
for (ChannelIndex i = 0; i < getNumChannels(); i++) {
|
||||||
if (strcasecmp(getGlobalId(i), chName) == 0) {
|
if (strcasecmp(getGlobalId(i), chName) == 0) {
|
||||||
@@ -218,15 +218,15 @@ Channel &Channels::getByName(const char *chName)
|
|||||||
return getByIndex(getPrimaryIndex());
|
return getByIndex(getPrimaryIndex());
|
||||||
}
|
}
|
||||||
|
|
||||||
void Channels::setChannel(const Channel &c)
|
void Channels::setChannel(const meshtastic_Channel &c)
|
||||||
{
|
{
|
||||||
Channel &old = getByIndex(c.index);
|
meshtastic_Channel &old = getByIndex(c.index);
|
||||||
|
|
||||||
// if this is the new primary, demote any existing roles
|
// if this is the new primary, demote any existing roles
|
||||||
if (c.role == Channel_Role_PRIMARY)
|
if (c.role == meshtastic_Channel_Role_PRIMARY)
|
||||||
for (int i = 0; i < getNumChannels(); i++)
|
for (int i = 0; i < getNumChannels(); i++)
|
||||||
if (channelFile.channels[i].role == Channel_Role_PRIMARY)
|
if (channelFile.channels[i].role == meshtastic_Channel_Role_PRIMARY)
|
||||||
channelFile.channels[i].role = Channel_Role_SECONDARY;
|
channelFile.channels[i].role = meshtastic_Channel_Role_SECONDARY;
|
||||||
|
|
||||||
old = c; // slam in the new settings/role
|
old = c; // slam in the new settings/role
|
||||||
}
|
}
|
||||||
@@ -234,7 +234,7 @@ void Channels::setChannel(const Channel &c)
|
|||||||
const char *Channels::getName(size_t chIndex)
|
const char *Channels::getName(size_t chIndex)
|
||||||
{
|
{
|
||||||
// Convert the short "" representation for Default into a usable string
|
// Convert the short "" representation for Default into a usable string
|
||||||
const ChannelSettings &channelSettings = getByIndex(chIndex).settings;
|
const meshtastic_ChannelSettings &channelSettings = getByIndex(chIndex).settings;
|
||||||
const char *channelName = channelSettings.name;
|
const char *channelName = channelSettings.name;
|
||||||
if (!*channelName) { // emptystring
|
if (!*channelName) { // emptystring
|
||||||
// Per mesh.proto spec, if bandwidth is specified we must ignore modemPreset enum, we assume that in that case
|
// Per mesh.proto spec, if bandwidth is specified we must ignore modemPreset enum, we assume that in that case
|
||||||
@@ -242,25 +242,25 @@ const char *Channels::getName(size_t chIndex)
|
|||||||
|
|
||||||
if (config.lora.use_preset) {
|
if (config.lora.use_preset) {
|
||||||
switch (config.lora.modem_preset) {
|
switch (config.lora.modem_preset) {
|
||||||
case Config_LoRaConfig_ModemPreset_SHORT_SLOW:
|
case meshtastic_Config_LoRaConfig_ModemPreset_SHORT_SLOW:
|
||||||
channelName = "ShortSlow";
|
channelName = "ShortSlow";
|
||||||
break;
|
break;
|
||||||
case Config_LoRaConfig_ModemPreset_SHORT_FAST:
|
case meshtastic_Config_LoRaConfig_ModemPreset_SHORT_FAST:
|
||||||
channelName = "ShortFast";
|
channelName = "ShortFast";
|
||||||
break;
|
break;
|
||||||
case Config_LoRaConfig_ModemPreset_MEDIUM_SLOW:
|
case meshtastic_Config_LoRaConfig_ModemPreset_MEDIUM_SLOW:
|
||||||
channelName = "MediumSlow";
|
channelName = "MediumSlow";
|
||||||
break;
|
break;
|
||||||
case Config_LoRaConfig_ModemPreset_MEDIUM_FAST:
|
case meshtastic_Config_LoRaConfig_ModemPreset_MEDIUM_FAST:
|
||||||
channelName = "MediumFast";
|
channelName = "MediumFast";
|
||||||
break;
|
break;
|
||||||
case Config_LoRaConfig_ModemPreset_LONG_SLOW:
|
case meshtastic_Config_LoRaConfig_ModemPreset_LONG_SLOW:
|
||||||
channelName = "LongSlow";
|
channelName = "LongSlow";
|
||||||
break;
|
break;
|
||||||
case Config_LoRaConfig_ModemPreset_LONG_FAST:
|
case meshtastic_Config_LoRaConfig_ModemPreset_LONG_FAST:
|
||||||
channelName = "LongFast";
|
channelName = "LongFast";
|
||||||
break;
|
break;
|
||||||
case Config_LoRaConfig_ModemPreset_VERY_LONG_SLOW:
|
case meshtastic_Config_LoRaConfig_ModemPreset_VERY_LONG_SLOW:
|
||||||
channelName = "VLongSlow";
|
channelName = "VLongSlow";
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
|||||||
@@ -34,18 +34,18 @@ class Channels
|
|||||||
/// Well known channel names
|
/// Well known channel names
|
||||||
static const char *adminChannel, *gpioChannel, *serialChannel;
|
static const char *adminChannel, *gpioChannel, *serialChannel;
|
||||||
|
|
||||||
const ChannelSettings &getPrimary() { return getByIndex(getPrimaryIndex()).settings; }
|
const meshtastic_ChannelSettings &getPrimary() { return getByIndex(getPrimaryIndex()).settings; }
|
||||||
|
|
||||||
/** Return the Channel for a specified index */
|
/** Return the Channel for a specified index */
|
||||||
Channel &getByIndex(ChannelIndex chIndex);
|
meshtastic_Channel &getByIndex(ChannelIndex chIndex);
|
||||||
|
|
||||||
/** Return the Channel for a specified name, return primary if not found. */
|
/** Return the Channel for a specified name, return primary if not found. */
|
||||||
Channel &getByName(const char *chName);
|
meshtastic_Channel &getByName(const char *chName);
|
||||||
|
|
||||||
/** Using the index inside the channel, update the specified channel's settings and role. If this channel is being promoted
|
/** Using the index inside the channel, update the specified channel's settings and role. If this channel is being promoted
|
||||||
* to be primary, force all other channels to be secondary.
|
* to be primary, force all other channels to be secondary.
|
||||||
*/
|
*/
|
||||||
void setChannel(const Channel &c);
|
void setChannel(const meshtastic_Channel &c);
|
||||||
|
|
||||||
/** Return a human friendly name for this channel (and expand any short strings as needed)
|
/** Return a human friendly name for this channel (and expand any short strings as needed)
|
||||||
*/
|
*/
|
||||||
@@ -124,7 +124,7 @@ class Channels
|
|||||||
/**
|
/**
|
||||||
* Validate a channel, fixing any errors as needed
|
* Validate a channel, fixing any errors as needed
|
||||||
*/
|
*/
|
||||||
Channel &fixupChannel(ChannelIndex chIndex);
|
meshtastic_Channel &fixupChannel(ChannelIndex chIndex);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Write a default channel to the specified channel index
|
* Write a default channel to the specified channel index
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ FloodingRouter::FloodingRouter() {}
|
|||||||
* later free() the packet to pool. This routine is not allowed to stall.
|
* later free() the packet to pool. This routine is not allowed to stall.
|
||||||
* If the txmit queue is full it might return an error
|
* If the txmit queue is full it might return an error
|
||||||
*/
|
*/
|
||||||
ErrorCode FloodingRouter::send(MeshPacket *p)
|
ErrorCode FloodingRouter::send(meshtastic_MeshPacket *p)
|
||||||
{
|
{
|
||||||
// Add any messages _we_ send to the seen message list (so we will ignore all retransmissions we see)
|
// Add any messages _we_ send to the seen message list (so we will ignore all retransmissions we see)
|
||||||
wasSeenRecently(p); // FIXME, move this to a sniffSent method
|
wasSeenRecently(p); // FIXME, move this to a sniffSent method
|
||||||
@@ -17,7 +17,7 @@ ErrorCode FloodingRouter::send(MeshPacket *p)
|
|||||||
return Router::send(p);
|
return Router::send(p);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool FloodingRouter::shouldFilterReceived(const MeshPacket *p)
|
bool FloodingRouter::shouldFilterReceived(const meshtastic_MeshPacket *p)
|
||||||
{
|
{
|
||||||
if (wasSeenRecently(p)) { // Note: this will also add a recent packet record
|
if (wasSeenRecently(p)) { // Note: this will also add a recent packet record
|
||||||
printPacket("Ignoring incoming msg, because we've already seen it", p);
|
printPacket("Ignoring incoming msg, because we've already seen it", p);
|
||||||
@@ -27,9 +27,9 @@ bool FloodingRouter::shouldFilterReceived(const MeshPacket *p)
|
|||||||
return Router::shouldFilterReceived(p);
|
return Router::shouldFilterReceived(p);
|
||||||
}
|
}
|
||||||
|
|
||||||
void FloodingRouter::sniffReceived(const MeshPacket *p, const Routing *c)
|
void FloodingRouter::sniffReceived(const meshtastic_MeshPacket *p, const meshtastic_Routing *c)
|
||||||
{
|
{
|
||||||
bool isAck = ((c && c->error_reason == Routing_Error_NONE)); // consider only ROUTING_APP message without error as ACK
|
bool isAck = ((c && c->error_reason == meshtastic_Routing_Error_NONE)); // consider only ROUTING_APP message without error as ACK
|
||||||
if (isAck && p->to != getNodeNum()) {
|
if (isAck && p->to != getNodeNum()) {
|
||||||
// do not flood direct message that is ACKed
|
// do not flood direct message that is ACKed
|
||||||
LOG_DEBUG("Receiving an ACK not for me, but don't need to rebroadcast this direct message anymore.\n");
|
LOG_DEBUG("Receiving an ACK not for me, but don't need to rebroadcast this direct message anymore.\n");
|
||||||
@@ -37,13 +37,13 @@ void FloodingRouter::sniffReceived(const MeshPacket *p, const Routing *c)
|
|||||||
}
|
}
|
||||||
if ((p->to != getNodeNum()) && (p->hop_limit > 0) && (getFrom(p) != getNodeNum())) {
|
if ((p->to != getNodeNum()) && (p->hop_limit > 0) && (getFrom(p) != getNodeNum())) {
|
||||||
if (p->id != 0) {
|
if (p->id != 0) {
|
||||||
if (config.device.role != Config_DeviceConfig_Role_CLIENT_MUTE) {
|
if (config.device.role != meshtastic_Config_DeviceConfig_Role_CLIENT_MUTE) {
|
||||||
MeshPacket *tosend = packetPool.allocCopy(*p); // keep a copy because we will be sending it
|
meshtastic_MeshPacket *tosend = packetPool.allocCopy(*p); // keep a copy because we will be sending it
|
||||||
|
|
||||||
tosend->hop_limit--; // bump down the hop count
|
tosend->hop_limit--; // bump down the hop count
|
||||||
|
|
||||||
// If it is a traceRoute request, update the route that it went via me
|
// If it is a traceRoute request, update the route that it went via me
|
||||||
if (p->which_payload_variant == MeshPacket_decoded_tag && traceRouteModule->wantPacket(p)) {
|
if (p->which_payload_variant == meshtastic_MeshPacket_decoded_tag && traceRouteModule->wantPacket(p)) {
|
||||||
traceRouteModule->updateRoute(tosend);
|
traceRouteModule->updateRoute(tosend);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ class FloodingRouter : public Router, protected PacketHistory
|
|||||||
* later free() the packet to pool. This routine is not allowed to stall.
|
* later free() the packet to pool. This routine is not allowed to stall.
|
||||||
* If the txmit queue is full it might return an error
|
* If the txmit queue is full it might return an error
|
||||||
*/
|
*/
|
||||||
virtual ErrorCode send(MeshPacket *p) override;
|
virtual ErrorCode send(meshtastic_MeshPacket *p) override;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
/**
|
/**
|
||||||
@@ -51,10 +51,10 @@ class FloodingRouter : public Router, protected PacketHistory
|
|||||||
* Called immedately on receiption, before any further processing.
|
* Called immedately on receiption, before any further processing.
|
||||||
* @return true to abandon the packet
|
* @return true to abandon the packet
|
||||||
*/
|
*/
|
||||||
virtual bool shouldFilterReceived(const MeshPacket *p) override;
|
virtual bool shouldFilterReceived(const meshtastic_MeshPacket *p) override;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Look for broadcasts we need to rebroadcast
|
* Look for broadcasts we need to rebroadcast
|
||||||
*/
|
*/
|
||||||
virtual void sniffReceived(const MeshPacket *p, const Routing *c) override;
|
virtual void sniffReceived(const meshtastic_MeshPacket *p, const meshtastic_Routing *c) override;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -8,13 +8,13 @@
|
|||||||
|
|
||||||
std::vector<MeshModule *> *MeshModule::modules;
|
std::vector<MeshModule *> *MeshModule::modules;
|
||||||
|
|
||||||
const MeshPacket *MeshModule::currentRequest;
|
const meshtastic_MeshPacket *MeshModule::currentRequest;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* If any of the current chain of modules has already sent a reply, it will be here. This is useful to allow
|
* If any of the current chain of modules has already sent a reply, it will be here. This is useful to allow
|
||||||
* the RoutingPlugin to avoid sending redundant acks
|
* the RoutingPlugin to avoid sending redundant acks
|
||||||
*/
|
*/
|
||||||
MeshPacket *MeshModule::currentReply;
|
meshtastic_MeshPacket *MeshModule::currentReply;
|
||||||
|
|
||||||
MeshModule::MeshModule(const char *_name) : name(_name)
|
MeshModule::MeshModule(const char *_name) : name(_name)
|
||||||
{
|
{
|
||||||
@@ -32,21 +32,21 @@ MeshModule::~MeshModule()
|
|||||||
assert(0); // FIXME - remove from list of modules once someone needs this feature
|
assert(0); // FIXME - remove from list of modules once someone needs this feature
|
||||||
}
|
}
|
||||||
|
|
||||||
MeshPacket *MeshModule::allocAckNak(Routing_Error err, NodeNum to, PacketId idFrom, ChannelIndex chIndex)
|
meshtastic_MeshPacket *MeshModule::allocAckNak(meshtastic_Routing_Error err, NodeNum to, PacketId idFrom, ChannelIndex chIndex)
|
||||||
{
|
{
|
||||||
Routing c = Routing_init_default;
|
meshtastic_Routing c = meshtastic_Routing_init_default;
|
||||||
|
|
||||||
c.error_reason = err;
|
c.error_reason = err;
|
||||||
c.which_variant = Routing_error_reason_tag;
|
c.which_variant = meshtastic_Routing_error_reason_tag;
|
||||||
|
|
||||||
// Now that we have moded sendAckNak up one level into the class heirarchy we can no longer assume we are a RoutingPlugin
|
// Now that we have moded sendAckNak up one level into the class heirarchy we can no longer assume we are a RoutingPlugin
|
||||||
// So we manually call pb_encode_to_bytes and specify routing port number
|
// So we manually call pb_encode_to_bytes and specify routing port number
|
||||||
// auto p = allocDataProtobuf(c);
|
// auto p = allocDataProtobuf(c);
|
||||||
MeshPacket *p = router->allocForSending();
|
meshtastic_MeshPacket *p = router->allocForSending();
|
||||||
p->decoded.portnum = PortNum_ROUTING_APP;
|
p->decoded.portnum = meshtastic_PortNum_ROUTING_APP;
|
||||||
p->decoded.payload.size = pb_encode_to_bytes(p->decoded.payload.bytes, sizeof(p->decoded.payload.bytes), &Routing_msg, &c);
|
p->decoded.payload.size = pb_encode_to_bytes(p->decoded.payload.bytes, sizeof(p->decoded.payload.bytes), &meshtastic_Routing_msg, &c);
|
||||||
|
|
||||||
p->priority = MeshPacket_Priority_ACK;
|
p->priority = meshtastic_MeshPacket_Priority_ACK;
|
||||||
|
|
||||||
p->hop_limit = config.lora.hop_limit; // Flood ACK back to original sender
|
p->hop_limit = config.lora.hop_limit; // Flood ACK back to original sender
|
||||||
p->to = to;
|
p->to = to;
|
||||||
@@ -57,7 +57,7 @@ MeshPacket *MeshModule::allocAckNak(Routing_Error err, NodeNum to, PacketId idFr
|
|||||||
return p;
|
return p;
|
||||||
}
|
}
|
||||||
|
|
||||||
MeshPacket *MeshModule::allocErrorResponse(Routing_Error err, const MeshPacket *p)
|
meshtastic_MeshPacket *MeshModule::allocErrorResponse(meshtastic_Routing_Error err, const meshtastic_MeshPacket *p)
|
||||||
{
|
{
|
||||||
auto r = allocAckNak(err, getFrom(p), p->id, p->channel);
|
auto r = allocAckNak(err, getFrom(p), p->id, p->channel);
|
||||||
|
|
||||||
@@ -66,13 +66,13 @@ MeshPacket *MeshModule::allocErrorResponse(Routing_Error err, const MeshPacket *
|
|||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
void MeshModule::callPlugins(const MeshPacket &mp, RxSource src)
|
void MeshModule::callPlugins(const meshtastic_MeshPacket &mp, RxSource src)
|
||||||
{
|
{
|
||||||
// LOG_DEBUG("In call modules\n");
|
// LOG_DEBUG("In call modules\n");
|
||||||
bool moduleFound = false;
|
bool moduleFound = false;
|
||||||
|
|
||||||
// We now allow **encrypted** packets to pass through the modules
|
// We now allow **encrypted** packets to pass through the modules
|
||||||
bool isDecoded = mp.which_payload_variant == MeshPacket_decoded_tag;
|
bool isDecoded = mp.which_payload_variant == meshtastic_MeshPacket_decoded_tag;
|
||||||
|
|
||||||
currentReply = NULL; // No reply yet
|
currentReply = NULL; // No reply yet
|
||||||
|
|
||||||
@@ -101,7 +101,7 @@ void MeshModule::callPlugins(const MeshPacket &mp, RxSource src)
|
|||||||
moduleFound = true;
|
moduleFound = true;
|
||||||
|
|
||||||
/// received channel (or NULL if not decoded)
|
/// received channel (or NULL if not decoded)
|
||||||
Channel *ch = isDecoded ? &channels.getByIndex(mp.channel) : NULL;
|
meshtastic_Channel *ch = isDecoded ? &channels.getByIndex(mp.channel) : NULL;
|
||||||
|
|
||||||
/// Is the channel this packet arrived on acceptable? (security check)
|
/// Is the channel this packet arrived on acceptable? (security check)
|
||||||
/// Note: we can't know channel names for encrypted packets, so those are NEVER sent to boundChannel modules
|
/// Note: we can't know channel names for encrypted packets, so those are NEVER sent to boundChannel modules
|
||||||
@@ -117,7 +117,7 @@ void MeshModule::callPlugins(const MeshPacket &mp, RxSource src)
|
|||||||
|
|
||||||
if (mp.decoded.want_response) {
|
if (mp.decoded.want_response) {
|
||||||
printPacket("packet on wrong channel, returning error", &mp);
|
printPacket("packet on wrong channel, returning error", &mp);
|
||||||
currentReply = pi.allocErrorResponse(Routing_Error_NOT_AUTHORIZED, &mp);
|
currentReply = pi.allocErrorResponse(meshtastic_Routing_Error_NOT_AUTHORIZED, &mp);
|
||||||
} else
|
} else
|
||||||
printPacket("packet on wrong channel, but can't respond", &mp);
|
printPacket("packet on wrong channel, but can't respond", &mp);
|
||||||
} else {
|
} else {
|
||||||
@@ -170,7 +170,7 @@ void MeshModule::callPlugins(const MeshPacket &mp, RxSource src)
|
|||||||
// SECURITY NOTE! I considered sending back a different error code if we didn't find the psk (i.e. !isDecoded)
|
// SECURITY NOTE! I considered sending back a different error code if we didn't find the psk (i.e. !isDecoded)
|
||||||
// but opted NOT TO. Because it is not a good idea to let remote nodes 'probe' to find out which PSKs were "good" vs
|
// but opted NOT TO. Because it is not a good idea to let remote nodes 'probe' to find out which PSKs were "good" vs
|
||||||
// bad.
|
// bad.
|
||||||
routingModule->sendAckNak(Routing_Error_NO_RESPONSE, getFrom(&mp), mp.id, mp.channel);
|
routingModule->sendAckNak(meshtastic_Routing_Error_NO_RESPONSE, getFrom(&mp), mp.id, mp.channel);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -179,7 +179,7 @@ void MeshModule::callPlugins(const MeshPacket &mp, RxSource src)
|
|||||||
(src == RX_SRC_LOCAL) ? "LOCAL" : "REMOTE");
|
(src == RX_SRC_LOCAL) ? "LOCAL" : "REMOTE");
|
||||||
}
|
}
|
||||||
|
|
||||||
MeshPacket *MeshModule::allocReply()
|
meshtastic_MeshPacket *MeshModule::allocReply()
|
||||||
{
|
{
|
||||||
auto r = myReply;
|
auto r = myReply;
|
||||||
myReply = NULL; // Only use each reply once
|
myReply = NULL; // Only use each reply once
|
||||||
@@ -190,7 +190,7 @@ MeshPacket *MeshModule::allocReply()
|
|||||||
* so that subclasses can (optionally) send a response back to the original sender. Implementing this method
|
* so that subclasses can (optionally) send a response back to the original sender. Implementing this method
|
||||||
* is optional
|
* is optional
|
||||||
*/
|
*/
|
||||||
void MeshModule::sendResponse(const MeshPacket &req)
|
void MeshModule::sendResponse(const meshtastic_MeshPacket &req)
|
||||||
{
|
{
|
||||||
auto r = allocReply();
|
auto r = allocReply();
|
||||||
if (r) {
|
if (r) {
|
||||||
@@ -205,16 +205,16 @@ void MeshModule::sendResponse(const MeshPacket &req)
|
|||||||
/** set the destination and packet parameters of packet p intended as a reply to a particular "to" packet
|
/** set the destination and packet parameters of packet p intended as a reply to a particular "to" packet
|
||||||
* This ensures that if the request packet was sent reliably, the reply is sent that way as well.
|
* This ensures that if the request packet was sent reliably, the reply is sent that way as well.
|
||||||
*/
|
*/
|
||||||
void setReplyTo(MeshPacket *p, const MeshPacket &to)
|
void setReplyTo(meshtastic_MeshPacket *p, const meshtastic_MeshPacket &to)
|
||||||
{
|
{
|
||||||
assert(p->which_payload_variant == MeshPacket_decoded_tag); // Should already be set by now
|
assert(p->which_payload_variant == meshtastic_MeshPacket_decoded_tag); // Should already be set by now
|
||||||
p->to = getFrom(&to); // Make sure that if we are sending to the local node, we use our local node addr, not 0
|
p->to = getFrom(&to); // Make sure that if we are sending to the local node, we use our local node addr, not 0
|
||||||
p->channel = to.channel; // Use the same channel that the request came in on
|
p->channel = to.channel; // Use the same channel that the request came in on
|
||||||
|
|
||||||
// No need for an ack if we are just delivering locally (it just generates an ignored ack)
|
// No need for an ack if we are just delivering locally (it just generates an ignored ack)
|
||||||
p->want_ack = (to.from != 0) ? to.want_ack : false;
|
p->want_ack = (to.from != 0) ? to.want_ack : false;
|
||||||
if (p->priority == MeshPacket_Priority_UNSET)
|
if (p->priority == meshtastic_MeshPacket_Priority_UNSET)
|
||||||
p->priority = MeshPacket_Priority_RELIABLE;
|
p->priority = meshtastic_MeshPacket_Priority_RELIABLE;
|
||||||
p->decoded.request_id = to.id;
|
p->decoded.request_id = to.id;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -248,8 +248,8 @@ void MeshModule::observeUIEvents(Observer<const UIFrameEvent *> *observer)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
AdminMessageHandleResult MeshModule::handleAdminMessageForAllPlugins(const MeshPacket &mp, AdminMessage *request,
|
AdminMessageHandleResult MeshModule::handleAdminMessageForAllPlugins(const meshtastic_MeshPacket &mp, meshtastic_AdminMessage *request,
|
||||||
AdminMessage *response)
|
meshtastic_AdminMessage *response)
|
||||||
{
|
{
|
||||||
AdminMessageHandleResult handled = AdminMessageHandleResult::NOT_HANDLED;
|
AdminMessageHandleResult handled = AdminMessageHandleResult::NOT_HANDLED;
|
||||||
if (modules) {
|
if (modules) {
|
||||||
|
|||||||
@@ -64,12 +64,12 @@ class MeshModule
|
|||||||
|
|
||||||
/** For use only by MeshService
|
/** For use only by MeshService
|
||||||
*/
|
*/
|
||||||
static void callPlugins(const MeshPacket &mp, RxSource src = RX_SRC_RADIO);
|
static void callPlugins(const meshtastic_MeshPacket &mp, RxSource src = RX_SRC_RADIO);
|
||||||
|
|
||||||
static std::vector<MeshModule *> GetMeshModulesWithUIFrames();
|
static std::vector<MeshModule *> GetMeshModulesWithUIFrames();
|
||||||
static void observeUIEvents(Observer<const UIFrameEvent *> *observer);
|
static void observeUIEvents(Observer<const UIFrameEvent *> *observer);
|
||||||
static AdminMessageHandleResult handleAdminMessageForAllPlugins(const MeshPacket &mp, AdminMessage *request,
|
static AdminMessageHandleResult handleAdminMessageForAllPlugins(const meshtastic_MeshPacket &mp, meshtastic_AdminMessage *request,
|
||||||
AdminMessage *response);
|
meshtastic_AdminMessage *response);
|
||||||
#if HAS_SCREEN
|
#if HAS_SCREEN
|
||||||
virtual void drawFrame(OLEDDisplay *display, OLEDDisplayUiState *state, int16_t x, int16_t y)
|
virtual void drawFrame(OLEDDisplay *display, OLEDDisplayUiState *state, int16_t x, int16_t y)
|
||||||
{
|
{
|
||||||
@@ -108,12 +108,12 @@ class MeshModule
|
|||||||
* Note: this can be static because we are guaranteed to be processing only one
|
* Note: this can be static because we are guaranteed to be processing only one
|
||||||
* plumodulegin at a time.
|
* plumodulegin at a time.
|
||||||
*/
|
*/
|
||||||
static const MeshPacket *currentRequest;
|
static const meshtastic_MeshPacket *currentRequest;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* If your handler wants to send a response, simply set currentReply and it will be sent at the end of response handling.
|
* If your handler wants to send a response, simply set currentReply and it will be sent at the end of response handling.
|
||||||
*/
|
*/
|
||||||
MeshPacket *myReply = NULL;
|
meshtastic_MeshPacket *myReply = NULL;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Initialize your module. This setup function is called once after all hardware and mesh protocol layers have
|
* Initialize your module. This setup function is called once after all hardware and mesh protocol layers have
|
||||||
@@ -124,14 +124,14 @@ class MeshModule
|
|||||||
/**
|
/**
|
||||||
* @return true if you want to receive the specified portnum
|
* @return true if you want to receive the specified portnum
|
||||||
*/
|
*/
|
||||||
virtual bool wantPacket(const MeshPacket *p) = 0;
|
virtual bool wantPacket(const meshtastic_MeshPacket *p) = 0;
|
||||||
|
|
||||||
/** Called to handle a particular incoming message
|
/** Called to handle a particular incoming message
|
||||||
|
|
||||||
@return ProcessMessage::STOP if you've guaranteed you've handled this message and no other handlers should be considered for
|
@return ProcessMessage::STOP if you've guaranteed you've handled this message and no other handlers should be considered for
|
||||||
it
|
it
|
||||||
*/
|
*/
|
||||||
virtual ProcessMessage handleReceived(const MeshPacket &mp)
|
virtual ProcessMessage handleReceived(const meshtastic_MeshPacket &mp)
|
||||||
{
|
{
|
||||||
return ProcessMessage::CONTINUE;
|
return ProcessMessage::CONTINUE;
|
||||||
}
|
}
|
||||||
@@ -142,7 +142,7 @@ class MeshModule
|
|||||||
* Note: most implementers don't need to override this, instead: If while handling a request you have a reply, just set
|
* Note: most implementers don't need to override this, instead: If while handling a request you have a reply, just set
|
||||||
* the protected reply field in this instance.
|
* the protected reply field in this instance.
|
||||||
* */
|
* */
|
||||||
virtual MeshPacket *allocReply();
|
virtual meshtastic_MeshPacket *allocReply();
|
||||||
|
|
||||||
/***
|
/***
|
||||||
* @return true if you want to be alloced a UI screen frame
|
* @return true if you want to be alloced a UI screen frame
|
||||||
@@ -156,10 +156,10 @@ class MeshModule
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
MeshPacket *allocAckNak(Routing_Error err, NodeNum to, PacketId idFrom, ChannelIndex chIndex);
|
meshtastic_MeshPacket *allocAckNak(meshtastic_Routing_Error err, NodeNum to, PacketId idFrom, ChannelIndex chIndex);
|
||||||
|
|
||||||
/// Send an error response for the specified packet.
|
/// Send an error response for the specified packet.
|
||||||
MeshPacket *allocErrorResponse(Routing_Error err, const MeshPacket *p);
|
meshtastic_MeshPacket *allocErrorResponse(meshtastic_Routing_Error err, const meshtastic_MeshPacket *p);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief An admin message arrived to AdminModule. Module was asked whether it want to handle the request.
|
* @brief An admin message arrived to AdminModule. Module was asked whether it want to handle the request.
|
||||||
@@ -171,8 +171,8 @@ class MeshModule
|
|||||||
* HANDLED if message was handled
|
* HANDLED if message was handled
|
||||||
* HANDLED_WITH_RESPONSE if a response is also prepared and to be sent.
|
* HANDLED_WITH_RESPONSE if a response is also prepared and to be sent.
|
||||||
*/
|
*/
|
||||||
virtual AdminMessageHandleResult handleAdminMessageForModule(const MeshPacket &mp, AdminMessage *request,
|
virtual AdminMessageHandleResult handleAdminMessageForModule(const meshtastic_MeshPacket &mp, meshtastic_AdminMessage *request,
|
||||||
AdminMessage *response)
|
meshtastic_AdminMessage *response)
|
||||||
{
|
{
|
||||||
return AdminMessageHandleResult::NOT_HANDLED;
|
return AdminMessageHandleResult::NOT_HANDLED;
|
||||||
};
|
};
|
||||||
@@ -182,7 +182,7 @@ class MeshModule
|
|||||||
* If any of the current chain of modules has already sent a reply, it will be here. This is useful to allow
|
* If any of the current chain of modules has already sent a reply, it will be here. This is useful to allow
|
||||||
* the RoutingModule to avoid sending redundant acks
|
* the RoutingModule to avoid sending redundant acks
|
||||||
*/
|
*/
|
||||||
static MeshPacket *currentReply;
|
static meshtastic_MeshPacket *currentReply;
|
||||||
|
|
||||||
friend class ReliableRouter;
|
friend class ReliableRouter;
|
||||||
|
|
||||||
@@ -190,10 +190,10 @@ class MeshModule
|
|||||||
* so that subclasses can (optionally) send a response back to the original sender. This method calls allocReply()
|
* so that subclasses can (optionally) send a response back to the original sender. This method calls allocReply()
|
||||||
* to generate the reply message, and if !NULL that message will be delivered to whoever sent req
|
* to generate the reply message, and if !NULL that message will be delivered to whoever sent req
|
||||||
*/
|
*/
|
||||||
void sendResponse(const MeshPacket &req);
|
void sendResponse(const meshtastic_MeshPacket &req);
|
||||||
};
|
};
|
||||||
|
|
||||||
/** set the destination and packet parameters of packet p intended as a reply to a particular "to" packet
|
/** set the destination and packet parameters of packet p intended as a reply to a particular "to" packet
|
||||||
* This ensures that if the request packet was sent reliably, the reply is sent that way as well.
|
* This ensures that if the request packet was sent reliably, the reply is sent that way as well.
|
||||||
*/
|
*/
|
||||||
void setReplyTo(MeshPacket *p, const MeshPacket &to);
|
void setReplyTo(meshtastic_MeshPacket *p, const meshtastic_MeshPacket &to);
|
||||||
|
|||||||
@@ -5,14 +5,14 @@
|
|||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
|
|
||||||
/// @return the priority of the specified packet
|
/// @return the priority of the specified packet
|
||||||
inline uint32_t getPriority(const MeshPacket *p)
|
inline uint32_t getPriority(const meshtastic_MeshPacket *p)
|
||||||
{
|
{
|
||||||
auto pri = p->priority;
|
auto pri = p->priority;
|
||||||
return pri;
|
return pri;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// @return "true" if "p1" is ordered before "p2"
|
/// @return "true" if "p1" is ordered before "p2"
|
||||||
bool CompareMeshPacketFunc(const MeshPacket *p1, const MeshPacket *p2)
|
bool CompareMeshPacketFunc(const meshtastic_MeshPacket *p1, const meshtastic_MeshPacket *p2)
|
||||||
{
|
{
|
||||||
assert(p1 && p2);
|
assert(p1 && p2);
|
||||||
auto p1p = getPriority(p1), p2p = getPriority(p2);
|
auto p1p = getPriority(p1), p2p = getPriority(p2);
|
||||||
@@ -34,21 +34,21 @@ bool MeshPacketQueue::empty()
|
|||||||
/**
|
/**
|
||||||
* Some clients might not properly set priority, therefore we fix it here.
|
* Some clients might not properly set priority, therefore we fix it here.
|
||||||
*/
|
*/
|
||||||
void fixPriority(MeshPacket *p)
|
void fixPriority(meshtastic_MeshPacket *p)
|
||||||
{
|
{
|
||||||
// We might receive acks from other nodes (and since generated remotely, they won't have priority assigned. Check for that
|
// We might receive acks from other nodes (and since generated remotely, they won't have priority assigned. Check for that
|
||||||
// and fix it
|
// and fix it
|
||||||
if (p->priority == MeshPacket_Priority_UNSET) {
|
if (p->priority == meshtastic_MeshPacket_Priority_UNSET) {
|
||||||
// if acks give high priority
|
// if acks give high priority
|
||||||
// if a reliable message give a bit higher default priority
|
// if a reliable message give a bit higher default priority
|
||||||
p->priority = (p->decoded.portnum == PortNum_ROUTING_APP)
|
p->priority = (p->decoded.portnum == meshtastic_PortNum_ROUTING_APP)
|
||||||
? MeshPacket_Priority_ACK
|
? meshtastic_MeshPacket_Priority_ACK
|
||||||
: (p->want_ack ? MeshPacket_Priority_RELIABLE : MeshPacket_Priority_DEFAULT);
|
: (p->want_ack ? meshtastic_MeshPacket_Priority_RELIABLE : meshtastic_MeshPacket_Priority_DEFAULT);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/** enqueue a packet, return false if full */
|
/** enqueue a packet, return false if full */
|
||||||
bool MeshPacketQueue::enqueue(MeshPacket *p)
|
bool MeshPacketQueue::enqueue(meshtastic_MeshPacket *p)
|
||||||
{
|
{
|
||||||
fixPriority(p);
|
fixPriority(p);
|
||||||
|
|
||||||
@@ -62,7 +62,7 @@ bool MeshPacketQueue::enqueue(MeshPacket *p)
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
MeshPacket *MeshPacketQueue::dequeue()
|
meshtastic_MeshPacket *MeshPacketQueue::dequeue()
|
||||||
{
|
{
|
||||||
if (empty()) {
|
if (empty()) {
|
||||||
return NULL;
|
return NULL;
|
||||||
@@ -75,7 +75,7 @@ MeshPacket *MeshPacketQueue::dequeue()
|
|||||||
return p;
|
return p;
|
||||||
}
|
}
|
||||||
|
|
||||||
MeshPacket *MeshPacketQueue::getFront()
|
meshtastic_MeshPacket *MeshPacketQueue::getFront()
|
||||||
{
|
{
|
||||||
if (empty()) {
|
if (empty()) {
|
||||||
return NULL;
|
return NULL;
|
||||||
@@ -86,7 +86,7 @@ MeshPacket *MeshPacketQueue::getFront()
|
|||||||
}
|
}
|
||||||
|
|
||||||
/** Attempt to find and remove a packet from this queue. Returns a pointer to the removed packet, or NULL if not found */
|
/** Attempt to find and remove a packet from this queue. Returns a pointer to the removed packet, or NULL if not found */
|
||||||
MeshPacket *MeshPacketQueue::remove(NodeNum from, PacketId id)
|
meshtastic_MeshPacket *MeshPacketQueue::remove(NodeNum from, PacketId id)
|
||||||
{
|
{
|
||||||
for (auto it = queue.begin(); it != queue.end(); it++) {
|
for (auto it = queue.begin(); it != queue.end(); it++) {
|
||||||
auto p = (*it);
|
auto p = (*it);
|
||||||
@@ -101,7 +101,7 @@ MeshPacket *MeshPacketQueue::remove(NodeNum from, PacketId id)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/** Attempt to find and remove a packet from this queue. Returns the packet which was removed from the queue */
|
/** Attempt to find and remove a packet from this queue. Returns the packet which was removed from the queue */
|
||||||
bool MeshPacketQueue::replaceLowerPriorityPacket(MeshPacket *p)
|
bool MeshPacketQueue::replaceLowerPriorityPacket(meshtastic_MeshPacket *p)
|
||||||
{
|
{
|
||||||
std::sort_heap(queue.begin(), queue.end(), &CompareMeshPacketFunc); // sort ascending based on priority (0 -> 127)
|
std::sort_heap(queue.begin(), queue.end(), &CompareMeshPacketFunc); // sort ascending based on priority (0 -> 127)
|
||||||
|
|
||||||
|
|||||||
@@ -10,17 +10,17 @@
|
|||||||
class MeshPacketQueue
|
class MeshPacketQueue
|
||||||
{
|
{
|
||||||
size_t maxLen;
|
size_t maxLen;
|
||||||
std::vector<MeshPacket *> queue;
|
std::vector<meshtastic_MeshPacket *> queue;
|
||||||
|
|
||||||
/** Replace a lower priority package in the queue with 'mp' (provided there are lower pri packages). Return true if replaced.
|
/** Replace a lower priority package in the queue with 'mp' (provided there are lower pri packages). Return true if replaced.
|
||||||
*/
|
*/
|
||||||
bool replaceLowerPriorityPacket(MeshPacket *mp);
|
bool replaceLowerPriorityPacket(meshtastic_MeshPacket *mp);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
explicit MeshPacketQueue(size_t _maxLen);
|
explicit MeshPacketQueue(size_t _maxLen);
|
||||||
|
|
||||||
/** enqueue a packet, return false if full */
|
/** enqueue a packet, return false if full */
|
||||||
bool enqueue(MeshPacket *p);
|
bool enqueue(meshtastic_MeshPacket *p);
|
||||||
|
|
||||||
/** return true if the queue is empty */
|
/** return true if the queue is empty */
|
||||||
bool empty();
|
bool empty();
|
||||||
@@ -31,10 +31,10 @@ class MeshPacketQueue
|
|||||||
/** return total size of the Queue */
|
/** return total size of the Queue */
|
||||||
size_t getMaxLen() { return maxLen; }
|
size_t getMaxLen() { return maxLen; }
|
||||||
|
|
||||||
MeshPacket *dequeue();
|
meshtastic_MeshPacket *dequeue();
|
||||||
|
|
||||||
MeshPacket *getFront();
|
meshtastic_MeshPacket *getFront();
|
||||||
|
|
||||||
/** Attempt to find and remove a packet from this queue. Returns the packet which was removed from the queue */
|
/** Attempt to find and remove a packet from this queue. Returns the packet which was removed from the queue */
|
||||||
MeshPacket *remove(NodeNum from, PacketId id);
|
meshtastic_MeshPacket *remove(NodeNum from, PacketId id);
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
|
|
||||||
// Map from old region names to new region enums
|
// Map from old region names to new region enums
|
||||||
struct RegionInfo {
|
struct RegionInfo {
|
||||||
Config_LoRaConfig_RegionCode code;
|
meshtastic_Config_LoRaConfig_RegionCode code;
|
||||||
float freqStart;
|
float freqStart;
|
||||||
float freqEnd;
|
float freqEnd;
|
||||||
float dutyCycle;
|
float dutyCycle;
|
||||||
|
|||||||
@@ -51,9 +51,9 @@ FIXME in the initial proof of concept we just skip the entire want/deny flow and
|
|||||||
|
|
||||||
MeshService service;
|
MeshService service;
|
||||||
|
|
||||||
static MemoryDynamic<QueueStatus> staticQueueStatusPool;
|
static MemoryDynamic<meshtastic_QueueStatus> staticQueueStatusPool;
|
||||||
|
|
||||||
Allocator<QueueStatus> &queueStatusPool = staticQueueStatusPool;
|
Allocator<meshtastic_QueueStatus> &queueStatusPool = staticQueueStatusPool;
|
||||||
|
|
||||||
#include "Router.h"
|
#include "Router.h"
|
||||||
|
|
||||||
@@ -71,14 +71,14 @@ void MeshService::init()
|
|||||||
gpsObserver.observe(&gps->newStatus);
|
gpsObserver.observe(&gps->newStatus);
|
||||||
}
|
}
|
||||||
|
|
||||||
int MeshService::handleFromRadio(const MeshPacket *mp)
|
int MeshService::handleFromRadio(const meshtastic_MeshPacket *mp)
|
||||||
{
|
{
|
||||||
powerFSM.trigger(EVENT_PACKET_FOR_PHONE); // Possibly keep the node from sleeping
|
powerFSM.trigger(EVENT_PACKET_FOR_PHONE); // Possibly keep the node from sleeping
|
||||||
|
|
||||||
printPacket("Forwarding to phone", mp);
|
printPacket("Forwarding to phone", mp);
|
||||||
nodeDB.updateFrom(*mp); // update our DB state based off sniffing every RX packet from the radio
|
nodeDB.updateFrom(*mp); // update our DB state based off sniffing every RX packet from the radio
|
||||||
|
|
||||||
sendToPhone((MeshPacket *)mp);
|
sendToPhone((meshtastic_MeshPacket *)mp);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@@ -87,7 +87,7 @@ int MeshService::handleFromRadio(const MeshPacket *mp)
|
|||||||
void MeshService::loop()
|
void MeshService::loop()
|
||||||
{
|
{
|
||||||
if (lastQueueStatus.free == 0) { // check if there is now free space in TX queue
|
if (lastQueueStatus.free == 0) { // check if there is now free space in TX queue
|
||||||
QueueStatus qs = router->getQueueStatus();
|
meshtastic_QueueStatus qs = router->getQueueStatus();
|
||||||
if (qs.free != lastQueueStatus.free)
|
if (qs.free != lastQueueStatus.free)
|
||||||
(void)sendQueueStatusToPhone(qs, 0, 0);
|
(void)sendQueueStatusToPhone(qs, 0, 0);
|
||||||
}
|
}
|
||||||
@@ -130,7 +130,7 @@ void MeshService::reloadOwner(bool shouldSave)
|
|||||||
* Called by PhoneAPI.handleToRadio. Note: p is a scratch buffer, this function is allowed to write to it but it can not keep a
|
* Called by PhoneAPI.handleToRadio. Note: p is a scratch buffer, this function is allowed to write to it but it can not keep a
|
||||||
* reference
|
* reference
|
||||||
*/
|
*/
|
||||||
void MeshService::handleToRadio(MeshPacket &p)
|
void MeshService::handleToRadio(meshtastic_MeshPacket &p)
|
||||||
{
|
{
|
||||||
#ifdef ARCH_PORTDUINO
|
#ifdef ARCH_PORTDUINO
|
||||||
// Simulates device is receiving a packet via the LoRa chip
|
// Simulates device is receiving a packet via the LoRa chip
|
||||||
@@ -188,16 +188,16 @@ bool MeshService::cancelSending(PacketId id)
|
|||||||
return router->cancelSending(nodeDB.getNodeNum(), id);
|
return router->cancelSending(nodeDB.getNodeNum(), id);
|
||||||
}
|
}
|
||||||
|
|
||||||
ErrorCode MeshService::sendQueueStatusToPhone(const QueueStatus &qs, ErrorCode res, uint32_t mesh_packet_id)
|
ErrorCode MeshService::sendQueueStatusToPhone(const meshtastic_QueueStatus &qs, ErrorCode res, uint32_t mesh_packet_id)
|
||||||
{
|
{
|
||||||
QueueStatus *copied = queueStatusPool.allocCopy(qs);
|
meshtastic_QueueStatus *copied = queueStatusPool.allocCopy(qs);
|
||||||
|
|
||||||
copied->res = res;
|
copied->res = res;
|
||||||
copied->mesh_packet_id = mesh_packet_id;
|
copied->mesh_packet_id = mesh_packet_id;
|
||||||
|
|
||||||
if (toPhoneQueueStatusQueue.numFree() == 0) {
|
if (toPhoneQueueStatusQueue.numFree() == 0) {
|
||||||
LOG_DEBUG("NOTE: tophone queue status queue is full, discarding oldest\n");
|
LOG_DEBUG("NOTE: tophone queue status queue is full, discarding oldest\n");
|
||||||
QueueStatus *d = toPhoneQueueStatusQueue.dequeuePtr(0);
|
meshtastic_QueueStatus *d = toPhoneQueueStatusQueue.dequeuePtr(0);
|
||||||
if (d)
|
if (d)
|
||||||
releaseQueueStatusToPool(d);
|
releaseQueueStatusToPool(d);
|
||||||
}
|
}
|
||||||
@@ -210,7 +210,7 @@ ErrorCode MeshService::sendQueueStatusToPhone(const QueueStatus &qs, ErrorCode r
|
|||||||
return res ? ERRNO_OK : ERRNO_UNKNOWN;
|
return res ? ERRNO_OK : ERRNO_UNKNOWN;
|
||||||
}
|
}
|
||||||
|
|
||||||
void MeshService::sendToMesh(MeshPacket *p, RxSource src, bool ccToPhone)
|
void MeshService::sendToMesh(meshtastic_MeshPacket *p, RxSource src, bool ccToPhone)
|
||||||
{
|
{
|
||||||
uint32_t mesh_packet_id = p->id;
|
uint32_t mesh_packet_id = p->id;
|
||||||
nodeDB.updateFrom(*p); // update our local DB for this packet (because phone might have sent position packets etc...)
|
nodeDB.updateFrom(*p); // update our local DB for this packet (because phone might have sent position packets etc...)
|
||||||
@@ -220,7 +220,7 @@ void MeshService::sendToMesh(MeshPacket *p, RxSource src, bool ccToPhone)
|
|||||||
|
|
||||||
/* NOTE(pboldin): Prepare and send QueueStatus message to the phone as a
|
/* NOTE(pboldin): Prepare and send QueueStatus message to the phone as a
|
||||||
* high-priority message. */
|
* high-priority message. */
|
||||||
QueueStatus qs = router->getQueueStatus();
|
meshtastic_QueueStatus qs = router->getQueueStatus();
|
||||||
ErrorCode r = sendQueueStatusToPhone(qs, res, mesh_packet_id);
|
ErrorCode r = sendQueueStatusToPhone(qs, res, mesh_packet_id);
|
||||||
if (r != ERRNO_OK) {
|
if (r != ERRNO_OK) {
|
||||||
LOG_DEBUG("Can't send status to phone");
|
LOG_DEBUG("Can't send status to phone");
|
||||||
@@ -233,7 +233,7 @@ void MeshService::sendToMesh(MeshPacket *p, RxSource src, bool ccToPhone)
|
|||||||
|
|
||||||
void MeshService::sendNetworkPing(NodeNum dest, bool wantReplies)
|
void MeshService::sendNetworkPing(NodeNum dest, bool wantReplies)
|
||||||
{
|
{
|
||||||
NodeInfo *node = nodeDB.getNode(nodeDB.getNodeNum());
|
meshtastic_NodeInfo *node = nodeDB.getNode(nodeDB.getNodeNum());
|
||||||
assert(node);
|
assert(node);
|
||||||
|
|
||||||
if (node->has_position && (node->position.latitude_i != 0 || node->position.longitude_i != 0)) {
|
if (node->has_position && (node->position.latitude_i != 0 || node->position.longitude_i != 0)) {
|
||||||
@@ -249,24 +249,24 @@ void MeshService::sendNetworkPing(NodeNum dest, bool wantReplies)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void MeshService::sendToPhone(MeshPacket *p)
|
void MeshService::sendToPhone(meshtastic_MeshPacket *p)
|
||||||
{
|
{
|
||||||
if (toPhoneQueue.numFree() == 0) {
|
if (toPhoneQueue.numFree() == 0) {
|
||||||
LOG_WARN("ToPhone queue is full, discarding oldest\n");
|
LOG_WARN("ToPhone queue is full, discarding oldest\n");
|
||||||
MeshPacket *d = toPhoneQueue.dequeuePtr(0);
|
meshtastic_MeshPacket *d = toPhoneQueue.dequeuePtr(0);
|
||||||
if (d)
|
if (d)
|
||||||
releaseToPool(d);
|
releaseToPool(d);
|
||||||
}
|
}
|
||||||
|
|
||||||
MeshPacket *copied = packetPool.allocCopy(*p);
|
meshtastic_MeshPacket *copied = packetPool.allocCopy(*p);
|
||||||
perhapsDecode(copied);
|
perhapsDecode(copied);
|
||||||
assert(toPhoneQueue.enqueue(copied, 0));
|
assert(toPhoneQueue.enqueue(copied, 0));
|
||||||
fromNum++;
|
fromNum++;
|
||||||
}
|
}
|
||||||
|
|
||||||
NodeInfo *MeshService::refreshMyNodeInfo()
|
meshtastic_NodeInfo *MeshService::refreshMyNodeInfo()
|
||||||
{
|
{
|
||||||
NodeInfo *node = nodeDB.getNode(nodeDB.getNodeNum());
|
meshtastic_NodeInfo *node = nodeDB.getNode(nodeDB.getNodeNum());
|
||||||
assert(node);
|
assert(node);
|
||||||
|
|
||||||
// We might not have a position yet for our local node, in that case, at least try to send the time
|
// We might not have a position yet for our local node, in that case, at least try to send the time
|
||||||
@@ -275,7 +275,7 @@ NodeInfo *MeshService::refreshMyNodeInfo()
|
|||||||
node->has_position = true;
|
node->has_position = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
Position &position = node->position;
|
meshtastic_Position &position = node->position;
|
||||||
|
|
||||||
// Update our local node info with our time (even if we don't decide to update anyone else)
|
// Update our local node info with our time (even if we don't decide to update anyone else)
|
||||||
node->last_heard =
|
node->last_heard =
|
||||||
@@ -291,8 +291,8 @@ NodeInfo *MeshService::refreshMyNodeInfo()
|
|||||||
int MeshService::onGPSChanged(const meshtastic::GPSStatus *newStatus)
|
int MeshService::onGPSChanged(const meshtastic::GPSStatus *newStatus)
|
||||||
{
|
{
|
||||||
// Update our local node info with our position (even if we don't decide to update anyone else)
|
// Update our local node info with our position (even if we don't decide to update anyone else)
|
||||||
NodeInfo *node = refreshMyNodeInfo();
|
meshtastic_NodeInfo *node = refreshMyNodeInfo();
|
||||||
Position pos = Position_init_default;
|
meshtastic_Position pos = meshtastic_Position_init_default;
|
||||||
|
|
||||||
if (newStatus->getHasLock()) {
|
if (newStatus->getHasLock()) {
|
||||||
// load data from GPS object, will add timestamp + battery further down
|
// load data from GPS object, will add timestamp + battery further down
|
||||||
|
|||||||
@@ -14,7 +14,7 @@
|
|||||||
#include "../platform/portduino/SimRadio.h"
|
#include "../platform/portduino/SimRadio.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
extern Allocator<QueueStatus> &queueStatusPool;
|
extern Allocator<meshtastic_QueueStatus> &queueStatusPool;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Top level app for this service. keeps the mesh, the radio config and the queue of received packets.
|
* Top level app for this service. keeps the mesh, the radio config and the queue of received packets.
|
||||||
@@ -29,13 +29,13 @@ class MeshService
|
|||||||
/// FIXME, change to a DropOldestQueue and keep a count of the number of dropped packets to ensure
|
/// FIXME, change to a DropOldestQueue and keep a count of the number of dropped packets to ensure
|
||||||
/// we never hang because android hasn't been there in a while
|
/// we never hang because android hasn't been there in a while
|
||||||
/// FIXME - save this to flash on deep sleep
|
/// FIXME - save this to flash on deep sleep
|
||||||
PointerQueue<MeshPacket> toPhoneQueue;
|
PointerQueue<meshtastic_MeshPacket> toPhoneQueue;
|
||||||
|
|
||||||
// keep list of QueueStatus packets to be send to the phone
|
// keep list of QueueStatus packets to be send to the phone
|
||||||
PointerQueue<QueueStatus> toPhoneQueueStatusQueue;
|
PointerQueue<meshtastic_QueueStatus> toPhoneQueueStatusQueue;
|
||||||
|
|
||||||
// This holds the last QueueStatus send
|
// This holds the last QueueStatus send
|
||||||
QueueStatus lastQueueStatus;
|
meshtastic_QueueStatus lastQueueStatus;
|
||||||
|
|
||||||
/// The current nonce for the newest packet which has been queued for the phone
|
/// The current nonce for the newest packet which has been queued for the phone
|
||||||
uint32_t fromNum = 0;
|
uint32_t fromNum = 0;
|
||||||
@@ -59,23 +59,23 @@ class MeshService
|
|||||||
|
|
||||||
/// Return the next packet destined to the phone. FIXME, somehow use fromNum to allow the phone to retry the
|
/// Return the next packet destined to the phone. FIXME, somehow use fromNum to allow the phone to retry the
|
||||||
/// last few packets if needs to.
|
/// last few packets if needs to.
|
||||||
MeshPacket *getForPhone() { return toPhoneQueue.dequeuePtr(0); }
|
meshtastic_MeshPacket *getForPhone() { return toPhoneQueue.dequeuePtr(0); }
|
||||||
|
|
||||||
/// Allows the bluetooth handler to free packets after they have been sent
|
/// Allows the bluetooth handler to free packets after they have been sent
|
||||||
void releaseToPool(MeshPacket *p) { packetPool.release(p); }
|
void releaseToPool(meshtastic_MeshPacket *p) { packetPool.release(p); }
|
||||||
|
|
||||||
/// Return the next QueueStatus packet destined to the phone.
|
/// Return the next QueueStatus packet destined to the phone.
|
||||||
QueueStatus *getQueueStatusForPhone() { return toPhoneQueueStatusQueue.dequeuePtr(0); }
|
meshtastic_QueueStatus *getQueueStatusForPhone() { return toPhoneQueueStatusQueue.dequeuePtr(0); }
|
||||||
|
|
||||||
// Release QueueStatus packet to pool
|
// Release QueueStatus packet to pool
|
||||||
void releaseQueueStatusToPool(QueueStatus *p) { queueStatusPool.release(p); }
|
void releaseQueueStatusToPool(meshtastic_QueueStatus *p) { queueStatusPool.release(p); }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Given a ToRadio buffer parse it and properly handle it (setup radio, owner or send packet into the mesh)
|
* Given a ToRadio buffer parse it and properly handle it (setup radio, owner or send packet into the mesh)
|
||||||
* Called by PhoneAPI.handleToRadio. Note: p is a scratch buffer, this function is allowed to write to it but it can not keep
|
* Called by PhoneAPI.handleToRadio. Note: p is a scratch buffer, this function is allowed to write to it but it can not keep
|
||||||
* a reference
|
* a reference
|
||||||
*/
|
*/
|
||||||
void handleToRadio(MeshPacket &p);
|
void handleToRadio(meshtastic_MeshPacket &p);
|
||||||
|
|
||||||
/** The radioConfig object just changed, call this to force the hw to change to the new settings
|
/** The radioConfig object just changed, call this to force the hw to change to the new settings
|
||||||
* @return true if client devices should be sent a new set of radio configs
|
* @return true if client devices should be sent a new set of radio configs
|
||||||
@@ -92,16 +92,16 @@ class MeshService
|
|||||||
/// Send a packet into the mesh - note p must have been allocated from packetPool. We will return it to that pool after
|
/// Send a packet into the mesh - note p must have been allocated from packetPool. We will return it to that pool after
|
||||||
/// sending. This is the ONLY function you should use for sending messages into the mesh, because it also updates the nodedb
|
/// sending. This is the ONLY function you should use for sending messages into the mesh, because it also updates the nodedb
|
||||||
/// cache
|
/// cache
|
||||||
void sendToMesh(MeshPacket *p, RxSource src = RX_SRC_LOCAL, bool ccToPhone = false);
|
void sendToMesh(meshtastic_MeshPacket *p, RxSource src = RX_SRC_LOCAL, bool ccToPhone = false);
|
||||||
|
|
||||||
/** Attempt to cancel a previously sent packet from this _local_ node. Returns true if a packet was found we could cancel */
|
/** Attempt to cancel a previously sent packet from this _local_ node. Returns true if a packet was found we could cancel */
|
||||||
bool cancelSending(PacketId id);
|
bool cancelSending(PacketId id);
|
||||||
|
|
||||||
/// Pull the latest power and time info into my nodeinfo
|
/// Pull the latest power and time info into my nodeinfo
|
||||||
NodeInfo *refreshMyNodeInfo();
|
meshtastic_NodeInfo *refreshMyNodeInfo();
|
||||||
|
|
||||||
/// Send a packet to the phone
|
/// Send a packet to the phone
|
||||||
void sendToPhone(MeshPacket *p);
|
void sendToPhone(meshtastic_MeshPacket *p);
|
||||||
|
|
||||||
bool isToPhoneQueueEmpty();
|
bool isToPhoneQueueEmpty();
|
||||||
|
|
||||||
@@ -112,10 +112,10 @@ class MeshService
|
|||||||
|
|
||||||
/// Handle a packet that just arrived from the radio. This method does _ReliableRouternot_ free the provided packet. If it
|
/// Handle a packet that just arrived from the radio. This method does _ReliableRouternot_ free the provided packet. If it
|
||||||
/// needs to keep the packet around it makes a copy
|
/// needs to keep the packet around it makes a copy
|
||||||
int handleFromRadio(const MeshPacket *p);
|
int handleFromRadio(const meshtastic_MeshPacket *p);
|
||||||
friend class RoutingModule;
|
friend class RoutingModule;
|
||||||
|
|
||||||
ErrorCode sendQueueStatusToPhone(const QueueStatus &qs, ErrorCode res, uint32_t mesh_packet_id);
|
ErrorCode sendQueueStatusToPhone(const meshtastic_QueueStatus &qs, ErrorCode res, uint32_t mesh_packet_id);
|
||||||
};
|
};
|
||||||
|
|
||||||
extern MeshService service;
|
extern MeshService service;
|
||||||
|
|||||||
@@ -39,10 +39,10 @@ enum RxSource {
|
|||||||
typedef int ErrorCode;
|
typedef int ErrorCode;
|
||||||
|
|
||||||
/// Alloc and free packets to our global, ISR safe pool
|
/// Alloc and free packets to our global, ISR safe pool
|
||||||
extern Allocator<MeshPacket> &packetPool;
|
extern Allocator<meshtastic_MeshPacket> &packetPool;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Most (but not always) of the time we want to treat packets 'from' the local phone (where from == 0), as if they originated on
|
* Most (but not always) of the time we want to treat packets 'from' the local phone (where from == 0), as if they originated on
|
||||||
* the local node. If from is zero this function returns our node number instead
|
* the local node. If from is zero this function returns our node number instead
|
||||||
*/
|
*/
|
||||||
NodeNum getFrom(const MeshPacket *p);
|
NodeNum getFrom(const meshtastic_MeshPacket *p);
|
||||||
@@ -32,12 +32,12 @@
|
|||||||
NodeDB nodeDB;
|
NodeDB nodeDB;
|
||||||
|
|
||||||
// we have plenty of ram so statically alloc this tempbuf (for now)
|
// we have plenty of ram so statically alloc this tempbuf (for now)
|
||||||
EXT_RAM_ATTR DeviceState devicestate;
|
EXT_RAM_ATTR meshtastic_DeviceState devicestate;
|
||||||
MyNodeInfo &myNodeInfo = devicestate.my_node;
|
meshtastic_MyNodeInfo &myNodeInfo = devicestate.my_node;
|
||||||
LocalConfig config;
|
meshtastic_LocalConfig config;
|
||||||
LocalModuleConfig moduleConfig;
|
meshtastic_LocalModuleConfig moduleConfig;
|
||||||
ChannelFile channelFile;
|
meshtastic_ChannelFile channelFile;
|
||||||
OEMStore oemStore;
|
meshtastic_OEMStore oemStore;
|
||||||
|
|
||||||
/** The current change # for radio settings. Starts at 0 on boot and any time the radio settings
|
/** The current change # for radio settings. Starts at 0 on boot and any time the radio settings
|
||||||
* might have changed is incremented. Allows others to detect they might now be on a new channel.
|
* might have changed is incremented. Allows others to detect they might now be on a new channel.
|
||||||
@@ -53,7 +53,7 @@ extern void getMacAddr(uint8_t *dmac);
|
|||||||
* But there are some special ids used when we haven't yet been configured by a user. In that case
|
* But there are some special ids used when we haven't yet been configured by a user. In that case
|
||||||
* we use !macaddr (no colons).
|
* we use !macaddr (no colons).
|
||||||
*/
|
*/
|
||||||
User &owner = devicestate.owner;
|
meshtastic_User &owner = devicestate.owner;
|
||||||
|
|
||||||
static uint8_t ourMacAddr[6];
|
static uint8_t ourMacAddr[6];
|
||||||
|
|
||||||
@@ -69,7 +69,7 @@ NodeDB::NodeDB() : nodes(devicestate.node_db), numNodes(&devicestate.node_db_cou
|
|||||||
* Most (but not always) of the time we want to treat packets 'from' the local phone (where from == 0), as if they originated on
|
* Most (but not always) of the time we want to treat packets 'from' the local phone (where from == 0), as if they originated on
|
||||||
* the local node. If from is zero this function returns our node number instead
|
* the local node. If from is zero this function returns our node number instead
|
||||||
*/
|
*/
|
||||||
NodeNum getFrom(const MeshPacket *p)
|
NodeNum getFrom(const meshtastic_MeshPacket *p)
|
||||||
{
|
{
|
||||||
return (p->from == 0) ? nodeDB.getNodeNum() : p->from;
|
return (p->from == 0) ? nodeDB.getNodeNum() : p->from;
|
||||||
}
|
}
|
||||||
@@ -102,7 +102,7 @@ bool NodeDB::resetRadioConfig(bool factory_reset)
|
|||||||
config.power.wait_bluetooth_secs = 10;
|
config.power.wait_bluetooth_secs = 10;
|
||||||
config.position.position_broadcast_secs = 6 * 60;
|
config.position.position_broadcast_secs = 6 * 60;
|
||||||
config.power.ls_secs = 60;
|
config.power.ls_secs = 60;
|
||||||
config.lora.region = Config_LoRaConfig_RegionCode_TW;
|
config.lora.region = meshtastic_Config_LoRaConfig_RegionCode_TW;
|
||||||
|
|
||||||
// Enter super deep sleep soon and stay there not very long
|
// Enter super deep sleep soon and stay there not very long
|
||||||
// radioConfig.preferences.mesh_sds_timeout_secs = 10;
|
// radioConfig.preferences.mesh_sds_timeout_secs = 10;
|
||||||
@@ -151,7 +151,7 @@ bool NodeDB::factoryReset()
|
|||||||
void NodeDB::installDefaultConfig()
|
void NodeDB::installDefaultConfig()
|
||||||
{
|
{
|
||||||
LOG_INFO("Installing default LocalConfig\n");
|
LOG_INFO("Installing default LocalConfig\n");
|
||||||
memset(&config, 0, sizeof(LocalConfig));
|
memset(&config, 0, sizeof(meshtastic_LocalConfig));
|
||||||
config.version = DEVICESTATE_CUR_VER;
|
config.version = DEVICESTATE_CUR_VER;
|
||||||
config.has_device = true;
|
config.has_device = true;
|
||||||
config.has_display = true;
|
config.has_display = true;
|
||||||
@@ -163,8 +163,8 @@ void NodeDB::installDefaultConfig()
|
|||||||
config.lora.tx_enabled =
|
config.lora.tx_enabled =
|
||||||
true; // FIXME: maybe false in the future, and setting region to enable it. (unset region forces it off)
|
true; // FIXME: maybe false in the future, and setting region to enable it. (unset region forces it off)
|
||||||
config.lora.override_duty_cycle = false;
|
config.lora.override_duty_cycle = false;
|
||||||
config.lora.region = Config_LoRaConfig_RegionCode_UNSET;
|
config.lora.region = meshtastic_Config_LoRaConfig_RegionCode_UNSET;
|
||||||
config.lora.modem_preset = Config_LoRaConfig_ModemPreset_LONG_FAST;
|
config.lora.modem_preset = meshtastic_Config_LoRaConfig_ModemPreset_LONG_FAST;
|
||||||
config.lora.hop_limit = HOP_RELIABLE;
|
config.lora.hop_limit = HOP_RELIABLE;
|
||||||
config.position.gps_enabled = true;
|
config.position.gps_enabled = true;
|
||||||
config.position.position_broadcast_smart_enabled = true;
|
config.position.position_broadcast_smart_enabled = true;
|
||||||
@@ -180,10 +180,10 @@ void NodeDB::installDefaultConfig()
|
|||||||
bool hasScreen = screen_found;
|
bool hasScreen = screen_found;
|
||||||
#endif
|
#endif
|
||||||
config.bluetooth.mode =
|
config.bluetooth.mode =
|
||||||
hasScreen ? Config_BluetoothConfig_PairingMode_RANDOM_PIN : Config_BluetoothConfig_PairingMode_FIXED_PIN;
|
hasScreen ? meshtastic_Config_BluetoothConfig_PairingMode_RANDOM_PIN : meshtastic_Config_BluetoothConfig_PairingMode_FIXED_PIN;
|
||||||
// for backward compat, default position flags are ALT+MSL
|
// for backward compat, default position flags are ALT+MSL
|
||||||
config.position.position_flags =
|
config.position.position_flags =
|
||||||
(Config_PositionConfig_PositionFlags_ALTITUDE | Config_PositionConfig_PositionFlags_ALTITUDE_MSL);
|
(meshtastic_Config_PositionConfig_PositionFlags_ALTITUDE | meshtastic_Config_PositionConfig_PositionFlags_ALTITUDE_MSL);
|
||||||
|
|
||||||
initConfigIntervals();
|
initConfigIntervals();
|
||||||
}
|
}
|
||||||
@@ -206,7 +206,7 @@ void NodeDB::initConfigIntervals()
|
|||||||
void NodeDB::installDefaultModuleConfig()
|
void NodeDB::installDefaultModuleConfig()
|
||||||
{
|
{
|
||||||
LOG_INFO("Installing default ModuleConfig\n");
|
LOG_INFO("Installing default ModuleConfig\n");
|
||||||
memset(&moduleConfig, 0, sizeof(ModuleConfig));
|
memset(&moduleConfig, 0, sizeof(meshtastic_ModuleConfig));
|
||||||
|
|
||||||
moduleConfig.version = DEVICESTATE_CUR_VER;
|
moduleConfig.version = DEVICESTATE_CUR_VER;
|
||||||
moduleConfig.has_mqtt = true;
|
moduleConfig.has_mqtt = true;
|
||||||
@@ -233,7 +233,7 @@ void NodeDB::initModuleConfigIntervals()
|
|||||||
void NodeDB::installDefaultChannels()
|
void NodeDB::installDefaultChannels()
|
||||||
{
|
{
|
||||||
LOG_INFO("Installing default ChannelFile\n");
|
LOG_INFO("Installing default ChannelFile\n");
|
||||||
memset(&channelFile, 0, sizeof(ChannelFile));
|
memset(&channelFile, 0, sizeof(meshtastic_ChannelFile));
|
||||||
channelFile.version = DEVICESTATE_CUR_VER;
|
channelFile.version = DEVICESTATE_CUR_VER;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -247,7 +247,7 @@ void NodeDB::resetNodes()
|
|||||||
void NodeDB::installDefaultDeviceState()
|
void NodeDB::installDefaultDeviceState()
|
||||||
{
|
{
|
||||||
LOG_INFO("Installing default DeviceState\n");
|
LOG_INFO("Installing default DeviceState\n");
|
||||||
memset(&devicestate, 0, sizeof(DeviceState));
|
memset(&devicestate, 0, sizeof(meshtastic_DeviceState));
|
||||||
|
|
||||||
*numNodes = 0;
|
*numNodes = 0;
|
||||||
|
|
||||||
@@ -289,7 +289,7 @@ void NodeDB::init()
|
|||||||
myNodeInfo.max_channels = MAX_NUM_CHANNELS; // tell others the max # of channels we can understand
|
myNodeInfo.max_channels = MAX_NUM_CHANNELS; // tell others the max # of channels we can understand
|
||||||
|
|
||||||
myNodeInfo.error_code =
|
myNodeInfo.error_code =
|
||||||
CriticalErrorCode_NONE; // For the error code, only show values from this boot (discard value from flash)
|
meshtastic_CriticalErrorCode_NONE; // For the error code, only show values from this boot (discard value from flash)
|
||||||
myNodeInfo.error_address = 0;
|
myNodeInfo.error_address = 0;
|
||||||
|
|
||||||
// likewise - we always want the app requirements to come from the running appload
|
// likewise - we always want the app requirements to come from the running appload
|
||||||
@@ -303,7 +303,7 @@ void NodeDB::init()
|
|||||||
owner.hw_model = HW_VENDOR;
|
owner.hw_model = HW_VENDOR;
|
||||||
|
|
||||||
// Include our owner in the node db under our nodenum
|
// Include our owner in the node db under our nodenum
|
||||||
NodeInfo *info = getOrCreateNode(getNodeNum());
|
meshtastic_NodeInfo *info = getOrCreateNode(getNodeNum());
|
||||||
info->user = owner;
|
info->user = owner;
|
||||||
info->has_user = true;
|
info->has_user = true;
|
||||||
|
|
||||||
@@ -352,7 +352,7 @@ void NodeDB::pickNewNodeNum()
|
|||||||
if (r == NODENUM_BROADCAST || r < NUM_RESERVED)
|
if (r == NODENUM_BROADCAST || r < NUM_RESERVED)
|
||||||
r = NUM_RESERVED; // don't pick a reserved node number
|
r = NUM_RESERVED; // don't pick a reserved node number
|
||||||
|
|
||||||
NodeInfo *found;
|
meshtastic_NodeInfo *found;
|
||||||
while ((found = getNode(r)) && memcmp(found->user.macaddr, owner.macaddr, sizeof(owner.macaddr))) {
|
while ((found = getNode(r)) && memcmp(found->user.macaddr, owner.macaddr, sizeof(owner.macaddr))) {
|
||||||
NodeNum n = random(NUM_RESERVED, NODENUM_BROADCAST); // try a new random choice
|
NodeNum n = random(NUM_RESERVED, NODENUM_BROADCAST); // try a new random choice
|
||||||
LOG_DEBUG("NOTE! Our desired nodenum 0x%x is in use, so trying for 0x%x\n", r, n);
|
LOG_DEBUG("NOTE! Our desired nodenum 0x%x is in use, so trying for 0x%x\n", r, n);
|
||||||
@@ -403,7 +403,7 @@ bool NodeDB::loadProto(const char *filename, size_t protoSize, size_t objSize, c
|
|||||||
void NodeDB::loadFromDisk()
|
void NodeDB::loadFromDisk()
|
||||||
{
|
{
|
||||||
// static DeviceState scratch; We no longer read into a tempbuf because this structure is 15KB of valuable RAM
|
// static DeviceState scratch; We no longer read into a tempbuf because this structure is 15KB of valuable RAM
|
||||||
if (!loadProto(prefFileName, DeviceState_size, sizeof(DeviceState), &DeviceState_msg, &devicestate)) {
|
if (!loadProto(prefFileName, meshtastic_DeviceState_size, sizeof(meshtastic_DeviceState), &meshtastic_DeviceState_msg, &devicestate)) {
|
||||||
installDefaultDeviceState(); // Our in RAM copy might now be corrupt
|
installDefaultDeviceState(); // Our in RAM copy might now be corrupt
|
||||||
} else {
|
} else {
|
||||||
if (devicestate.version < DEVICESTATE_MIN_VER) {
|
if (devicestate.version < DEVICESTATE_MIN_VER) {
|
||||||
@@ -414,7 +414,7 @@ void NodeDB::loadFromDisk()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!loadProto(configFileName, LocalConfig_size, sizeof(LocalConfig), &LocalConfig_msg, &config)) {
|
if (!loadProto(configFileName, meshtastic_LocalConfig_size, sizeof(meshtastic_LocalConfig), &meshtastic_LocalConfig_msg, &config)) {
|
||||||
installDefaultConfig(); // Our in RAM copy might now be corrupt
|
installDefaultConfig(); // Our in RAM copy might now be corrupt
|
||||||
} else {
|
} else {
|
||||||
if (config.version < DEVICESTATE_MIN_VER) {
|
if (config.version < DEVICESTATE_MIN_VER) {
|
||||||
@@ -425,7 +425,7 @@ void NodeDB::loadFromDisk()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!loadProto(moduleConfigFileName, LocalModuleConfig_size, sizeof(LocalModuleConfig), &LocalModuleConfig_msg,
|
if (!loadProto(moduleConfigFileName, meshtastic_LocalModuleConfig_size, sizeof(meshtastic_LocalModuleConfig), &meshtastic_LocalModuleConfig_msg,
|
||||||
&moduleConfig)) {
|
&moduleConfig)) {
|
||||||
installDefaultModuleConfig(); // Our in RAM copy might now be corrupt
|
installDefaultModuleConfig(); // Our in RAM copy might now be corrupt
|
||||||
} else {
|
} else {
|
||||||
@@ -437,7 +437,7 @@ void NodeDB::loadFromDisk()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!loadProto(channelFileName, ChannelFile_size, sizeof(ChannelFile), &ChannelFile_msg, &channelFile)) {
|
if (!loadProto(channelFileName, meshtastic_ChannelFile_size, sizeof(meshtastic_ChannelFile), &meshtastic_ChannelFile_msg, &channelFile)) {
|
||||||
installDefaultChannels(); // Our in RAM copy might now be corrupt
|
installDefaultChannels(); // Our in RAM copy might now be corrupt
|
||||||
} else {
|
} else {
|
||||||
if (channelFile.version < DEVICESTATE_MIN_VER) {
|
if (channelFile.version < DEVICESTATE_MIN_VER) {
|
||||||
@@ -448,7 +448,7 @@ void NodeDB::loadFromDisk()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (loadProto(oemConfigFile, OEMStore_size, sizeof(OEMStore), &OEMStore_msg, &oemStore))
|
if (loadProto(oemConfigFile, meshtastic_OEMStore_size, sizeof(meshtastic_OEMStore), &meshtastic_OEMStore_msg, &oemStore))
|
||||||
LOG_INFO("Loaded OEMStore\n");
|
LOG_INFO("Loaded OEMStore\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -501,7 +501,7 @@ void NodeDB::saveChannelsToDisk()
|
|||||||
#ifdef FSCom
|
#ifdef FSCom
|
||||||
FSCom.mkdir("/prefs");
|
FSCom.mkdir("/prefs");
|
||||||
#endif
|
#endif
|
||||||
saveProto(channelFileName, ChannelFile_size, &ChannelFile_msg, &channelFile);
|
saveProto(channelFileName, meshtastic_ChannelFile_size, &meshtastic_ChannelFile_msg, &channelFile);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -511,7 +511,7 @@ void NodeDB::saveDeviceStateToDisk()
|
|||||||
#ifdef FSCom
|
#ifdef FSCom
|
||||||
FSCom.mkdir("/prefs");
|
FSCom.mkdir("/prefs");
|
||||||
#endif
|
#endif
|
||||||
saveProto(prefFileName, DeviceState_size, &DeviceState_msg, &devicestate);
|
saveProto(prefFileName, meshtastic_DeviceState_size, &meshtastic_DeviceState_msg, &devicestate);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -533,7 +533,7 @@ void NodeDB::saveToDisk(int saveWhat)
|
|||||||
config.has_power = true;
|
config.has_power = true;
|
||||||
config.has_network = true;
|
config.has_network = true;
|
||||||
config.has_bluetooth = true;
|
config.has_bluetooth = true;
|
||||||
saveProto(configFileName, LocalConfig_size, &LocalConfig_msg, &config);
|
saveProto(configFileName, meshtastic_LocalConfig_size, &meshtastic_LocalConfig_msg, &config);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (saveWhat & SEGMENT_MODULECONFIG) {
|
if (saveWhat & SEGMENT_MODULECONFIG) {
|
||||||
@@ -544,7 +544,7 @@ void NodeDB::saveToDisk(int saveWhat)
|
|||||||
moduleConfig.has_serial = true;
|
moduleConfig.has_serial = true;
|
||||||
moduleConfig.has_store_forward = true;
|
moduleConfig.has_store_forward = true;
|
||||||
moduleConfig.has_telemetry = true;
|
moduleConfig.has_telemetry = true;
|
||||||
saveProto(moduleConfigFileName, LocalModuleConfig_size, &LocalModuleConfig_msg, &moduleConfig);
|
saveProto(moduleConfigFileName, meshtastic_LocalModuleConfig_size, &meshtastic_LocalModuleConfig_msg, &moduleConfig);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (saveWhat & SEGMENT_CHANNELS) {
|
if (saveWhat & SEGMENT_CHANNELS) {
|
||||||
@@ -555,7 +555,7 @@ void NodeDB::saveToDisk(int saveWhat)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const NodeInfo *NodeDB::readNextInfo()
|
const meshtastic_NodeInfo *NodeDB::readNextInfo()
|
||||||
{
|
{
|
||||||
if (readPointer < *numNodes)
|
if (readPointer < *numNodes)
|
||||||
return &nodes[readPointer++];
|
return &nodes[readPointer++];
|
||||||
@@ -564,7 +564,7 @@ const NodeInfo *NodeDB::readNextInfo()
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// Given a node, return how many seconds in the past (vs now) that we last heard from it
|
/// Given a node, return how many seconds in the past (vs now) that we last heard from it
|
||||||
uint32_t sinceLastSeen(const NodeInfo *n)
|
uint32_t sinceLastSeen(const meshtastic_NodeInfo *n)
|
||||||
{
|
{
|
||||||
uint32_t now = getTime();
|
uint32_t now = getTime();
|
||||||
|
|
||||||
@@ -593,9 +593,9 @@ size_t NodeDB::getNumOnlineNodes()
|
|||||||
|
|
||||||
/** Update position info for this node based on received position data
|
/** Update position info for this node based on received position data
|
||||||
*/
|
*/
|
||||||
void NodeDB::updatePosition(uint32_t nodeId, const Position &p, RxSource src)
|
void NodeDB::updatePosition(uint32_t nodeId, const meshtastic_Position &p, RxSource src)
|
||||||
{
|
{
|
||||||
NodeInfo *info = getOrCreateNode(nodeId);
|
meshtastic_NodeInfo *info = getOrCreateNode(nodeId);
|
||||||
if (!info) {
|
if (!info) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -638,11 +638,11 @@ void NodeDB::updatePosition(uint32_t nodeId, const Position &p, RxSource src)
|
|||||||
/** Update telemetry info for this node based on received metrics
|
/** Update telemetry info for this node based on received metrics
|
||||||
* We only care about device telemetry here
|
* We only care about device telemetry here
|
||||||
*/
|
*/
|
||||||
void NodeDB::updateTelemetry(uint32_t nodeId, const Telemetry &t, RxSource src)
|
void NodeDB::updateTelemetry(uint32_t nodeId, const meshtastic_Telemetry &t, RxSource src)
|
||||||
{
|
{
|
||||||
NodeInfo *info = getOrCreateNode(nodeId);
|
meshtastic_NodeInfo *info = getOrCreateNode(nodeId);
|
||||||
// Environment metrics should never go to NodeDb but we'll safegaurd anyway
|
// Environment metrics should never go to NodeDb but we'll safegaurd anyway
|
||||||
if (!info || t.which_variant != Telemetry_device_metrics_tag) {
|
if (!info || t.which_variant != meshtastic_Telemetry_device_metrics_tag) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -660,9 +660,9 @@ void NodeDB::updateTelemetry(uint32_t nodeId, const Telemetry &t, RxSource src)
|
|||||||
|
|
||||||
/** Update user info for this node based on received user data
|
/** Update user info for this node based on received user data
|
||||||
*/
|
*/
|
||||||
void NodeDB::updateUser(uint32_t nodeId, const User &p)
|
void NodeDB::updateUser(uint32_t nodeId, const meshtastic_User &p)
|
||||||
{
|
{
|
||||||
NodeInfo *info = getOrCreateNode(nodeId);
|
meshtastic_NodeInfo *info = getOrCreateNode(nodeId);
|
||||||
if (!info) {
|
if (!info) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -689,12 +689,12 @@ void NodeDB::updateUser(uint32_t nodeId, const User &p)
|
|||||||
|
|
||||||
/// given a subpacket sniffed from the network, update our DB state
|
/// given a subpacket sniffed from the network, update our DB state
|
||||||
/// we updateGUI and updateGUIforNode if we think our this change is big enough for a redraw
|
/// we updateGUI and updateGUIforNode if we think our this change is big enough for a redraw
|
||||||
void NodeDB::updateFrom(const MeshPacket &mp)
|
void NodeDB::updateFrom(const meshtastic_MeshPacket &mp)
|
||||||
{
|
{
|
||||||
if (mp.which_payload_variant == MeshPacket_decoded_tag && mp.from) {
|
if (mp.which_payload_variant == meshtastic_MeshPacket_decoded_tag && mp.from) {
|
||||||
LOG_DEBUG("Update DB node 0x%x, rx_time=%u\n", mp.from, mp.rx_time);
|
LOG_DEBUG("Update DB node 0x%x, rx_time=%u\n", mp.from, mp.rx_time);
|
||||||
|
|
||||||
NodeInfo *info = getOrCreateNode(getFrom(&mp));
|
meshtastic_NodeInfo *info = getOrCreateNode(getFrom(&mp));
|
||||||
if (!info) {
|
if (!info) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -709,7 +709,7 @@ void NodeDB::updateFrom(const MeshPacket &mp)
|
|||||||
|
|
||||||
/// Find a node in our DB, return null for missing
|
/// Find a node in our DB, return null for missing
|
||||||
/// NOTE: This function might be called from an ISR
|
/// NOTE: This function might be called from an ISR
|
||||||
NodeInfo *NodeDB::getNode(NodeNum n)
|
meshtastic_NodeInfo *NodeDB::getNode(NodeNum n)
|
||||||
{
|
{
|
||||||
for (int i = 0; i < *numNodes; i++)
|
for (int i = 0; i < *numNodes; i++)
|
||||||
if (nodes[i].num == n)
|
if (nodes[i].num == n)
|
||||||
@@ -719,9 +719,9 @@ NodeInfo *NodeDB::getNode(NodeNum n)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// Find a node in our DB, create an empty NodeInfo if missing
|
/// Find a node in our DB, create an empty NodeInfo if missing
|
||||||
NodeInfo *NodeDB::getOrCreateNode(NodeNum n)
|
meshtastic_NodeInfo *NodeDB::getOrCreateNode(NodeNum n)
|
||||||
{
|
{
|
||||||
NodeInfo *info = getNode(n);
|
meshtastic_NodeInfo *info = getNode(n);
|
||||||
|
|
||||||
if (!info) {
|
if (!info) {
|
||||||
if (*numNodes >= MAX_NUM_NODES) {
|
if (*numNodes >= MAX_NUM_NODES) {
|
||||||
@@ -753,7 +753,7 @@ NodeInfo *NodeDB::getOrCreateNode(NodeNum n)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// Record an error that should be reported via analytics
|
/// Record an error that should be reported via analytics
|
||||||
void recordCriticalError(CriticalErrorCode code, uint32_t address, const char *filename)
|
void recordCriticalError(meshtastic_CriticalErrorCode code, uint32_t address, const char *filename)
|
||||||
{
|
{
|
||||||
// Print error to screen and serial port
|
// Print error to screen and serial port
|
||||||
String lcd = String("Critical error ") + code + "!\n";
|
String lcd = String("Critical error ") + code + "!\n";
|
||||||
|
|||||||
@@ -21,16 +21,16 @@ DeviceState versions used to be defined in the .proto file but really only this
|
|||||||
#define DEVICESTATE_CUR_VER 20
|
#define DEVICESTATE_CUR_VER 20
|
||||||
#define DEVICESTATE_MIN_VER DEVICESTATE_CUR_VER
|
#define DEVICESTATE_MIN_VER DEVICESTATE_CUR_VER
|
||||||
|
|
||||||
extern DeviceState devicestate;
|
extern meshtastic_DeviceState devicestate;
|
||||||
extern ChannelFile channelFile;
|
extern meshtastic_ChannelFile channelFile;
|
||||||
extern MyNodeInfo &myNodeInfo;
|
extern meshtastic_MyNodeInfo &myNodeInfo;
|
||||||
extern LocalConfig config;
|
extern meshtastic_LocalConfig config;
|
||||||
extern LocalModuleConfig moduleConfig;
|
extern meshtastic_LocalModuleConfig moduleConfig;
|
||||||
extern OEMStore oemStore;
|
extern meshtastic_OEMStore oemStore;
|
||||||
extern User &owner;
|
extern meshtastic_User &owner;
|
||||||
|
|
||||||
/// Given a node, return how many seconds in the past (vs now) that we last heard from it
|
/// Given a node, return how many seconds in the past (vs now) that we last heard from it
|
||||||
uint32_t sinceLastSeen(const NodeInfo *n);
|
uint32_t sinceLastSeen(const meshtastic_NodeInfo *n);
|
||||||
|
|
||||||
class NodeDB
|
class NodeDB
|
||||||
{
|
{
|
||||||
@@ -40,14 +40,14 @@ class NodeDB
|
|||||||
// Eventually use a smarter datastructure
|
// Eventually use a smarter datastructure
|
||||||
// HashMap<NodeNum, NodeInfo> nodes;
|
// HashMap<NodeNum, NodeInfo> nodes;
|
||||||
// Note: these two references just point into our static array we serialize to/from disk
|
// Note: these two references just point into our static array we serialize to/from disk
|
||||||
NodeInfo *nodes;
|
meshtastic_NodeInfo *nodes;
|
||||||
pb_size_t *numNodes;
|
pb_size_t *numNodes;
|
||||||
|
|
||||||
uint32_t readPointer = 0;
|
uint32_t readPointer = 0;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
bool updateGUI = false; // we think the gui should definitely be redrawn, screen will clear this once handled
|
bool updateGUI = false; // we think the gui should definitely be redrawn, screen will clear this once handled
|
||||||
NodeInfo *updateGUIforNode = NULL; // if currently showing this node, we think you should update the GUI
|
meshtastic_NodeInfo *updateGUIforNode = NULL; // if currently showing this node, we think you should update the GUI
|
||||||
Observable<const meshtastic::NodeStatus *> newStatus;
|
Observable<const meshtastic::NodeStatus *> newStatus;
|
||||||
|
|
||||||
/// don't do mesh based algoritm for node id assignment (initially)
|
/// don't do mesh based algoritm for node id assignment (initially)
|
||||||
@@ -71,19 +71,19 @@ class NodeDB
|
|||||||
|
|
||||||
/// given a subpacket sniffed from the network, update our DB state
|
/// given a subpacket sniffed from the network, update our DB state
|
||||||
/// we updateGUI and updateGUIforNode if we think our this change is big enough for a redraw
|
/// we updateGUI and updateGUIforNode if we think our this change is big enough for a redraw
|
||||||
void updateFrom(const MeshPacket &p);
|
void updateFrom(const meshtastic_MeshPacket &p);
|
||||||
|
|
||||||
/** Update position info for this node based on received position data
|
/** Update position info for this node based on received position data
|
||||||
*/
|
*/
|
||||||
void updatePosition(uint32_t nodeId, const Position &p, RxSource src = RX_SRC_RADIO);
|
void updatePosition(uint32_t nodeId, const meshtastic_Position &p, RxSource src = RX_SRC_RADIO);
|
||||||
|
|
||||||
/** Update telemetry info for this node based on received metrics
|
/** Update telemetry info for this node based on received metrics
|
||||||
*/
|
*/
|
||||||
void updateTelemetry(uint32_t nodeId, const Telemetry &t, RxSource src = RX_SRC_RADIO);
|
void updateTelemetry(uint32_t nodeId, const meshtastic_Telemetry &t, RxSource src = RX_SRC_RADIO);
|
||||||
|
|
||||||
/** Update user info for this node based on received user data
|
/** Update user info for this node based on received user data
|
||||||
*/
|
*/
|
||||||
void updateUser(uint32_t nodeId, const User &p);
|
void updateUser(uint32_t nodeId, const meshtastic_User &p);
|
||||||
|
|
||||||
/// @return our node number
|
/// @return our node number
|
||||||
NodeNum getNodeNum() { return myNodeInfo.my_node_num; }
|
NodeNum getNodeNum() { return myNodeInfo.my_node_num; }
|
||||||
@@ -105,15 +105,15 @@ class NodeDB
|
|||||||
void resetReadPointer() { readPointer = 0; }
|
void resetReadPointer() { readPointer = 0; }
|
||||||
|
|
||||||
/// Allow the bluetooth layer to read our next nodeinfo record, or NULL if done reading
|
/// Allow the bluetooth layer to read our next nodeinfo record, or NULL if done reading
|
||||||
const NodeInfo *readNextInfo();
|
const meshtastic_NodeInfo *readNextInfo();
|
||||||
|
|
||||||
/// pick a provisional nodenum we hope no one is using
|
/// pick a provisional nodenum we hope no one is using
|
||||||
void pickNewNodeNum();
|
void pickNewNodeNum();
|
||||||
|
|
||||||
/// Find a node in our DB, return null for missing
|
/// Find a node in our DB, return null for missing
|
||||||
NodeInfo *getNode(NodeNum n);
|
meshtastic_NodeInfo *getNode(NodeNum n);
|
||||||
|
|
||||||
NodeInfo *getNodeByIndex(size_t x)
|
meshtastic_NodeInfo *getNodeByIndex(size_t x)
|
||||||
{
|
{
|
||||||
assert(x < *numNodes);
|
assert(x < *numNodes);
|
||||||
return &nodes[x];
|
return &nodes[x];
|
||||||
@@ -131,7 +131,7 @@ class NodeDB
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
/// Find a node in our DB, create an empty NodeInfo if missing
|
/// Find a node in our DB, create an empty NodeInfo if missing
|
||||||
NodeInfo *getOrCreateNode(NodeNum n);
|
meshtastic_NodeInfo *getOrCreateNode(NodeNum n);
|
||||||
|
|
||||||
/// Notify observers of changes to the DB
|
/// Notify observers of changes to the DB
|
||||||
void notifyObservers(bool forceUpdate = false)
|
void notifyObservers(bool forceUpdate = false)
|
||||||
@@ -182,7 +182,7 @@ extern NodeDB nodeDB;
|
|||||||
// Our delay functions check for this for times that should never expire
|
// Our delay functions check for this for times that should never expire
|
||||||
#define NODE_DELAY_FOREVER 0xffffffff
|
#define NODE_DELAY_FOREVER 0xffffffff
|
||||||
|
|
||||||
#define IF_ROUTER(routerVal, normalVal) ((config.device.role == Config_DeviceConfig_Role_ROUTER) ? (routerVal) : (normalVal))
|
#define IF_ROUTER(routerVal, normalVal) ((config.device.role == meshtastic_Config_DeviceConfig_Role_ROUTER) ? (routerVal) : (normalVal))
|
||||||
|
|
||||||
#define ONE_DAY 24 * 60 * 60
|
#define ONE_DAY 24 * 60 * 60
|
||||||
|
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ PacketHistory::PacketHistory()
|
|||||||
/**
|
/**
|
||||||
* Update recentBroadcasts and return true if we have already seen this packet
|
* Update recentBroadcasts and return true if we have already seen this packet
|
||||||
*/
|
*/
|
||||||
bool PacketHistory::wasSeenRecently(const MeshPacket *p, bool withUpdate)
|
bool PacketHistory::wasSeenRecently(const meshtastic_MeshPacket *p, bool withUpdate)
|
||||||
{
|
{
|
||||||
if (p->id == 0) {
|
if (p->id == 0) {
|
||||||
LOG_DEBUG("Ignoring message with zero id\n");
|
LOG_DEBUG("Ignoring message with zero id\n");
|
||||||
|
|||||||
@@ -41,5 +41,5 @@ class PacketHistory
|
|||||||
*
|
*
|
||||||
* @param withUpdate if true and not found we add an entry to recentPackets
|
* @param withUpdate if true and not found we add an entry to recentPackets
|
||||||
*/
|
*/
|
||||||
bool wasSeenRecently(const MeshPacket *p, bool withUpdate = true);
|
bool wasSeenRecently(const meshtastic_MeshPacket *p, bool withUpdate = true);
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -80,20 +80,20 @@ bool PhoneAPI::handleToRadio(const uint8_t *buf, size_t bufLength)
|
|||||||
// return (lastContactMsec != 0) &&
|
// return (lastContactMsec != 0) &&
|
||||||
|
|
||||||
memset(&toRadioScratch, 0, sizeof(toRadioScratch));
|
memset(&toRadioScratch, 0, sizeof(toRadioScratch));
|
||||||
if (pb_decode_from_bytes(buf, bufLength, &ToRadio_msg, &toRadioScratch)) {
|
if (pb_decode_from_bytes(buf, bufLength, &meshtastic_ToRadio_msg, &toRadioScratch)) {
|
||||||
switch (toRadioScratch.which_payload_variant) {
|
switch (toRadioScratch.which_payload_variant) {
|
||||||
case ToRadio_packet_tag:
|
case meshtastic_ToRadio_packet_tag:
|
||||||
return handleToRadioPacket(toRadioScratch.packet);
|
return handleToRadioPacket(toRadioScratch.packet);
|
||||||
case ToRadio_want_config_id_tag:
|
case meshtastic_ToRadio_want_config_id_tag:
|
||||||
config_nonce = toRadioScratch.want_config_id;
|
config_nonce = toRadioScratch.want_config_id;
|
||||||
LOG_INFO("Client wants config, nonce=%u\n", config_nonce);
|
LOG_INFO("Client wants config, nonce=%u\n", config_nonce);
|
||||||
handleStartConfig();
|
handleStartConfig();
|
||||||
break;
|
break;
|
||||||
case ToRadio_disconnect_tag:
|
case meshtastic_ToRadio_disconnect_tag:
|
||||||
LOG_INFO("Disconnecting from phone\n");
|
LOG_INFO("Disconnecting from phone\n");
|
||||||
close();
|
close();
|
||||||
break;
|
break;
|
||||||
case ToRadio_xmodemPacket_tag:
|
case meshtastic_ToRadio_xmodemPacket_tag:
|
||||||
LOG_INFO("Got xmodem packet\n");
|
LOG_INFO("Got xmodem packet\n");
|
||||||
xModem.handlePacket(toRadioScratch.xmodemPacket);
|
xModem.handlePacket(toRadioScratch.xmodemPacket);
|
||||||
break;
|
break;
|
||||||
@@ -143,7 +143,7 @@ size_t PhoneAPI::getFromRadio(uint8_t *buf)
|
|||||||
// If the user has specified they don't want our node to share its location, make sure to tell the phone
|
// If the user has specified they don't want our node to share its location, make sure to tell the phone
|
||||||
// app not to send locations on our behalf.
|
// app not to send locations on our behalf.
|
||||||
myNodeInfo.has_gps = gps && gps->isConnected(); // Update with latest GPS connect info
|
myNodeInfo.has_gps = gps && gps->isConnected(); // Update with latest GPS connect info
|
||||||
fromRadioScratch.which_payload_variant = FromRadio_my_info_tag;
|
fromRadioScratch.which_payload_variant = meshtastic_FromRadio_my_info_tag;
|
||||||
fromRadioScratch.my_info = myNodeInfo;
|
fromRadioScratch.my_info = myNodeInfo;
|
||||||
state = STATE_SEND_NODEINFO;
|
state = STATE_SEND_NODEINFO;
|
||||||
|
|
||||||
@@ -152,13 +152,13 @@ size_t PhoneAPI::getFromRadio(uint8_t *buf)
|
|||||||
|
|
||||||
case STATE_SEND_NODEINFO: {
|
case STATE_SEND_NODEINFO: {
|
||||||
LOG_INFO("getFromRadio=STATE_SEND_NODEINFO\n");
|
LOG_INFO("getFromRadio=STATE_SEND_NODEINFO\n");
|
||||||
const NodeInfo *info = nodeInfoForPhone;
|
const meshtastic_NodeInfo *info = nodeInfoForPhone;
|
||||||
nodeInfoForPhone = NULL; // We just consumed a nodeinfo, will need a new one next time
|
nodeInfoForPhone = NULL; // We just consumed a nodeinfo, will need a new one next time
|
||||||
|
|
||||||
if (info) {
|
if (info) {
|
||||||
LOG_INFO("Sending nodeinfo: num=0x%x, lastseen=%u, id=%s, name=%s\n", info->num, info->last_heard, info->user.id,
|
LOG_INFO("Sending nodeinfo: num=0x%x, lastseen=%u, id=%s, name=%s\n", info->num, info->last_heard, info->user.id,
|
||||||
info->user.long_name);
|
info->user.long_name);
|
||||||
fromRadioScratch.which_payload_variant = FromRadio_node_info_tag;
|
fromRadioScratch.which_payload_variant = meshtastic_FromRadio_node_info_tag;
|
||||||
fromRadioScratch.node_info = *info;
|
fromRadioScratch.node_info = *info;
|
||||||
// Stay in current state until done sending nodeinfos
|
// Stay in current state until done sending nodeinfos
|
||||||
} else {
|
} else {
|
||||||
@@ -172,47 +172,47 @@ size_t PhoneAPI::getFromRadio(uint8_t *buf)
|
|||||||
|
|
||||||
case STATE_SEND_CHANNELS:
|
case STATE_SEND_CHANNELS:
|
||||||
LOG_INFO("getFromRadio=STATE_SEND_CHANNELS\n");
|
LOG_INFO("getFromRadio=STATE_SEND_CHANNELS\n");
|
||||||
fromRadioScratch.which_payload_variant = FromRadio_channel_tag;
|
fromRadioScratch.which_payload_variant = meshtastic_FromRadio_channel_tag;
|
||||||
fromRadioScratch.channel = channels.getByIndex(config_state);
|
fromRadioScratch.channel = channels.getByIndex(config_state);
|
||||||
config_state++;
|
config_state++;
|
||||||
// Advance when we have sent all of our Channels
|
// Advance when we have sent all of our Channels
|
||||||
if (config_state >= MAX_NUM_CHANNELS) {
|
if (config_state >= MAX_NUM_CHANNELS) {
|
||||||
state = STATE_SEND_CONFIG;
|
state = STATE_SEND_CONFIG;
|
||||||
config_state = _AdminMessage_ConfigType_MIN + 1;
|
config_state = _meshtastic_AdminMessage_ConfigType_MIN + 1;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case STATE_SEND_CONFIG:
|
case STATE_SEND_CONFIG:
|
||||||
LOG_INFO("getFromRadio=STATE_SEND_CONFIG\n");
|
LOG_INFO("getFromRadio=STATE_SEND_CONFIG\n");
|
||||||
fromRadioScratch.which_payload_variant = FromRadio_config_tag;
|
fromRadioScratch.which_payload_variant = meshtastic_FromRadio_config_tag;
|
||||||
switch (config_state) {
|
switch (config_state) {
|
||||||
case Config_device_tag:
|
case meshtastic_Config_device_tag:
|
||||||
fromRadioScratch.config.which_payload_variant = Config_device_tag;
|
fromRadioScratch.config.which_payload_variant = meshtastic_Config_device_tag;
|
||||||
fromRadioScratch.config.payload_variant.device = config.device;
|
fromRadioScratch.config.payload_variant.device = config.device;
|
||||||
break;
|
break;
|
||||||
case Config_position_tag:
|
case meshtastic_Config_position_tag:
|
||||||
fromRadioScratch.config.which_payload_variant = Config_position_tag;
|
fromRadioScratch.config.which_payload_variant = meshtastic_Config_position_tag;
|
||||||
fromRadioScratch.config.payload_variant.position = config.position;
|
fromRadioScratch.config.payload_variant.position = config.position;
|
||||||
break;
|
break;
|
||||||
case Config_power_tag:
|
case meshtastic_Config_power_tag:
|
||||||
fromRadioScratch.config.which_payload_variant = Config_power_tag;
|
fromRadioScratch.config.which_payload_variant = meshtastic_Config_power_tag;
|
||||||
fromRadioScratch.config.payload_variant.power = config.power;
|
fromRadioScratch.config.payload_variant.power = config.power;
|
||||||
fromRadioScratch.config.payload_variant.power.ls_secs = default_ls_secs;
|
fromRadioScratch.config.payload_variant.power.ls_secs = default_ls_secs;
|
||||||
break;
|
break;
|
||||||
case Config_network_tag:
|
case meshtastic_Config_network_tag:
|
||||||
fromRadioScratch.config.which_payload_variant = Config_network_tag;
|
fromRadioScratch.config.which_payload_variant = meshtastic_Config_network_tag;
|
||||||
fromRadioScratch.config.payload_variant.network = config.network;
|
fromRadioScratch.config.payload_variant.network = config.network;
|
||||||
break;
|
break;
|
||||||
case Config_display_tag:
|
case meshtastic_Config_display_tag:
|
||||||
fromRadioScratch.config.which_payload_variant = Config_display_tag;
|
fromRadioScratch.config.which_payload_variant = meshtastic_Config_display_tag;
|
||||||
fromRadioScratch.config.payload_variant.display = config.display;
|
fromRadioScratch.config.payload_variant.display = config.display;
|
||||||
break;
|
break;
|
||||||
case Config_lora_tag:
|
case meshtastic_Config_lora_tag:
|
||||||
fromRadioScratch.config.which_payload_variant = Config_lora_tag;
|
fromRadioScratch.config.which_payload_variant = meshtastic_Config_lora_tag;
|
||||||
fromRadioScratch.config.payload_variant.lora = config.lora;
|
fromRadioScratch.config.payload_variant.lora = config.lora;
|
||||||
break;
|
break;
|
||||||
case Config_bluetooth_tag:
|
case meshtastic_Config_bluetooth_tag:
|
||||||
fromRadioScratch.config.which_payload_variant = Config_bluetooth_tag;
|
fromRadioScratch.config.which_payload_variant = meshtastic_Config_bluetooth_tag;
|
||||||
fromRadioScratch.config.payload_variant.bluetooth = config.bluetooth;
|
fromRadioScratch.config.payload_variant.bluetooth = config.bluetooth;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
@@ -224,50 +224,50 @@ size_t PhoneAPI::getFromRadio(uint8_t *buf)
|
|||||||
|
|
||||||
config_state++;
|
config_state++;
|
||||||
// Advance when we have sent all of our config objects
|
// Advance when we have sent all of our config objects
|
||||||
if (config_state > (_AdminMessage_ConfigType_MAX + 1)) {
|
if (config_state > (_meshtastic_AdminMessage_ConfigType_MAX + 1)) {
|
||||||
state = STATE_SEND_MODULECONFIG;
|
state = STATE_SEND_MODULECONFIG;
|
||||||
config_state = _AdminMessage_ModuleConfigType_MIN + 1;
|
config_state = _meshtastic_AdminMessage_ModuleConfigType_MIN + 1;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case STATE_SEND_MODULECONFIG:
|
case STATE_SEND_MODULECONFIG:
|
||||||
LOG_INFO("getFromRadio=STATE_SEND_MODULECONFIG\n");
|
LOG_INFO("getFromRadio=STATE_SEND_MODULECONFIG\n");
|
||||||
fromRadioScratch.which_payload_variant = FromRadio_moduleConfig_tag;
|
fromRadioScratch.which_payload_variant = meshtastic_FromRadio_moduleConfig_tag;
|
||||||
switch (config_state) {
|
switch (config_state) {
|
||||||
case ModuleConfig_mqtt_tag:
|
case meshtastic_ModuleConfig_mqtt_tag:
|
||||||
fromRadioScratch.moduleConfig.which_payload_variant = ModuleConfig_mqtt_tag;
|
fromRadioScratch.moduleConfig.which_payload_variant = meshtastic_ModuleConfig_mqtt_tag;
|
||||||
fromRadioScratch.moduleConfig.payload_variant.mqtt = moduleConfig.mqtt;
|
fromRadioScratch.moduleConfig.payload_variant.mqtt = moduleConfig.mqtt;
|
||||||
break;
|
break;
|
||||||
case ModuleConfig_serial_tag:
|
case meshtastic_ModuleConfig_serial_tag:
|
||||||
fromRadioScratch.moduleConfig.which_payload_variant = ModuleConfig_serial_tag;
|
fromRadioScratch.moduleConfig.which_payload_variant = meshtastic_ModuleConfig_serial_tag;
|
||||||
fromRadioScratch.moduleConfig.payload_variant.serial = moduleConfig.serial;
|
fromRadioScratch.moduleConfig.payload_variant.serial = moduleConfig.serial;
|
||||||
break;
|
break;
|
||||||
case ModuleConfig_external_notification_tag:
|
case meshtastic_ModuleConfig_external_notification_tag:
|
||||||
fromRadioScratch.moduleConfig.which_payload_variant = ModuleConfig_external_notification_tag;
|
fromRadioScratch.moduleConfig.which_payload_variant = meshtastic_ModuleConfig_external_notification_tag;
|
||||||
fromRadioScratch.moduleConfig.payload_variant.external_notification = moduleConfig.external_notification;
|
fromRadioScratch.moduleConfig.payload_variant.external_notification = moduleConfig.external_notification;
|
||||||
break;
|
break;
|
||||||
case ModuleConfig_store_forward_tag:
|
case meshtastic_ModuleConfig_store_forward_tag:
|
||||||
fromRadioScratch.moduleConfig.which_payload_variant = ModuleConfig_store_forward_tag;
|
fromRadioScratch.moduleConfig.which_payload_variant = meshtastic_ModuleConfig_store_forward_tag;
|
||||||
fromRadioScratch.moduleConfig.payload_variant.store_forward = moduleConfig.store_forward;
|
fromRadioScratch.moduleConfig.payload_variant.store_forward = moduleConfig.store_forward;
|
||||||
break;
|
break;
|
||||||
case ModuleConfig_range_test_tag:
|
case meshtastic_ModuleConfig_range_test_tag:
|
||||||
fromRadioScratch.moduleConfig.which_payload_variant = ModuleConfig_range_test_tag;
|
fromRadioScratch.moduleConfig.which_payload_variant = meshtastic_ModuleConfig_range_test_tag;
|
||||||
fromRadioScratch.moduleConfig.payload_variant.range_test = moduleConfig.range_test;
|
fromRadioScratch.moduleConfig.payload_variant.range_test = moduleConfig.range_test;
|
||||||
break;
|
break;
|
||||||
case ModuleConfig_telemetry_tag:
|
case meshtastic_ModuleConfig_telemetry_tag:
|
||||||
fromRadioScratch.moduleConfig.which_payload_variant = ModuleConfig_telemetry_tag;
|
fromRadioScratch.moduleConfig.which_payload_variant = meshtastic_ModuleConfig_telemetry_tag;
|
||||||
fromRadioScratch.moduleConfig.payload_variant.telemetry = moduleConfig.telemetry;
|
fromRadioScratch.moduleConfig.payload_variant.telemetry = moduleConfig.telemetry;
|
||||||
break;
|
break;
|
||||||
case ModuleConfig_canned_message_tag:
|
case meshtastic_ModuleConfig_canned_message_tag:
|
||||||
fromRadioScratch.moduleConfig.which_payload_variant = ModuleConfig_canned_message_tag;
|
fromRadioScratch.moduleConfig.which_payload_variant = meshtastic_ModuleConfig_canned_message_tag;
|
||||||
fromRadioScratch.moduleConfig.payload_variant.canned_message = moduleConfig.canned_message;
|
fromRadioScratch.moduleConfig.payload_variant.canned_message = moduleConfig.canned_message;
|
||||||
break;
|
break;
|
||||||
case ModuleConfig_audio_tag:
|
case meshtastic_ModuleConfig_audio_tag:
|
||||||
fromRadioScratch.moduleConfig.which_payload_variant = ModuleConfig_audio_tag;
|
fromRadioScratch.moduleConfig.which_payload_variant = meshtastic_ModuleConfig_audio_tag;
|
||||||
fromRadioScratch.moduleConfig.payload_variant.audio = moduleConfig.audio;
|
fromRadioScratch.moduleConfig.payload_variant.audio = moduleConfig.audio;
|
||||||
break;
|
break;
|
||||||
case ModuleConfig_remote_hardware_tag:
|
case meshtastic_ModuleConfig_remote_hardware_tag:
|
||||||
fromRadioScratch.moduleConfig.which_payload_variant = ModuleConfig_remote_hardware_tag;
|
fromRadioScratch.moduleConfig.which_payload_variant = meshtastic_ModuleConfig_remote_hardware_tag;
|
||||||
fromRadioScratch.moduleConfig.payload_variant.remote_hardware = moduleConfig.remote_hardware;
|
fromRadioScratch.moduleConfig.payload_variant.remote_hardware = moduleConfig.remote_hardware;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
@@ -276,7 +276,7 @@ size_t PhoneAPI::getFromRadio(uint8_t *buf)
|
|||||||
|
|
||||||
config_state++;
|
config_state++;
|
||||||
// Advance when we have sent all of our ModuleConfig objects
|
// Advance when we have sent all of our ModuleConfig objects
|
||||||
if (config_state > (_AdminMessage_ModuleConfigType_MAX + 1)) {
|
if (config_state > (_meshtastic_AdminMessage_ModuleConfigType_MAX + 1)) {
|
||||||
state = STATE_SEND_COMPLETE_ID;
|
state = STATE_SEND_COMPLETE_ID;
|
||||||
config_state = 0;
|
config_state = 0;
|
||||||
}
|
}
|
||||||
@@ -284,7 +284,7 @@ size_t PhoneAPI::getFromRadio(uint8_t *buf)
|
|||||||
|
|
||||||
case STATE_SEND_COMPLETE_ID:
|
case STATE_SEND_COMPLETE_ID:
|
||||||
LOG_INFO("getFromRadio=STATE_SEND_COMPLETE_ID\n");
|
LOG_INFO("getFromRadio=STATE_SEND_COMPLETE_ID\n");
|
||||||
fromRadioScratch.which_payload_variant = FromRadio_config_complete_id_tag;
|
fromRadioScratch.which_payload_variant = meshtastic_FromRadio_config_complete_id_tag;
|
||||||
fromRadioScratch.config_complete_id = config_nonce;
|
fromRadioScratch.config_complete_id = config_nonce;
|
||||||
config_nonce = 0;
|
config_nonce = 0;
|
||||||
state = STATE_SEND_PACKETS;
|
state = STATE_SEND_PACKETS;
|
||||||
@@ -294,11 +294,11 @@ size_t PhoneAPI::getFromRadio(uint8_t *buf)
|
|||||||
// Do we have a message from the mesh?
|
// Do we have a message from the mesh?
|
||||||
LOG_INFO("getFromRadio=STATE_SEND_PACKETS\n");
|
LOG_INFO("getFromRadio=STATE_SEND_PACKETS\n");
|
||||||
if (queueStatusPacketForPhone) {
|
if (queueStatusPacketForPhone) {
|
||||||
fromRadioScratch.which_payload_variant = FromRadio_queueStatus_tag;
|
fromRadioScratch.which_payload_variant = meshtastic_FromRadio_queueStatus_tag;
|
||||||
fromRadioScratch.queueStatus = *queueStatusPacketForPhone;
|
fromRadioScratch.queueStatus = *queueStatusPacketForPhone;
|
||||||
releaseQueueStatusPhonePacket();
|
releaseQueueStatusPhonePacket();
|
||||||
} else if (xmodemPacketForPhone) {
|
} else if (xmodemPacketForPhone) {
|
||||||
fromRadioScratch.which_payload_variant = FromRadio_xmodemPacket_tag;
|
fromRadioScratch.which_payload_variant = meshtastic_FromRadio_xmodemPacket_tag;
|
||||||
fromRadioScratch.xmodemPacket = *xmodemPacketForPhone;
|
fromRadioScratch.xmodemPacket = *xmodemPacketForPhone;
|
||||||
free(xmodemPacketForPhone);
|
free(xmodemPacketForPhone);
|
||||||
xmodemPacketForPhone = NULL;
|
xmodemPacketForPhone = NULL;
|
||||||
@@ -306,7 +306,7 @@ size_t PhoneAPI::getFromRadio(uint8_t *buf)
|
|||||||
printPacket("phone downloaded packet", packetForPhone);
|
printPacket("phone downloaded packet", packetForPhone);
|
||||||
|
|
||||||
// Encapsulate as a FromRadio packet
|
// Encapsulate as a FromRadio packet
|
||||||
fromRadioScratch.which_payload_variant = FromRadio_packet_tag;
|
fromRadioScratch.which_payload_variant = meshtastic_FromRadio_packet_tag;
|
||||||
fromRadioScratch.packet = *packetForPhone;
|
fromRadioScratch.packet = *packetForPhone;
|
||||||
releasePhonePacket();
|
releasePhonePacket();
|
||||||
}
|
}
|
||||||
@@ -319,7 +319,7 @@ size_t PhoneAPI::getFromRadio(uint8_t *buf)
|
|||||||
// Do we have a message from the mesh?
|
// Do we have a message from the mesh?
|
||||||
if (fromRadioScratch.which_payload_variant != 0) {
|
if (fromRadioScratch.which_payload_variant != 0) {
|
||||||
// Encapsulate as a FromRadio packet
|
// Encapsulate as a FromRadio packet
|
||||||
size_t numbytes = pb_encode_to_bytes(buf, FromRadio_size, &FromRadio_msg, &fromRadioScratch);
|
size_t numbytes = pb_encode_to_bytes(buf, meshtastic_FromRadio_size, &meshtastic_FromRadio_msg, &fromRadioScratch);
|
||||||
|
|
||||||
LOG_DEBUG("encoding toPhone packet to phone variant=%d, %d bytes\n", fromRadioScratch.which_payload_variant, numbytes);
|
LOG_DEBUG("encoding toPhone packet to phone variant=%d, %d bytes\n", fromRadioScratch.which_payload_variant, numbytes);
|
||||||
return numbytes;
|
return numbytes;
|
||||||
@@ -399,7 +399,7 @@ bool PhoneAPI::available()
|
|||||||
/**
|
/**
|
||||||
* Handle a packet that the phone wants us to send. It is our responsibility to free the packet to the pool
|
* Handle a packet that the phone wants us to send. It is our responsibility to free the packet to the pool
|
||||||
*/
|
*/
|
||||||
bool PhoneAPI::handleToRadioPacket(MeshPacket &p)
|
bool PhoneAPI::handleToRadioPacket(meshtastic_MeshPacket &p)
|
||||||
{
|
{
|
||||||
printPacket("PACKET FROM PHONE", &p);
|
printPacket("PACKET FROM PHONE", &p);
|
||||||
service.handleToRadio(p);
|
service.handleToRadio(p);
|
||||||
|
|||||||
@@ -41,18 +41,18 @@ class PhoneAPI
|
|||||||
|
|
||||||
/// We temporarily keep the packet here between the call to available and getFromRadio. We will free it after the phone
|
/// We temporarily keep the packet here between the call to available and getFromRadio. We will free it after the phone
|
||||||
/// downloads it
|
/// downloads it
|
||||||
MeshPacket *packetForPhone = NULL;
|
meshtastic_MeshPacket *packetForPhone = NULL;
|
||||||
|
|
||||||
// file transfer packets destined for phone. Push it to the queue then free it.
|
// file transfer packets destined for phone. Push it to the queue then free it.
|
||||||
XModem *xmodemPacketForPhone = NULL;
|
meshtastic_XModem *xmodemPacketForPhone = NULL;
|
||||||
|
|
||||||
// Keep QueueStatus packet just as packetForPhone
|
// Keep QueueStatus packet just as packetForPhone
|
||||||
QueueStatus *queueStatusPacketForPhone = NULL;
|
meshtastic_QueueStatus *queueStatusPacketForPhone = NULL;
|
||||||
|
|
||||||
/// We temporarily keep the nodeInfo here between the call to available and getFromRadio
|
/// We temporarily keep the nodeInfo here between the call to available and getFromRadio
|
||||||
const NodeInfo *nodeInfoForPhone = NULL;
|
const meshtastic_NodeInfo *nodeInfoForPhone = NULL;
|
||||||
|
|
||||||
ToRadio toRadioScratch = {0}; // this is a static scratch object, any data must be copied elsewhere before returning
|
meshtastic_ToRadio toRadioScratch = {0}; // this is a static scratch object, any data must be copied elsewhere before returning
|
||||||
|
|
||||||
/// Use to ensure that clients don't get confused about old messages from the radio
|
/// Use to ensure that clients don't get confused about old messages from the radio
|
||||||
uint32_t config_nonce = 0;
|
uint32_t config_nonce = 0;
|
||||||
@@ -92,7 +92,7 @@ class PhoneAPI
|
|||||||
|
|
||||||
protected:
|
protected:
|
||||||
/// Our fromradio packet while it is being assembled
|
/// Our fromradio packet while it is being assembled
|
||||||
FromRadio fromRadioScratch = {};
|
meshtastic_FromRadio fromRadioScratch = {};
|
||||||
|
|
||||||
/** the last msec we heard from the client on the other side of this link */
|
/** the last msec we heard from the client on the other side of this link */
|
||||||
uint32_t lastContactMsec = 0;
|
uint32_t lastContactMsec = 0;
|
||||||
@@ -128,7 +128,7 @@ class PhoneAPI
|
|||||||
* Handle a packet that the phone wants us to send. We can write to it but can not keep a reference to it
|
* Handle a packet that the phone wants us to send. We can write to it but can not keep a reference to it
|
||||||
* @return true true if a packet was queued for sending
|
* @return true true if a packet was queued for sending
|
||||||
*/
|
*/
|
||||||
bool handleToRadioPacket(MeshPacket &p);
|
bool handleToRadioPacket(meshtastic_MeshPacket &p);
|
||||||
|
|
||||||
/// If the mesh service tells us fromNum has changed, tell the phone
|
/// If the mesh service tells us fromNum has changed, tell the phone
|
||||||
virtual int onNotify(uint32_t newValue) override;
|
virtual int onNotify(uint32_t newValue) override;
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ template <class T> class ProtobufModule : protected SinglePortModule
|
|||||||
/** Constructor
|
/** Constructor
|
||||||
* name is for debugging output
|
* name is for debugging output
|
||||||
*/
|
*/
|
||||||
ProtobufModule(const char *_name, PortNum _ourPortNum, const pb_msgdesc_t *_fields)
|
ProtobufModule(const char *_name, meshtastic_PortNum _ourPortNum, const pb_msgdesc_t *_fields)
|
||||||
: SinglePortModule(_name, _ourPortNum), fields(_fields)
|
: SinglePortModule(_name, _ourPortNum), fields(_fields)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
@@ -28,17 +28,17 @@ template <class T> class ProtobufModule : protected SinglePortModule
|
|||||||
* In general decoded will always be !NULL. But in some special applications (where you have handling packets
|
* In general decoded will always be !NULL. But in some special applications (where you have handling packets
|
||||||
* for multiple port numbers, decoding will ONLY be attempted for packets where the portnum matches our expected ourPortNum.
|
* for multiple port numbers, decoding will ONLY be attempted for packets where the portnum matches our expected ourPortNum.
|
||||||
*/
|
*/
|
||||||
virtual bool handleReceivedProtobuf(const MeshPacket &mp, T *decoded) = 0;
|
virtual bool handleReceivedProtobuf(const meshtastic_MeshPacket &mp, T *decoded) = 0;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return a mesh packet which has been preinited with a particular protobuf data payload and port number.
|
* Return a mesh packet which has been preinited with a particular protobuf data payload and port number.
|
||||||
* You can then send this packet (after customizing any of the payload fields you might need) with
|
* You can then send this packet (after customizing any of the payload fields you might need) with
|
||||||
* service.sendToMesh()
|
* service.sendToMesh()
|
||||||
*/
|
*/
|
||||||
MeshPacket *allocDataProtobuf(const T &payload)
|
meshtastic_MeshPacket *allocDataProtobuf(const T &payload)
|
||||||
{
|
{
|
||||||
// Update our local node info with our position (even if we don't decide to update anyone else)
|
// Update our local node info with our position (even if we don't decide to update anyone else)
|
||||||
MeshPacket *p = allocDataPacket();
|
meshtastic_MeshPacket *p = allocDataPacket();
|
||||||
|
|
||||||
p->decoded.payload.size =
|
p->decoded.payload.size =
|
||||||
pb_encode_to_bytes(p->decoded.payload.bytes, sizeof(p->decoded.payload.bytes), fields, &payload);
|
pb_encode_to_bytes(p->decoded.payload.bytes, sizeof(p->decoded.payload.bytes), fields, &payload);
|
||||||
@@ -50,7 +50,7 @@ template <class T> class ProtobufModule : protected SinglePortModule
|
|||||||
* Gets the short name from the sender of the mesh packet
|
* Gets the short name from the sender of the mesh packet
|
||||||
* Returns "???" if unknown sender
|
* Returns "???" if unknown sender
|
||||||
*/
|
*/
|
||||||
const char *getSenderShortName(const MeshPacket &mp)
|
const char *getSenderShortName(const meshtastic_MeshPacket &mp)
|
||||||
{
|
{
|
||||||
auto node = nodeDB.getNode(getFrom(&mp));
|
auto node = nodeDB.getNode(getFrom(&mp));
|
||||||
const char *sender = (node) ? node->user.short_name : "???";
|
const char *sender = (node) ? node->user.short_name : "???";
|
||||||
@@ -63,7 +63,7 @@ template <class T> class ProtobufModule : protected SinglePortModule
|
|||||||
@return ProcessMessage::STOP if you've guaranteed you've handled this message and no other handlers should be considered for
|
@return ProcessMessage::STOP if you've guaranteed you've handled this message and no other handlers should be considered for
|
||||||
it
|
it
|
||||||
*/
|
*/
|
||||||
virtual ProcessMessage handleReceived(const MeshPacket &mp) override
|
virtual ProcessMessage handleReceived(const meshtastic_MeshPacket &mp) override
|
||||||
{
|
{
|
||||||
// FIXME - we currently update position data in the DB only if the message was a broadcast or destined to us
|
// FIXME - we currently update position data in the DB only if the message was a broadcast or destined to us
|
||||||
// it would be better to update even if the message was destined to others.
|
// it would be better to update even if the message was destined to others.
|
||||||
@@ -73,7 +73,7 @@ template <class T> class ProtobufModule : protected SinglePortModule
|
|||||||
|
|
||||||
T scratch;
|
T scratch;
|
||||||
T *decoded = NULL;
|
T *decoded = NULL;
|
||||||
if (mp.which_payload_variant == MeshPacket_decoded_tag && mp.decoded.portnum == ourPortNum) {
|
if (mp.which_payload_variant == meshtastic_MeshPacket_decoded_tag && mp.decoded.portnum == ourPortNum) {
|
||||||
memset(&scratch, 0, sizeof(scratch));
|
memset(&scratch, 0, sizeof(scratch));
|
||||||
if (pb_decode_from_bytes(p.payload.bytes, p.payload.size, fields, &scratch)) {
|
if (pb_decode_from_bytes(p.payload.bytes, p.payload.size, fields, &scratch)) {
|
||||||
decoded = &scratch;
|
decoded = &scratch;
|
||||||
|
|||||||
@@ -104,15 +104,15 @@ bool RF95Interface::reconfigure()
|
|||||||
// configure publicly accessible settings
|
// configure publicly accessible settings
|
||||||
int err = lora->setSpreadingFactor(sf);
|
int err = lora->setSpreadingFactor(sf);
|
||||||
if (err != RADIOLIB_ERR_NONE)
|
if (err != RADIOLIB_ERR_NONE)
|
||||||
RECORD_CRITICALERROR(CriticalErrorCode_INVALID_RADIO_SETTING);
|
RECORD_CRITICALERROR(meshtastic_CriticalErrorCode_INVALID_RADIO_SETTING);
|
||||||
|
|
||||||
err = lora->setBandwidth(bw);
|
err = lora->setBandwidth(bw);
|
||||||
if (err != RADIOLIB_ERR_NONE)
|
if (err != RADIOLIB_ERR_NONE)
|
||||||
RECORD_CRITICALERROR(CriticalErrorCode_INVALID_RADIO_SETTING);
|
RECORD_CRITICALERROR(meshtastic_CriticalErrorCode_INVALID_RADIO_SETTING);
|
||||||
|
|
||||||
err = lora->setCodingRate(cr);
|
err = lora->setCodingRate(cr);
|
||||||
if (err != RADIOLIB_ERR_NONE)
|
if (err != RADIOLIB_ERR_NONE)
|
||||||
RECORD_CRITICALERROR(CriticalErrorCode_INVALID_RADIO_SETTING);
|
RECORD_CRITICALERROR(meshtastic_CriticalErrorCode_INVALID_RADIO_SETTING);
|
||||||
|
|
||||||
err = lora->setSyncWord(syncWord);
|
err = lora->setSyncWord(syncWord);
|
||||||
assert(err == RADIOLIB_ERR_NONE);
|
assert(err == RADIOLIB_ERR_NONE);
|
||||||
@@ -125,14 +125,14 @@ bool RF95Interface::reconfigure()
|
|||||||
|
|
||||||
err = lora->setFrequency(getFreq());
|
err = lora->setFrequency(getFreq());
|
||||||
if (err != RADIOLIB_ERR_NONE)
|
if (err != RADIOLIB_ERR_NONE)
|
||||||
RECORD_CRITICALERROR(CriticalErrorCode_INVALID_RADIO_SETTING);
|
RECORD_CRITICALERROR(meshtastic_CriticalErrorCode_INVALID_RADIO_SETTING);
|
||||||
|
|
||||||
if (power > MAX_POWER) // This chip has lower power limits than some
|
if (power > MAX_POWER) // This chip has lower power limits than some
|
||||||
power = MAX_POWER;
|
power = MAX_POWER;
|
||||||
|
|
||||||
err = lora->setOutputPower(power);
|
err = lora->setOutputPower(power);
|
||||||
if (err != RADIOLIB_ERR_NONE)
|
if (err != RADIOLIB_ERR_NONE)
|
||||||
RECORD_CRITICALERROR(CriticalErrorCode_INVALID_RADIO_SETTING);
|
RECORD_CRITICALERROR(meshtastic_CriticalErrorCode_INVALID_RADIO_SETTING);
|
||||||
|
|
||||||
startReceive(); // restart receiving
|
startReceive(); // restart receiving
|
||||||
|
|
||||||
@@ -142,7 +142,7 @@ bool RF95Interface::reconfigure()
|
|||||||
/**
|
/**
|
||||||
* Add SNR data to received messages
|
* Add SNR data to received messages
|
||||||
*/
|
*/
|
||||||
void RF95Interface::addReceiveMetadata(MeshPacket *mp)
|
void RF95Interface::addReceiveMetadata(meshtastic_MeshPacket *mp)
|
||||||
{
|
{
|
||||||
mp->rx_snr = lora->getSNR();
|
mp->rx_snr = lora->getSNR();
|
||||||
mp->rx_rssi = lround(lora->getRSSI());
|
mp->rx_rssi = lround(lora->getRSSI());
|
||||||
|
|||||||
@@ -55,7 +55,7 @@ class RF95Interface : public RadioLibInterface
|
|||||||
/**
|
/**
|
||||||
* Add SNR data to received messages
|
* Add SNR data to received messages
|
||||||
*/
|
*/
|
||||||
virtual void addReceiveMetadata(MeshPacket *mp) override;
|
virtual void addReceiveMetadata(meshtastic_MeshPacket *mp) override;
|
||||||
|
|
||||||
virtual void setStandby() override;
|
virtual void setStandby() override;
|
||||||
|
|
||||||
|
|||||||
@@ -13,7 +13,7 @@
|
|||||||
|
|
||||||
#define RDEF(name, freq_start, freq_end, duty_cycle, spacing, power_limit, audio_permitted, frequency_switching, wide_lora) \
|
#define RDEF(name, freq_start, freq_end, duty_cycle, spacing, power_limit, audio_permitted, frequency_switching, wide_lora) \
|
||||||
{ \
|
{ \
|
||||||
Config_LoRaConfig_RegionCode_##name, freq_start, freq_end, duty_cycle, spacing, power_limit, audio_permitted, \
|
meshtastic_Config_LoRaConfig_RegionCode_##name, freq_start, freq_end, duty_cycle, spacing, power_limit, audio_permitted, \
|
||||||
frequency_switching, wide_lora, #name \
|
frequency_switching, wide_lora, #name \
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -127,7 +127,7 @@ static uint8_t bytes[MAX_RHPACKETLEN];
|
|||||||
void initRegion()
|
void initRegion()
|
||||||
{
|
{
|
||||||
const RegionInfo *r = regions;
|
const RegionInfo *r = regions;
|
||||||
for (; r->code != Config_LoRaConfig_RegionCode_UNSET && r->code != config.lora.region; r++)
|
for (; r->code != meshtastic_Config_LoRaConfig_RegionCode_UNSET && r->code != config.lora.region; r++)
|
||||||
;
|
;
|
||||||
myRegion = r;
|
myRegion = r;
|
||||||
LOG_INFO("Wanted region %d, using %s\n", config.lora.region, r->name);
|
LOG_INFO("Wanted region %d, using %s\n", config.lora.region, r->name);
|
||||||
@@ -175,22 +175,22 @@ uint32_t RadioInterface::getPacketTime(uint32_t pl)
|
|||||||
return msecs;
|
return msecs;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32_t RadioInterface::getPacketTime(MeshPacket *p)
|
uint32_t RadioInterface::getPacketTime(meshtastic_MeshPacket *p)
|
||||||
{
|
{
|
||||||
uint32_t pl = 0;
|
uint32_t pl = 0;
|
||||||
if (p->which_payload_variant == MeshPacket_encrypted_tag) {
|
if (p->which_payload_variant == meshtastic_MeshPacket_encrypted_tag) {
|
||||||
pl = p->encrypted.size + sizeof(PacketHeader);
|
pl = p->encrypted.size + sizeof(PacketHeader);
|
||||||
} else {
|
} else {
|
||||||
size_t numbytes = pb_encode_to_bytes(bytes, sizeof(bytes), &Data_msg, &p->decoded);
|
size_t numbytes = pb_encode_to_bytes(bytes, sizeof(bytes), &meshtastic_Data_msg, &p->decoded);
|
||||||
pl = numbytes + sizeof(PacketHeader);
|
pl = numbytes + sizeof(PacketHeader);
|
||||||
}
|
}
|
||||||
return getPacketTime(pl);
|
return getPacketTime(pl);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** The delay to use for retransmitting dropped packets */
|
/** The delay to use for retransmitting dropped packets */
|
||||||
uint32_t RadioInterface::getRetransmissionMsec(const MeshPacket *p)
|
uint32_t RadioInterface::getRetransmissionMsec(const meshtastic_MeshPacket *p)
|
||||||
{
|
{
|
||||||
size_t numbytes = pb_encode_to_bytes(bytes, sizeof(bytes), &Data_msg, &p->decoded);
|
size_t numbytes = pb_encode_to_bytes(bytes, sizeof(bytes), &meshtastic_Data_msg, &p->decoded);
|
||||||
uint32_t packetAirtime = getPacketTime(numbytes + sizeof(PacketHeader));
|
uint32_t packetAirtime = getPacketTime(numbytes + sizeof(PacketHeader));
|
||||||
// Make sure enough time has elapsed for this packet to be sent and an ACK is received.
|
// Make sure enough time has elapsed for this packet to be sent and an ACK is received.
|
||||||
// LOG_DEBUG("Waiting for flooding message with airtime %d and slotTime is %d\n", packetAirtime, slotTimeMsec);
|
// LOG_DEBUG("Waiting for flooding message with airtime %d and slotTime is %d\n", packetAirtime, slotTimeMsec);
|
||||||
@@ -226,7 +226,7 @@ uint32_t RadioInterface::getTxDelayMsecWeighted(float snr)
|
|||||||
uint32_t delay = 0;
|
uint32_t delay = 0;
|
||||||
uint8_t CWsize = map(snr, SNR_MIN, SNR_MAX, CWmin, CWmax);
|
uint8_t CWsize = map(snr, SNR_MIN, SNR_MAX, CWmin, CWmax);
|
||||||
// LOG_DEBUG("rx_snr of %f so setting CWsize to:%d\n", snr, CWsize);
|
// LOG_DEBUG("rx_snr of %f so setting CWsize to:%d\n", snr, CWsize);
|
||||||
if (config.device.role == Config_DeviceConfig_Role_ROUTER || config.device.role == Config_DeviceConfig_Role_ROUTER_CLIENT) {
|
if (config.device.role == meshtastic_Config_DeviceConfig_Role_ROUTER || config.device.role == meshtastic_Config_DeviceConfig_Role_ROUTER_CLIENT) {
|
||||||
delay = random(0, 2 * CWsize) * slotTimeMsec;
|
delay = random(0, 2 * CWsize) * slotTimeMsec;
|
||||||
LOG_DEBUG("rx_snr found in packet. As a router, setting tx delay:%d\n", delay);
|
LOG_DEBUG("rx_snr found in packet. As a router, setting tx delay:%d\n", delay);
|
||||||
} else {
|
} else {
|
||||||
@@ -237,11 +237,11 @@ uint32_t RadioInterface::getTxDelayMsecWeighted(float snr)
|
|||||||
return delay;
|
return delay;
|
||||||
}
|
}
|
||||||
|
|
||||||
void printPacket(const char *prefix, const MeshPacket *p)
|
void printPacket(const char *prefix, const meshtastic_MeshPacket *p)
|
||||||
{
|
{
|
||||||
LOG_DEBUG("%s (id=0x%08x fr=0x%02x to=0x%02x, WantAck=%d, HopLim=%d Ch=0x%x", prefix, p->id, p->from & 0xff, p->to & 0xff,
|
LOG_DEBUG("%s (id=0x%08x fr=0x%02x to=0x%02x, WantAck=%d, HopLim=%d Ch=0x%x", prefix, p->id, p->from & 0xff, p->to & 0xff,
|
||||||
p->want_ack, p->hop_limit, p->channel);
|
p->want_ack, p->hop_limit, p->channel);
|
||||||
if (p->which_payload_variant == MeshPacket_decoded_tag) {
|
if (p->which_payload_variant == meshtastic_MeshPacket_decoded_tag) {
|
||||||
auto &s = p->decoded;
|
auto &s = p->decoded;
|
||||||
|
|
||||||
LOG_DEBUG(" Portnum=%d", s.portnum);
|
LOG_DEBUG(" Portnum=%d", s.portnum);
|
||||||
@@ -371,26 +371,26 @@ void RadioInterface::applyModemConfig()
|
|||||||
{
|
{
|
||||||
// Set up default configuration
|
// Set up default configuration
|
||||||
// No Sync Words in LORA mode
|
// No Sync Words in LORA mode
|
||||||
Config_LoRaConfig &loraConfig = config.lora;
|
meshtastic_Config_LoRaConfig &loraConfig = config.lora;
|
||||||
if (loraConfig.use_preset) {
|
if (loraConfig.use_preset) {
|
||||||
|
|
||||||
switch (loraConfig.modem_preset) {
|
switch (loraConfig.modem_preset) {
|
||||||
case Config_LoRaConfig_ModemPreset_SHORT_FAST:
|
case meshtastic_Config_LoRaConfig_ModemPreset_SHORT_FAST:
|
||||||
bw = (myRegion->wideLora) ? 812.5 : 250;
|
bw = (myRegion->wideLora) ? 812.5 : 250;
|
||||||
cr = 8;
|
cr = 8;
|
||||||
sf = 7;
|
sf = 7;
|
||||||
break;
|
break;
|
||||||
case Config_LoRaConfig_ModemPreset_SHORT_SLOW:
|
case meshtastic_Config_LoRaConfig_ModemPreset_SHORT_SLOW:
|
||||||
bw = (myRegion->wideLora) ? 812.5 : 250;
|
bw = (myRegion->wideLora) ? 812.5 : 250;
|
||||||
cr = 8;
|
cr = 8;
|
||||||
sf = 8;
|
sf = 8;
|
||||||
break;
|
break;
|
||||||
case Config_LoRaConfig_ModemPreset_MEDIUM_FAST:
|
case meshtastic_Config_LoRaConfig_ModemPreset_MEDIUM_FAST:
|
||||||
bw = (myRegion->wideLora) ? 812.5 : 250;
|
bw = (myRegion->wideLora) ? 812.5 : 250;
|
||||||
cr = 8;
|
cr = 8;
|
||||||
sf = 9;
|
sf = 9;
|
||||||
break;
|
break;
|
||||||
case Config_LoRaConfig_ModemPreset_MEDIUM_SLOW:
|
case meshtastic_Config_LoRaConfig_ModemPreset_MEDIUM_SLOW:
|
||||||
bw = (myRegion->wideLora) ? 812.5 : 250;
|
bw = (myRegion->wideLora) ? 812.5 : 250;
|
||||||
cr = 8;
|
cr = 8;
|
||||||
sf = 10;
|
sf = 10;
|
||||||
@@ -400,12 +400,12 @@ void RadioInterface::applyModemConfig()
|
|||||||
cr = 8;
|
cr = 8;
|
||||||
sf = 11;
|
sf = 11;
|
||||||
break;
|
break;
|
||||||
case Config_LoRaConfig_ModemPreset_LONG_SLOW:
|
case meshtastic_Config_LoRaConfig_ModemPreset_LONG_SLOW:
|
||||||
bw = (myRegion->wideLora) ? 406.25 : 125;
|
bw = (myRegion->wideLora) ? 406.25 : 125;
|
||||||
cr = 8;
|
cr = 8;
|
||||||
sf = 12;
|
sf = 12;
|
||||||
break;
|
break;
|
||||||
case Config_LoRaConfig_ModemPreset_VERY_LONG_SLOW:
|
case meshtastic_Config_LoRaConfig_ModemPreset_VERY_LONG_SLOW:
|
||||||
bw = (myRegion->wideLora) ? 203.125 : 31.25;
|
bw = (myRegion->wideLora) ? 203.125 : 31.25;
|
||||||
cr = 8;
|
cr = 8;
|
||||||
sf = 12;
|
sf = 12;
|
||||||
@@ -487,7 +487,7 @@ void RadioInterface::limitPower()
|
|||||||
LOG_INFO("Set radio: final power level=%d\n", power);
|
LOG_INFO("Set radio: final power level=%d\n", power);
|
||||||
}
|
}
|
||||||
|
|
||||||
void RadioInterface::deliverToReceiver(MeshPacket *p)
|
void RadioInterface::deliverToReceiver(meshtastic_MeshPacket *p)
|
||||||
{
|
{
|
||||||
if (router)
|
if (router)
|
||||||
router->enqueueReceivedMessage(p);
|
router->enqueueReceivedMessage(p);
|
||||||
@@ -496,12 +496,12 @@ void RadioInterface::deliverToReceiver(MeshPacket *p)
|
|||||||
/***
|
/***
|
||||||
* given a packet set sendingPacket and decode the protobufs into radiobuf. Returns # of payload bytes to send
|
* given a packet set sendingPacket and decode the protobufs into radiobuf. Returns # of payload bytes to send
|
||||||
*/
|
*/
|
||||||
size_t RadioInterface::beginSending(MeshPacket *p)
|
size_t RadioInterface::beginSending(meshtastic_MeshPacket *p)
|
||||||
{
|
{
|
||||||
assert(!sendingPacket);
|
assert(!sendingPacket);
|
||||||
|
|
||||||
// LOG_DEBUG("sending queued packet on mesh (txGood=%d,rxGood=%d,rxBad=%d)\n", rf95.txGood(), rf95.rxGood(), rf95.rxBad());
|
// LOG_DEBUG("sending queued packet on mesh (txGood=%d,rxGood=%d,rxBad=%d)\n", rf95.txGood(), rf95.rxGood(), rf95.rxBad());
|
||||||
assert(p->which_payload_variant == MeshPacket_encrypted_tag); // It should have already been encoded by now
|
assert(p->which_payload_variant == meshtastic_MeshPacket_encrypted_tag); // It should have already been encoded by now
|
||||||
|
|
||||||
lastTxStart = millis();
|
lastTxStart = millis();
|
||||||
|
|
||||||
|
|||||||
@@ -69,7 +69,7 @@ class RadioInterface
|
|||||||
const uint8_t CWmin = 2; // minimum CWsize
|
const uint8_t CWmin = 2; // minimum CWsize
|
||||||
const uint8_t CWmax = 8; // maximum CWsize
|
const uint8_t CWmax = 8; // maximum CWsize
|
||||||
|
|
||||||
MeshPacket *sendingPacket = NULL; // The packet we are currently sending
|
meshtastic_MeshPacket *sendingPacket = NULL; // The packet we are currently sending
|
||||||
uint32_t lastTxStart = 0L;
|
uint32_t lastTxStart = 0L;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -80,7 +80,7 @@ class RadioInterface
|
|||||||
/**
|
/**
|
||||||
* Enqueue a received packet for the registered receiver
|
* Enqueue a received packet for the registered receiver
|
||||||
*/
|
*/
|
||||||
void deliverToReceiver(MeshPacket *p);
|
void deliverToReceiver(meshtastic_MeshPacket *p);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
/** pool is the pool we will alloc our rx packets from
|
/** pool is the pool we will alloc our rx packets from
|
||||||
@@ -113,12 +113,12 @@ class RadioInterface
|
|||||||
* later free() the packet to pool. This routine is not allowed to stall.
|
* later free() the packet to pool. This routine is not allowed to stall.
|
||||||
* If the txmit queue is full it might return an error
|
* If the txmit queue is full it might return an error
|
||||||
*/
|
*/
|
||||||
virtual ErrorCode send(MeshPacket *p) = 0;
|
virtual ErrorCode send(meshtastic_MeshPacket *p) = 0;
|
||||||
|
|
||||||
/** Return TX queue status */
|
/** Return TX queue status */
|
||||||
virtual QueueStatus getQueueStatus()
|
virtual meshtastic_QueueStatus getQueueStatus()
|
||||||
{
|
{
|
||||||
QueueStatus qs;
|
meshtastic_QueueStatus qs;
|
||||||
qs.res = qs.mesh_packet_id = qs.free = qs.maxlen = 0;
|
qs.res = qs.mesh_packet_id = qs.free = qs.maxlen = 0;
|
||||||
return qs;
|
return qs;
|
||||||
}
|
}
|
||||||
@@ -139,7 +139,7 @@ class RadioInterface
|
|||||||
virtual bool reconfigure();
|
virtual bool reconfigure();
|
||||||
|
|
||||||
/** The delay to use for retransmitting dropped packets */
|
/** The delay to use for retransmitting dropped packets */
|
||||||
uint32_t getRetransmissionMsec(const MeshPacket *p);
|
uint32_t getRetransmissionMsec(const meshtastic_MeshPacket *p);
|
||||||
|
|
||||||
/** The delay to use when we want to send something */
|
/** The delay to use when we want to send something */
|
||||||
uint32_t getTxDelayMsec();
|
uint32_t getTxDelayMsec();
|
||||||
@@ -154,7 +154,7 @@ class RadioInterface
|
|||||||
*
|
*
|
||||||
* @return num msecs for the packet
|
* @return num msecs for the packet
|
||||||
*/
|
*/
|
||||||
uint32_t getPacketTime(MeshPacket *p);
|
uint32_t getPacketTime(meshtastic_MeshPacket *p);
|
||||||
uint32_t getPacketTime(uint32_t totalPacketLen);
|
uint32_t getPacketTime(uint32_t totalPacketLen);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -182,7 +182,7 @@ class RadioInterface
|
|||||||
*
|
*
|
||||||
* Used as the first step of
|
* Used as the first step of
|
||||||
*/
|
*/
|
||||||
size_t beginSending(MeshPacket *p);
|
size_t beginSending(meshtastic_MeshPacket *p);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Some regulatory regions limit xmit power.
|
* Some regulatory regions limit xmit power.
|
||||||
@@ -221,4 +221,4 @@ class RadioInterface
|
|||||||
};
|
};
|
||||||
|
|
||||||
/// Debug printing for packets
|
/// Debug printing for packets
|
||||||
void printPacket(const char *prefix, const MeshPacket *p);
|
void printPacket(const char *prefix, const meshtastic_MeshPacket *p);
|
||||||
|
|||||||
@@ -87,7 +87,7 @@ bool RadioLibInterface::canSendImmediately()
|
|||||||
// TX IRQ from the radio, the radio is probably broken.
|
// TX IRQ from the radio, the radio is probably broken.
|
||||||
if (busyTx && (millis() - lastTxStart > 60000)) {
|
if (busyTx && (millis() - lastTxStart > 60000)) {
|
||||||
LOG_ERROR("Hardware Failure! busyTx for more than 60s\n");
|
LOG_ERROR("Hardware Failure! busyTx for more than 60s\n");
|
||||||
RECORD_CRITICALERROR(CriticalErrorCode_TRANSMIT_FAILED);
|
RECORD_CRITICALERROR(meshtastic_CriticalErrorCode_TRANSMIT_FAILED);
|
||||||
// reboot in 5 seconds when this condition occurs.
|
// reboot in 5 seconds when this condition occurs.
|
||||||
rebootAtMsec = lastTxStart + 65000;
|
rebootAtMsec = lastTxStart + 65000;
|
||||||
}
|
}
|
||||||
@@ -101,15 +101,15 @@ bool RadioLibInterface::canSendImmediately()
|
|||||||
/// Send a packet (possibly by enquing in a private fifo). This routine will
|
/// Send a packet (possibly by enquing in a private fifo). This routine will
|
||||||
/// later free() the packet to pool. This routine is not allowed to stall because it is called from
|
/// later free() the packet to pool. This routine is not allowed to stall because it is called from
|
||||||
/// bluetooth comms code. If the txmit queue is empty it might return an error
|
/// bluetooth comms code. If the txmit queue is empty it might return an error
|
||||||
ErrorCode RadioLibInterface::send(MeshPacket *p)
|
ErrorCode RadioLibInterface::send(meshtastic_MeshPacket *p)
|
||||||
{
|
{
|
||||||
|
|
||||||
#ifndef DISABLE_WELCOME_UNSET
|
#ifndef DISABLE_WELCOME_UNSET
|
||||||
|
|
||||||
if (config.lora.region != Config_LoRaConfig_RegionCode_UNSET) {
|
if (config.lora.region != meshtastic_Config_LoRaConfig_RegionCode_UNSET) {
|
||||||
if (disabled || !config.lora.tx_enabled) {
|
if (disabled || !config.lora.tx_enabled) {
|
||||||
|
|
||||||
if (config.lora.region != Config_LoRaConfig_RegionCode_UNSET) {
|
if (config.lora.region != meshtastic_Config_LoRaConfig_RegionCode_UNSET) {
|
||||||
if (disabled || !config.lora.tx_enabled) {
|
if (disabled || !config.lora.tx_enabled) {
|
||||||
LOG_WARN("send - !config.lora.tx_enabled\n");
|
LOG_WARN("send - !config.lora.tx_enabled\n");
|
||||||
packetPool.release(p);
|
packetPool.release(p);
|
||||||
@@ -158,9 +158,9 @@ ErrorCode RadioLibInterface::send(MeshPacket *p)
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
QueueStatus RadioLibInterface::getQueueStatus()
|
meshtastic_QueueStatus RadioLibInterface::getQueueStatus()
|
||||||
{
|
{
|
||||||
QueueStatus qs;
|
meshtastic_QueueStatus qs;
|
||||||
|
|
||||||
qs.res = qs.mesh_packet_id = 0;
|
qs.res = qs.mesh_packet_id = 0;
|
||||||
qs.free = txQueue.getFree();
|
qs.free = txQueue.getFree();
|
||||||
@@ -227,7 +227,7 @@ void RadioLibInterface::onNotify(uint32_t notification)
|
|||||||
setTransmitDelay(); // reset random delay
|
setTransmitDelay(); // reset random delay
|
||||||
} else {
|
} else {
|
||||||
// Send any outgoing packets we have ready
|
// Send any outgoing packets we have ready
|
||||||
MeshPacket *txp = txQueue.dequeue();
|
meshtastic_MeshPacket *txp = txQueue.dequeue();
|
||||||
assert(txp);
|
assert(txp);
|
||||||
startSend(txp);
|
startSend(txp);
|
||||||
|
|
||||||
@@ -247,7 +247,7 @@ void RadioLibInterface::onNotify(uint32_t notification)
|
|||||||
|
|
||||||
void RadioLibInterface::setTransmitDelay()
|
void RadioLibInterface::setTransmitDelay()
|
||||||
{
|
{
|
||||||
MeshPacket *p = txQueue.getFront();
|
meshtastic_MeshPacket *p = txQueue.getFront();
|
||||||
// We want all sending/receiving to be done by our daemon thread.
|
// We want all sending/receiving to be done by our daemon thread.
|
||||||
// We use a delay here because this packet might have been sent in response to a packet we just received.
|
// We use a delay here because this packet might have been sent in response to a packet we just received.
|
||||||
// So we want to make sure the other side has had a chance to reconfigure its radio.
|
// So we want to make sure the other side has had a chance to reconfigure its radio.
|
||||||
@@ -358,7 +358,7 @@ void RadioLibInterface::handleReceiveInterrupt()
|
|||||||
// Note: we deliver _all_ packets to our router (i.e. our interface is intentionally promiscuous).
|
// Note: we deliver _all_ packets to our router (i.e. our interface is intentionally promiscuous).
|
||||||
// This allows the router and other apps on our node to sniff packets (usually routing) between other
|
// This allows the router and other apps on our node to sniff packets (usually routing) between other
|
||||||
// nodes.
|
// nodes.
|
||||||
MeshPacket *mp = packetPool.allocZeroed();
|
meshtastic_MeshPacket *mp = packetPool.allocZeroed();
|
||||||
|
|
||||||
mp->from = h->from;
|
mp->from = h->from;
|
||||||
mp->to = h->to;
|
mp->to = h->to;
|
||||||
@@ -370,7 +370,7 @@ void RadioLibInterface::handleReceiveInterrupt()
|
|||||||
|
|
||||||
addReceiveMetadata(mp);
|
addReceiveMetadata(mp);
|
||||||
|
|
||||||
mp->which_payload_variant = MeshPacket_encrypted_tag; // Mark that the payload is still encrypted at this point
|
mp->which_payload_variant = meshtastic_MeshPacket_encrypted_tag; // Mark that the payload is still encrypted at this point
|
||||||
assert(((uint32_t)payloadLen) <= sizeof(mp->encrypted.bytes));
|
assert(((uint32_t)payloadLen) <= sizeof(mp->encrypted.bytes));
|
||||||
memcpy(mp->encrypted.bytes, payload, payloadLen);
|
memcpy(mp->encrypted.bytes, payload, payloadLen);
|
||||||
mp->encrypted.size = payloadLen;
|
mp->encrypted.size = payloadLen;
|
||||||
@@ -385,7 +385,7 @@ void RadioLibInterface::handleReceiveInterrupt()
|
|||||||
}
|
}
|
||||||
|
|
||||||
/** start an immediate transmit */
|
/** start an immediate transmit */
|
||||||
void RadioLibInterface::startSend(MeshPacket *txp)
|
void RadioLibInterface::startSend(meshtastic_MeshPacket *txp)
|
||||||
{
|
{
|
||||||
printPacket("Starting low level send", txp);
|
printPacket("Starting low level send", txp);
|
||||||
if (disabled || !config.lora.tx_enabled) {
|
if (disabled || !config.lora.tx_enabled) {
|
||||||
@@ -401,7 +401,7 @@ void RadioLibInterface::startSend(MeshPacket *txp)
|
|||||||
int res = iface->startTransmit(radiobuf, numbytes);
|
int res = iface->startTransmit(radiobuf, numbytes);
|
||||||
if (res != RADIOLIB_ERR_NONE) {
|
if (res != RADIOLIB_ERR_NONE) {
|
||||||
LOG_ERROR("startTransmit failed, error=%d\n", res);
|
LOG_ERROR("startTransmit failed, error=%d\n", res);
|
||||||
RECORD_CRITICALERROR(CriticalErrorCode_RADIO_SPI_BUG);
|
RECORD_CRITICALERROR(meshtastic_CriticalErrorCode_RADIO_SPI_BUG);
|
||||||
|
|
||||||
// This send failed, but make sure to 'complete' it properly
|
// This send failed, but make sure to 'complete' it properly
|
||||||
completeSending();
|
completeSending();
|
||||||
|
|||||||
@@ -102,7 +102,7 @@ class RadioLibInterface : public RadioInterface, protected concurrency::Notified
|
|||||||
RadioLibInterface(RADIOLIB_PIN_TYPE cs, RADIOLIB_PIN_TYPE irq, RADIOLIB_PIN_TYPE rst, RADIOLIB_PIN_TYPE busy, SPIClass &spi,
|
RadioLibInterface(RADIOLIB_PIN_TYPE cs, RADIOLIB_PIN_TYPE irq, RADIOLIB_PIN_TYPE rst, RADIOLIB_PIN_TYPE busy, SPIClass &spi,
|
||||||
PhysicalLayer *iface = NULL);
|
PhysicalLayer *iface = NULL);
|
||||||
|
|
||||||
virtual ErrorCode send(MeshPacket *p) override;
|
virtual ErrorCode send(meshtastic_MeshPacket *p) override;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return true if we think the board can go to sleep (i.e. our tx queue is empty, we are not sending or receiving)
|
* Return true if we think the board can go to sleep (i.e. our tx queue is empty, we are not sending or receiving)
|
||||||
@@ -150,9 +150,9 @@ class RadioLibInterface : public RadioInterface, protected concurrency::Notified
|
|||||||
/** start an immediate transmit
|
/** start an immediate transmit
|
||||||
* This method is virtual so subclasses can hook as needed, subclasses should not call directly
|
* This method is virtual so subclasses can hook as needed, subclasses should not call directly
|
||||||
*/
|
*/
|
||||||
virtual void startSend(MeshPacket *txp);
|
virtual void startSend(meshtastic_MeshPacket *txp);
|
||||||
|
|
||||||
QueueStatus getQueueStatus();
|
meshtastic_QueueStatus getQueueStatus();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
/** Do any hardware setup needed on entry into send configuration for the radio. Subclasses can customize */
|
/** Do any hardware setup needed on entry into send configuration for the radio. Subclasses can customize */
|
||||||
@@ -173,7 +173,7 @@ class RadioLibInterface : public RadioInterface, protected concurrency::Notified
|
|||||||
/**
|
/**
|
||||||
* Add SNR data to received messages
|
* Add SNR data to received messages
|
||||||
*/
|
*/
|
||||||
virtual void addReceiveMetadata(MeshPacket *mp) = 0;
|
virtual void addReceiveMetadata(meshtastic_MeshPacket *mp) = 0;
|
||||||
|
|
||||||
virtual void setStandby() = 0;
|
virtual void setStandby() = 0;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -10,7 +10,7 @@
|
|||||||
* If the message is want_ack, then add it to a list of packets to retransmit.
|
* If the message is want_ack, then add it to a list of packets to retransmit.
|
||||||
* If we run out of retransmissions, send a nak packet towards the original client to indicate failure.
|
* If we run out of retransmissions, send a nak packet towards the original client to indicate failure.
|
||||||
*/
|
*/
|
||||||
ErrorCode ReliableRouter::send(MeshPacket *p)
|
ErrorCode ReliableRouter::send(meshtastic_MeshPacket *p)
|
||||||
{
|
{
|
||||||
if (p->want_ack) {
|
if (p->want_ack) {
|
||||||
// If someone asks for acks on broadcast, we need the hop limit to be at least one, so that first node that receives our
|
// If someone asks for acks on broadcast, we need the hop limit to be at least one, so that first node that receives our
|
||||||
@@ -27,7 +27,7 @@ ErrorCode ReliableRouter::send(MeshPacket *p)
|
|||||||
return FloodingRouter::send(p);
|
return FloodingRouter::send(p);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ReliableRouter::shouldFilterReceived(const MeshPacket *p)
|
bool ReliableRouter::shouldFilterReceived(const meshtastic_MeshPacket *p)
|
||||||
{
|
{
|
||||||
// Note: do not use getFrom() here, because we want to ignore messages sent from phone
|
// Note: do not use getFrom() here, because we want to ignore messages sent from phone
|
||||||
if (p->from == getNodeNum()) {
|
if (p->from == getNodeNum()) {
|
||||||
@@ -45,7 +45,7 @@ bool ReliableRouter::shouldFilterReceived(const MeshPacket *p)
|
|||||||
LOG_DEBUG("generating implicit ack\n");
|
LOG_DEBUG("generating implicit ack\n");
|
||||||
// NOTE: we do NOT check p->wantAck here because p is the INCOMING rebroadcast and that packet is not expected to be
|
// NOTE: we do NOT check p->wantAck here because p is the INCOMING rebroadcast and that packet is not expected to be
|
||||||
// marked as wantAck
|
// marked as wantAck
|
||||||
sendAckNak(Routing_Error_NONE, getFrom(p), p->id, old->packet->channel);
|
sendAckNak(meshtastic_Routing_Error_NONE, getFrom(p), p->id, old->packet->channel);
|
||||||
|
|
||||||
stopRetransmission(key);
|
stopRetransmission(key);
|
||||||
} else {
|
} else {
|
||||||
@@ -60,7 +60,7 @@ bool ReliableRouter::shouldFilterReceived(const MeshPacket *p)
|
|||||||
if (wasSeenRecently(p, false) && p->hop_limit == HOP_RELIABLE && !MeshModule::currentReply && p->to != nodeDB.getNodeNum()) {
|
if (wasSeenRecently(p, false) && p->hop_limit == HOP_RELIABLE && !MeshModule::currentReply && p->to != nodeDB.getNodeNum()) {
|
||||||
// retransmission on broadcast has hop_limit still equal to HOP_RELIABLE
|
// retransmission on broadcast has hop_limit still equal to HOP_RELIABLE
|
||||||
LOG_DEBUG("Resending implicit ack for a repeated floodmsg\n");
|
LOG_DEBUG("Resending implicit ack for a repeated floodmsg\n");
|
||||||
MeshPacket *tosend = packetPool.allocCopy(*p);
|
meshtastic_MeshPacket *tosend = packetPool.allocCopy(*p);
|
||||||
tosend->hop_limit--; // bump down the hop count
|
tosend->hop_limit--; // bump down the hop count
|
||||||
Router::send(tosend);
|
Router::send(tosend);
|
||||||
}
|
}
|
||||||
@@ -80,7 +80,7 @@ bool ReliableRouter::shouldFilterReceived(const MeshPacket *p)
|
|||||||
*
|
*
|
||||||
* Otherwise, let superclass handle it.
|
* Otherwise, let superclass handle it.
|
||||||
*/
|
*/
|
||||||
void ReliableRouter::sniffReceived(const MeshPacket *p, const Routing *c)
|
void ReliableRouter::sniffReceived(const meshtastic_MeshPacket *p, const meshtastic_Routing *c)
|
||||||
{
|
{
|
||||||
NodeNum ourNode = getNodeNum();
|
NodeNum ourNode = getNodeNum();
|
||||||
|
|
||||||
@@ -88,18 +88,18 @@ void ReliableRouter::sniffReceived(const MeshPacket *p, const Routing *c)
|
|||||||
if (p->want_ack) {
|
if (p->want_ack) {
|
||||||
if (MeshModule::currentReply)
|
if (MeshModule::currentReply)
|
||||||
LOG_DEBUG("Some other module has replied to this message, no need for a 2nd ack\n");
|
LOG_DEBUG("Some other module has replied to this message, no need for a 2nd ack\n");
|
||||||
else if (p->which_payload_variant == MeshPacket_decoded_tag)
|
else if (p->which_payload_variant == meshtastic_MeshPacket_decoded_tag)
|
||||||
sendAckNak(Routing_Error_NONE, getFrom(p), p->id, p->channel);
|
sendAckNak(meshtastic_Routing_Error_NONE, getFrom(p), p->id, p->channel);
|
||||||
else
|
else
|
||||||
// Send a 'NO_CHANNEL' error on the primary channel if want_ack packet destined for us cannot be decoded
|
// Send a 'NO_CHANNEL' error on the primary channel if want_ack packet destined for us cannot be decoded
|
||||||
sendAckNak(Routing_Error_NO_CHANNEL, getFrom(p), p->id, channels.getPrimaryIndex());
|
sendAckNak(meshtastic_Routing_Error_NO_CHANNEL, getFrom(p), p->id, channels.getPrimaryIndex());
|
||||||
}
|
}
|
||||||
|
|
||||||
// We consider an ack to be either a !routing packet with a request ID or a routing packet with !error
|
// We consider an ack to be either a !routing packet with a request ID or a routing packet with !error
|
||||||
PacketId ackId = ((c && c->error_reason == Routing_Error_NONE) || !c) ? p->decoded.request_id : 0;
|
PacketId ackId = ((c && c->error_reason == meshtastic_Routing_Error_NONE) || !c) ? p->decoded.request_id : 0;
|
||||||
|
|
||||||
// A nak is a routing packt that has an error code
|
// A nak is a routing packt that has an error code
|
||||||
PacketId nakId = (c && c->error_reason != Routing_Error_NONE) ? p->decoded.request_id : 0;
|
PacketId nakId = (c && c->error_reason != meshtastic_Routing_Error_NONE) ? p->decoded.request_id : 0;
|
||||||
|
|
||||||
// We intentionally don't check wasSeenRecently, because it is harmless to delete non existent retransmission records
|
// We intentionally don't check wasSeenRecently, because it is harmless to delete non existent retransmission records
|
||||||
if (ackId || nakId) {
|
if (ackId || nakId) {
|
||||||
@@ -119,7 +119,7 @@ void ReliableRouter::sniffReceived(const MeshPacket *p, const Routing *c)
|
|||||||
|
|
||||||
#define NUM_RETRANSMISSIONS 3
|
#define NUM_RETRANSMISSIONS 3
|
||||||
|
|
||||||
PendingPacket::PendingPacket(MeshPacket *p)
|
PendingPacket::PendingPacket(meshtastic_MeshPacket *p)
|
||||||
{
|
{
|
||||||
packet = p;
|
packet = p;
|
||||||
numRetransmissions = NUM_RETRANSMISSIONS - 1; // We subtract one, because we assume the user just did the first send
|
numRetransmissions = NUM_RETRANSMISSIONS - 1; // We subtract one, because we assume the user just did the first send
|
||||||
@@ -157,7 +157,7 @@ bool ReliableRouter::stopRetransmission(GlobalPacketId key)
|
|||||||
/**
|
/**
|
||||||
* Add p to the list of packets to retransmit occasionally. We will free it once we stop retransmitting.
|
* Add p to the list of packets to retransmit occasionally. We will free it once we stop retransmitting.
|
||||||
*/
|
*/
|
||||||
PendingPacket *ReliableRouter::startRetransmission(MeshPacket *p)
|
PendingPacket *ReliableRouter::startRetransmission(meshtastic_MeshPacket *p)
|
||||||
{
|
{
|
||||||
auto id = GlobalPacketId(p);
|
auto id = GlobalPacketId(p);
|
||||||
auto rec = PendingPacket(p);
|
auto rec = PendingPacket(p);
|
||||||
@@ -191,7 +191,7 @@ int32_t ReliableRouter::doRetransmissions()
|
|||||||
if (p.numRetransmissions == 0) {
|
if (p.numRetransmissions == 0) {
|
||||||
LOG_DEBUG("Reliable send failed, returning a nak for fr=0x%x,to=0x%x,id=0x%x\n", p.packet->from, p.packet->to,
|
LOG_DEBUG("Reliable send failed, returning a nak for fr=0x%x,to=0x%x,id=0x%x\n", p.packet->from, p.packet->to,
|
||||||
p.packet->id);
|
p.packet->id);
|
||||||
sendAckNak(Routing_Error_MAX_RETRANSMIT, getFrom(p.packet), p.packet->id, p.packet->channel);
|
sendAckNak(meshtastic_Routing_Error_MAX_RETRANSMIT, getFrom(p.packet), p.packet->id, p.packet->channel);
|
||||||
// Note: we don't stop retransmission here, instead the Nak packet gets processed in sniffReceived
|
// Note: we don't stop retransmission here, instead the Nak packet gets processed in sniffReceived
|
||||||
stopRetransmission(it->first);
|
stopRetransmission(it->first);
|
||||||
stillValid = false; // just deleted it
|
stillValid = false; // just deleted it
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ struct GlobalPacketId {
|
|||||||
|
|
||||||
bool operator==(const GlobalPacketId &p) const { return node == p.node && id == p.id; }
|
bool operator==(const GlobalPacketId &p) const { return node == p.node && id == p.id; }
|
||||||
|
|
||||||
explicit GlobalPacketId(const MeshPacket *p)
|
explicit GlobalPacketId(const meshtastic_MeshPacket *p)
|
||||||
{
|
{
|
||||||
node = getFrom(p);
|
node = getFrom(p);
|
||||||
id = p->id;
|
id = p->id;
|
||||||
@@ -30,7 +30,7 @@ struct GlobalPacketId {
|
|||||||
* A packet queued for retransmission
|
* A packet queued for retransmission
|
||||||
*/
|
*/
|
||||||
struct PendingPacket {
|
struct PendingPacket {
|
||||||
MeshPacket *packet;
|
meshtastic_MeshPacket *packet;
|
||||||
|
|
||||||
/** The next time we should try to retransmit this packet */
|
/** The next time we should try to retransmit this packet */
|
||||||
uint32_t nextTxMsec = 0;
|
uint32_t nextTxMsec = 0;
|
||||||
@@ -39,7 +39,7 @@ struct PendingPacket {
|
|||||||
uint8_t numRetransmissions = 0;
|
uint8_t numRetransmissions = 0;
|
||||||
|
|
||||||
PendingPacket() {}
|
PendingPacket() {}
|
||||||
explicit PendingPacket(MeshPacket *p);
|
explicit PendingPacket(meshtastic_MeshPacket *p);
|
||||||
};
|
};
|
||||||
|
|
||||||
class GlobalPacketIdHashFunction
|
class GlobalPacketIdHashFunction
|
||||||
@@ -68,7 +68,7 @@ class ReliableRouter : public FloodingRouter
|
|||||||
* later free() the packet to pool. This routine is not allowed to stall.
|
* later free() the packet to pool. This routine is not allowed to stall.
|
||||||
* If the txmit queue is full it might return an error
|
* If the txmit queue is full it might return an error
|
||||||
*/
|
*/
|
||||||
virtual ErrorCode send(MeshPacket *p) override;
|
virtual ErrorCode send(meshtastic_MeshPacket *p) override;
|
||||||
|
|
||||||
/** Do our retransmission handling */
|
/** Do our retransmission handling */
|
||||||
virtual int32_t runOnce() override
|
virtual int32_t runOnce() override
|
||||||
@@ -85,7 +85,7 @@ class ReliableRouter : public FloodingRouter
|
|||||||
/**
|
/**
|
||||||
* Look for acks/naks or someone retransmitting us
|
* Look for acks/naks or someone retransmitting us
|
||||||
*/
|
*/
|
||||||
virtual void sniffReceived(const MeshPacket *p, const Routing *c) override;
|
virtual void sniffReceived(const meshtastic_MeshPacket *p, const meshtastic_Routing *c) override;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Try to find the pending packet record for this ID (or NULL if not found)
|
* Try to find the pending packet record for this ID (or NULL if not found)
|
||||||
@@ -96,12 +96,12 @@ class ReliableRouter : public FloodingRouter
|
|||||||
/**
|
/**
|
||||||
* We hook this method so we can see packets before FloodingRouter says they should be discarded
|
* We hook this method so we can see packets before FloodingRouter says they should be discarded
|
||||||
*/
|
*/
|
||||||
virtual bool shouldFilterReceived(const MeshPacket *p) override;
|
virtual bool shouldFilterReceived(const meshtastic_MeshPacket *p) override;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Add p to the list of packets to retransmit occasionally. We will free it once we stop retransmitting.
|
* Add p to the list of packets to retransmit occasionally. We will free it once we stop retransmitting.
|
||||||
*/
|
*/
|
||||||
PendingPacket *startRetransmission(MeshPacket *p);
|
PendingPacket *startRetransmission(meshtastic_MeshPacket *p);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -35,9 +35,9 @@ extern "C" {
|
|||||||
2) // max number of packets which can be in flight (either queued from reception or queued for sending)
|
2) // max number of packets which can be in flight (either queued from reception or queued for sending)
|
||||||
|
|
||||||
// static MemoryPool<MeshPacket> staticPool(MAX_PACKETS);
|
// static MemoryPool<MeshPacket> staticPool(MAX_PACKETS);
|
||||||
static MemoryDynamic<MeshPacket> staticPool;
|
static MemoryDynamic<meshtastic_MeshPacket> staticPool;
|
||||||
|
|
||||||
Allocator<MeshPacket> &packetPool = staticPool;
|
Allocator<meshtastic_MeshPacket> &packetPool = staticPool;
|
||||||
|
|
||||||
static uint8_t bytes[MAX_RHPACKETLEN];
|
static uint8_t bytes[MAX_RHPACKETLEN];
|
||||||
|
|
||||||
@@ -63,7 +63,7 @@ Router::Router() : concurrency::OSThread("Router"), fromRadioQueue(MAX_RX_FROMRA
|
|||||||
*/
|
*/
|
||||||
int32_t Router::runOnce()
|
int32_t Router::runOnce()
|
||||||
{
|
{
|
||||||
MeshPacket *mp;
|
meshtastic_MeshPacket *mp;
|
||||||
while ((mp = fromRadioQueue.dequeuePtr(0)) != NULL) {
|
while ((mp = fromRadioQueue.dequeuePtr(0)) != NULL) {
|
||||||
// printPacket("handle fromRadioQ", mp);
|
// printPacket("handle fromRadioQ", mp);
|
||||||
perhapsHandleReceived(mp);
|
perhapsHandleReceived(mp);
|
||||||
@@ -77,7 +77,7 @@ int32_t Router::runOnce()
|
|||||||
* RadioInterface calls this to queue up packets that have been received from the radio. The router is now responsible for
|
* RadioInterface calls this to queue up packets that have been received from the radio. The router is now responsible for
|
||||||
* freeing the packet
|
* freeing the packet
|
||||||
*/
|
*/
|
||||||
void Router::enqueueReceivedMessage(MeshPacket *p)
|
void Router::enqueueReceivedMessage(meshtastic_MeshPacket *p)
|
||||||
{
|
{
|
||||||
if (fromRadioQueue.enqueue(p, 0)) { // NOWAIT - fixme, if queue is full, delete older messages
|
if (fromRadioQueue.enqueue(p, 0)) { // NOWAIT - fixme, if queue is full, delete older messages
|
||||||
|
|
||||||
@@ -112,11 +112,11 @@ PacketId generatePacketId()
|
|||||||
return id;
|
return id;
|
||||||
}
|
}
|
||||||
|
|
||||||
MeshPacket *Router::allocForSending()
|
meshtastic_MeshPacket *Router::allocForSending()
|
||||||
{
|
{
|
||||||
MeshPacket *p = packetPool.allocZeroed();
|
meshtastic_MeshPacket *p = packetPool.allocZeroed();
|
||||||
|
|
||||||
p->which_payload_variant = MeshPacket_decoded_tag; // Assume payload is decoded at start.
|
p->which_payload_variant = meshtastic_MeshPacket_decoded_tag; // Assume payload is decoded at start.
|
||||||
p->from = nodeDB.getNodeNum();
|
p->from = nodeDB.getNodeNum();
|
||||||
p->to = NODENUM_BROADCAST;
|
p->to = NODENUM_BROADCAST;
|
||||||
p->hop_limit = (config.lora.hop_limit >= HOP_MAX) ? HOP_MAX : config.lora.hop_limit;
|
p->hop_limit = (config.lora.hop_limit >= HOP_MAX) ? HOP_MAX : config.lora.hop_limit;
|
||||||
@@ -130,12 +130,12 @@ MeshPacket *Router::allocForSending()
|
|||||||
/**
|
/**
|
||||||
* Send an ack or a nak packet back towards whoever sent idFrom
|
* Send an ack or a nak packet back towards whoever sent idFrom
|
||||||
*/
|
*/
|
||||||
void Router::sendAckNak(Routing_Error err, NodeNum to, PacketId idFrom, ChannelIndex chIndex)
|
void Router::sendAckNak(meshtastic_Routing_Error err, NodeNum to, PacketId idFrom, ChannelIndex chIndex)
|
||||||
{
|
{
|
||||||
routingModule->sendAckNak(err, to, idFrom, chIndex);
|
routingModule->sendAckNak(err, to, idFrom, chIndex);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Router::abortSendAndNak(Routing_Error err, MeshPacket *p)
|
void Router::abortSendAndNak(meshtastic_Routing_Error err, meshtastic_MeshPacket *p)
|
||||||
{
|
{
|
||||||
LOG_ERROR("Error=%d, returning NAK and dropping packet.\n", err);
|
LOG_ERROR("Error=%d, returning NAK and dropping packet.\n", err);
|
||||||
sendAckNak(err, getFrom(p), p->id, p->channel);
|
sendAckNak(err, getFrom(p), p->id, p->channel);
|
||||||
@@ -149,12 +149,12 @@ void Router::setReceivedMessage()
|
|||||||
runASAP = true;
|
runASAP = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
QueueStatus Router::getQueueStatus()
|
meshtastic_QueueStatus Router::getQueueStatus()
|
||||||
{
|
{
|
||||||
return iface->getQueueStatus();
|
return iface->getQueueStatus();
|
||||||
}
|
}
|
||||||
|
|
||||||
ErrorCode Router::sendLocal(MeshPacket *p, RxSource src)
|
ErrorCode Router::sendLocal(meshtastic_MeshPacket *p, RxSource src)
|
||||||
{
|
{
|
||||||
// No need to deliver externally if the destination is the local node
|
// No need to deliver externally if the destination is the local node
|
||||||
if (p->to == nodeDB.getNodeNum()) {
|
if (p->to == nodeDB.getNodeNum()) {
|
||||||
@@ -163,7 +163,7 @@ ErrorCode Router::sendLocal(MeshPacket *p, RxSource src)
|
|||||||
return ERRNO_OK;
|
return ERRNO_OK;
|
||||||
} else if (!iface) {
|
} else if (!iface) {
|
||||||
// We must be sending to remote nodes also, fail if no interface found
|
// We must be sending to remote nodes also, fail if no interface found
|
||||||
abortSendAndNak(Routing_Error_NO_INTERFACE, p);
|
abortSendAndNak(meshtastic_Routing_Error_NO_INTERFACE, p);
|
||||||
|
|
||||||
return ERRNO_NO_INTERFACES;
|
return ERRNO_NO_INTERFACES;
|
||||||
} else {
|
} else {
|
||||||
@@ -190,12 +190,12 @@ void printBytes(const char *label, const uint8_t *p, size_t numbytes)
|
|||||||
* later free() the packet to pool. This routine is not allowed to stall.
|
* later free() the packet to pool. This routine is not allowed to stall.
|
||||||
* If the txmit queue is full it might return an error.
|
* If the txmit queue is full it might return an error.
|
||||||
*/
|
*/
|
||||||
ErrorCode Router::send(MeshPacket *p)
|
ErrorCode Router::send(meshtastic_MeshPacket *p)
|
||||||
{
|
{
|
||||||
if (p->to == nodeDB.getNodeNum()) {
|
if (p->to == nodeDB.getNodeNum()) {
|
||||||
LOG_ERROR("BUG! send() called with packet destined for local node!\n");
|
LOG_ERROR("BUG! send() called with packet destined for local node!\n");
|
||||||
packetPool.release(p);
|
packetPool.release(p);
|
||||||
return Routing_Error_BAD_REQUEST;
|
return meshtastic_Routing_Error_BAD_REQUEST;
|
||||||
} // should have already been handled by sendLocal
|
} // should have already been handled by sendLocal
|
||||||
|
|
||||||
// Abort sending if we are violating the duty cycle
|
// Abort sending if we are violating the duty cycle
|
||||||
@@ -204,7 +204,7 @@ ErrorCode Router::send(MeshPacket *p)
|
|||||||
if (hourlyTxPercent > myRegion->dutyCycle) {
|
if (hourlyTxPercent > myRegion->dutyCycle) {
|
||||||
uint8_t silentMinutes = airTime->getSilentMinutes(hourlyTxPercent, myRegion->dutyCycle);
|
uint8_t silentMinutes = airTime->getSilentMinutes(hourlyTxPercent, myRegion->dutyCycle);
|
||||||
LOG_WARN("Duty cycle limit exceeded. Aborting send for now, you can send again in %d minutes.\n", silentMinutes);
|
LOG_WARN("Duty cycle limit exceeded. Aborting send for now, you can send again in %d minutes.\n", silentMinutes);
|
||||||
Routing_Error err = Routing_Error_DUTY_CYCLE_LIMIT;
|
meshtastic_Routing_Error err = meshtastic_Routing_Error_DUTY_CYCLE_LIMIT;
|
||||||
if (getFrom(p) == nodeDB.getNodeNum()) { // only send NAK to API, not to the mesh
|
if (getFrom(p) == nodeDB.getNodeNum()) { // only send NAK to API, not to the mesh
|
||||||
abortSendAndNak(err, p);
|
abortSendAndNak(err, p);
|
||||||
} else {
|
} else {
|
||||||
@@ -228,11 +228,11 @@ ErrorCode Router::send(MeshPacket *p)
|
|||||||
|
|
||||||
// If the packet hasn't yet been encrypted, do so now (it might already be encrypted if we are just forwarding it)
|
// If the packet hasn't yet been encrypted, do so now (it might already be encrypted if we are just forwarding it)
|
||||||
|
|
||||||
assert(p->which_payload_variant == MeshPacket_encrypted_tag ||
|
assert(p->which_payload_variant == meshtastic_MeshPacket_encrypted_tag ||
|
||||||
p->which_payload_variant == MeshPacket_decoded_tag); // I _think_ all packets should have a payload by now
|
p->which_payload_variant == meshtastic_MeshPacket_decoded_tag); // I _think_ all packets should have a payload by now
|
||||||
|
|
||||||
// If the packet is not yet encrypted, do so now
|
// If the packet is not yet encrypted, do so now
|
||||||
if (p->which_payload_variant == MeshPacket_decoded_tag) {
|
if (p->which_payload_variant == meshtastic_MeshPacket_decoded_tag) {
|
||||||
ChannelIndex chIndex = p->channel; // keep as a local because we are about to change it
|
ChannelIndex chIndex = p->channel; // keep as a local because we are about to change it
|
||||||
|
|
||||||
bool shouldActuallyEncrypt = true;
|
bool shouldActuallyEncrypt = true;
|
||||||
@@ -264,7 +264,7 @@ ErrorCode Router::send(MeshPacket *p)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
auto encodeResult = perhapsEncode(p);
|
auto encodeResult = perhapsEncode(p);
|
||||||
if (encodeResult != Routing_Error_NONE) {
|
if (encodeResult != meshtastic_Routing_Error_NONE) {
|
||||||
abortSendAndNak(encodeResult, p);
|
abortSendAndNak(encodeResult, p);
|
||||||
return encodeResult; // FIXME - this isn't a valid ErrorCode
|
return encodeResult; // FIXME - this isn't a valid ErrorCode
|
||||||
}
|
}
|
||||||
@@ -293,17 +293,17 @@ bool Router::cancelSending(NodeNum from, PacketId id)
|
|||||||
* Every (non duplicate) packet this node receives will be passed through this method. This allows subclasses to
|
* Every (non duplicate) packet this node receives will be passed through this method. This allows subclasses to
|
||||||
* update routing tables etc... based on what we overhear (even for messages not destined to our node)
|
* update routing tables etc... based on what we overhear (even for messages not destined to our node)
|
||||||
*/
|
*/
|
||||||
void Router::sniffReceived(const MeshPacket *p, const Routing *c)
|
void Router::sniffReceived(const meshtastic_MeshPacket *p, const meshtastic_Routing *c)
|
||||||
{
|
{
|
||||||
// FIXME, update nodedb here for any packet that passes through us
|
// FIXME, update nodedb here for any packet that passes through us
|
||||||
}
|
}
|
||||||
|
|
||||||
bool perhapsDecode(MeshPacket *p)
|
bool perhapsDecode(meshtastic_MeshPacket *p)
|
||||||
{
|
{
|
||||||
|
|
||||||
// LOG_DEBUG("\n\n** perhapsDecode payloadVariant - %d\n\n", p->which_payloadVariant);
|
// LOG_DEBUG("\n\n** perhapsDecode payloadVariant - %d\n\n", p->which_payloadVariant);
|
||||||
|
|
||||||
if (p->which_payload_variant == MeshPacket_decoded_tag)
|
if (p->which_payload_variant == meshtastic_MeshPacket_decoded_tag)
|
||||||
return true; // If packet was already decoded just return
|
return true; // If packet was already decoded just return
|
||||||
|
|
||||||
// assert(p->which_payloadVariant == MeshPacket_encrypted_tag);
|
// assert(p->which_payloadVariant == MeshPacket_encrypted_tag);
|
||||||
@@ -323,20 +323,20 @@ bool perhapsDecode(MeshPacket *p)
|
|||||||
|
|
||||||
// Take those raw bytes and convert them back into a well structured protobuf we can understand
|
// Take those raw bytes and convert them back into a well structured protobuf we can understand
|
||||||
memset(&p->decoded, 0, sizeof(p->decoded));
|
memset(&p->decoded, 0, sizeof(p->decoded));
|
||||||
if (!pb_decode_from_bytes(bytes, rawSize, &Data_msg, &p->decoded)) {
|
if (!pb_decode_from_bytes(bytes, rawSize, &meshtastic_Data_msg, &p->decoded)) {
|
||||||
LOG_ERROR("Invalid protobufs in received mesh packet (bad psk?)!\n");
|
LOG_ERROR("Invalid protobufs in received mesh packet (bad psk?)!\n");
|
||||||
} else if (p->decoded.portnum == PortNum_UNKNOWN_APP) {
|
} else if (p->decoded.portnum == meshtastic_PortNum_UNKNOWN_APP) {
|
||||||
LOG_ERROR("Invalid portnum (bad psk?)!\n");
|
LOG_ERROR("Invalid portnum (bad psk?)!\n");
|
||||||
} else {
|
} else {
|
||||||
// parsing was successful
|
// parsing was successful
|
||||||
p->which_payload_variant = MeshPacket_decoded_tag; // change type to decoded
|
p->which_payload_variant = meshtastic_MeshPacket_decoded_tag; // change type to decoded
|
||||||
p->channel = chIndex; // change to store the index instead of the hash
|
p->channel = chIndex; // change to store the index instead of the hash
|
||||||
|
|
||||||
// Decompress if needed. jm
|
// Decompress if needed. jm
|
||||||
if (p->decoded.portnum == PortNum_TEXT_MESSAGE_COMPRESSED_APP) {
|
if (p->decoded.portnum == meshtastic_PortNum_TEXT_MESSAGE_COMPRESSED_APP) {
|
||||||
// Decompress the payload
|
// Decompress the payload
|
||||||
char compressed_in[Constants_DATA_PAYLOAD_LEN] = {};
|
char compressed_in[meshtastic_Constants_DATA_PAYLOAD_LEN] = {};
|
||||||
char decompressed_out[Constants_DATA_PAYLOAD_LEN] = {};
|
char decompressed_out[meshtastic_Constants_DATA_PAYLOAD_LEN] = {};
|
||||||
int decompressed_len;
|
int decompressed_len;
|
||||||
|
|
||||||
memcpy(compressed_in, p->decoded.payload.bytes, p->decoded.payload.size);
|
memcpy(compressed_in, p->decoded.payload.bytes, p->decoded.payload.size);
|
||||||
@@ -348,7 +348,7 @@ bool perhapsDecode(MeshPacket *p)
|
|||||||
memcpy(p->decoded.payload.bytes, decompressed_out, decompressed_len);
|
memcpy(p->decoded.payload.bytes, decompressed_out, decompressed_len);
|
||||||
|
|
||||||
// Switch the port from PortNum_TEXT_MESSAGE_COMPRESSED_APP to PortNum_TEXT_MESSAGE_APP
|
// Switch the port from PortNum_TEXT_MESSAGE_COMPRESSED_APP to PortNum_TEXT_MESSAGE_APP
|
||||||
p->decoded.portnum = PortNum_TEXT_MESSAGE_APP;
|
p->decoded.portnum = meshtastic_PortNum_TEXT_MESSAGE_APP;
|
||||||
}
|
}
|
||||||
|
|
||||||
printPacket("decoded message", p);
|
printPacket("decoded message", p);
|
||||||
@@ -363,21 +363,21 @@ bool perhapsDecode(MeshPacket *p)
|
|||||||
|
|
||||||
/** Return 0 for success or a Routing_Errror code for failure
|
/** Return 0 for success or a Routing_Errror code for failure
|
||||||
*/
|
*/
|
||||||
Routing_Error perhapsEncode(MeshPacket *p)
|
meshtastic_Routing_Error perhapsEncode(meshtastic_MeshPacket *p)
|
||||||
{
|
{
|
||||||
// If the packet is not yet encrypted, do so now
|
// If the packet is not yet encrypted, do so now
|
||||||
if (p->which_payload_variant == MeshPacket_decoded_tag) {
|
if (p->which_payload_variant == meshtastic_MeshPacket_decoded_tag) {
|
||||||
|
|
||||||
size_t numbytes = pb_encode_to_bytes(bytes, sizeof(bytes), &Data_msg, &p->decoded);
|
size_t numbytes = pb_encode_to_bytes(bytes, sizeof(bytes), &meshtastic_Data_msg, &p->decoded);
|
||||||
|
|
||||||
// Only allow encryption on the text message app.
|
// Only allow encryption on the text message app.
|
||||||
// TODO: Allow modules to opt into compression.
|
// TODO: Allow modules to opt into compression.
|
||||||
if (p->decoded.portnum == PortNum_TEXT_MESSAGE_APP) {
|
if (p->decoded.portnum == meshtastic_PortNum_TEXT_MESSAGE_APP) {
|
||||||
|
|
||||||
char original_payload[Constants_DATA_PAYLOAD_LEN];
|
char original_payload[meshtastic_Constants_DATA_PAYLOAD_LEN];
|
||||||
memcpy(original_payload, p->decoded.payload.bytes, p->decoded.payload.size);
|
memcpy(original_payload, p->decoded.payload.bytes, p->decoded.payload.size);
|
||||||
|
|
||||||
char compressed_out[Constants_DATA_PAYLOAD_LEN] = {0};
|
char compressed_out[meshtastic_Constants_DATA_PAYLOAD_LEN] = {0};
|
||||||
|
|
||||||
int compressed_len;
|
int compressed_len;
|
||||||
compressed_len = unishox2_compress_simple(original_payload, p->decoded.payload.size, compressed_out);
|
compressed_len = unishox2_compress_simple(original_payload, p->decoded.payload.size, compressed_out);
|
||||||
@@ -401,12 +401,12 @@ Routing_Error perhapsEncode(MeshPacket *p)
|
|||||||
p->decoded.payload.size = compressed_len;
|
p->decoded.payload.size = compressed_len;
|
||||||
memcpy(p->decoded.payload.bytes, compressed_out, compressed_len);
|
memcpy(p->decoded.payload.bytes, compressed_out, compressed_len);
|
||||||
|
|
||||||
p->decoded.portnum = PortNum_TEXT_MESSAGE_COMPRESSED_APP;
|
p->decoded.portnum = meshtastic_PortNum_TEXT_MESSAGE_COMPRESSED_APP;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (numbytes > MAX_RHPACKETLEN)
|
if (numbytes > MAX_RHPACKETLEN)
|
||||||
return Routing_Error_TOO_LARGE;
|
return meshtastic_Routing_Error_TOO_LARGE;
|
||||||
|
|
||||||
// printBytes("plaintext", bytes, numbytes);
|
// printBytes("plaintext", bytes, numbytes);
|
||||||
|
|
||||||
@@ -414,7 +414,7 @@ Routing_Error perhapsEncode(MeshPacket *p)
|
|||||||
auto hash = channels.setActiveByIndex(chIndex);
|
auto hash = channels.setActiveByIndex(chIndex);
|
||||||
if (hash < 0)
|
if (hash < 0)
|
||||||
// No suitable channel could be found for sending
|
// No suitable channel could be found for sending
|
||||||
return Routing_Error_NO_CHANNEL;
|
return meshtastic_Routing_Error_NO_CHANNEL;
|
||||||
|
|
||||||
// Now that we are encrypting the packet channel should be the hash (no longer the index)
|
// Now that we are encrypting the packet channel should be the hash (no longer the index)
|
||||||
p->channel = hash;
|
p->channel = hash;
|
||||||
@@ -423,10 +423,10 @@ Routing_Error perhapsEncode(MeshPacket *p)
|
|||||||
// Copy back into the packet and set the variant type
|
// Copy back into the packet and set the variant type
|
||||||
memcpy(p->encrypted.bytes, bytes, numbytes);
|
memcpy(p->encrypted.bytes, bytes, numbytes);
|
||||||
p->encrypted.size = numbytes;
|
p->encrypted.size = numbytes;
|
||||||
p->which_payload_variant = MeshPacket_encrypted_tag;
|
p->which_payload_variant = meshtastic_MeshPacket_encrypted_tag;
|
||||||
}
|
}
|
||||||
|
|
||||||
return Routing_Error_NONE;
|
return meshtastic_Routing_Error_NONE;
|
||||||
}
|
}
|
||||||
|
|
||||||
NodeNum Router::getNodeNum()
|
NodeNum Router::getNodeNum()
|
||||||
@@ -438,7 +438,7 @@ NodeNum Router::getNodeNum()
|
|||||||
* Handle any packet that is received by an interface on this node.
|
* Handle any packet that is received by an interface on this node.
|
||||||
* Note: some packets may merely being passed through this node and will be forwarded elsewhere.
|
* Note: some packets may merely being passed through this node and will be forwarded elsewhere.
|
||||||
*/
|
*/
|
||||||
void Router::handleReceived(MeshPacket *p, RxSource src)
|
void Router::handleReceived(meshtastic_MeshPacket *p, RxSource src)
|
||||||
{
|
{
|
||||||
// Also, we should set the time from the ISR and it should have msec level resolution
|
// Also, we should set the time from the ISR and it should have msec level resolution
|
||||||
p->rx_time = getValidTime(RTCQualityFromNet); // store the arrival timestamp for the phone
|
p->rx_time = getValidTime(RTCQualityFromNet); // store the arrival timestamp for the phone
|
||||||
@@ -461,7 +461,7 @@ void Router::handleReceived(MeshPacket *p, RxSource src)
|
|||||||
MeshModule::callPlugins(*p, src);
|
MeshModule::callPlugins(*p, src);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Router::perhapsHandleReceived(MeshPacket *p)
|
void Router::perhapsHandleReceived(meshtastic_MeshPacket *p)
|
||||||
{
|
{
|
||||||
// assert(radioConfig.has_preferences);
|
// assert(radioConfig.has_preferences);
|
||||||
bool ignore = is_in_repeated(config.lora.ignore_incoming, p->from);
|
bool ignore = is_in_repeated(config.lora.ignore_incoming, p->from);
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ class Router : protected concurrency::OSThread
|
|||||||
private:
|
private:
|
||||||
/// Packets which have just arrived from the radio, ready to be processed by this service and possibly
|
/// Packets which have just arrived from the radio, ready to be processed by this service and possibly
|
||||||
/// forwarded to the phone.
|
/// forwarded to the phone.
|
||||||
PointerQueue<MeshPacket> fromRadioQueue;
|
PointerQueue<meshtastic_MeshPacket> fromRadioQueue;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
RadioInterface *iface = NULL;
|
RadioInterface *iface = NULL;
|
||||||
@@ -45,7 +45,7 @@ class Router : protected concurrency::OSThread
|
|||||||
*
|
*
|
||||||
* NOTE: This method will free the provided packet (even if we return an error code)
|
* NOTE: This method will free the provided packet (even if we return an error code)
|
||||||
*/
|
*/
|
||||||
ErrorCode sendLocal(MeshPacket *p, RxSource src = RX_SRC_RADIO);
|
ErrorCode sendLocal(meshtastic_MeshPacket *p, RxSource src = RX_SRC_RADIO);
|
||||||
|
|
||||||
/** Attempt to cancel a previously sent packet. Returns true if a packet was found we could cancel */
|
/** Attempt to cancel a previously sent packet. Returns true if a packet was found we could cancel */
|
||||||
bool cancelSending(NodeNum from, PacketId id);
|
bool cancelSending(NodeNum from, PacketId id);
|
||||||
@@ -53,10 +53,10 @@ class Router : protected concurrency::OSThread
|
|||||||
/** Allocate and return a meshpacket which defaults as send to broadcast from the current node.
|
/** Allocate and return a meshpacket which defaults as send to broadcast from the current node.
|
||||||
* The returned packet is guaranteed to have a unique packet ID already assigned
|
* The returned packet is guaranteed to have a unique packet ID already assigned
|
||||||
*/
|
*/
|
||||||
MeshPacket *allocForSending();
|
meshtastic_MeshPacket *allocForSending();
|
||||||
|
|
||||||
/** Return Underlying interface's TX queue status */
|
/** Return Underlying interface's TX queue status */
|
||||||
QueueStatus getQueueStatus();
|
meshtastic_QueueStatus getQueueStatus();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return our local nodenum */
|
* @return our local nodenum */
|
||||||
@@ -71,7 +71,7 @@ class Router : protected concurrency::OSThread
|
|||||||
* RadioInterface calls this to queue up packets that have been received from the radio. The router is now responsible for
|
* RadioInterface calls this to queue up packets that have been received from the radio. The router is now responsible for
|
||||||
* freeing the packet
|
* freeing the packet
|
||||||
*/
|
*/
|
||||||
void enqueueReceivedMessage(MeshPacket *p);
|
void enqueueReceivedMessage(meshtastic_MeshPacket *p);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
friend class RoutingModule;
|
friend class RoutingModule;
|
||||||
@@ -83,7 +83,7 @@ class Router : protected concurrency::OSThread
|
|||||||
*
|
*
|
||||||
* NOTE: This method will free the provided packet (even if we return an error code)
|
* NOTE: This method will free the provided packet (even if we return an error code)
|
||||||
*/
|
*/
|
||||||
virtual ErrorCode send(MeshPacket *p);
|
virtual ErrorCode send(meshtastic_MeshPacket *p);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Should this incoming filter be dropped?
|
* Should this incoming filter be dropped?
|
||||||
@@ -93,18 +93,18 @@ class Router : protected concurrency::OSThread
|
|||||||
* Called immedately on receiption, before any further processing.
|
* Called immedately on receiption, before any further processing.
|
||||||
* @return true to abandon the packet
|
* @return true to abandon the packet
|
||||||
*/
|
*/
|
||||||
virtual bool shouldFilterReceived(const MeshPacket *p) { return false; }
|
virtual bool shouldFilterReceived(const meshtastic_MeshPacket *p) { return false; }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Every (non duplicate) packet this node receives will be passed through this method. This allows subclasses to
|
* Every (non duplicate) packet this node receives will be passed through this method. This allows subclasses to
|
||||||
* update routing tables etc... based on what we overhear (even for messages not destined to our node)
|
* update routing tables etc... based on what we overhear (even for messages not destined to our node)
|
||||||
*/
|
*/
|
||||||
virtual void sniffReceived(const MeshPacket *p, const Routing *c);
|
virtual void sniffReceived(const meshtastic_MeshPacket *p, const meshtastic_Routing *c);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Send an ack or a nak packet back towards whoever sent idFrom
|
* Send an ack or a nak packet back towards whoever sent idFrom
|
||||||
*/
|
*/
|
||||||
void sendAckNak(Routing_Error err, NodeNum to, PacketId idFrom, ChannelIndex chIndex);
|
void sendAckNak(meshtastic_Routing_Error err, NodeNum to, PacketId idFrom, ChannelIndex chIndex);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
/**
|
/**
|
||||||
@@ -115,7 +115,7 @@ class Router : protected concurrency::OSThread
|
|||||||
* Note: this packet will never be called for messages sent/generated by this node.
|
* Note: this packet will never be called for messages sent/generated by this node.
|
||||||
* Note: this method will free the provided packet.
|
* Note: this method will free the provided packet.
|
||||||
*/
|
*/
|
||||||
void perhapsHandleReceived(MeshPacket *p);
|
void perhapsHandleReceived(meshtastic_MeshPacket *p);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Called from perhapsHandleReceived() - allows subclass message delivery behavior.
|
* Called from perhapsHandleReceived() - allows subclass message delivery behavior.
|
||||||
@@ -125,10 +125,10 @@ class Router : protected concurrency::OSThread
|
|||||||
* Note: this packet will never be called for messages sent/generated by this node.
|
* Note: this packet will never be called for messages sent/generated by this node.
|
||||||
* Note: this method will free the provided packet.
|
* Note: this method will free the provided packet.
|
||||||
*/
|
*/
|
||||||
void handleReceived(MeshPacket *p, RxSource src = RX_SRC_RADIO);
|
void handleReceived(meshtastic_MeshPacket *p, RxSource src = RX_SRC_RADIO);
|
||||||
|
|
||||||
/** Frees the provided packet, and generates a NAK indicating the speicifed error while sending */
|
/** Frees the provided packet, and generates a NAK indicating the speicifed error while sending */
|
||||||
void abortSendAndNak(Routing_Error err, MeshPacket *p);
|
void abortSendAndNak(meshtastic_Routing_Error err, meshtastic_MeshPacket *p);
|
||||||
};
|
};
|
||||||
|
|
||||||
/** FIXME - move this into a mesh packet class
|
/** FIXME - move this into a mesh packet class
|
||||||
@@ -136,11 +136,11 @@ class Router : protected concurrency::OSThread
|
|||||||
*
|
*
|
||||||
* @return true for success, false for corrupt packet.
|
* @return true for success, false for corrupt packet.
|
||||||
*/
|
*/
|
||||||
bool perhapsDecode(MeshPacket *p);
|
bool perhapsDecode(meshtastic_MeshPacket *p);
|
||||||
|
|
||||||
/** Return 0 for success or a Routing_Errror code for failure
|
/** Return 0 for success or a Routing_Errror code for failure
|
||||||
*/
|
*/
|
||||||
Routing_Error perhapsEncode(MeshPacket *p);
|
meshtastic_Routing_Error perhapsEncode(meshtastic_MeshPacket *p);
|
||||||
|
|
||||||
extern Router *router;
|
extern Router *router;
|
||||||
|
|
||||||
|
|||||||
@@ -115,15 +115,15 @@ template <typename T> bool SX126xInterface<T>::reconfigure()
|
|||||||
// configure publicly accessible settings
|
// configure publicly accessible settings
|
||||||
int err = lora.setSpreadingFactor(sf);
|
int err = lora.setSpreadingFactor(sf);
|
||||||
if (err != RADIOLIB_ERR_NONE)
|
if (err != RADIOLIB_ERR_NONE)
|
||||||
RECORD_CRITICALERROR(CriticalErrorCode_INVALID_RADIO_SETTING);
|
RECORD_CRITICALERROR(meshtastic_CriticalErrorCode_INVALID_RADIO_SETTING);
|
||||||
|
|
||||||
err = lora.setBandwidth(bw);
|
err = lora.setBandwidth(bw);
|
||||||
if (err != RADIOLIB_ERR_NONE)
|
if (err != RADIOLIB_ERR_NONE)
|
||||||
RECORD_CRITICALERROR(CriticalErrorCode_INVALID_RADIO_SETTING);
|
RECORD_CRITICALERROR(meshtastic_CriticalErrorCode_INVALID_RADIO_SETTING);
|
||||||
|
|
||||||
err = lora.setCodingRate(cr);
|
err = lora.setCodingRate(cr);
|
||||||
if (err != RADIOLIB_ERR_NONE)
|
if (err != RADIOLIB_ERR_NONE)
|
||||||
RECORD_CRITICALERROR(CriticalErrorCode_INVALID_RADIO_SETTING);
|
RECORD_CRITICALERROR(meshtastic_CriticalErrorCode_INVALID_RADIO_SETTING);
|
||||||
|
|
||||||
// Hmm - seems to lower SNR when the signal levels are high. Leaving off for now...
|
// Hmm - seems to lower SNR when the signal levels are high. Leaving off for now...
|
||||||
// TODO: Confirm gain registers are okay now
|
// TODO: Confirm gain registers are okay now
|
||||||
@@ -141,7 +141,7 @@ template <typename T> bool SX126xInterface<T>::reconfigure()
|
|||||||
|
|
||||||
err = lora.setFrequency(getFreq());
|
err = lora.setFrequency(getFreq());
|
||||||
if (err != RADIOLIB_ERR_NONE)
|
if (err != RADIOLIB_ERR_NONE)
|
||||||
RECORD_CRITICALERROR(CriticalErrorCode_INVALID_RADIO_SETTING);
|
RECORD_CRITICALERROR(meshtastic_CriticalErrorCode_INVALID_RADIO_SETTING);
|
||||||
|
|
||||||
if (power > SX126X_MAX_POWER) // This chip has lower power limits than some
|
if (power > SX126X_MAX_POWER) // This chip has lower power limits than some
|
||||||
power = SX126X_MAX_POWER;
|
power = SX126X_MAX_POWER;
|
||||||
@@ -185,7 +185,7 @@ template <typename T> void SX126xInterface<T>::setStandby()
|
|||||||
/**
|
/**
|
||||||
* Add SNR data to received messages
|
* Add SNR data to received messages
|
||||||
*/
|
*/
|
||||||
template <typename T> void SX126xInterface<T>::addReceiveMetadata(MeshPacket *mp)
|
template <typename T> void SX126xInterface<T>::addReceiveMetadata(meshtastic_MeshPacket *mp)
|
||||||
{
|
{
|
||||||
// LOG_DEBUG("PacketStatus %x\n", lora.getPacketStatus());
|
// LOG_DEBUG("PacketStatus %x\n", lora.getPacketStatus());
|
||||||
mp->rx_snr = lora.getSNR();
|
mp->rx_snr = lora.getSNR();
|
||||||
|
|||||||
@@ -63,7 +63,7 @@ template <class T> class SX126xInterface : public RadioLibInterface
|
|||||||
/**
|
/**
|
||||||
* Add SNR data to received messages
|
* Add SNR data to received messages
|
||||||
*/
|
*/
|
||||||
virtual void addReceiveMetadata(MeshPacket *mp) override;
|
virtual void addReceiveMetadata(meshtastic_MeshPacket *mp) override;
|
||||||
|
|
||||||
virtual void setStandby() override;
|
virtual void setStandby() override;
|
||||||
|
|
||||||
|
|||||||
@@ -55,9 +55,9 @@ template <typename T> bool SX128xInterface<T>::init()
|
|||||||
// \todo Display actual typename of the adapter, not just `SX128x`
|
// \todo Display actual typename of the adapter, not just `SX128x`
|
||||||
LOG_INFO("SX128x init result %d\n", res);
|
LOG_INFO("SX128x init result %d\n", res);
|
||||||
|
|
||||||
if ((config.lora.region != Config_LoRaConfig_RegionCode_LORA_24) && (res == RADIOLIB_ERR_INVALID_FREQUENCY)) {
|
if ((config.lora.region != meshtastic_Config_LoRaConfig_RegionCode_LORA_24) && (res == RADIOLIB_ERR_INVALID_FREQUENCY)) {
|
||||||
LOG_WARN("Radio chip only supports 2.4GHz LoRa. Adjusting Region and rebooting.\n");
|
LOG_WARN("Radio chip only supports 2.4GHz LoRa. Adjusting Region and rebooting.\n");
|
||||||
config.lora.region = Config_LoRaConfig_RegionCode_LORA_24;
|
config.lora.region = meshtastic_Config_LoRaConfig_RegionCode_LORA_24;
|
||||||
nodeDB.saveToDisk(SEGMENT_CONFIG);
|
nodeDB.saveToDisk(SEGMENT_CONFIG);
|
||||||
delay(2000);
|
delay(2000);
|
||||||
#if defined(ARCH_ESP32)
|
#if defined(ARCH_ESP32)
|
||||||
@@ -92,15 +92,15 @@ template <typename T> bool SX128xInterface<T>::reconfigure()
|
|||||||
// configure publicly accessible settings
|
// configure publicly accessible settings
|
||||||
int err = lora.setSpreadingFactor(sf);
|
int err = lora.setSpreadingFactor(sf);
|
||||||
if (err != RADIOLIB_ERR_NONE)
|
if (err != RADIOLIB_ERR_NONE)
|
||||||
RECORD_CRITICALERROR(CriticalErrorCode_INVALID_RADIO_SETTING);
|
RECORD_CRITICALERROR(meshtastic_CriticalErrorCode_INVALID_RADIO_SETTING);
|
||||||
|
|
||||||
err = lora.setBandwidth(bw);
|
err = lora.setBandwidth(bw);
|
||||||
if (err != RADIOLIB_ERR_NONE)
|
if (err != RADIOLIB_ERR_NONE)
|
||||||
RECORD_CRITICALERROR(CriticalErrorCode_INVALID_RADIO_SETTING);
|
RECORD_CRITICALERROR(meshtastic_CriticalErrorCode_INVALID_RADIO_SETTING);
|
||||||
|
|
||||||
err = lora.setCodingRate(cr);
|
err = lora.setCodingRate(cr);
|
||||||
if (err != RADIOLIB_ERR_NONE)
|
if (err != RADIOLIB_ERR_NONE)
|
||||||
RECORD_CRITICALERROR(CriticalErrorCode_INVALID_RADIO_SETTING);
|
RECORD_CRITICALERROR(meshtastic_CriticalErrorCode_INVALID_RADIO_SETTING);
|
||||||
|
|
||||||
// Hmm - seems to lower SNR when the signal levels are high. Leaving off for now...
|
// Hmm - seems to lower SNR when the signal levels are high. Leaving off for now...
|
||||||
// TODO: Confirm gain registers are okay now
|
// TODO: Confirm gain registers are okay now
|
||||||
@@ -115,7 +115,7 @@ template <typename T> bool SX128xInterface<T>::reconfigure()
|
|||||||
|
|
||||||
err = lora.setFrequency(getFreq());
|
err = lora.setFrequency(getFreq());
|
||||||
if (err != RADIOLIB_ERR_NONE)
|
if (err != RADIOLIB_ERR_NONE)
|
||||||
RECORD_CRITICALERROR(CriticalErrorCode_INVALID_RADIO_SETTING);
|
RECORD_CRITICALERROR(meshtastic_CriticalErrorCode_INVALID_RADIO_SETTING);
|
||||||
|
|
||||||
if (power > SX128X_MAX_POWER) // This chip has lower power limits than some
|
if (power > SX128X_MAX_POWER) // This chip has lower power limits than some
|
||||||
power = SX128X_MAX_POWER;
|
power = SX128X_MAX_POWER;
|
||||||
@@ -164,7 +164,7 @@ template <typename T> void SX128xInterface<T>::setStandby()
|
|||||||
/**
|
/**
|
||||||
* Add SNR data to received messages
|
* Add SNR data to received messages
|
||||||
*/
|
*/
|
||||||
template <typename T> void SX128xInterface<T>::addReceiveMetadata(MeshPacket *mp)
|
template <typename T> void SX128xInterface<T>::addReceiveMetadata(meshtastic_MeshPacket *mp)
|
||||||
{
|
{
|
||||||
// LOG_DEBUG("PacketStatus %x\n", lora.getPacketStatus());
|
// LOG_DEBUG("PacketStatus %x\n", lora.getPacketStatus());
|
||||||
mp->rx_snr = lora.getSNR();
|
mp->rx_snr = lora.getSNR();
|
||||||
|
|||||||
@@ -63,7 +63,7 @@ template <class T> class SX128xInterface : public RadioLibInterface
|
|||||||
/**
|
/**
|
||||||
* Add SNR data to received messages
|
* Add SNR data to received messages
|
||||||
*/
|
*/
|
||||||
virtual void addReceiveMetadata(MeshPacket *mp) override;
|
virtual void addReceiveMetadata(meshtastic_MeshPacket *mp) override;
|
||||||
|
|
||||||
virtual void setStandby() override;
|
virtual void setStandby() override;
|
||||||
|
|
||||||
|
|||||||
@@ -9,29 +9,29 @@
|
|||||||
class SinglePortModule : public MeshModule
|
class SinglePortModule : public MeshModule
|
||||||
{
|
{
|
||||||
protected:
|
protected:
|
||||||
PortNum ourPortNum;
|
meshtastic_PortNum ourPortNum;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
/** Constructor
|
/** Constructor
|
||||||
* name is for debugging output
|
* name is for debugging output
|
||||||
*/
|
*/
|
||||||
SinglePortModule(const char *_name, PortNum _ourPortNum) : MeshModule(_name), ourPortNum(_ourPortNum) {}
|
SinglePortModule(const char *_name, meshtastic_PortNum _ourPortNum) : MeshModule(_name), ourPortNum(_ourPortNum) {}
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
/**
|
/**
|
||||||
* @return true if you want to receive the specified portnum
|
* @return true if you want to receive the specified portnum
|
||||||
*/
|
*/
|
||||||
virtual bool wantPacket(const MeshPacket *p) override { return p->decoded.portnum == ourPortNum; }
|
virtual bool wantPacket(const meshtastic_MeshPacket *p) override { return p->decoded.portnum == ourPortNum; }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return a mesh packet which has been preinited as a data packet with a particular port number.
|
* Return a mesh packet which has been preinited as a data packet with a particular port number.
|
||||||
* You can then send this packet (after customizing any of the payload fields you might need) with
|
* You can then send this packet (after customizing any of the payload fields you might need) with
|
||||||
* service.sendToMesh()
|
* service.sendToMesh()
|
||||||
*/
|
*/
|
||||||
MeshPacket *allocDataPacket()
|
meshtastic_MeshPacket *allocDataPacket()
|
||||||
{
|
{
|
||||||
// Update our local node info with our position (even if we don't decide to update anyone else)
|
// Update our local node info with our position (even if we don't decide to update anyone else)
|
||||||
MeshPacket *p = router->allocForSending();
|
meshtastic_MeshPacket *p = router->allocForSending();
|
||||||
p->decoded.portnum = ourPortNum;
|
p->decoded.portnum = ourPortNum;
|
||||||
|
|
||||||
return p;
|
return p;
|
||||||
|
|||||||
@@ -112,11 +112,11 @@ void StreamAPI::emitRebooted()
|
|||||||
{
|
{
|
||||||
// In case we send a FromRadio packet
|
// In case we send a FromRadio packet
|
||||||
memset(&fromRadioScratch, 0, sizeof(fromRadioScratch));
|
memset(&fromRadioScratch, 0, sizeof(fromRadioScratch));
|
||||||
fromRadioScratch.which_payload_variant = FromRadio_rebooted_tag;
|
fromRadioScratch.which_payload_variant = meshtastic_FromRadio_rebooted_tag;
|
||||||
fromRadioScratch.rebooted = true;
|
fromRadioScratch.rebooted = true;
|
||||||
|
|
||||||
// LOG_DEBUG("Emitting reboot packet for serial shell\n");
|
// LOG_DEBUG("Emitting reboot packet for serial shell\n");
|
||||||
emitTxBuffer(pb_encode_to_bytes(txBuf + HEADER_LEN, FromRadio_size, &FromRadio_msg, &fromRadioScratch));
|
emitTxBuffer(pb_encode_to_bytes(txBuf + HEADER_LEN, meshtastic_FromRadio_size, &meshtastic_FromRadio_msg, &fromRadioScratch));
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Hookable to find out when connection changes
|
/// Hookable to find out when connection changes
|
||||||
|
|||||||
@@ -96,10 +96,10 @@ bool initEthernet()
|
|||||||
getMacAddr(mac); // FIXME use the BLE MAC for now...
|
getMacAddr(mac); // FIXME use the BLE MAC for now...
|
||||||
mac[0] &= 0xfe; // Make sure this is not a multicast MAC
|
mac[0] &= 0xfe; // Make sure this is not a multicast MAC
|
||||||
|
|
||||||
if (config.network.address_mode == Config_NetworkConfig_AddressMode_DHCP) {
|
if (config.network.address_mode == meshtastic_Config_NetworkConfig_AddressMode_DHCP) {
|
||||||
LOG_INFO("starting Ethernet DHCP\n");
|
LOG_INFO("starting Ethernet DHCP\n");
|
||||||
status = Ethernet.begin(mac);
|
status = Ethernet.begin(mac);
|
||||||
} else if (config.network.address_mode == Config_NetworkConfig_AddressMode_STATIC) {
|
} else if (config.network.address_mode == meshtastic_Config_NetworkConfig_AddressMode_STATIC) {
|
||||||
LOG_INFO("starting Ethernet Static\n");
|
LOG_INFO("starting Ethernet Static\n");
|
||||||
Ethernet.begin(mac, config.network.ipv4_config.ip, config.network.ipv4_config.dns, config.network.ipv4_config.subnet);
|
Ethernet.begin(mac, config.network.ipv4_config.ip, config.network.ipv4_config.dns, config.network.ipv4_config.subnet);
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -1,12 +1,12 @@
|
|||||||
/* Automatically generated nanopb constant definitions */
|
/* Automatically generated nanopb constant definitions */
|
||||||
/* Generated by nanopb-0.4.7 */
|
/* Generated by nanopb-0.4.7 */
|
||||||
|
|
||||||
#include "./admin.pb.h"
|
#include "meshtastic/admin.pb.h"
|
||||||
#if PB_PROTO_HEADER_VERSION != 40
|
#if PB_PROTO_HEADER_VERSION != 40
|
||||||
#error Regenerate this file with the current version of nanopb generator.
|
#error Regenerate this file with the current version of nanopb generator.
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
PB_BIND(AdminMessage, AdminMessage, 2)
|
PB_BIND(meshtastic_AdminMessage, meshtastic_AdminMessage, 2)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -4,11 +4,11 @@
|
|||||||
#ifndef PB_MESHTASTIC_MESHTASTIC_ADMIN_PB_H_INCLUDED
|
#ifndef PB_MESHTASTIC_MESHTASTIC_ADMIN_PB_H_INCLUDED
|
||||||
#define PB_MESHTASTIC_MESHTASTIC_ADMIN_PB_H_INCLUDED
|
#define PB_MESHTASTIC_MESHTASTIC_ADMIN_PB_H_INCLUDED
|
||||||
#include <pb.h>
|
#include <pb.h>
|
||||||
#include "./channel.pb.h"
|
#include "meshtastic/channel.pb.h"
|
||||||
#include "./config.pb.h"
|
#include "meshtastic/config.pb.h"
|
||||||
#include "./device_metadata.pb.h"
|
#include "meshtastic/device_metadata.pb.h"
|
||||||
#include "./mesh.pb.h"
|
#include "meshtastic/mesh.pb.h"
|
||||||
#include "./module_config.pb.h"
|
#include "meshtastic/module_config.pb.h"
|
||||||
|
|
||||||
#if PB_PROTO_HEADER_VERSION != 40
|
#if PB_PROTO_HEADER_VERSION != 40
|
||||||
#error Regenerate this file with the current version of nanopb generator.
|
#error Regenerate this file with the current version of nanopb generator.
|
||||||
@@ -16,69 +16,69 @@
|
|||||||
|
|
||||||
/* Enum definitions */
|
/* Enum definitions */
|
||||||
/* TODO: REPLACE */
|
/* TODO: REPLACE */
|
||||||
typedef enum _AdminMessage_ConfigType {
|
typedef enum _meshtastic_AdminMessage_ConfigType {
|
||||||
/* TODO: REPLACE */
|
/* TODO: REPLACE */
|
||||||
AdminMessage_ConfigType_DEVICE_CONFIG = 0,
|
meshtastic_AdminMessage_ConfigType_DEVICE_CONFIG = 0,
|
||||||
/* TODO: REPLACE */
|
/* TODO: REPLACE */
|
||||||
AdminMessage_ConfigType_POSITION_CONFIG = 1,
|
meshtastic_AdminMessage_ConfigType_POSITION_CONFIG = 1,
|
||||||
/* TODO: REPLACE */
|
/* TODO: REPLACE */
|
||||||
AdminMessage_ConfigType_POWER_CONFIG = 2,
|
meshtastic_AdminMessage_ConfigType_POWER_CONFIG = 2,
|
||||||
/* TODO: REPLACE */
|
/* TODO: REPLACE */
|
||||||
AdminMessage_ConfigType_NETWORK_CONFIG = 3,
|
meshtastic_AdminMessage_ConfigType_NETWORK_CONFIG = 3,
|
||||||
/* TODO: REPLACE */
|
/* TODO: REPLACE */
|
||||||
AdminMessage_ConfigType_DISPLAY_CONFIG = 4,
|
meshtastic_AdminMessage_ConfigType_DISPLAY_CONFIG = 4,
|
||||||
/* TODO: REPLACE */
|
/* TODO: REPLACE */
|
||||||
AdminMessage_ConfigType_LORA_CONFIG = 5,
|
meshtastic_AdminMessage_ConfigType_LORA_CONFIG = 5,
|
||||||
/* TODO: REPLACE */
|
/* TODO: REPLACE */
|
||||||
AdminMessage_ConfigType_BLUETOOTH_CONFIG = 6
|
meshtastic_AdminMessage_ConfigType_BLUETOOTH_CONFIG = 6
|
||||||
} AdminMessage_ConfigType;
|
} meshtastic_AdminMessage_ConfigType;
|
||||||
|
|
||||||
/* TODO: REPLACE */
|
/* TODO: REPLACE */
|
||||||
typedef enum _AdminMessage_ModuleConfigType {
|
typedef enum _meshtastic_AdminMessage_ModuleConfigType {
|
||||||
/* TODO: REPLACE */
|
/* TODO: REPLACE */
|
||||||
AdminMessage_ModuleConfigType_MQTT_CONFIG = 0,
|
meshtastic_AdminMessage_ModuleConfigType_MQTT_CONFIG = 0,
|
||||||
/* TODO: REPLACE */
|
/* TODO: REPLACE */
|
||||||
AdminMessage_ModuleConfigType_SERIAL_CONFIG = 1,
|
meshtastic_AdminMessage_ModuleConfigType_SERIAL_CONFIG = 1,
|
||||||
/* TODO: REPLACE */
|
/* TODO: REPLACE */
|
||||||
AdminMessage_ModuleConfigType_EXTNOTIF_CONFIG = 2,
|
meshtastic_AdminMessage_ModuleConfigType_EXTNOTIF_CONFIG = 2,
|
||||||
/* TODO: REPLACE */
|
/* TODO: REPLACE */
|
||||||
AdminMessage_ModuleConfigType_STOREFORWARD_CONFIG = 3,
|
meshtastic_AdminMessage_ModuleConfigType_STOREFORWARD_CONFIG = 3,
|
||||||
/* TODO: REPLACE */
|
/* TODO: REPLACE */
|
||||||
AdminMessage_ModuleConfigType_RANGETEST_CONFIG = 4,
|
meshtastic_AdminMessage_ModuleConfigType_RANGETEST_CONFIG = 4,
|
||||||
/* TODO: REPLACE */
|
/* TODO: REPLACE */
|
||||||
AdminMessage_ModuleConfigType_TELEMETRY_CONFIG = 5,
|
meshtastic_AdminMessage_ModuleConfigType_TELEMETRY_CONFIG = 5,
|
||||||
/* TODO: REPLACE */
|
/* TODO: REPLACE */
|
||||||
AdminMessage_ModuleConfigType_CANNEDMSG_CONFIG = 6,
|
meshtastic_AdminMessage_ModuleConfigType_CANNEDMSG_CONFIG = 6,
|
||||||
/* TODO: REPLACE */
|
/* TODO: REPLACE */
|
||||||
AdminMessage_ModuleConfigType_AUDIO_CONFIG = 7,
|
meshtastic_AdminMessage_ModuleConfigType_AUDIO_CONFIG = 7,
|
||||||
/* TODO: REPLACE */
|
/* TODO: REPLACE */
|
||||||
AdminMessage_ModuleConfigType_REMOTEHARDWARE_CONFIG = 8
|
meshtastic_AdminMessage_ModuleConfigType_REMOTEHARDWARE_CONFIG = 8
|
||||||
} AdminMessage_ModuleConfigType;
|
} meshtastic_AdminMessage_ModuleConfigType;
|
||||||
|
|
||||||
/* Struct definitions */
|
/* Struct definitions */
|
||||||
/* This message is handled by the Admin module and is responsible for all settings/channel read/write operations.
|
/* This message is handled by the Admin module and is responsible for all settings/channel read/write operations.
|
||||||
This message is used to do settings operations to both remote AND local nodes.
|
This message is used to do settings operations to both remote AND local nodes.
|
||||||
(Prior to 1.2 these operations were done via special ToRadio operations) */
|
(Prior to 1.2 these operations were done via special ToRadio operations) */
|
||||||
typedef struct _AdminMessage {
|
typedef struct _meshtastic_AdminMessage {
|
||||||
pb_size_t which_payload_variant;
|
pb_size_t which_payload_variant;
|
||||||
union {
|
union {
|
||||||
/* Send the specified channel in the response to this message
|
/* Send the specified channel in the response to this message
|
||||||
NOTE: This field is sent with the channel index + 1 (to ensure we never try to send 'zero' - which protobufs treats as not present) */
|
NOTE: This field is sent with the channel index + 1 (to ensure we never try to send 'zero' - which protobufs treats as not present) */
|
||||||
uint32_t get_channel_request;
|
uint32_t get_channel_request;
|
||||||
/* TODO: REPLACE */
|
/* TODO: REPLACE */
|
||||||
Channel get_channel_response;
|
meshtastic_Channel get_channel_response;
|
||||||
/* Send the current owner data in the response to this message. */
|
/* Send the current owner data in the response to this message. */
|
||||||
bool get_owner_request;
|
bool get_owner_request;
|
||||||
/* TODO: REPLACE */
|
/* TODO: REPLACE */
|
||||||
User get_owner_response;
|
meshtastic_User get_owner_response;
|
||||||
/* Ask for the following config data to be sent */
|
/* Ask for the following config data to be sent */
|
||||||
AdminMessage_ConfigType get_config_request;
|
meshtastic_AdminMessage_ConfigType get_config_request;
|
||||||
/* Send the current Config in the response to this message. */
|
/* Send the current Config in the response to this message. */
|
||||||
Config get_config_response;
|
meshtastic_Config get_config_response;
|
||||||
/* Ask for the following config data to be sent */
|
/* Ask for the following config data to be sent */
|
||||||
AdminMessage_ModuleConfigType get_module_config_request;
|
meshtastic_AdminMessage_ModuleConfigType get_module_config_request;
|
||||||
/* Send the current Config in the response to this message. */
|
/* Send the current Config in the response to this message. */
|
||||||
ModuleConfig get_module_config_response;
|
meshtastic_ModuleConfig get_module_config_response;
|
||||||
/* Get the Canned Message Module messages in the response to this message. */
|
/* Get the Canned Message Module messages in the response to this message. */
|
||||||
bool get_canned_message_module_messages_request;
|
bool get_canned_message_module_messages_request;
|
||||||
/* Get the Canned Message Module messages in the response to this message. */
|
/* Get the Canned Message Module messages in the response to this message. */
|
||||||
@@ -86,23 +86,23 @@ typedef struct _AdminMessage {
|
|||||||
/* Request the node to send device metadata (firmware, protobuf version, etc) */
|
/* Request the node to send device metadata (firmware, protobuf version, etc) */
|
||||||
bool get_device_metadata_request;
|
bool get_device_metadata_request;
|
||||||
/* Device metadata response */
|
/* Device metadata response */
|
||||||
DeviceMetadata get_device_metadata_response;
|
meshtastic_DeviceMetadata get_device_metadata_response;
|
||||||
/* Get the Ringtone in the response to this message. */
|
/* Get the Ringtone in the response to this message. */
|
||||||
bool get_ringtone_request;
|
bool get_ringtone_request;
|
||||||
/* Get the Ringtone in the response to this message. */
|
/* Get the Ringtone in the response to this message. */
|
||||||
char get_ringtone_response[231];
|
char get_ringtone_response[231];
|
||||||
/* Set the owner for this node */
|
/* Set the owner for this node */
|
||||||
User set_owner;
|
meshtastic_User set_owner;
|
||||||
/* Set channels (using the new API).
|
/* Set channels (using the new API).
|
||||||
A special channel is the "primary channel".
|
A special channel is the "primary channel".
|
||||||
The other records are secondary channels.
|
The other records are secondary channels.
|
||||||
Note: only one channel can be marked as primary.
|
Note: only one channel can be marked as primary.
|
||||||
If the client sets a particular channel to be primary, the previous channel will be set to SECONDARY automatically. */
|
If the client sets a particular channel to be primary, the previous channel will be set to SECONDARY automatically. */
|
||||||
Channel set_channel;
|
meshtastic_Channel set_channel;
|
||||||
/* Set the current Config */
|
/* Set the current Config */
|
||||||
Config set_config;
|
meshtastic_Config set_config;
|
||||||
/* Set the current Config */
|
/* Set the current Config */
|
||||||
ModuleConfig set_module_config;
|
meshtastic_ModuleConfig set_module_config;
|
||||||
/* Set the Canned Message Module messages text. */
|
/* Set the Canned Message Module messages text. */
|
||||||
char set_canned_message_module_messages[201];
|
char set_canned_message_module_messages[201];
|
||||||
/* Set the ringtone for ExternalNotification. */
|
/* Set the ringtone for ExternalNotification. */
|
||||||
@@ -134,7 +134,7 @@ typedef struct _AdminMessage {
|
|||||||
/* Tell the node to reset the nodedb. */
|
/* Tell the node to reset the nodedb. */
|
||||||
int32_t nodedb_reset;
|
int32_t nodedb_reset;
|
||||||
};
|
};
|
||||||
} AdminMessage;
|
} meshtastic_AdminMessage;
|
||||||
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
@@ -142,56 +142,56 @@ extern "C" {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Helper constants for enums */
|
/* Helper constants for enums */
|
||||||
#define _AdminMessage_ConfigType_MIN AdminMessage_ConfigType_DEVICE_CONFIG
|
#define _meshtastic_AdminMessage_ConfigType_MIN meshtastic_AdminMessage_ConfigType_DEVICE_CONFIG
|
||||||
#define _AdminMessage_ConfigType_MAX AdminMessage_ConfigType_BLUETOOTH_CONFIG
|
#define _meshtastic_AdminMessage_ConfigType_MAX meshtastic_AdminMessage_ConfigType_BLUETOOTH_CONFIG
|
||||||
#define _AdminMessage_ConfigType_ARRAYSIZE ((AdminMessage_ConfigType)(AdminMessage_ConfigType_BLUETOOTH_CONFIG+1))
|
#define _meshtastic_AdminMessage_ConfigType_ARRAYSIZE ((meshtastic_AdminMessage_ConfigType)(meshtastic_AdminMessage_ConfigType_BLUETOOTH_CONFIG+1))
|
||||||
|
|
||||||
#define _AdminMessage_ModuleConfigType_MIN AdminMessage_ModuleConfigType_MQTT_CONFIG
|
#define _meshtastic_AdminMessage_ModuleConfigType_MIN meshtastic_AdminMessage_ModuleConfigType_MQTT_CONFIG
|
||||||
#define _AdminMessage_ModuleConfigType_MAX AdminMessage_ModuleConfigType_REMOTEHARDWARE_CONFIG
|
#define _meshtastic_AdminMessage_ModuleConfigType_MAX meshtastic_AdminMessage_ModuleConfigType_REMOTEHARDWARE_CONFIG
|
||||||
#define _AdminMessage_ModuleConfigType_ARRAYSIZE ((AdminMessage_ModuleConfigType)(AdminMessage_ModuleConfigType_REMOTEHARDWARE_CONFIG+1))
|
#define _meshtastic_AdminMessage_ModuleConfigType_ARRAYSIZE ((meshtastic_AdminMessage_ModuleConfigType)(meshtastic_AdminMessage_ModuleConfigType_REMOTEHARDWARE_CONFIG+1))
|
||||||
|
|
||||||
#define AdminMessage_payload_variant_get_config_request_ENUMTYPE AdminMessage_ConfigType
|
#define meshtastic_AdminMessage_payload_variant_get_config_request_ENUMTYPE meshtastic_AdminMessage_ConfigType
|
||||||
#define AdminMessage_payload_variant_get_module_config_request_ENUMTYPE AdminMessage_ModuleConfigType
|
#define meshtastic_AdminMessage_payload_variant_get_module_config_request_ENUMTYPE meshtastic_AdminMessage_ModuleConfigType
|
||||||
|
|
||||||
|
|
||||||
/* Initializer values for message structs */
|
/* Initializer values for message structs */
|
||||||
#define AdminMessage_init_default {0, {0}}
|
#define meshtastic_AdminMessage_init_default {0, {0}}
|
||||||
#define AdminMessage_init_zero {0, {0}}
|
#define meshtastic_AdminMessage_init_zero {0, {0}}
|
||||||
|
|
||||||
/* Field tags (for use in manual encoding/decoding) */
|
/* Field tags (for use in manual encoding/decoding) */
|
||||||
#define AdminMessage_get_channel_request_tag 1
|
#define meshtastic_AdminMessage_get_channel_request_tag 1
|
||||||
#define AdminMessage_get_channel_response_tag 2
|
#define meshtastic_AdminMessage_get_channel_response_tag 2
|
||||||
#define AdminMessage_get_owner_request_tag 3
|
#define meshtastic_AdminMessage_get_owner_request_tag 3
|
||||||
#define AdminMessage_get_owner_response_tag 4
|
#define meshtastic_AdminMessage_get_owner_response_tag 4
|
||||||
#define AdminMessage_get_config_request_tag 5
|
#define meshtastic_AdminMessage_get_config_request_tag 5
|
||||||
#define AdminMessage_get_config_response_tag 6
|
#define meshtastic_AdminMessage_get_config_response_tag 6
|
||||||
#define AdminMessage_get_module_config_request_tag 7
|
#define meshtastic_AdminMessage_get_module_config_request_tag 7
|
||||||
#define AdminMessage_get_module_config_response_tag 8
|
#define meshtastic_AdminMessage_get_module_config_response_tag 8
|
||||||
#define AdminMessage_get_canned_message_module_messages_request_tag 10
|
#define meshtastic_AdminMessage_get_canned_message_module_messages_request_tag 10
|
||||||
#define AdminMessage_get_canned_message_module_messages_response_tag 11
|
#define meshtastic_AdminMessage_get_canned_message_module_messages_response_tag 11
|
||||||
#define AdminMessage_get_device_metadata_request_tag 12
|
#define meshtastic_AdminMessage_get_device_metadata_request_tag 12
|
||||||
#define AdminMessage_get_device_metadata_response_tag 13
|
#define meshtastic_AdminMessage_get_device_metadata_response_tag 13
|
||||||
#define AdminMessage_get_ringtone_request_tag 14
|
#define meshtastic_AdminMessage_get_ringtone_request_tag 14
|
||||||
#define AdminMessage_get_ringtone_response_tag 15
|
#define meshtastic_AdminMessage_get_ringtone_response_tag 15
|
||||||
#define AdminMessage_set_owner_tag 32
|
#define meshtastic_AdminMessage_set_owner_tag 32
|
||||||
#define AdminMessage_set_channel_tag 33
|
#define meshtastic_AdminMessage_set_channel_tag 33
|
||||||
#define AdminMessage_set_config_tag 34
|
#define meshtastic_AdminMessage_set_config_tag 34
|
||||||
#define AdminMessage_set_module_config_tag 35
|
#define meshtastic_AdminMessage_set_module_config_tag 35
|
||||||
#define AdminMessage_set_canned_message_module_messages_tag 36
|
#define meshtastic_AdminMessage_set_canned_message_module_messages_tag 36
|
||||||
#define AdminMessage_set_ringtone_message_tag 37
|
#define meshtastic_AdminMessage_set_ringtone_message_tag 37
|
||||||
#define AdminMessage_begin_edit_settings_tag 64
|
#define meshtastic_AdminMessage_begin_edit_settings_tag 64
|
||||||
#define AdminMessage_commit_edit_settings_tag 65
|
#define meshtastic_AdminMessage_commit_edit_settings_tag 65
|
||||||
#define AdminMessage_confirm_set_channel_tag 66
|
#define meshtastic_AdminMessage_confirm_set_channel_tag 66
|
||||||
#define AdminMessage_confirm_set_radio_tag 67
|
#define meshtastic_AdminMessage_confirm_set_radio_tag 67
|
||||||
#define AdminMessage_reboot_ota_seconds_tag 95
|
#define meshtastic_AdminMessage_reboot_ota_seconds_tag 95
|
||||||
#define AdminMessage_exit_simulator_tag 96
|
#define meshtastic_AdminMessage_exit_simulator_tag 96
|
||||||
#define AdminMessage_reboot_seconds_tag 97
|
#define meshtastic_AdminMessage_reboot_seconds_tag 97
|
||||||
#define AdminMessage_shutdown_seconds_tag 98
|
#define meshtastic_AdminMessage_shutdown_seconds_tag 98
|
||||||
#define AdminMessage_factory_reset_tag 99
|
#define meshtastic_AdminMessage_factory_reset_tag 99
|
||||||
#define AdminMessage_nodedb_reset_tag 100
|
#define meshtastic_AdminMessage_nodedb_reset_tag 100
|
||||||
|
|
||||||
/* Struct field encoding specification for nanopb */
|
/* Struct field encoding specification for nanopb */
|
||||||
#define AdminMessage_FIELDLIST(X, a) \
|
#define meshtastic_AdminMessage_FIELDLIST(X, a) \
|
||||||
X(a, STATIC, ONEOF, UINT32, (payload_variant,get_channel_request,get_channel_request), 1) \
|
X(a, STATIC, ONEOF, UINT32, (payload_variant,get_channel_request,get_channel_request), 1) \
|
||||||
X(a, STATIC, ONEOF, MESSAGE, (payload_variant,get_channel_response,get_channel_response), 2) \
|
X(a, STATIC, ONEOF, MESSAGE, (payload_variant,get_channel_response,get_channel_response), 2) \
|
||||||
X(a, STATIC, ONEOF, BOOL, (payload_variant,get_owner_request,get_owner_request), 3) \
|
X(a, STATIC, ONEOF, BOOL, (payload_variant,get_owner_request,get_owner_request), 3) \
|
||||||
@@ -222,25 +222,25 @@ X(a, STATIC, ONEOF, INT32, (payload_variant,reboot_seconds,reboot_second
|
|||||||
X(a, STATIC, ONEOF, INT32, (payload_variant,shutdown_seconds,shutdown_seconds), 98) \
|
X(a, STATIC, ONEOF, INT32, (payload_variant,shutdown_seconds,shutdown_seconds), 98) \
|
||||||
X(a, STATIC, ONEOF, INT32, (payload_variant,factory_reset,factory_reset), 99) \
|
X(a, STATIC, ONEOF, INT32, (payload_variant,factory_reset,factory_reset), 99) \
|
||||||
X(a, STATIC, ONEOF, INT32, (payload_variant,nodedb_reset,nodedb_reset), 100)
|
X(a, STATIC, ONEOF, INT32, (payload_variant,nodedb_reset,nodedb_reset), 100)
|
||||||
#define AdminMessage_CALLBACK NULL
|
#define meshtastic_AdminMessage_CALLBACK NULL
|
||||||
#define AdminMessage_DEFAULT NULL
|
#define meshtastic_AdminMessage_DEFAULT NULL
|
||||||
#define AdminMessage_payload_variant_get_channel_response_MSGTYPE Channel
|
#define meshtastic_AdminMessage_payload_variant_get_channel_response_MSGTYPE meshtastic_Channel
|
||||||
#define AdminMessage_payload_variant_get_owner_response_MSGTYPE User
|
#define meshtastic_AdminMessage_payload_variant_get_owner_response_MSGTYPE meshtastic_User
|
||||||
#define AdminMessage_payload_variant_get_config_response_MSGTYPE Config
|
#define meshtastic_AdminMessage_payload_variant_get_config_response_MSGTYPE meshtastic_Config
|
||||||
#define AdminMessage_payload_variant_get_module_config_response_MSGTYPE ModuleConfig
|
#define meshtastic_AdminMessage_payload_variant_get_module_config_response_MSGTYPE meshtastic_ModuleConfig
|
||||||
#define AdminMessage_payload_variant_get_device_metadata_response_MSGTYPE DeviceMetadata
|
#define meshtastic_AdminMessage_payload_variant_get_device_metadata_response_MSGTYPE meshtastic_DeviceMetadata
|
||||||
#define AdminMessage_payload_variant_set_owner_MSGTYPE User
|
#define meshtastic_AdminMessage_payload_variant_set_owner_MSGTYPE meshtastic_User
|
||||||
#define AdminMessage_payload_variant_set_channel_MSGTYPE Channel
|
#define meshtastic_AdminMessage_payload_variant_set_channel_MSGTYPE meshtastic_Channel
|
||||||
#define AdminMessage_payload_variant_set_config_MSGTYPE Config
|
#define meshtastic_AdminMessage_payload_variant_set_config_MSGTYPE meshtastic_Config
|
||||||
#define AdminMessage_payload_variant_set_module_config_MSGTYPE ModuleConfig
|
#define meshtastic_AdminMessage_payload_variant_set_module_config_MSGTYPE meshtastic_ModuleConfig
|
||||||
|
|
||||||
extern const pb_msgdesc_t AdminMessage_msg;
|
extern const pb_msgdesc_t meshtastic_AdminMessage_msg;
|
||||||
|
|
||||||
/* Defines for backwards compatibility with code written before nanopb-0.4.0 */
|
/* Defines for backwards compatibility with code written before nanopb-0.4.0 */
|
||||||
#define AdminMessage_fields &AdminMessage_msg
|
#define meshtastic_AdminMessage_fields &meshtastic_AdminMessage_msg
|
||||||
|
|
||||||
/* Maximum encoded size of messages (where known) */
|
/* Maximum encoded size of messages (where known) */
|
||||||
#define AdminMessage_size 234
|
#define meshtastic_AdminMessage_size 234
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
} /* extern "C" */
|
} /* extern "C" */
|
||||||
|
|||||||
@@ -1,12 +1,12 @@
|
|||||||
/* Automatically generated nanopb constant definitions */
|
/* Automatically generated nanopb constant definitions */
|
||||||
/* Generated by nanopb-0.4.7 */
|
/* Generated by nanopb-0.4.7 */
|
||||||
|
|
||||||
#include "./apponly.pb.h"
|
#include "meshtastic/apponly.pb.h"
|
||||||
#if PB_PROTO_HEADER_VERSION != 40
|
#if PB_PROTO_HEADER_VERSION != 40
|
||||||
#error Regenerate this file with the current version of nanopb generator.
|
#error Regenerate this file with the current version of nanopb generator.
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
PB_BIND(ChannelSet, ChannelSet, 2)
|
PB_BIND(meshtastic_ChannelSet, meshtastic_ChannelSet, 2)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -4,8 +4,8 @@
|
|||||||
#ifndef PB_MESHTASTIC_MESHTASTIC_APPONLY_PB_H_INCLUDED
|
#ifndef PB_MESHTASTIC_MESHTASTIC_APPONLY_PB_H_INCLUDED
|
||||||
#define PB_MESHTASTIC_MESHTASTIC_APPONLY_PB_H_INCLUDED
|
#define PB_MESHTASTIC_MESHTASTIC_APPONLY_PB_H_INCLUDED
|
||||||
#include <pb.h>
|
#include <pb.h>
|
||||||
#include "./channel.pb.h"
|
#include "meshtastic/channel.pb.h"
|
||||||
#include "./config.pb.h"
|
#include "meshtastic/config.pb.h"
|
||||||
|
|
||||||
#if PB_PROTO_HEADER_VERSION != 40
|
#if PB_PROTO_HEADER_VERSION != 40
|
||||||
#error Regenerate this file with the current version of nanopb generator.
|
#error Regenerate this file with the current version of nanopb generator.
|
||||||
@@ -17,14 +17,14 @@
|
|||||||
any SECONDARY channels.
|
any SECONDARY channels.
|
||||||
No DISABLED channels are included.
|
No DISABLED channels are included.
|
||||||
This abstraction is used only on the the 'app side' of the world (ie python, javascript and android etc) to show a group of Channels as a (long) URL */
|
This abstraction is used only on the the 'app side' of the world (ie python, javascript and android etc) to show a group of Channels as a (long) URL */
|
||||||
typedef struct _ChannelSet {
|
typedef struct _meshtastic_ChannelSet {
|
||||||
/* Channel list with settings */
|
/* Channel list with settings */
|
||||||
pb_size_t settings_count;
|
pb_size_t settings_count;
|
||||||
ChannelSettings settings[8];
|
meshtastic_ChannelSettings settings[8];
|
||||||
/* LoRa config */
|
/* LoRa config */
|
||||||
bool has_lora_config;
|
bool has_lora_config;
|
||||||
Config_LoRaConfig lora_config;
|
meshtastic_Config_LoRaConfig lora_config;
|
||||||
} ChannelSet;
|
} meshtastic_ChannelSet;
|
||||||
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
@@ -32,29 +32,29 @@ extern "C" {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Initializer values for message structs */
|
/* Initializer values for message structs */
|
||||||
#define ChannelSet_init_default {0, {ChannelSettings_init_default, ChannelSettings_init_default, ChannelSettings_init_default, ChannelSettings_init_default, ChannelSettings_init_default, ChannelSettings_init_default, ChannelSettings_init_default, ChannelSettings_init_default}, false, Config_LoRaConfig_init_default}
|
#define meshtastic_ChannelSet_init_default {0, {meshtastic_ChannelSettings_init_default, meshtastic_ChannelSettings_init_default, meshtastic_ChannelSettings_init_default, meshtastic_ChannelSettings_init_default, meshtastic_ChannelSettings_init_default, meshtastic_ChannelSettings_init_default, meshtastic_ChannelSettings_init_default, meshtastic_ChannelSettings_init_default}, false, meshtastic_Config_LoRaConfig_init_default}
|
||||||
#define ChannelSet_init_zero {0, {ChannelSettings_init_zero, ChannelSettings_init_zero, ChannelSettings_init_zero, ChannelSettings_init_zero, ChannelSettings_init_zero, ChannelSettings_init_zero, ChannelSettings_init_zero, ChannelSettings_init_zero}, false, Config_LoRaConfig_init_zero}
|
#define meshtastic_ChannelSet_init_zero {0, {meshtastic_ChannelSettings_init_zero, meshtastic_ChannelSettings_init_zero, meshtastic_ChannelSettings_init_zero, meshtastic_ChannelSettings_init_zero, meshtastic_ChannelSettings_init_zero, meshtastic_ChannelSettings_init_zero, meshtastic_ChannelSettings_init_zero, meshtastic_ChannelSettings_init_zero}, false, meshtastic_Config_LoRaConfig_init_zero}
|
||||||
|
|
||||||
/* Field tags (for use in manual encoding/decoding) */
|
/* Field tags (for use in manual encoding/decoding) */
|
||||||
#define ChannelSet_settings_tag 1
|
#define meshtastic_ChannelSet_settings_tag 1
|
||||||
#define ChannelSet_lora_config_tag 2
|
#define meshtastic_ChannelSet_lora_config_tag 2
|
||||||
|
|
||||||
/* Struct field encoding specification for nanopb */
|
/* Struct field encoding specification for nanopb */
|
||||||
#define ChannelSet_FIELDLIST(X, a) \
|
#define meshtastic_ChannelSet_FIELDLIST(X, a) \
|
||||||
X(a, STATIC, REPEATED, MESSAGE, settings, 1) \
|
X(a, STATIC, REPEATED, MESSAGE, settings, 1) \
|
||||||
X(a, STATIC, OPTIONAL, MESSAGE, lora_config, 2)
|
X(a, STATIC, OPTIONAL, MESSAGE, lora_config, 2)
|
||||||
#define ChannelSet_CALLBACK NULL
|
#define meshtastic_ChannelSet_CALLBACK NULL
|
||||||
#define ChannelSet_DEFAULT NULL
|
#define meshtastic_ChannelSet_DEFAULT NULL
|
||||||
#define ChannelSet_settings_MSGTYPE ChannelSettings
|
#define meshtastic_ChannelSet_settings_MSGTYPE meshtastic_ChannelSettings
|
||||||
#define ChannelSet_lora_config_MSGTYPE Config_LoRaConfig
|
#define meshtastic_ChannelSet_lora_config_MSGTYPE meshtastic_Config_LoRaConfig
|
||||||
|
|
||||||
extern const pb_msgdesc_t ChannelSet_msg;
|
extern const pb_msgdesc_t meshtastic_ChannelSet_msg;
|
||||||
|
|
||||||
/* Defines for backwards compatibility with code written before nanopb-0.4.0 */
|
/* Defines for backwards compatibility with code written before nanopb-0.4.0 */
|
||||||
#define ChannelSet_fields &ChannelSet_msg
|
#define meshtastic_ChannelSet_fields &meshtastic_ChannelSet_msg
|
||||||
|
|
||||||
/* Maximum encoded size of messages (where known) */
|
/* Maximum encoded size of messages (where known) */
|
||||||
#define ChannelSet_size 584
|
#define meshtastic_ChannelSet_size 584
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
} /* extern "C" */
|
} /* extern "C" */
|
||||||
|
|||||||
@@ -1,12 +1,12 @@
|
|||||||
/* Automatically generated nanopb constant definitions */
|
/* Automatically generated nanopb constant definitions */
|
||||||
/* Generated by nanopb-0.4.7 */
|
/* Generated by nanopb-0.4.7 */
|
||||||
|
|
||||||
#include "./cannedmessages.pb.h"
|
#include "meshtastic/cannedmessages.pb.h"
|
||||||
#if PB_PROTO_HEADER_VERSION != 40
|
#if PB_PROTO_HEADER_VERSION != 40
|
||||||
#error Regenerate this file with the current version of nanopb generator.
|
#error Regenerate this file with the current version of nanopb generator.
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
PB_BIND(CannedMessageModuleConfig, CannedMessageModuleConfig, AUTO)
|
PB_BIND(meshtastic_CannedMessageModuleConfig, meshtastic_CannedMessageModuleConfig, AUTO)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -11,10 +11,10 @@
|
|||||||
|
|
||||||
/* Struct definitions */
|
/* Struct definitions */
|
||||||
/* Canned message module configuration. */
|
/* Canned message module configuration. */
|
||||||
typedef struct _CannedMessageModuleConfig {
|
typedef struct _meshtastic_CannedMessageModuleConfig {
|
||||||
/* Predefined messages for canned message module separated by '|' characters. */
|
/* Predefined messages for canned message module separated by '|' characters. */
|
||||||
char messages[201];
|
char messages[201];
|
||||||
} CannedMessageModuleConfig;
|
} meshtastic_CannedMessageModuleConfig;
|
||||||
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
@@ -22,25 +22,25 @@ extern "C" {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Initializer values for message structs */
|
/* Initializer values for message structs */
|
||||||
#define CannedMessageModuleConfig_init_default {""}
|
#define meshtastic_CannedMessageModuleConfig_init_default {""}
|
||||||
#define CannedMessageModuleConfig_init_zero {""}
|
#define meshtastic_CannedMessageModuleConfig_init_zero {""}
|
||||||
|
|
||||||
/* Field tags (for use in manual encoding/decoding) */
|
/* Field tags (for use in manual encoding/decoding) */
|
||||||
#define CannedMessageModuleConfig_messages_tag 1
|
#define meshtastic_CannedMessageModuleConfig_messages_tag 1
|
||||||
|
|
||||||
/* Struct field encoding specification for nanopb */
|
/* Struct field encoding specification for nanopb */
|
||||||
#define CannedMessageModuleConfig_FIELDLIST(X, a) \
|
#define meshtastic_CannedMessageModuleConfig_FIELDLIST(X, a) \
|
||||||
X(a, STATIC, SINGULAR, STRING, messages, 1)
|
X(a, STATIC, SINGULAR, STRING, messages, 1)
|
||||||
#define CannedMessageModuleConfig_CALLBACK NULL
|
#define meshtastic_CannedMessageModuleConfig_CALLBACK NULL
|
||||||
#define CannedMessageModuleConfig_DEFAULT NULL
|
#define meshtastic_CannedMessageModuleConfig_DEFAULT NULL
|
||||||
|
|
||||||
extern const pb_msgdesc_t CannedMessageModuleConfig_msg;
|
extern const pb_msgdesc_t meshtastic_CannedMessageModuleConfig_msg;
|
||||||
|
|
||||||
/* Defines for backwards compatibility with code written before nanopb-0.4.0 */
|
/* Defines for backwards compatibility with code written before nanopb-0.4.0 */
|
||||||
#define CannedMessageModuleConfig_fields &CannedMessageModuleConfig_msg
|
#define meshtastic_CannedMessageModuleConfig_fields &meshtastic_CannedMessageModuleConfig_msg
|
||||||
|
|
||||||
/* Maximum encoded size of messages (where known) */
|
/* Maximum encoded size of messages (where known) */
|
||||||
#define CannedMessageModuleConfig_size 203
|
#define meshtastic_CannedMessageModuleConfig_size 203
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
} /* extern "C" */
|
} /* extern "C" */
|
||||||
|
|||||||
@@ -1,15 +1,15 @@
|
|||||||
/* Automatically generated nanopb constant definitions */
|
/* Automatically generated nanopb constant definitions */
|
||||||
/* Generated by nanopb-0.4.7 */
|
/* Generated by nanopb-0.4.7 */
|
||||||
|
|
||||||
#include "./channel.pb.h"
|
#include "meshtastic/channel.pb.h"
|
||||||
#if PB_PROTO_HEADER_VERSION != 40
|
#if PB_PROTO_HEADER_VERSION != 40
|
||||||
#error Regenerate this file with the current version of nanopb generator.
|
#error Regenerate this file with the current version of nanopb generator.
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
PB_BIND(ChannelSettings, ChannelSettings, AUTO)
|
PB_BIND(meshtastic_ChannelSettings, meshtastic_ChannelSettings, AUTO)
|
||||||
|
|
||||||
|
|
||||||
PB_BIND(Channel, Channel, AUTO)
|
PB_BIND(meshtastic_Channel, meshtastic_Channel, AUTO)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -19,18 +19,18 @@
|
|||||||
cross band routing as needed.
|
cross band routing as needed.
|
||||||
If a device has only a single radio (the common case) only one channel can be PRIMARY at a time
|
If a device has only a single radio (the common case) only one channel can be PRIMARY at a time
|
||||||
(but any number of SECONDARY channels can't be sent received on that common frequency) */
|
(but any number of SECONDARY channels can't be sent received on that common frequency) */
|
||||||
typedef enum _Channel_Role {
|
typedef enum _meshtastic_Channel_Role {
|
||||||
/* This channel is not in use right now */
|
/* This channel is not in use right now */
|
||||||
Channel_Role_DISABLED = 0,
|
meshtastic_Channel_Role_DISABLED = 0,
|
||||||
/* This channel is used to set the frequency for the radio - all other enabled channels must be SECONDARY */
|
/* This channel is used to set the frequency for the radio - all other enabled channels must be SECONDARY */
|
||||||
Channel_Role_PRIMARY = 1,
|
meshtastic_Channel_Role_PRIMARY = 1,
|
||||||
/* Secondary channels are only used for encryption/decryption/authentication purposes.
|
/* Secondary channels are only used for encryption/decryption/authentication purposes.
|
||||||
Their radio settings (freq etc) are ignored, only psk is used. */
|
Their radio settings (freq etc) are ignored, only psk is used. */
|
||||||
Channel_Role_SECONDARY = 2
|
meshtastic_Channel_Role_SECONDARY = 2
|
||||||
} Channel_Role;
|
} meshtastic_Channel_Role;
|
||||||
|
|
||||||
/* Struct definitions */
|
/* Struct definitions */
|
||||||
typedef PB_BYTES_ARRAY_T(32) ChannelSettings_psk_t;
|
typedef PB_BYTES_ARRAY_T(32) meshtastic_ChannelSettings_psk_t;
|
||||||
/* Full settings (center freq, spread factor, pre-shared secret key etc...)
|
/* Full settings (center freq, spread factor, pre-shared secret key etc...)
|
||||||
needed to configure a radio for speaking on a particular channel This
|
needed to configure a radio for speaking on a particular channel This
|
||||||
information can be encoded as a QRcode/url so that other users can configure
|
information can be encoded as a QRcode/url so that other users can configure
|
||||||
@@ -50,7 +50,7 @@ typedef PB_BYTES_ARRAY_T(32) ChannelSettings_psk_t;
|
|||||||
FIXME: Add description of multi-channel support and how primary vs secondary channels are used.
|
FIXME: Add description of multi-channel support and how primary vs secondary channels are used.
|
||||||
FIXME: explain how apps use channels for security.
|
FIXME: explain how apps use channels for security.
|
||||||
explain how remote settings and remote gpio are managed as an example */
|
explain how remote settings and remote gpio are managed as an example */
|
||||||
typedef struct _ChannelSettings {
|
typedef struct _meshtastic_ChannelSettings {
|
||||||
/* Deprecated in favor of LoraConfig.channel_num */
|
/* Deprecated in favor of LoraConfig.channel_num */
|
||||||
uint32_t channel_num;
|
uint32_t channel_num;
|
||||||
/* A simple pre-shared key for now for crypto.
|
/* A simple pre-shared key for now for crypto.
|
||||||
@@ -63,7 +63,7 @@ typedef struct _ChannelSettings {
|
|||||||
`1` = The special "default" channel key: {0xd4, 0xf1, 0xbb, 0x3a, 0x20, 0x29, 0x07, 0x59, 0xf0, 0xbc, 0xff, 0xab, 0xcf, 0x4e, 0x69, 0xbf}
|
`1` = The special "default" channel key: {0xd4, 0xf1, 0xbb, 0x3a, 0x20, 0x29, 0x07, 0x59, 0xf0, 0xbc, 0xff, 0xab, 0xcf, 0x4e, 0x69, 0xbf}
|
||||||
`2` through 10 = The default channel key, except with 1 through 9 added to the last byte.
|
`2` through 10 = The default channel key, except with 1 through 9 added to the last byte.
|
||||||
Shown to user as simple1 through 10 */
|
Shown to user as simple1 through 10 */
|
||||||
ChannelSettings_psk_t psk;
|
meshtastic_ChannelSettings_psk_t psk;
|
||||||
/* A SHORT name that will be packed into the URL.
|
/* A SHORT name that will be packed into the URL.
|
||||||
Less than 12 bytes.
|
Less than 12 bytes.
|
||||||
Something for end users to call the channel
|
Something for end users to call the channel
|
||||||
@@ -89,20 +89,20 @@ typedef struct _ChannelSettings {
|
|||||||
bool uplink_enabled;
|
bool uplink_enabled;
|
||||||
/* If true, messages seen on the internet will be forwarded to the local mesh. */
|
/* If true, messages seen on the internet will be forwarded to the local mesh. */
|
||||||
bool downlink_enabled;
|
bool downlink_enabled;
|
||||||
} ChannelSettings;
|
} meshtastic_ChannelSettings;
|
||||||
|
|
||||||
/* A pair of a channel number, mode and the (sharable) settings for that channel */
|
/* A pair of a channel number, mode and the (sharable) settings for that channel */
|
||||||
typedef struct _Channel {
|
typedef struct _meshtastic_Channel {
|
||||||
/* The index of this channel in the channel table (from 0 to MAX_NUM_CHANNELS-1)
|
/* The index of this channel in the channel table (from 0 to MAX_NUM_CHANNELS-1)
|
||||||
(Someday - not currently implemented) An index of -1 could be used to mean "set by name",
|
(Someday - not currently implemented) An index of -1 could be used to mean "set by name",
|
||||||
in which case the target node will find and set the channel by settings.name. */
|
in which case the target node will find and set the channel by settings.name. */
|
||||||
int8_t index;
|
int8_t index;
|
||||||
/* The new settings, or NULL to disable that channel */
|
/* The new settings, or NULL to disable that channel */
|
||||||
bool has_settings;
|
bool has_settings;
|
||||||
ChannelSettings settings;
|
meshtastic_ChannelSettings settings;
|
||||||
/* TODO: REPLACE */
|
/* TODO: REPLACE */
|
||||||
Channel_Role role;
|
meshtastic_Channel_Role role;
|
||||||
} Channel;
|
} meshtastic_Channel;
|
||||||
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
@@ -110,60 +110,60 @@ extern "C" {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Helper constants for enums */
|
/* Helper constants for enums */
|
||||||
#define _Channel_Role_MIN Channel_Role_DISABLED
|
#define _meshtastic_Channel_Role_MIN meshtastic_Channel_Role_DISABLED
|
||||||
#define _Channel_Role_MAX Channel_Role_SECONDARY
|
#define _meshtastic_Channel_Role_MAX meshtastic_Channel_Role_SECONDARY
|
||||||
#define _Channel_Role_ARRAYSIZE ((Channel_Role)(Channel_Role_SECONDARY+1))
|
#define _meshtastic_Channel_Role_ARRAYSIZE ((meshtastic_Channel_Role)(meshtastic_Channel_Role_SECONDARY+1))
|
||||||
|
|
||||||
|
|
||||||
#define Channel_role_ENUMTYPE Channel_Role
|
#define meshtastic_Channel_role_ENUMTYPE meshtastic_Channel_Role
|
||||||
|
|
||||||
|
|
||||||
/* Initializer values for message structs */
|
/* Initializer values for message structs */
|
||||||
#define ChannelSettings_init_default {0, {0, {0}}, "", 0, 0, 0}
|
#define meshtastic_ChannelSettings_init_default {0, {0, {0}}, "", 0, 0, 0}
|
||||||
#define Channel_init_default {0, false, ChannelSettings_init_default, _Channel_Role_MIN}
|
#define meshtastic_Channel_init_default {0, false, meshtastic_ChannelSettings_init_default, _meshtastic_Channel_Role_MIN}
|
||||||
#define ChannelSettings_init_zero {0, {0, {0}}, "", 0, 0, 0}
|
#define meshtastic_ChannelSettings_init_zero {0, {0, {0}}, "", 0, 0, 0}
|
||||||
#define Channel_init_zero {0, false, ChannelSettings_init_zero, _Channel_Role_MIN}
|
#define meshtastic_Channel_init_zero {0, false, meshtastic_ChannelSettings_init_zero, _meshtastic_Channel_Role_MIN}
|
||||||
|
|
||||||
/* Field tags (for use in manual encoding/decoding) */
|
/* Field tags (for use in manual encoding/decoding) */
|
||||||
#define ChannelSettings_channel_num_tag 1
|
#define meshtastic_ChannelSettings_channel_num_tag 1
|
||||||
#define ChannelSettings_psk_tag 2
|
#define meshtastic_ChannelSettings_psk_tag 2
|
||||||
#define ChannelSettings_name_tag 3
|
#define meshtastic_ChannelSettings_name_tag 3
|
||||||
#define ChannelSettings_id_tag 4
|
#define meshtastic_ChannelSettings_id_tag 4
|
||||||
#define ChannelSettings_uplink_enabled_tag 5
|
#define meshtastic_ChannelSettings_uplink_enabled_tag 5
|
||||||
#define ChannelSettings_downlink_enabled_tag 6
|
#define meshtastic_ChannelSettings_downlink_enabled_tag 6
|
||||||
#define Channel_index_tag 1
|
#define meshtastic_Channel_index_tag 1
|
||||||
#define Channel_settings_tag 2
|
#define meshtastic_Channel_settings_tag 2
|
||||||
#define Channel_role_tag 3
|
#define meshtastic_Channel_role_tag 3
|
||||||
|
|
||||||
/* Struct field encoding specification for nanopb */
|
/* Struct field encoding specification for nanopb */
|
||||||
#define ChannelSettings_FIELDLIST(X, a) \
|
#define meshtastic_ChannelSettings_FIELDLIST(X, a) \
|
||||||
X(a, STATIC, SINGULAR, UINT32, channel_num, 1) \
|
X(a, STATIC, SINGULAR, UINT32, channel_num, 1) \
|
||||||
X(a, STATIC, SINGULAR, BYTES, psk, 2) \
|
X(a, STATIC, SINGULAR, BYTES, psk, 2) \
|
||||||
X(a, STATIC, SINGULAR, STRING, name, 3) \
|
X(a, STATIC, SINGULAR, STRING, name, 3) \
|
||||||
X(a, STATIC, SINGULAR, FIXED32, id, 4) \
|
X(a, STATIC, SINGULAR, FIXED32, id, 4) \
|
||||||
X(a, STATIC, SINGULAR, BOOL, uplink_enabled, 5) \
|
X(a, STATIC, SINGULAR, BOOL, uplink_enabled, 5) \
|
||||||
X(a, STATIC, SINGULAR, BOOL, downlink_enabled, 6)
|
X(a, STATIC, SINGULAR, BOOL, downlink_enabled, 6)
|
||||||
#define ChannelSettings_CALLBACK NULL
|
#define meshtastic_ChannelSettings_CALLBACK NULL
|
||||||
#define ChannelSettings_DEFAULT NULL
|
#define meshtastic_ChannelSettings_DEFAULT NULL
|
||||||
|
|
||||||
#define Channel_FIELDLIST(X, a) \
|
#define meshtastic_Channel_FIELDLIST(X, a) \
|
||||||
X(a, STATIC, SINGULAR, INT32, index, 1) \
|
X(a, STATIC, SINGULAR, INT32, index, 1) \
|
||||||
X(a, STATIC, OPTIONAL, MESSAGE, settings, 2) \
|
X(a, STATIC, OPTIONAL, MESSAGE, settings, 2) \
|
||||||
X(a, STATIC, SINGULAR, UENUM, role, 3)
|
X(a, STATIC, SINGULAR, UENUM, role, 3)
|
||||||
#define Channel_CALLBACK NULL
|
#define meshtastic_Channel_CALLBACK NULL
|
||||||
#define Channel_DEFAULT NULL
|
#define meshtastic_Channel_DEFAULT NULL
|
||||||
#define Channel_settings_MSGTYPE ChannelSettings
|
#define meshtastic_Channel_settings_MSGTYPE meshtastic_ChannelSettings
|
||||||
|
|
||||||
extern const pb_msgdesc_t ChannelSettings_msg;
|
extern const pb_msgdesc_t meshtastic_ChannelSettings_msg;
|
||||||
extern const pb_msgdesc_t Channel_msg;
|
extern const pb_msgdesc_t meshtastic_Channel_msg;
|
||||||
|
|
||||||
/* Defines for backwards compatibility with code written before nanopb-0.4.0 */
|
/* Defines for backwards compatibility with code written before nanopb-0.4.0 */
|
||||||
#define ChannelSettings_fields &ChannelSettings_msg
|
#define meshtastic_ChannelSettings_fields &meshtastic_ChannelSettings_msg
|
||||||
#define Channel_fields &Channel_msg
|
#define meshtastic_Channel_fields &meshtastic_Channel_msg
|
||||||
|
|
||||||
/* Maximum encoded size of messages (where known) */
|
/* Maximum encoded size of messages (where known) */
|
||||||
#define ChannelSettings_size 62
|
#define meshtastic_ChannelSettings_size 62
|
||||||
#define Channel_size 77
|
#define meshtastic_Channel_size 77
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
} /* extern "C" */
|
} /* extern "C" */
|
||||||
|
|||||||
@@ -1,36 +1,36 @@
|
|||||||
/* Automatically generated nanopb constant definitions */
|
/* Automatically generated nanopb constant definitions */
|
||||||
/* Generated by nanopb-0.4.7 */
|
/* Generated by nanopb-0.4.7 */
|
||||||
|
|
||||||
#include "./config.pb.h"
|
#include "meshtastic/config.pb.h"
|
||||||
#if PB_PROTO_HEADER_VERSION != 40
|
#if PB_PROTO_HEADER_VERSION != 40
|
||||||
#error Regenerate this file with the current version of nanopb generator.
|
#error Regenerate this file with the current version of nanopb generator.
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
PB_BIND(Config, Config, AUTO)
|
PB_BIND(meshtastic_Config, meshtastic_Config, AUTO)
|
||||||
|
|
||||||
|
|
||||||
PB_BIND(Config_DeviceConfig, Config_DeviceConfig, AUTO)
|
PB_BIND(meshtastic_Config_DeviceConfig, meshtastic_Config_DeviceConfig, AUTO)
|
||||||
|
|
||||||
|
|
||||||
PB_BIND(Config_PositionConfig, Config_PositionConfig, AUTO)
|
PB_BIND(meshtastic_Config_PositionConfig, meshtastic_Config_PositionConfig, AUTO)
|
||||||
|
|
||||||
|
|
||||||
PB_BIND(Config_PowerConfig, Config_PowerConfig, AUTO)
|
PB_BIND(meshtastic_Config_PowerConfig, meshtastic_Config_PowerConfig, AUTO)
|
||||||
|
|
||||||
|
|
||||||
PB_BIND(Config_NetworkConfig, Config_NetworkConfig, AUTO)
|
PB_BIND(meshtastic_Config_NetworkConfig, meshtastic_Config_NetworkConfig, AUTO)
|
||||||
|
|
||||||
|
|
||||||
PB_BIND(Config_NetworkConfig_IpV4Config, Config_NetworkConfig_IpV4Config, AUTO)
|
PB_BIND(meshtastic_Config_NetworkConfig_IpV4Config, meshtastic_Config_NetworkConfig_IpV4Config, AUTO)
|
||||||
|
|
||||||
|
|
||||||
PB_BIND(Config_DisplayConfig, Config_DisplayConfig, AUTO)
|
PB_BIND(meshtastic_Config_DisplayConfig, meshtastic_Config_DisplayConfig, AUTO)
|
||||||
|
|
||||||
|
|
||||||
PB_BIND(Config_LoRaConfig, Config_LoRaConfig, 2)
|
PB_BIND(meshtastic_Config_LoRaConfig, meshtastic_Config_LoRaConfig, 2)
|
||||||
|
|
||||||
|
|
||||||
PB_BIND(Config_BluetoothConfig, Config_BluetoothConfig, AUTO)
|
PB_BIND(meshtastic_Config_BluetoothConfig, meshtastic_Config_BluetoothConfig, AUTO)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -11,184 +11,184 @@
|
|||||||
|
|
||||||
/* Enum definitions */
|
/* Enum definitions */
|
||||||
/* Defines the device's role on the Mesh network */
|
/* Defines the device's role on the Mesh network */
|
||||||
typedef enum _Config_DeviceConfig_Role {
|
typedef enum _meshtastic_Config_DeviceConfig_Role {
|
||||||
/* Client device role */
|
/* Client device role */
|
||||||
Config_DeviceConfig_Role_CLIENT = 0,
|
meshtastic_Config_DeviceConfig_Role_CLIENT = 0,
|
||||||
/* Client Mute device role
|
/* Client Mute device role
|
||||||
Same as a client except packets will not hop over this node, does not contribute to routing packets for mesh. */
|
Same as a client except packets will not hop over this node, does not contribute to routing packets for mesh. */
|
||||||
Config_DeviceConfig_Role_CLIENT_MUTE = 1,
|
meshtastic_Config_DeviceConfig_Role_CLIENT_MUTE = 1,
|
||||||
/* Router device role.
|
/* Router device role.
|
||||||
Mesh packets will prefer to be routed over this node. This node will not be used by client apps.
|
Mesh packets will prefer to be routed over this node. This node will not be used by client apps.
|
||||||
The wifi/ble radios and the oled screen will be put to sleep. */
|
The wifi/ble radios and the oled screen will be put to sleep. */
|
||||||
Config_DeviceConfig_Role_ROUTER = 2,
|
meshtastic_Config_DeviceConfig_Role_ROUTER = 2,
|
||||||
/* Router Client device role
|
/* Router Client device role
|
||||||
Mesh packets will prefer to be routed over this node. The Router Client can be used as both a Router and an app connected Client. */
|
Mesh packets will prefer to be routed over this node. The Router Client can be used as both a Router and an app connected Client. */
|
||||||
Config_DeviceConfig_Role_ROUTER_CLIENT = 3
|
meshtastic_Config_DeviceConfig_Role_ROUTER_CLIENT = 3
|
||||||
} Config_DeviceConfig_Role;
|
} meshtastic_Config_DeviceConfig_Role;
|
||||||
|
|
||||||
/* Bit field of boolean configuration options, indicating which optional
|
/* Bit field of boolean configuration options, indicating which optional
|
||||||
fields to include when assembling POSITION messages
|
fields to include when assembling POSITION messages
|
||||||
Longitude and latitude are always included (also time if GPS-synced)
|
Longitude and latitude are always included (also time if GPS-synced)
|
||||||
NOTE: the more fields are included, the larger the message will be -
|
NOTE: the more fields are included, the larger the message will be -
|
||||||
leading to longer airtime and a higher risk of packet loss */
|
leading to longer airtime and a higher risk of packet loss */
|
||||||
typedef enum _Config_PositionConfig_PositionFlags {
|
typedef enum _meshtastic_Config_PositionConfig_PositionFlags {
|
||||||
/* Required for compilation */
|
/* Required for compilation */
|
||||||
Config_PositionConfig_PositionFlags_UNSET = 0,
|
meshtastic_Config_PositionConfig_PositionFlags_UNSET = 0,
|
||||||
/* Include an altitude value (if available) */
|
/* Include an altitude value (if available) */
|
||||||
Config_PositionConfig_PositionFlags_ALTITUDE = 1,
|
meshtastic_Config_PositionConfig_PositionFlags_ALTITUDE = 1,
|
||||||
/* Altitude value is MSL */
|
/* Altitude value is MSL */
|
||||||
Config_PositionConfig_PositionFlags_ALTITUDE_MSL = 2,
|
meshtastic_Config_PositionConfig_PositionFlags_ALTITUDE_MSL = 2,
|
||||||
/* Include geoidal separation */
|
/* Include geoidal separation */
|
||||||
Config_PositionConfig_PositionFlags_GEOIDAL_SEPARATION = 4,
|
meshtastic_Config_PositionConfig_PositionFlags_GEOIDAL_SEPARATION = 4,
|
||||||
/* Include the DOP value ; PDOP used by default, see below */
|
/* Include the DOP value ; PDOP used by default, see below */
|
||||||
Config_PositionConfig_PositionFlags_DOP = 8,
|
meshtastic_Config_PositionConfig_PositionFlags_DOP = 8,
|
||||||
/* If POS_DOP set, send separate HDOP / VDOP values instead of PDOP */
|
/* If POS_DOP set, send separate HDOP / VDOP values instead of PDOP */
|
||||||
Config_PositionConfig_PositionFlags_HVDOP = 16,
|
meshtastic_Config_PositionConfig_PositionFlags_HVDOP = 16,
|
||||||
/* Include number of "satellites in view" */
|
/* Include number of "satellites in view" */
|
||||||
Config_PositionConfig_PositionFlags_SATINVIEW = 32,
|
meshtastic_Config_PositionConfig_PositionFlags_SATINVIEW = 32,
|
||||||
/* Include a sequence number incremented per packet */
|
/* Include a sequence number incremented per packet */
|
||||||
Config_PositionConfig_PositionFlags_SEQ_NO = 64,
|
meshtastic_Config_PositionConfig_PositionFlags_SEQ_NO = 64,
|
||||||
/* Include positional timestamp (from GPS solution) */
|
/* Include positional timestamp (from GPS solution) */
|
||||||
Config_PositionConfig_PositionFlags_TIMESTAMP = 128,
|
meshtastic_Config_PositionConfig_PositionFlags_TIMESTAMP = 128,
|
||||||
/* Include positional heading
|
/* Include positional heading
|
||||||
Intended for use with vehicle not walking speeds
|
Intended for use with vehicle not walking speeds
|
||||||
walking speeds are likely to be error prone like the compass */
|
walking speeds are likely to be error prone like the compass */
|
||||||
Config_PositionConfig_PositionFlags_HEADING = 256,
|
meshtastic_Config_PositionConfig_PositionFlags_HEADING = 256,
|
||||||
/* Include positional speed
|
/* Include positional speed
|
||||||
Intended for use with vehicle not walking speeds
|
Intended for use with vehicle not walking speeds
|
||||||
walking speeds are likely to be error prone like the compass */
|
walking speeds are likely to be error prone like the compass */
|
||||||
Config_PositionConfig_PositionFlags_SPEED = 512
|
meshtastic_Config_PositionConfig_PositionFlags_SPEED = 512
|
||||||
} Config_PositionConfig_PositionFlags;
|
} meshtastic_Config_PositionConfig_PositionFlags;
|
||||||
|
|
||||||
typedef enum _Config_NetworkConfig_AddressMode {
|
typedef enum _meshtastic_Config_NetworkConfig_AddressMode {
|
||||||
/* obtain ip address via DHCP */
|
/* obtain ip address via DHCP */
|
||||||
Config_NetworkConfig_AddressMode_DHCP = 0,
|
meshtastic_Config_NetworkConfig_AddressMode_DHCP = 0,
|
||||||
/* use static ip address */
|
/* use static ip address */
|
||||||
Config_NetworkConfig_AddressMode_STATIC = 1
|
meshtastic_Config_NetworkConfig_AddressMode_STATIC = 1
|
||||||
} Config_NetworkConfig_AddressMode;
|
} meshtastic_Config_NetworkConfig_AddressMode;
|
||||||
|
|
||||||
/* How the GPS coordinates are displayed on the OLED screen. */
|
/* How the GPS coordinates are displayed on the OLED screen. */
|
||||||
typedef enum _Config_DisplayConfig_GpsCoordinateFormat {
|
typedef enum _meshtastic_Config_DisplayConfig_GpsCoordinateFormat {
|
||||||
/* GPS coordinates are displayed in the normal decimal degrees format:
|
/* GPS coordinates are displayed in the normal decimal degrees format:
|
||||||
DD.DDDDDD DDD.DDDDDD */
|
DD.DDDDDD DDD.DDDDDD */
|
||||||
Config_DisplayConfig_GpsCoordinateFormat_DEC = 0,
|
meshtastic_Config_DisplayConfig_GpsCoordinateFormat_DEC = 0,
|
||||||
/* GPS coordinates are displayed in the degrees minutes seconds format:
|
/* GPS coordinates are displayed in the degrees minutes seconds format:
|
||||||
DD°MM'SS"C DDD°MM'SS"C, where C is the compass point representing the locations quadrant */
|
DD°MM'SS"C DDD°MM'SS"C, where C is the compass point representing the locations quadrant */
|
||||||
Config_DisplayConfig_GpsCoordinateFormat_DMS = 1,
|
meshtastic_Config_DisplayConfig_GpsCoordinateFormat_DMS = 1,
|
||||||
/* Universal Transverse Mercator format:
|
/* Universal Transverse Mercator format:
|
||||||
ZZB EEEEEE NNNNNNN, where Z is zone, B is band, E is easting, N is northing */
|
ZZB EEEEEE NNNNNNN, where Z is zone, B is band, E is easting, N is northing */
|
||||||
Config_DisplayConfig_GpsCoordinateFormat_UTM = 2,
|
meshtastic_Config_DisplayConfig_GpsCoordinateFormat_UTM = 2,
|
||||||
/* Military Grid Reference System format:
|
/* Military Grid Reference System format:
|
||||||
ZZB CD EEEEE NNNNN, where Z is zone, B is band, C is the east 100k square, D is the north 100k square,
|
ZZB CD EEEEE NNNNN, where Z is zone, B is band, C is the east 100k square, D is the north 100k square,
|
||||||
E is easting, N is northing */
|
E is easting, N is northing */
|
||||||
Config_DisplayConfig_GpsCoordinateFormat_MGRS = 3,
|
meshtastic_Config_DisplayConfig_GpsCoordinateFormat_MGRS = 3,
|
||||||
/* Open Location Code (aka Plus Codes). */
|
/* Open Location Code (aka Plus Codes). */
|
||||||
Config_DisplayConfig_GpsCoordinateFormat_OLC = 4,
|
meshtastic_Config_DisplayConfig_GpsCoordinateFormat_OLC = 4,
|
||||||
/* Ordnance Survey Grid Reference (the National Grid System of the UK).
|
/* Ordnance Survey Grid Reference (the National Grid System of the UK).
|
||||||
Format: AB EEEEE NNNNN, where A is the east 100k square, B is the north 100k square,
|
Format: AB EEEEE NNNNN, where A is the east 100k square, B is the north 100k square,
|
||||||
E is the easting, N is the northing */
|
E is the easting, N is the northing */
|
||||||
Config_DisplayConfig_GpsCoordinateFormat_OSGR = 5
|
meshtastic_Config_DisplayConfig_GpsCoordinateFormat_OSGR = 5
|
||||||
} Config_DisplayConfig_GpsCoordinateFormat;
|
} meshtastic_Config_DisplayConfig_GpsCoordinateFormat;
|
||||||
|
|
||||||
/* Unit display preference */
|
/* Unit display preference */
|
||||||
typedef enum _Config_DisplayConfig_DisplayUnits {
|
typedef enum _meshtastic_Config_DisplayConfig_DisplayUnits {
|
||||||
/* Metric (Default) */
|
/* Metric (Default) */
|
||||||
Config_DisplayConfig_DisplayUnits_METRIC = 0,
|
meshtastic_Config_DisplayConfig_DisplayUnits_METRIC = 0,
|
||||||
/* Imperial */
|
/* Imperial */
|
||||||
Config_DisplayConfig_DisplayUnits_IMPERIAL = 1
|
meshtastic_Config_DisplayConfig_DisplayUnits_IMPERIAL = 1
|
||||||
} Config_DisplayConfig_DisplayUnits;
|
} meshtastic_Config_DisplayConfig_DisplayUnits;
|
||||||
|
|
||||||
/* Override OLED outo detect with this if it fails. */
|
/* Override OLED outo detect with this if it fails. */
|
||||||
typedef enum _Config_DisplayConfig_OledType {
|
typedef enum _meshtastic_Config_DisplayConfig_OledType {
|
||||||
/* Default / Auto */
|
/* Default / Auto */
|
||||||
Config_DisplayConfig_OledType_OLED_AUTO = 0,
|
meshtastic_Config_DisplayConfig_OledType_OLED_AUTO = 0,
|
||||||
/* Default / Auto */
|
/* Default / Auto */
|
||||||
Config_DisplayConfig_OledType_OLED_SSD1306 = 1,
|
meshtastic_Config_DisplayConfig_OledType_OLED_SSD1306 = 1,
|
||||||
/* Default / Auto */
|
/* Default / Auto */
|
||||||
Config_DisplayConfig_OledType_OLED_SH1106 = 2,
|
meshtastic_Config_DisplayConfig_OledType_OLED_SH1106 = 2,
|
||||||
/* Can not be auto detected but set by proto. Used for 128x128 screens */
|
/* Can not be auto detected but set by proto. Used for 128x128 screens */
|
||||||
Config_DisplayConfig_OledType_OLED_SH1107 = 3
|
meshtastic_Config_DisplayConfig_OledType_OLED_SH1107 = 3
|
||||||
} Config_DisplayConfig_OledType;
|
} meshtastic_Config_DisplayConfig_OledType;
|
||||||
|
|
||||||
typedef enum _Config_DisplayConfig_DisplayMode {
|
typedef enum _meshtastic_Config_DisplayConfig_DisplayMode {
|
||||||
/* Default. The old style for the 128x64 OLED screen */
|
/* Default. The old style for the 128x64 OLED screen */
|
||||||
Config_DisplayConfig_DisplayMode_DEFAULT = 0,
|
meshtastic_Config_DisplayConfig_DisplayMode_DEFAULT = 0,
|
||||||
/* Rearrange display elements to cater for bicolor OLED displays */
|
/* Rearrange display elements to cater for bicolor OLED displays */
|
||||||
Config_DisplayConfig_DisplayMode_TWOCOLOR = 1,
|
meshtastic_Config_DisplayConfig_DisplayMode_TWOCOLOR = 1,
|
||||||
/* Same as TwoColor, but with inverted top bar. Not so good for Epaper displays */
|
/* Same as TwoColor, but with inverted top bar. Not so good for Epaper displays */
|
||||||
Config_DisplayConfig_DisplayMode_INVERTED = 2,
|
meshtastic_Config_DisplayConfig_DisplayMode_INVERTED = 2,
|
||||||
/* TFT Full Color Displays (not implemented yet) */
|
/* TFT Full Color Displays (not implemented yet) */
|
||||||
Config_DisplayConfig_DisplayMode_COLOR = 3
|
meshtastic_Config_DisplayConfig_DisplayMode_COLOR = 3
|
||||||
} Config_DisplayConfig_DisplayMode;
|
} meshtastic_Config_DisplayConfig_DisplayMode;
|
||||||
|
|
||||||
typedef enum _Config_LoRaConfig_RegionCode {
|
typedef enum _meshtastic_Config_LoRaConfig_RegionCode {
|
||||||
/* Region is not set */
|
/* Region is not set */
|
||||||
Config_LoRaConfig_RegionCode_UNSET = 0,
|
meshtastic_Config_LoRaConfig_RegionCode_UNSET = 0,
|
||||||
/* United States */
|
/* United States */
|
||||||
Config_LoRaConfig_RegionCode_US = 1,
|
meshtastic_Config_LoRaConfig_RegionCode_US = 1,
|
||||||
/* European Union 433mhz */
|
/* European Union 433mhz */
|
||||||
Config_LoRaConfig_RegionCode_EU_433 = 2,
|
meshtastic_Config_LoRaConfig_RegionCode_EU_433 = 2,
|
||||||
/* European Union 433mhz */
|
/* European Union 433mhz */
|
||||||
Config_LoRaConfig_RegionCode_EU_868 = 3,
|
meshtastic_Config_LoRaConfig_RegionCode_EU_868 = 3,
|
||||||
/* China */
|
/* China */
|
||||||
Config_LoRaConfig_RegionCode_CN = 4,
|
meshtastic_Config_LoRaConfig_RegionCode_CN = 4,
|
||||||
/* Japan */
|
/* Japan */
|
||||||
Config_LoRaConfig_RegionCode_JP = 5,
|
meshtastic_Config_LoRaConfig_RegionCode_JP = 5,
|
||||||
/* Australia / New Zealand */
|
/* Australia / New Zealand */
|
||||||
Config_LoRaConfig_RegionCode_ANZ = 6,
|
meshtastic_Config_LoRaConfig_RegionCode_ANZ = 6,
|
||||||
/* Korea */
|
/* Korea */
|
||||||
Config_LoRaConfig_RegionCode_KR = 7,
|
meshtastic_Config_LoRaConfig_RegionCode_KR = 7,
|
||||||
/* Taiwan */
|
/* Taiwan */
|
||||||
Config_LoRaConfig_RegionCode_TW = 8,
|
meshtastic_Config_LoRaConfig_RegionCode_TW = 8,
|
||||||
/* Russia */
|
/* Russia */
|
||||||
Config_LoRaConfig_RegionCode_RU = 9,
|
meshtastic_Config_LoRaConfig_RegionCode_RU = 9,
|
||||||
/* India */
|
/* India */
|
||||||
Config_LoRaConfig_RegionCode_IN = 10,
|
meshtastic_Config_LoRaConfig_RegionCode_IN = 10,
|
||||||
/* New Zealand 865mhz */
|
/* New Zealand 865mhz */
|
||||||
Config_LoRaConfig_RegionCode_NZ_865 = 11,
|
meshtastic_Config_LoRaConfig_RegionCode_NZ_865 = 11,
|
||||||
/* Thailand */
|
/* Thailand */
|
||||||
Config_LoRaConfig_RegionCode_TH = 12,
|
meshtastic_Config_LoRaConfig_RegionCode_TH = 12,
|
||||||
/* WLAN Band */
|
/* WLAN Band */
|
||||||
Config_LoRaConfig_RegionCode_LORA_24 = 13,
|
meshtastic_Config_LoRaConfig_RegionCode_LORA_24 = 13,
|
||||||
/* Ukraine 433mhz */
|
/* Ukraine 433mhz */
|
||||||
Config_LoRaConfig_RegionCode_UA_433 = 14,
|
meshtastic_Config_LoRaConfig_RegionCode_UA_433 = 14,
|
||||||
/* Ukraine 868mhz */
|
/* Ukraine 868mhz */
|
||||||
Config_LoRaConfig_RegionCode_UA_868 = 15
|
meshtastic_Config_LoRaConfig_RegionCode_UA_868 = 15
|
||||||
} Config_LoRaConfig_RegionCode;
|
} meshtastic_Config_LoRaConfig_RegionCode;
|
||||||
|
|
||||||
/* Standard predefined channel settings
|
/* Standard predefined channel settings
|
||||||
Note: these mappings must match ModemPreset Choice in the device code. */
|
Note: these mappings must match ModemPreset Choice in the device code. */
|
||||||
typedef enum _Config_LoRaConfig_ModemPreset {
|
typedef enum _meshtastic_Config_LoRaConfig_ModemPreset {
|
||||||
/* Long Range - Fast */
|
/* Long Range - Fast */
|
||||||
Config_LoRaConfig_ModemPreset_LONG_FAST = 0,
|
meshtastic_Config_LoRaConfig_ModemPreset_LONG_FAST = 0,
|
||||||
/* Long Range - Slow */
|
/* Long Range - Slow */
|
||||||
Config_LoRaConfig_ModemPreset_LONG_SLOW = 1,
|
meshtastic_Config_LoRaConfig_ModemPreset_LONG_SLOW = 1,
|
||||||
/* Very Long Range - Slow */
|
/* Very Long Range - Slow */
|
||||||
Config_LoRaConfig_ModemPreset_VERY_LONG_SLOW = 2,
|
meshtastic_Config_LoRaConfig_ModemPreset_VERY_LONG_SLOW = 2,
|
||||||
/* Medium Range - Slow */
|
/* Medium Range - Slow */
|
||||||
Config_LoRaConfig_ModemPreset_MEDIUM_SLOW = 3,
|
meshtastic_Config_LoRaConfig_ModemPreset_MEDIUM_SLOW = 3,
|
||||||
/* Medium Range - Fast */
|
/* Medium Range - Fast */
|
||||||
Config_LoRaConfig_ModemPreset_MEDIUM_FAST = 4,
|
meshtastic_Config_LoRaConfig_ModemPreset_MEDIUM_FAST = 4,
|
||||||
/* Short Range - Slow */
|
/* Short Range - Slow */
|
||||||
Config_LoRaConfig_ModemPreset_SHORT_SLOW = 5,
|
meshtastic_Config_LoRaConfig_ModemPreset_SHORT_SLOW = 5,
|
||||||
/* Short Range - Fast */
|
/* Short Range - Fast */
|
||||||
Config_LoRaConfig_ModemPreset_SHORT_FAST = 6
|
meshtastic_Config_LoRaConfig_ModemPreset_SHORT_FAST = 6
|
||||||
} Config_LoRaConfig_ModemPreset;
|
} meshtastic_Config_LoRaConfig_ModemPreset;
|
||||||
|
|
||||||
typedef enum _Config_BluetoothConfig_PairingMode {
|
typedef enum _meshtastic_Config_BluetoothConfig_PairingMode {
|
||||||
/* Device generates a random pin that will be shown on the screen of the device for pairing */
|
/* Device generates a random pin that will be shown on the screen of the device for pairing */
|
||||||
Config_BluetoothConfig_PairingMode_RANDOM_PIN = 0,
|
meshtastic_Config_BluetoothConfig_PairingMode_RANDOM_PIN = 0,
|
||||||
/* Device requires a specified fixed pin for pairing */
|
/* Device requires a specified fixed pin for pairing */
|
||||||
Config_BluetoothConfig_PairingMode_FIXED_PIN = 1,
|
meshtastic_Config_BluetoothConfig_PairingMode_FIXED_PIN = 1,
|
||||||
/* Device requires no pin for pairing */
|
/* Device requires no pin for pairing */
|
||||||
Config_BluetoothConfig_PairingMode_NO_PIN = 2
|
meshtastic_Config_BluetoothConfig_PairingMode_NO_PIN = 2
|
||||||
} Config_BluetoothConfig_PairingMode;
|
} meshtastic_Config_BluetoothConfig_PairingMode;
|
||||||
|
|
||||||
/* Struct definitions */
|
/* Struct definitions */
|
||||||
/* Configuration */
|
/* Configuration */
|
||||||
typedef struct _Config_DeviceConfig {
|
typedef struct _meshtastic_Config_DeviceConfig {
|
||||||
/* Sets the role of node */
|
/* Sets the role of node */
|
||||||
Config_DeviceConfig_Role role;
|
meshtastic_Config_DeviceConfig_Role role;
|
||||||
/* Disabling this will disable the SerialConsole by not initilizing the StreamAPI */
|
/* Disabling this will disable the SerialConsole by not initilizing the StreamAPI */
|
||||||
bool serial_enabled;
|
bool serial_enabled;
|
||||||
/* By default we turn off logging as soon as an API client connects (to keep shared serial link quiet).
|
/* By default we turn off logging as soon as an API client connects (to keep shared serial link quiet).
|
||||||
@@ -200,10 +200,10 @@ typedef struct _Config_DeviceConfig {
|
|||||||
/* For boards without a PWM buzzer, this is the pin number that will be used
|
/* For boards without a PWM buzzer, this is the pin number that will be used
|
||||||
Defaults to PIN_BUZZER if defined. */
|
Defaults to PIN_BUZZER if defined. */
|
||||||
uint32_t buzzer_gpio;
|
uint32_t buzzer_gpio;
|
||||||
} Config_DeviceConfig;
|
} meshtastic_Config_DeviceConfig;
|
||||||
|
|
||||||
/* Position Config */
|
/* Position Config */
|
||||||
typedef struct _Config_PositionConfig {
|
typedef struct _meshtastic_Config_PositionConfig {
|
||||||
/* We should send our position this often (but only if it has changed significantly)
|
/* We should send our position this often (but only if it has changed significantly)
|
||||||
Defaults to 15 minutes */
|
Defaults to 15 minutes */
|
||||||
uint32_t position_broadcast_secs;
|
uint32_t position_broadcast_secs;
|
||||||
@@ -231,11 +231,11 @@ typedef struct _Config_PositionConfig {
|
|||||||
uint32_t rx_gpio;
|
uint32_t rx_gpio;
|
||||||
/* (Re)define GPS_TX_PIN for your board. */
|
/* (Re)define GPS_TX_PIN for your board. */
|
||||||
uint32_t tx_gpio;
|
uint32_t tx_gpio;
|
||||||
} Config_PositionConfig;
|
} meshtastic_Config_PositionConfig;
|
||||||
|
|
||||||
/* Power Config\
|
/* Power Config\
|
||||||
See [Power Config](/docs/settings/config/power) for additional power config details. */
|
See [Power Config](/docs/settings/config/power) for additional power config details. */
|
||||||
typedef struct _Config_PowerConfig {
|
typedef struct _meshtastic_Config_PowerConfig {
|
||||||
/* If set, we are powered from a low-current source (i.e. solar), so even if it looks like we have power flowing in
|
/* If set, we are powered from a low-current source (i.e. solar), so even if it looks like we have power flowing in
|
||||||
we should try to minimize power consumption as much as possible.
|
we should try to minimize power consumption as much as possible.
|
||||||
YOU DO NOT NEED TO SET THIS IF YOU'VE set is_router (it is implied in that case).
|
YOU DO NOT NEED TO SET THIS IF YOU'VE set is_router (it is implied in that case).
|
||||||
@@ -271,9 +271,9 @@ typedef struct _Config_PowerConfig {
|
|||||||
While in light sleep when we receive packets on the LoRa radio we will wake and handle them and stay awake in no BLE mode for this value
|
While in light sleep when we receive packets on the LoRa radio we will wake and handle them and stay awake in no BLE mode for this value
|
||||||
0 for default of 10 seconds */
|
0 for default of 10 seconds */
|
||||||
uint32_t min_wake_secs;
|
uint32_t min_wake_secs;
|
||||||
} Config_PowerConfig;
|
} meshtastic_Config_PowerConfig;
|
||||||
|
|
||||||
typedef struct _Config_NetworkConfig_IpV4Config {
|
typedef struct _meshtastic_Config_NetworkConfig_IpV4Config {
|
||||||
/* Static IP address */
|
/* Static IP address */
|
||||||
uint32_t ip;
|
uint32_t ip;
|
||||||
/* Static gateway address */
|
/* Static gateway address */
|
||||||
@@ -282,10 +282,10 @@ typedef struct _Config_NetworkConfig_IpV4Config {
|
|||||||
uint32_t subnet;
|
uint32_t subnet;
|
||||||
/* Static DNS server address */
|
/* Static DNS server address */
|
||||||
uint32_t dns;
|
uint32_t dns;
|
||||||
} Config_NetworkConfig_IpV4Config;
|
} meshtastic_Config_NetworkConfig_IpV4Config;
|
||||||
|
|
||||||
/* Network Config */
|
/* Network Config */
|
||||||
typedef struct _Config_NetworkConfig {
|
typedef struct _meshtastic_Config_NetworkConfig {
|
||||||
/* Enable WiFi (disables Bluetooth) */
|
/* Enable WiFi (disables Bluetooth) */
|
||||||
bool wifi_enabled;
|
bool wifi_enabled;
|
||||||
/* If set, this node will try to join the specified wifi network and
|
/* If set, this node will try to join the specified wifi network and
|
||||||
@@ -298,21 +298,21 @@ typedef struct _Config_NetworkConfig {
|
|||||||
/* Enable Ethernet */
|
/* Enable Ethernet */
|
||||||
bool eth_enabled;
|
bool eth_enabled;
|
||||||
/* acquire an address via DHCP or assign static */
|
/* acquire an address via DHCP or assign static */
|
||||||
Config_NetworkConfig_AddressMode address_mode;
|
meshtastic_Config_NetworkConfig_AddressMode address_mode;
|
||||||
/* struct to keep static address */
|
/* struct to keep static address */
|
||||||
bool has_ipv4_config;
|
bool has_ipv4_config;
|
||||||
Config_NetworkConfig_IpV4Config ipv4_config;
|
meshtastic_Config_NetworkConfig_IpV4Config ipv4_config;
|
||||||
/* rsyslog Server and Port */
|
/* rsyslog Server and Port */
|
||||||
char rsyslog_server[33];
|
char rsyslog_server[33];
|
||||||
} Config_NetworkConfig;
|
} meshtastic_Config_NetworkConfig;
|
||||||
|
|
||||||
/* Display Config */
|
/* Display Config */
|
||||||
typedef struct _Config_DisplayConfig {
|
typedef struct _meshtastic_Config_DisplayConfig {
|
||||||
/* Number of seconds the screen stays on after pressing the user button or receiving a message
|
/* Number of seconds the screen stays on after pressing the user button or receiving a message
|
||||||
0 for default of one minute MAXUINT for always on */
|
0 for default of one minute MAXUINT for always on */
|
||||||
uint32_t screen_on_secs;
|
uint32_t screen_on_secs;
|
||||||
/* How the GPS coordinates are formatted on the OLED screen. */
|
/* How the GPS coordinates are formatted on the OLED screen. */
|
||||||
Config_DisplayConfig_GpsCoordinateFormat gps_format;
|
meshtastic_Config_DisplayConfig_GpsCoordinateFormat gps_format;
|
||||||
/* Automatically toggles to the next page on the screen like a carousel, based the specified interval in seconds.
|
/* Automatically toggles to the next page on the screen like a carousel, based the specified interval in seconds.
|
||||||
Potentially useful for devices without user buttons. */
|
Potentially useful for devices without user buttons. */
|
||||||
uint32_t auto_screen_carousel_secs;
|
uint32_t auto_screen_carousel_secs;
|
||||||
@@ -322,17 +322,17 @@ typedef struct _Config_DisplayConfig {
|
|||||||
/* Flip screen vertically, for cases that mount the screen upside down */
|
/* Flip screen vertically, for cases that mount the screen upside down */
|
||||||
bool flip_screen;
|
bool flip_screen;
|
||||||
/* Perferred display units */
|
/* Perferred display units */
|
||||||
Config_DisplayConfig_DisplayUnits units;
|
meshtastic_Config_DisplayConfig_DisplayUnits units;
|
||||||
/* Override auto-detect in screen */
|
/* Override auto-detect in screen */
|
||||||
Config_DisplayConfig_OledType oled;
|
meshtastic_Config_DisplayConfig_OledType oled;
|
||||||
/* Display Mode */
|
/* Display Mode */
|
||||||
Config_DisplayConfig_DisplayMode displaymode;
|
meshtastic_Config_DisplayConfig_DisplayMode displaymode;
|
||||||
/* Print first line in pseudo-bold? FALSE is original style, TRUE is bold */
|
/* Print first line in pseudo-bold? FALSE is original style, TRUE is bold */
|
||||||
bool heading_bold;
|
bool heading_bold;
|
||||||
} Config_DisplayConfig;
|
} meshtastic_Config_DisplayConfig;
|
||||||
|
|
||||||
/* Lora Config */
|
/* Lora Config */
|
||||||
typedef struct _Config_LoRaConfig {
|
typedef struct _meshtastic_Config_LoRaConfig {
|
||||||
/* When enabled, the `modem_preset` fields will be adheared to, else the `bandwidth`/`spread_factor`/`coding_rate`
|
/* When enabled, the `modem_preset` fields will be adheared to, else the `bandwidth`/`spread_factor`/`coding_rate`
|
||||||
will be taked from their respective manually defined fields */
|
will be taked from their respective manually defined fields */
|
||||||
bool use_preset;
|
bool use_preset;
|
||||||
@@ -341,7 +341,7 @@ typedef struct _Config_LoRaConfig {
|
|||||||
Because protobufs take ZERO space when the value is zero this works out nicely.
|
Because protobufs take ZERO space when the value is zero this works out nicely.
|
||||||
This value is replaced by bandwidth/spread_factor/coding_rate.
|
This value is replaced by bandwidth/spread_factor/coding_rate.
|
||||||
If you'd like to experiment with other options add them to MeshRadio.cpp in the device code. */
|
If you'd like to experiment with other options add them to MeshRadio.cpp in the device code. */
|
||||||
Config_LoRaConfig_ModemPreset modem_preset;
|
meshtastic_Config_LoRaConfig_ModemPreset modem_preset;
|
||||||
/* Bandwidth in MHz
|
/* Bandwidth in MHz
|
||||||
Certain bandwidth numbers are 'special' and will be converted to the
|
Certain bandwidth numbers are 'special' and will be converted to the
|
||||||
appropriate floating point value: 31 -> 31.25MHz */
|
appropriate floating point value: 31 -> 31.25MHz */
|
||||||
@@ -357,7 +357,7 @@ typedef struct _Config_LoRaConfig {
|
|||||||
Used to correct for crystal calibration errors. */
|
Used to correct for crystal calibration errors. */
|
||||||
float frequency_offset;
|
float frequency_offset;
|
||||||
/* The region code for the radio (US, CN, EU433, etc...) */
|
/* The region code for the radio (US, CN, EU433, etc...) */
|
||||||
Config_LoRaConfig_RegionCode region;
|
meshtastic_Config_LoRaConfig_RegionCode region;
|
||||||
/* Maximum number of hops. This can't be greater than 7.
|
/* Maximum number of hops. This can't be greater than 7.
|
||||||
Default of 3 */
|
Default of 3 */
|
||||||
uint32_t hop_limit;
|
uint32_t hop_limit;
|
||||||
@@ -386,29 +386,29 @@ typedef struct _Config_LoRaConfig {
|
|||||||
in ignore_incoming will have packets they send droped on receive (by router.cpp) */
|
in ignore_incoming will have packets they send droped on receive (by router.cpp) */
|
||||||
pb_size_t ignore_incoming_count;
|
pb_size_t ignore_incoming_count;
|
||||||
uint32_t ignore_incoming[3];
|
uint32_t ignore_incoming[3];
|
||||||
} Config_LoRaConfig;
|
} meshtastic_Config_LoRaConfig;
|
||||||
|
|
||||||
typedef struct _Config_BluetoothConfig {
|
typedef struct _meshtastic_Config_BluetoothConfig {
|
||||||
/* Enable Bluetooth on the device */
|
/* Enable Bluetooth on the device */
|
||||||
bool enabled;
|
bool enabled;
|
||||||
/* Determines the pairing strategy for the device */
|
/* Determines the pairing strategy for the device */
|
||||||
Config_BluetoothConfig_PairingMode mode;
|
meshtastic_Config_BluetoothConfig_PairingMode mode;
|
||||||
/* Specified pin for PairingMode.FixedPin */
|
/* Specified pin for PairingMode.FixedPin */
|
||||||
uint32_t fixed_pin;
|
uint32_t fixed_pin;
|
||||||
} Config_BluetoothConfig;
|
} meshtastic_Config_BluetoothConfig;
|
||||||
|
|
||||||
typedef struct _Config {
|
typedef struct _meshtastic_Config {
|
||||||
pb_size_t which_payload_variant;
|
pb_size_t which_payload_variant;
|
||||||
union {
|
union {
|
||||||
Config_DeviceConfig device;
|
meshtastic_Config_DeviceConfig device;
|
||||||
Config_PositionConfig position;
|
meshtastic_Config_PositionConfig position;
|
||||||
Config_PowerConfig power;
|
meshtastic_Config_PowerConfig power;
|
||||||
Config_NetworkConfig network;
|
meshtastic_Config_NetworkConfig network;
|
||||||
Config_DisplayConfig display;
|
meshtastic_Config_DisplayConfig display;
|
||||||
Config_LoRaConfig lora;
|
meshtastic_Config_LoRaConfig lora;
|
||||||
Config_BluetoothConfig bluetooth;
|
meshtastic_Config_BluetoothConfig bluetooth;
|
||||||
} payload_variant;
|
} payload_variant;
|
||||||
} Config;
|
} meshtastic_Config;
|
||||||
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
@@ -416,155 +416,155 @@ extern "C" {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Helper constants for enums */
|
/* Helper constants for enums */
|
||||||
#define _Config_DeviceConfig_Role_MIN Config_DeviceConfig_Role_CLIENT
|
#define _meshtastic_Config_DeviceConfig_Role_MIN meshtastic_Config_DeviceConfig_Role_CLIENT
|
||||||
#define _Config_DeviceConfig_Role_MAX Config_DeviceConfig_Role_ROUTER_CLIENT
|
#define _meshtastic_Config_DeviceConfig_Role_MAX meshtastic_Config_DeviceConfig_Role_ROUTER_CLIENT
|
||||||
#define _Config_DeviceConfig_Role_ARRAYSIZE ((Config_DeviceConfig_Role)(Config_DeviceConfig_Role_ROUTER_CLIENT+1))
|
#define _meshtastic_Config_DeviceConfig_Role_ARRAYSIZE ((meshtastic_Config_DeviceConfig_Role)(meshtastic_Config_DeviceConfig_Role_ROUTER_CLIENT+1))
|
||||||
|
|
||||||
#define _Config_PositionConfig_PositionFlags_MIN Config_PositionConfig_PositionFlags_UNSET
|
#define _meshtastic_Config_PositionConfig_PositionFlags_MIN meshtastic_Config_PositionConfig_PositionFlags_UNSET
|
||||||
#define _Config_PositionConfig_PositionFlags_MAX Config_PositionConfig_PositionFlags_SPEED
|
#define _meshtastic_Config_PositionConfig_PositionFlags_MAX meshtastic_Config_PositionConfig_PositionFlags_SPEED
|
||||||
#define _Config_PositionConfig_PositionFlags_ARRAYSIZE ((Config_PositionConfig_PositionFlags)(Config_PositionConfig_PositionFlags_SPEED+1))
|
#define _meshtastic_Config_PositionConfig_PositionFlags_ARRAYSIZE ((meshtastic_Config_PositionConfig_PositionFlags)(meshtastic_Config_PositionConfig_PositionFlags_SPEED+1))
|
||||||
|
|
||||||
#define _Config_NetworkConfig_AddressMode_MIN Config_NetworkConfig_AddressMode_DHCP
|
#define _meshtastic_Config_NetworkConfig_AddressMode_MIN meshtastic_Config_NetworkConfig_AddressMode_DHCP
|
||||||
#define _Config_NetworkConfig_AddressMode_MAX Config_NetworkConfig_AddressMode_STATIC
|
#define _meshtastic_Config_NetworkConfig_AddressMode_MAX meshtastic_Config_NetworkConfig_AddressMode_STATIC
|
||||||
#define _Config_NetworkConfig_AddressMode_ARRAYSIZE ((Config_NetworkConfig_AddressMode)(Config_NetworkConfig_AddressMode_STATIC+1))
|
#define _meshtastic_Config_NetworkConfig_AddressMode_ARRAYSIZE ((meshtastic_Config_NetworkConfig_AddressMode)(meshtastic_Config_NetworkConfig_AddressMode_STATIC+1))
|
||||||
|
|
||||||
#define _Config_DisplayConfig_GpsCoordinateFormat_MIN Config_DisplayConfig_GpsCoordinateFormat_DEC
|
#define _meshtastic_Config_DisplayConfig_GpsCoordinateFormat_MIN meshtastic_Config_DisplayConfig_GpsCoordinateFormat_DEC
|
||||||
#define _Config_DisplayConfig_GpsCoordinateFormat_MAX Config_DisplayConfig_GpsCoordinateFormat_OSGR
|
#define _meshtastic_Config_DisplayConfig_GpsCoordinateFormat_MAX meshtastic_Config_DisplayConfig_GpsCoordinateFormat_OSGR
|
||||||
#define _Config_DisplayConfig_GpsCoordinateFormat_ARRAYSIZE ((Config_DisplayConfig_GpsCoordinateFormat)(Config_DisplayConfig_GpsCoordinateFormat_OSGR+1))
|
#define _meshtastic_Config_DisplayConfig_GpsCoordinateFormat_ARRAYSIZE ((meshtastic_Config_DisplayConfig_GpsCoordinateFormat)(meshtastic_Config_DisplayConfig_GpsCoordinateFormat_OSGR+1))
|
||||||
|
|
||||||
#define _Config_DisplayConfig_DisplayUnits_MIN Config_DisplayConfig_DisplayUnits_METRIC
|
#define _meshtastic_Config_DisplayConfig_DisplayUnits_MIN meshtastic_Config_DisplayConfig_DisplayUnits_METRIC
|
||||||
#define _Config_DisplayConfig_DisplayUnits_MAX Config_DisplayConfig_DisplayUnits_IMPERIAL
|
#define _meshtastic_Config_DisplayConfig_DisplayUnits_MAX meshtastic_Config_DisplayConfig_DisplayUnits_IMPERIAL
|
||||||
#define _Config_DisplayConfig_DisplayUnits_ARRAYSIZE ((Config_DisplayConfig_DisplayUnits)(Config_DisplayConfig_DisplayUnits_IMPERIAL+1))
|
#define _meshtastic_Config_DisplayConfig_DisplayUnits_ARRAYSIZE ((meshtastic_Config_DisplayConfig_DisplayUnits)(meshtastic_Config_DisplayConfig_DisplayUnits_IMPERIAL+1))
|
||||||
|
|
||||||
#define _Config_DisplayConfig_OledType_MIN Config_DisplayConfig_OledType_OLED_AUTO
|
#define _meshtastic_Config_DisplayConfig_OledType_MIN meshtastic_Config_DisplayConfig_OledType_OLED_AUTO
|
||||||
#define _Config_DisplayConfig_OledType_MAX Config_DisplayConfig_OledType_OLED_SH1107
|
#define _meshtastic_Config_DisplayConfig_OledType_MAX meshtastic_Config_DisplayConfig_OledType_OLED_SH1107
|
||||||
#define _Config_DisplayConfig_OledType_ARRAYSIZE ((Config_DisplayConfig_OledType)(Config_DisplayConfig_OledType_OLED_SH1107+1))
|
#define _meshtastic_Config_DisplayConfig_OledType_ARRAYSIZE ((meshtastic_Config_DisplayConfig_OledType)(meshtastic_Config_DisplayConfig_OledType_OLED_SH1107+1))
|
||||||
|
|
||||||
#define _Config_DisplayConfig_DisplayMode_MIN Config_DisplayConfig_DisplayMode_DEFAULT
|
#define _meshtastic_Config_DisplayConfig_DisplayMode_MIN meshtastic_Config_DisplayConfig_DisplayMode_DEFAULT
|
||||||
#define _Config_DisplayConfig_DisplayMode_MAX Config_DisplayConfig_DisplayMode_COLOR
|
#define _meshtastic_Config_DisplayConfig_DisplayMode_MAX meshtastic_Config_DisplayConfig_DisplayMode_COLOR
|
||||||
#define _Config_DisplayConfig_DisplayMode_ARRAYSIZE ((Config_DisplayConfig_DisplayMode)(Config_DisplayConfig_DisplayMode_COLOR+1))
|
#define _meshtastic_Config_DisplayConfig_DisplayMode_ARRAYSIZE ((meshtastic_Config_DisplayConfig_DisplayMode)(meshtastic_Config_DisplayConfig_DisplayMode_COLOR+1))
|
||||||
|
|
||||||
#define _Config_LoRaConfig_RegionCode_MIN Config_LoRaConfig_RegionCode_UNSET
|
#define _meshtastic_Config_LoRaConfig_RegionCode_MIN meshtastic_Config_LoRaConfig_RegionCode_UNSET
|
||||||
#define _Config_LoRaConfig_RegionCode_MAX Config_LoRaConfig_RegionCode_UA_868
|
#define _meshtastic_Config_LoRaConfig_RegionCode_MAX meshtastic_Config_LoRaConfig_RegionCode_UA_868
|
||||||
#define _Config_LoRaConfig_RegionCode_ARRAYSIZE ((Config_LoRaConfig_RegionCode)(Config_LoRaConfig_RegionCode_UA_868+1))
|
#define _meshtastic_Config_LoRaConfig_RegionCode_ARRAYSIZE ((meshtastic_Config_LoRaConfig_RegionCode)(meshtastic_Config_LoRaConfig_RegionCode_UA_868+1))
|
||||||
|
|
||||||
#define _Config_LoRaConfig_ModemPreset_MIN Config_LoRaConfig_ModemPreset_LONG_FAST
|
#define _meshtastic_Config_LoRaConfig_ModemPreset_MIN meshtastic_Config_LoRaConfig_ModemPreset_LONG_FAST
|
||||||
#define _Config_LoRaConfig_ModemPreset_MAX Config_LoRaConfig_ModemPreset_SHORT_FAST
|
#define _meshtastic_Config_LoRaConfig_ModemPreset_MAX meshtastic_Config_LoRaConfig_ModemPreset_SHORT_FAST
|
||||||
#define _Config_LoRaConfig_ModemPreset_ARRAYSIZE ((Config_LoRaConfig_ModemPreset)(Config_LoRaConfig_ModemPreset_SHORT_FAST+1))
|
#define _meshtastic_Config_LoRaConfig_ModemPreset_ARRAYSIZE ((meshtastic_Config_LoRaConfig_ModemPreset)(meshtastic_Config_LoRaConfig_ModemPreset_SHORT_FAST+1))
|
||||||
|
|
||||||
#define _Config_BluetoothConfig_PairingMode_MIN Config_BluetoothConfig_PairingMode_RANDOM_PIN
|
#define _meshtastic_Config_BluetoothConfig_PairingMode_MIN meshtastic_Config_BluetoothConfig_PairingMode_RANDOM_PIN
|
||||||
#define _Config_BluetoothConfig_PairingMode_MAX Config_BluetoothConfig_PairingMode_NO_PIN
|
#define _meshtastic_Config_BluetoothConfig_PairingMode_MAX meshtastic_Config_BluetoothConfig_PairingMode_NO_PIN
|
||||||
#define _Config_BluetoothConfig_PairingMode_ARRAYSIZE ((Config_BluetoothConfig_PairingMode)(Config_BluetoothConfig_PairingMode_NO_PIN+1))
|
#define _meshtastic_Config_BluetoothConfig_PairingMode_ARRAYSIZE ((meshtastic_Config_BluetoothConfig_PairingMode)(meshtastic_Config_BluetoothConfig_PairingMode_NO_PIN+1))
|
||||||
|
|
||||||
|
|
||||||
#define Config_DeviceConfig_role_ENUMTYPE Config_DeviceConfig_Role
|
#define meshtastic_Config_DeviceConfig_role_ENUMTYPE meshtastic_Config_DeviceConfig_Role
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#define Config_NetworkConfig_address_mode_ENUMTYPE Config_NetworkConfig_AddressMode
|
#define meshtastic_Config_NetworkConfig_address_mode_ENUMTYPE meshtastic_Config_NetworkConfig_AddressMode
|
||||||
|
|
||||||
|
|
||||||
#define Config_DisplayConfig_gps_format_ENUMTYPE Config_DisplayConfig_GpsCoordinateFormat
|
#define meshtastic_Config_DisplayConfig_gps_format_ENUMTYPE meshtastic_Config_DisplayConfig_GpsCoordinateFormat
|
||||||
#define Config_DisplayConfig_units_ENUMTYPE Config_DisplayConfig_DisplayUnits
|
#define meshtastic_Config_DisplayConfig_units_ENUMTYPE meshtastic_Config_DisplayConfig_DisplayUnits
|
||||||
#define Config_DisplayConfig_oled_ENUMTYPE Config_DisplayConfig_OledType
|
#define meshtastic_Config_DisplayConfig_oled_ENUMTYPE meshtastic_Config_DisplayConfig_OledType
|
||||||
#define Config_DisplayConfig_displaymode_ENUMTYPE Config_DisplayConfig_DisplayMode
|
#define meshtastic_Config_DisplayConfig_displaymode_ENUMTYPE meshtastic_Config_DisplayConfig_DisplayMode
|
||||||
|
|
||||||
#define Config_LoRaConfig_modem_preset_ENUMTYPE Config_LoRaConfig_ModemPreset
|
#define meshtastic_Config_LoRaConfig_modem_preset_ENUMTYPE meshtastic_Config_LoRaConfig_ModemPreset
|
||||||
#define Config_LoRaConfig_region_ENUMTYPE Config_LoRaConfig_RegionCode
|
#define meshtastic_Config_LoRaConfig_region_ENUMTYPE meshtastic_Config_LoRaConfig_RegionCode
|
||||||
|
|
||||||
#define Config_BluetoothConfig_mode_ENUMTYPE Config_BluetoothConfig_PairingMode
|
#define meshtastic_Config_BluetoothConfig_mode_ENUMTYPE meshtastic_Config_BluetoothConfig_PairingMode
|
||||||
|
|
||||||
|
|
||||||
/* Initializer values for message structs */
|
/* Initializer values for message structs */
|
||||||
#define Config_init_default {0, {Config_DeviceConfig_init_default}}
|
#define meshtastic_Config_init_default {0, {meshtastic_Config_DeviceConfig_init_default}}
|
||||||
#define Config_DeviceConfig_init_default {_Config_DeviceConfig_Role_MIN, 0, 0, 0, 0}
|
#define meshtastic_Config_DeviceConfig_init_default {_meshtastic_Config_DeviceConfig_Role_MIN, 0, 0, 0, 0}
|
||||||
#define Config_PositionConfig_init_default {0, 0, 0, 0, 0, 0, 0, 0, 0}
|
#define meshtastic_Config_PositionConfig_init_default {0, 0, 0, 0, 0, 0, 0, 0, 0}
|
||||||
#define Config_PowerConfig_init_default {0, 0, 0, 0, 0, 0, 0, 0}
|
#define meshtastic_Config_PowerConfig_init_default {0, 0, 0, 0, 0, 0, 0, 0}
|
||||||
#define Config_NetworkConfig_init_default {0, "", "", "", 0, _Config_NetworkConfig_AddressMode_MIN, false, Config_NetworkConfig_IpV4Config_init_default, ""}
|
#define meshtastic_Config_NetworkConfig_init_default {0, "", "", "", 0, _meshtastic_Config_NetworkConfig_AddressMode_MIN, false, meshtastic_Config_NetworkConfig_IpV4Config_init_default, ""}
|
||||||
#define Config_NetworkConfig_IpV4Config_init_default {0, 0, 0, 0}
|
#define meshtastic_Config_NetworkConfig_IpV4Config_init_default {0, 0, 0, 0}
|
||||||
#define Config_DisplayConfig_init_default {0, _Config_DisplayConfig_GpsCoordinateFormat_MIN, 0, 0, 0, _Config_DisplayConfig_DisplayUnits_MIN, _Config_DisplayConfig_OledType_MIN, _Config_DisplayConfig_DisplayMode_MIN, 0}
|
#define meshtastic_Config_DisplayConfig_init_default {0, _meshtastic_Config_DisplayConfig_GpsCoordinateFormat_MIN, 0, 0, 0, _meshtastic_Config_DisplayConfig_DisplayUnits_MIN, _meshtastic_Config_DisplayConfig_OledType_MIN, _meshtastic_Config_DisplayConfig_DisplayMode_MIN, 0}
|
||||||
#define Config_LoRaConfig_init_default {0, _Config_LoRaConfig_ModemPreset_MIN, 0, 0, 0, 0, _Config_LoRaConfig_RegionCode_MIN, 0, 0, 0, 0, 0, 0, {0, 0, 0}}
|
#define meshtastic_Config_LoRaConfig_init_default {0, _meshtastic_Config_LoRaConfig_ModemPreset_MIN, 0, 0, 0, 0, _meshtastic_Config_LoRaConfig_RegionCode_MIN, 0, 0, 0, 0, 0, 0, {0, 0, 0}}
|
||||||
#define Config_BluetoothConfig_init_default {0, _Config_BluetoothConfig_PairingMode_MIN, 0}
|
#define meshtastic_Config_BluetoothConfig_init_default {0, _meshtastic_Config_BluetoothConfig_PairingMode_MIN, 0}
|
||||||
#define Config_init_zero {0, {Config_DeviceConfig_init_zero}}
|
#define meshtastic_Config_init_zero {0, {meshtastic_Config_DeviceConfig_init_zero}}
|
||||||
#define Config_DeviceConfig_init_zero {_Config_DeviceConfig_Role_MIN, 0, 0, 0, 0}
|
#define meshtastic_Config_DeviceConfig_init_zero {_meshtastic_Config_DeviceConfig_Role_MIN, 0, 0, 0, 0}
|
||||||
#define Config_PositionConfig_init_zero {0, 0, 0, 0, 0, 0, 0, 0, 0}
|
#define meshtastic_Config_PositionConfig_init_zero {0, 0, 0, 0, 0, 0, 0, 0, 0}
|
||||||
#define Config_PowerConfig_init_zero {0, 0, 0, 0, 0, 0, 0, 0}
|
#define meshtastic_Config_PowerConfig_init_zero {0, 0, 0, 0, 0, 0, 0, 0}
|
||||||
#define Config_NetworkConfig_init_zero {0, "", "", "", 0, _Config_NetworkConfig_AddressMode_MIN, false, Config_NetworkConfig_IpV4Config_init_zero, ""}
|
#define meshtastic_Config_NetworkConfig_init_zero {0, "", "", "", 0, _meshtastic_Config_NetworkConfig_AddressMode_MIN, false, meshtastic_Config_NetworkConfig_IpV4Config_init_zero, ""}
|
||||||
#define Config_NetworkConfig_IpV4Config_init_zero {0, 0, 0, 0}
|
#define meshtastic_Config_NetworkConfig_IpV4Config_init_zero {0, 0, 0, 0}
|
||||||
#define Config_DisplayConfig_init_zero {0, _Config_DisplayConfig_GpsCoordinateFormat_MIN, 0, 0, 0, _Config_DisplayConfig_DisplayUnits_MIN, _Config_DisplayConfig_OledType_MIN, _Config_DisplayConfig_DisplayMode_MIN, 0}
|
#define meshtastic_Config_DisplayConfig_init_zero {0, _meshtastic_Config_DisplayConfig_GpsCoordinateFormat_MIN, 0, 0, 0, _meshtastic_Config_DisplayConfig_DisplayUnits_MIN, _meshtastic_Config_DisplayConfig_OledType_MIN, _meshtastic_Config_DisplayConfig_DisplayMode_MIN, 0}
|
||||||
#define Config_LoRaConfig_init_zero {0, _Config_LoRaConfig_ModemPreset_MIN, 0, 0, 0, 0, _Config_LoRaConfig_RegionCode_MIN, 0, 0, 0, 0, 0, 0, {0, 0, 0}}
|
#define meshtastic_Config_LoRaConfig_init_zero {0, _meshtastic_Config_LoRaConfig_ModemPreset_MIN, 0, 0, 0, 0, _meshtastic_Config_LoRaConfig_RegionCode_MIN, 0, 0, 0, 0, 0, 0, {0, 0, 0}}
|
||||||
#define Config_BluetoothConfig_init_zero {0, _Config_BluetoothConfig_PairingMode_MIN, 0}
|
#define meshtastic_Config_BluetoothConfig_init_zero {0, _meshtastic_Config_BluetoothConfig_PairingMode_MIN, 0}
|
||||||
|
|
||||||
/* Field tags (for use in manual encoding/decoding) */
|
/* Field tags (for use in manual encoding/decoding) */
|
||||||
#define Config_DeviceConfig_role_tag 1
|
#define meshtastic_Config_DeviceConfig_role_tag 1
|
||||||
#define Config_DeviceConfig_serial_enabled_tag 2
|
#define meshtastic_Config_DeviceConfig_serial_enabled_tag 2
|
||||||
#define Config_DeviceConfig_debug_log_enabled_tag 3
|
#define meshtastic_Config_DeviceConfig_debug_log_enabled_tag 3
|
||||||
#define Config_DeviceConfig_button_gpio_tag 4
|
#define meshtastic_Config_DeviceConfig_button_gpio_tag 4
|
||||||
#define Config_DeviceConfig_buzzer_gpio_tag 5
|
#define meshtastic_Config_DeviceConfig_buzzer_gpio_tag 5
|
||||||
#define Config_PositionConfig_position_broadcast_secs_tag 1
|
#define meshtastic_Config_PositionConfig_position_broadcast_secs_tag 1
|
||||||
#define Config_PositionConfig_position_broadcast_smart_enabled_tag 2
|
#define meshtastic_Config_PositionConfig_position_broadcast_smart_enabled_tag 2
|
||||||
#define Config_PositionConfig_fixed_position_tag 3
|
#define meshtastic_Config_PositionConfig_fixed_position_tag 3
|
||||||
#define Config_PositionConfig_gps_enabled_tag 4
|
#define meshtastic_Config_PositionConfig_gps_enabled_tag 4
|
||||||
#define Config_PositionConfig_gps_update_interval_tag 5
|
#define meshtastic_Config_PositionConfig_gps_update_interval_tag 5
|
||||||
#define Config_PositionConfig_gps_attempt_time_tag 6
|
#define meshtastic_Config_PositionConfig_gps_attempt_time_tag 6
|
||||||
#define Config_PositionConfig_position_flags_tag 7
|
#define meshtastic_Config_PositionConfig_position_flags_tag 7
|
||||||
#define Config_PositionConfig_rx_gpio_tag 8
|
#define meshtastic_Config_PositionConfig_rx_gpio_tag 8
|
||||||
#define Config_PositionConfig_tx_gpio_tag 9
|
#define meshtastic_Config_PositionConfig_tx_gpio_tag 9
|
||||||
#define Config_PowerConfig_is_power_saving_tag 1
|
#define meshtastic_Config_PowerConfig_is_power_saving_tag 1
|
||||||
#define Config_PowerConfig_on_battery_shutdown_after_secs_tag 2
|
#define meshtastic_Config_PowerConfig_on_battery_shutdown_after_secs_tag 2
|
||||||
#define Config_PowerConfig_adc_multiplier_override_tag 3
|
#define meshtastic_Config_PowerConfig_adc_multiplier_override_tag 3
|
||||||
#define Config_PowerConfig_wait_bluetooth_secs_tag 4
|
#define meshtastic_Config_PowerConfig_wait_bluetooth_secs_tag 4
|
||||||
#define Config_PowerConfig_mesh_sds_timeout_secs_tag 5
|
#define meshtastic_Config_PowerConfig_mesh_sds_timeout_secs_tag 5
|
||||||
#define Config_PowerConfig_sds_secs_tag 6
|
#define meshtastic_Config_PowerConfig_sds_secs_tag 6
|
||||||
#define Config_PowerConfig_ls_secs_tag 7
|
#define meshtastic_Config_PowerConfig_ls_secs_tag 7
|
||||||
#define Config_PowerConfig_min_wake_secs_tag 8
|
#define meshtastic_Config_PowerConfig_min_wake_secs_tag 8
|
||||||
#define Config_NetworkConfig_IpV4Config_ip_tag 1
|
#define meshtastic_Config_NetworkConfig_IpV4Config_ip_tag 1
|
||||||
#define Config_NetworkConfig_IpV4Config_gateway_tag 2
|
#define meshtastic_Config_NetworkConfig_IpV4Config_gateway_tag 2
|
||||||
#define Config_NetworkConfig_IpV4Config_subnet_tag 3
|
#define meshtastic_Config_NetworkConfig_IpV4Config_subnet_tag 3
|
||||||
#define Config_NetworkConfig_IpV4Config_dns_tag 4
|
#define meshtastic_Config_NetworkConfig_IpV4Config_dns_tag 4
|
||||||
#define Config_NetworkConfig_wifi_enabled_tag 1
|
#define meshtastic_Config_NetworkConfig_wifi_enabled_tag 1
|
||||||
#define Config_NetworkConfig_wifi_ssid_tag 3
|
#define meshtastic_Config_NetworkConfig_wifi_ssid_tag 3
|
||||||
#define Config_NetworkConfig_wifi_psk_tag 4
|
#define meshtastic_Config_NetworkConfig_wifi_psk_tag 4
|
||||||
#define Config_NetworkConfig_ntp_server_tag 5
|
#define meshtastic_Config_NetworkConfig_ntp_server_tag 5
|
||||||
#define Config_NetworkConfig_eth_enabled_tag 6
|
#define meshtastic_Config_NetworkConfig_eth_enabled_tag 6
|
||||||
#define Config_NetworkConfig_address_mode_tag 7
|
#define meshtastic_Config_NetworkConfig_address_mode_tag 7
|
||||||
#define Config_NetworkConfig_ipv4_config_tag 8
|
#define meshtastic_Config_NetworkConfig_ipv4_config_tag 8
|
||||||
#define Config_NetworkConfig_rsyslog_server_tag 9
|
#define meshtastic_Config_NetworkConfig_rsyslog_server_tag 9
|
||||||
#define Config_DisplayConfig_screen_on_secs_tag 1
|
#define meshtastic_Config_DisplayConfig_screen_on_secs_tag 1
|
||||||
#define Config_DisplayConfig_gps_format_tag 2
|
#define meshtastic_Config_DisplayConfig_gps_format_tag 2
|
||||||
#define Config_DisplayConfig_auto_screen_carousel_secs_tag 3
|
#define meshtastic_Config_DisplayConfig_auto_screen_carousel_secs_tag 3
|
||||||
#define Config_DisplayConfig_compass_north_top_tag 4
|
#define meshtastic_Config_DisplayConfig_compass_north_top_tag 4
|
||||||
#define Config_DisplayConfig_flip_screen_tag 5
|
#define meshtastic_Config_DisplayConfig_flip_screen_tag 5
|
||||||
#define Config_DisplayConfig_units_tag 6
|
#define meshtastic_Config_DisplayConfig_units_tag 6
|
||||||
#define Config_DisplayConfig_oled_tag 7
|
#define meshtastic_Config_DisplayConfig_oled_tag 7
|
||||||
#define Config_DisplayConfig_displaymode_tag 8
|
#define meshtastic_Config_DisplayConfig_displaymode_tag 8
|
||||||
#define Config_DisplayConfig_heading_bold_tag 9
|
#define meshtastic_Config_DisplayConfig_heading_bold_tag 9
|
||||||
#define Config_LoRaConfig_use_preset_tag 1
|
#define meshtastic_Config_LoRaConfig_use_preset_tag 1
|
||||||
#define Config_LoRaConfig_modem_preset_tag 2
|
#define meshtastic_Config_LoRaConfig_modem_preset_tag 2
|
||||||
#define Config_LoRaConfig_bandwidth_tag 3
|
#define meshtastic_Config_LoRaConfig_bandwidth_tag 3
|
||||||
#define Config_LoRaConfig_spread_factor_tag 4
|
#define meshtastic_Config_LoRaConfig_spread_factor_tag 4
|
||||||
#define Config_LoRaConfig_coding_rate_tag 5
|
#define meshtastic_Config_LoRaConfig_coding_rate_tag 5
|
||||||
#define Config_LoRaConfig_frequency_offset_tag 6
|
#define meshtastic_Config_LoRaConfig_frequency_offset_tag 6
|
||||||
#define Config_LoRaConfig_region_tag 7
|
#define meshtastic_Config_LoRaConfig_region_tag 7
|
||||||
#define Config_LoRaConfig_hop_limit_tag 8
|
#define meshtastic_Config_LoRaConfig_hop_limit_tag 8
|
||||||
#define Config_LoRaConfig_tx_enabled_tag 9
|
#define meshtastic_Config_LoRaConfig_tx_enabled_tag 9
|
||||||
#define Config_LoRaConfig_tx_power_tag 10
|
#define meshtastic_Config_LoRaConfig_tx_power_tag 10
|
||||||
#define Config_LoRaConfig_channel_num_tag 11
|
#define meshtastic_Config_LoRaConfig_channel_num_tag 11
|
||||||
#define Config_LoRaConfig_override_duty_cycle_tag 12
|
#define meshtastic_Config_LoRaConfig_override_duty_cycle_tag 12
|
||||||
#define Config_LoRaConfig_ignore_incoming_tag 103
|
#define meshtastic_Config_LoRaConfig_ignore_incoming_tag 103
|
||||||
#define Config_BluetoothConfig_enabled_tag 1
|
#define meshtastic_Config_BluetoothConfig_enabled_tag 1
|
||||||
#define Config_BluetoothConfig_mode_tag 2
|
#define meshtastic_Config_BluetoothConfig_mode_tag 2
|
||||||
#define Config_BluetoothConfig_fixed_pin_tag 3
|
#define meshtastic_Config_BluetoothConfig_fixed_pin_tag 3
|
||||||
#define Config_device_tag 1
|
#define meshtastic_Config_device_tag 1
|
||||||
#define Config_position_tag 2
|
#define meshtastic_Config_position_tag 2
|
||||||
#define Config_power_tag 3
|
#define meshtastic_Config_power_tag 3
|
||||||
#define Config_network_tag 4
|
#define meshtastic_Config_network_tag 4
|
||||||
#define Config_display_tag 5
|
#define meshtastic_Config_display_tag 5
|
||||||
#define Config_lora_tag 6
|
#define meshtastic_Config_lora_tag 6
|
||||||
#define Config_bluetooth_tag 7
|
#define meshtastic_Config_bluetooth_tag 7
|
||||||
|
|
||||||
/* Struct field encoding specification for nanopb */
|
/* Struct field encoding specification for nanopb */
|
||||||
#define Config_FIELDLIST(X, a) \
|
#define meshtastic_Config_FIELDLIST(X, a) \
|
||||||
X(a, STATIC, ONEOF, MESSAGE, (payload_variant,device,payload_variant.device), 1) \
|
X(a, STATIC, ONEOF, MESSAGE, (payload_variant,device,payload_variant.device), 1) \
|
||||||
X(a, STATIC, ONEOF, MESSAGE, (payload_variant,position,payload_variant.position), 2) \
|
X(a, STATIC, ONEOF, MESSAGE, (payload_variant,position,payload_variant.position), 2) \
|
||||||
X(a, STATIC, ONEOF, MESSAGE, (payload_variant,power,payload_variant.power), 3) \
|
X(a, STATIC, ONEOF, MESSAGE, (payload_variant,power,payload_variant.power), 3) \
|
||||||
@@ -572,26 +572,26 @@ X(a, STATIC, ONEOF, MESSAGE, (payload_variant,network,payload_variant.netw
|
|||||||
X(a, STATIC, ONEOF, MESSAGE, (payload_variant,display,payload_variant.display), 5) \
|
X(a, STATIC, ONEOF, MESSAGE, (payload_variant,display,payload_variant.display), 5) \
|
||||||
X(a, STATIC, ONEOF, MESSAGE, (payload_variant,lora,payload_variant.lora), 6) \
|
X(a, STATIC, ONEOF, MESSAGE, (payload_variant,lora,payload_variant.lora), 6) \
|
||||||
X(a, STATIC, ONEOF, MESSAGE, (payload_variant,bluetooth,payload_variant.bluetooth), 7)
|
X(a, STATIC, ONEOF, MESSAGE, (payload_variant,bluetooth,payload_variant.bluetooth), 7)
|
||||||
#define Config_CALLBACK NULL
|
#define meshtastic_Config_CALLBACK NULL
|
||||||
#define Config_DEFAULT NULL
|
#define meshtastic_Config_DEFAULT NULL
|
||||||
#define Config_payload_variant_device_MSGTYPE Config_DeviceConfig
|
#define meshtastic_Config_payload_variant_device_MSGTYPE meshtastic_Config_DeviceConfig
|
||||||
#define Config_payload_variant_position_MSGTYPE Config_PositionConfig
|
#define meshtastic_Config_payload_variant_position_MSGTYPE meshtastic_Config_PositionConfig
|
||||||
#define Config_payload_variant_power_MSGTYPE Config_PowerConfig
|
#define meshtastic_Config_payload_variant_power_MSGTYPE meshtastic_Config_PowerConfig
|
||||||
#define Config_payload_variant_network_MSGTYPE Config_NetworkConfig
|
#define meshtastic_Config_payload_variant_network_MSGTYPE meshtastic_Config_NetworkConfig
|
||||||
#define Config_payload_variant_display_MSGTYPE Config_DisplayConfig
|
#define meshtastic_Config_payload_variant_display_MSGTYPE meshtastic_Config_DisplayConfig
|
||||||
#define Config_payload_variant_lora_MSGTYPE Config_LoRaConfig
|
#define meshtastic_Config_payload_variant_lora_MSGTYPE meshtastic_Config_LoRaConfig
|
||||||
#define Config_payload_variant_bluetooth_MSGTYPE Config_BluetoothConfig
|
#define meshtastic_Config_payload_variant_bluetooth_MSGTYPE meshtastic_Config_BluetoothConfig
|
||||||
|
|
||||||
#define Config_DeviceConfig_FIELDLIST(X, a) \
|
#define meshtastic_Config_DeviceConfig_FIELDLIST(X, a) \
|
||||||
X(a, STATIC, SINGULAR, UENUM, role, 1) \
|
X(a, STATIC, SINGULAR, UENUM, role, 1) \
|
||||||
X(a, STATIC, SINGULAR, BOOL, serial_enabled, 2) \
|
X(a, STATIC, SINGULAR, BOOL, serial_enabled, 2) \
|
||||||
X(a, STATIC, SINGULAR, BOOL, debug_log_enabled, 3) \
|
X(a, STATIC, SINGULAR, BOOL, debug_log_enabled, 3) \
|
||||||
X(a, STATIC, SINGULAR, UINT32, button_gpio, 4) \
|
X(a, STATIC, SINGULAR, UINT32, button_gpio, 4) \
|
||||||
X(a, STATIC, SINGULAR, UINT32, buzzer_gpio, 5)
|
X(a, STATIC, SINGULAR, UINT32, buzzer_gpio, 5)
|
||||||
#define Config_DeviceConfig_CALLBACK NULL
|
#define meshtastic_Config_DeviceConfig_CALLBACK NULL
|
||||||
#define Config_DeviceConfig_DEFAULT NULL
|
#define meshtastic_Config_DeviceConfig_DEFAULT NULL
|
||||||
|
|
||||||
#define Config_PositionConfig_FIELDLIST(X, a) \
|
#define meshtastic_Config_PositionConfig_FIELDLIST(X, a) \
|
||||||
X(a, STATIC, SINGULAR, UINT32, position_broadcast_secs, 1) \
|
X(a, STATIC, SINGULAR, UINT32, position_broadcast_secs, 1) \
|
||||||
X(a, STATIC, SINGULAR, BOOL, position_broadcast_smart_enabled, 2) \
|
X(a, STATIC, SINGULAR, BOOL, position_broadcast_smart_enabled, 2) \
|
||||||
X(a, STATIC, SINGULAR, BOOL, fixed_position, 3) \
|
X(a, STATIC, SINGULAR, BOOL, fixed_position, 3) \
|
||||||
@@ -601,10 +601,10 @@ X(a, STATIC, SINGULAR, UINT32, gps_attempt_time, 6) \
|
|||||||
X(a, STATIC, SINGULAR, UINT32, position_flags, 7) \
|
X(a, STATIC, SINGULAR, UINT32, position_flags, 7) \
|
||||||
X(a, STATIC, SINGULAR, UINT32, rx_gpio, 8) \
|
X(a, STATIC, SINGULAR, UINT32, rx_gpio, 8) \
|
||||||
X(a, STATIC, SINGULAR, UINT32, tx_gpio, 9)
|
X(a, STATIC, SINGULAR, UINT32, tx_gpio, 9)
|
||||||
#define Config_PositionConfig_CALLBACK NULL
|
#define meshtastic_Config_PositionConfig_CALLBACK NULL
|
||||||
#define Config_PositionConfig_DEFAULT NULL
|
#define meshtastic_Config_PositionConfig_DEFAULT NULL
|
||||||
|
|
||||||
#define Config_PowerConfig_FIELDLIST(X, a) \
|
#define meshtastic_Config_PowerConfig_FIELDLIST(X, a) \
|
||||||
X(a, STATIC, SINGULAR, BOOL, is_power_saving, 1) \
|
X(a, STATIC, SINGULAR, BOOL, is_power_saving, 1) \
|
||||||
X(a, STATIC, SINGULAR, UINT32, on_battery_shutdown_after_secs, 2) \
|
X(a, STATIC, SINGULAR, UINT32, on_battery_shutdown_after_secs, 2) \
|
||||||
X(a, STATIC, SINGULAR, FLOAT, adc_multiplier_override, 3) \
|
X(a, STATIC, SINGULAR, FLOAT, adc_multiplier_override, 3) \
|
||||||
@@ -613,10 +613,10 @@ X(a, STATIC, SINGULAR, UINT32, mesh_sds_timeout_secs, 5) \
|
|||||||
X(a, STATIC, SINGULAR, UINT32, sds_secs, 6) \
|
X(a, STATIC, SINGULAR, UINT32, sds_secs, 6) \
|
||||||
X(a, STATIC, SINGULAR, UINT32, ls_secs, 7) \
|
X(a, STATIC, SINGULAR, UINT32, ls_secs, 7) \
|
||||||
X(a, STATIC, SINGULAR, UINT32, min_wake_secs, 8)
|
X(a, STATIC, SINGULAR, UINT32, min_wake_secs, 8)
|
||||||
#define Config_PowerConfig_CALLBACK NULL
|
#define meshtastic_Config_PowerConfig_CALLBACK NULL
|
||||||
#define Config_PowerConfig_DEFAULT NULL
|
#define meshtastic_Config_PowerConfig_DEFAULT NULL
|
||||||
|
|
||||||
#define Config_NetworkConfig_FIELDLIST(X, a) \
|
#define meshtastic_Config_NetworkConfig_FIELDLIST(X, a) \
|
||||||
X(a, STATIC, SINGULAR, BOOL, wifi_enabled, 1) \
|
X(a, STATIC, SINGULAR, BOOL, wifi_enabled, 1) \
|
||||||
X(a, STATIC, SINGULAR, STRING, wifi_ssid, 3) \
|
X(a, STATIC, SINGULAR, STRING, wifi_ssid, 3) \
|
||||||
X(a, STATIC, SINGULAR, STRING, wifi_psk, 4) \
|
X(a, STATIC, SINGULAR, STRING, wifi_psk, 4) \
|
||||||
@@ -625,19 +625,19 @@ X(a, STATIC, SINGULAR, BOOL, eth_enabled, 6) \
|
|||||||
X(a, STATIC, SINGULAR, UENUM, address_mode, 7) \
|
X(a, STATIC, SINGULAR, UENUM, address_mode, 7) \
|
||||||
X(a, STATIC, OPTIONAL, MESSAGE, ipv4_config, 8) \
|
X(a, STATIC, OPTIONAL, MESSAGE, ipv4_config, 8) \
|
||||||
X(a, STATIC, SINGULAR, STRING, rsyslog_server, 9)
|
X(a, STATIC, SINGULAR, STRING, rsyslog_server, 9)
|
||||||
#define Config_NetworkConfig_CALLBACK NULL
|
#define meshtastic_Config_NetworkConfig_CALLBACK NULL
|
||||||
#define Config_NetworkConfig_DEFAULT NULL
|
#define meshtastic_Config_NetworkConfig_DEFAULT NULL
|
||||||
#define Config_NetworkConfig_ipv4_config_MSGTYPE Config_NetworkConfig_IpV4Config
|
#define meshtastic_Config_NetworkConfig_ipv4_config_MSGTYPE meshtastic_Config_NetworkConfig_IpV4Config
|
||||||
|
|
||||||
#define Config_NetworkConfig_IpV4Config_FIELDLIST(X, a) \
|
#define meshtastic_Config_NetworkConfig_IpV4Config_FIELDLIST(X, a) \
|
||||||
X(a, STATIC, SINGULAR, FIXED32, ip, 1) \
|
X(a, STATIC, SINGULAR, FIXED32, ip, 1) \
|
||||||
X(a, STATIC, SINGULAR, FIXED32, gateway, 2) \
|
X(a, STATIC, SINGULAR, FIXED32, gateway, 2) \
|
||||||
X(a, STATIC, SINGULAR, FIXED32, subnet, 3) \
|
X(a, STATIC, SINGULAR, FIXED32, subnet, 3) \
|
||||||
X(a, STATIC, SINGULAR, FIXED32, dns, 4)
|
X(a, STATIC, SINGULAR, FIXED32, dns, 4)
|
||||||
#define Config_NetworkConfig_IpV4Config_CALLBACK NULL
|
#define meshtastic_Config_NetworkConfig_IpV4Config_CALLBACK NULL
|
||||||
#define Config_NetworkConfig_IpV4Config_DEFAULT NULL
|
#define meshtastic_Config_NetworkConfig_IpV4Config_DEFAULT NULL
|
||||||
|
|
||||||
#define Config_DisplayConfig_FIELDLIST(X, a) \
|
#define meshtastic_Config_DisplayConfig_FIELDLIST(X, a) \
|
||||||
X(a, STATIC, SINGULAR, UINT32, screen_on_secs, 1) \
|
X(a, STATIC, SINGULAR, UINT32, screen_on_secs, 1) \
|
||||||
X(a, STATIC, SINGULAR, UENUM, gps_format, 2) \
|
X(a, STATIC, SINGULAR, UENUM, gps_format, 2) \
|
||||||
X(a, STATIC, SINGULAR, UINT32, auto_screen_carousel_secs, 3) \
|
X(a, STATIC, SINGULAR, UINT32, auto_screen_carousel_secs, 3) \
|
||||||
@@ -647,10 +647,10 @@ X(a, STATIC, SINGULAR, UENUM, units, 6) \
|
|||||||
X(a, STATIC, SINGULAR, UENUM, oled, 7) \
|
X(a, STATIC, SINGULAR, UENUM, oled, 7) \
|
||||||
X(a, STATIC, SINGULAR, UENUM, displaymode, 8) \
|
X(a, STATIC, SINGULAR, UENUM, displaymode, 8) \
|
||||||
X(a, STATIC, SINGULAR, BOOL, heading_bold, 9)
|
X(a, STATIC, SINGULAR, BOOL, heading_bold, 9)
|
||||||
#define Config_DisplayConfig_CALLBACK NULL
|
#define meshtastic_Config_DisplayConfig_CALLBACK NULL
|
||||||
#define Config_DisplayConfig_DEFAULT NULL
|
#define meshtastic_Config_DisplayConfig_DEFAULT NULL
|
||||||
|
|
||||||
#define Config_LoRaConfig_FIELDLIST(X, a) \
|
#define meshtastic_Config_LoRaConfig_FIELDLIST(X, a) \
|
||||||
X(a, STATIC, SINGULAR, BOOL, use_preset, 1) \
|
X(a, STATIC, SINGULAR, BOOL, use_preset, 1) \
|
||||||
X(a, STATIC, SINGULAR, UENUM, modem_preset, 2) \
|
X(a, STATIC, SINGULAR, UENUM, modem_preset, 2) \
|
||||||
X(a, STATIC, SINGULAR, UINT32, bandwidth, 3) \
|
X(a, STATIC, SINGULAR, UINT32, bandwidth, 3) \
|
||||||
@@ -664,47 +664,47 @@ X(a, STATIC, SINGULAR, INT32, tx_power, 10) \
|
|||||||
X(a, STATIC, SINGULAR, UINT32, channel_num, 11) \
|
X(a, STATIC, SINGULAR, UINT32, channel_num, 11) \
|
||||||
X(a, STATIC, SINGULAR, BOOL, override_duty_cycle, 12) \
|
X(a, STATIC, SINGULAR, BOOL, override_duty_cycle, 12) \
|
||||||
X(a, STATIC, REPEATED, UINT32, ignore_incoming, 103)
|
X(a, STATIC, REPEATED, UINT32, ignore_incoming, 103)
|
||||||
#define Config_LoRaConfig_CALLBACK NULL
|
#define meshtastic_Config_LoRaConfig_CALLBACK NULL
|
||||||
#define Config_LoRaConfig_DEFAULT NULL
|
#define meshtastic_Config_LoRaConfig_DEFAULT NULL
|
||||||
|
|
||||||
#define Config_BluetoothConfig_FIELDLIST(X, a) \
|
#define meshtastic_Config_BluetoothConfig_FIELDLIST(X, a) \
|
||||||
X(a, STATIC, SINGULAR, BOOL, enabled, 1) \
|
X(a, STATIC, SINGULAR, BOOL, enabled, 1) \
|
||||||
X(a, STATIC, SINGULAR, UENUM, mode, 2) \
|
X(a, STATIC, SINGULAR, UENUM, mode, 2) \
|
||||||
X(a, STATIC, SINGULAR, UINT32, fixed_pin, 3)
|
X(a, STATIC, SINGULAR, UINT32, fixed_pin, 3)
|
||||||
#define Config_BluetoothConfig_CALLBACK NULL
|
#define meshtastic_Config_BluetoothConfig_CALLBACK NULL
|
||||||
#define Config_BluetoothConfig_DEFAULT NULL
|
#define meshtastic_Config_BluetoothConfig_DEFAULT NULL
|
||||||
|
|
||||||
extern const pb_msgdesc_t Config_msg;
|
extern const pb_msgdesc_t meshtastic_Config_msg;
|
||||||
extern const pb_msgdesc_t Config_DeviceConfig_msg;
|
extern const pb_msgdesc_t meshtastic_Config_DeviceConfig_msg;
|
||||||
extern const pb_msgdesc_t Config_PositionConfig_msg;
|
extern const pb_msgdesc_t meshtastic_Config_PositionConfig_msg;
|
||||||
extern const pb_msgdesc_t Config_PowerConfig_msg;
|
extern const pb_msgdesc_t meshtastic_Config_PowerConfig_msg;
|
||||||
extern const pb_msgdesc_t Config_NetworkConfig_msg;
|
extern const pb_msgdesc_t meshtastic_Config_NetworkConfig_msg;
|
||||||
extern const pb_msgdesc_t Config_NetworkConfig_IpV4Config_msg;
|
extern const pb_msgdesc_t meshtastic_Config_NetworkConfig_IpV4Config_msg;
|
||||||
extern const pb_msgdesc_t Config_DisplayConfig_msg;
|
extern const pb_msgdesc_t meshtastic_Config_DisplayConfig_msg;
|
||||||
extern const pb_msgdesc_t Config_LoRaConfig_msg;
|
extern const pb_msgdesc_t meshtastic_Config_LoRaConfig_msg;
|
||||||
extern const pb_msgdesc_t Config_BluetoothConfig_msg;
|
extern const pb_msgdesc_t meshtastic_Config_BluetoothConfig_msg;
|
||||||
|
|
||||||
/* Defines for backwards compatibility with code written before nanopb-0.4.0 */
|
/* Defines for backwards compatibility with code written before nanopb-0.4.0 */
|
||||||
#define Config_fields &Config_msg
|
#define meshtastic_Config_fields &meshtastic_Config_msg
|
||||||
#define Config_DeviceConfig_fields &Config_DeviceConfig_msg
|
#define meshtastic_Config_DeviceConfig_fields &meshtastic_Config_DeviceConfig_msg
|
||||||
#define Config_PositionConfig_fields &Config_PositionConfig_msg
|
#define meshtastic_Config_PositionConfig_fields &meshtastic_Config_PositionConfig_msg
|
||||||
#define Config_PowerConfig_fields &Config_PowerConfig_msg
|
#define meshtastic_Config_PowerConfig_fields &meshtastic_Config_PowerConfig_msg
|
||||||
#define Config_NetworkConfig_fields &Config_NetworkConfig_msg
|
#define meshtastic_Config_NetworkConfig_fields &meshtastic_Config_NetworkConfig_msg
|
||||||
#define Config_NetworkConfig_IpV4Config_fields &Config_NetworkConfig_IpV4Config_msg
|
#define meshtastic_Config_NetworkConfig_IpV4Config_fields &meshtastic_Config_NetworkConfig_IpV4Config_msg
|
||||||
#define Config_DisplayConfig_fields &Config_DisplayConfig_msg
|
#define meshtastic_Config_DisplayConfig_fields &meshtastic_Config_DisplayConfig_msg
|
||||||
#define Config_LoRaConfig_fields &Config_LoRaConfig_msg
|
#define meshtastic_Config_LoRaConfig_fields &meshtastic_Config_LoRaConfig_msg
|
||||||
#define Config_BluetoothConfig_fields &Config_BluetoothConfig_msg
|
#define meshtastic_Config_BluetoothConfig_fields &meshtastic_Config_BluetoothConfig_msg
|
||||||
|
|
||||||
/* Maximum encoded size of messages (where known) */
|
/* Maximum encoded size of messages (where known) */
|
||||||
#define Config_BluetoothConfig_size 10
|
#define meshtastic_Config_BluetoothConfig_size 10
|
||||||
#define Config_DeviceConfig_size 18
|
#define meshtastic_Config_DeviceConfig_size 18
|
||||||
#define Config_DisplayConfig_size 26
|
#define meshtastic_Config_DisplayConfig_size 26
|
||||||
#define Config_LoRaConfig_size 70
|
#define meshtastic_Config_LoRaConfig_size 70
|
||||||
#define Config_NetworkConfig_IpV4Config_size 20
|
#define meshtastic_Config_NetworkConfig_IpV4Config_size 20
|
||||||
#define Config_NetworkConfig_size 195
|
#define meshtastic_Config_NetworkConfig_size 195
|
||||||
#define Config_PositionConfig_size 42
|
#define meshtastic_Config_PositionConfig_size 42
|
||||||
#define Config_PowerConfig_size 43
|
#define meshtastic_Config_PowerConfig_size 43
|
||||||
#define Config_size 198
|
#define meshtastic_Config_size 198
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
} /* extern "C" */
|
} /* extern "C" */
|
||||||
|
|||||||
@@ -1,12 +1,12 @@
|
|||||||
/* Automatically generated nanopb constant definitions */
|
/* Automatically generated nanopb constant definitions */
|
||||||
/* Generated by nanopb-0.4.7 */
|
/* Generated by nanopb-0.4.7 */
|
||||||
|
|
||||||
#include "./device_metadata.pb.h"
|
#include "meshtastic/device_metadata.pb.h"
|
||||||
#if PB_PROTO_HEADER_VERSION != 40
|
#if PB_PROTO_HEADER_VERSION != 40
|
||||||
#error Regenerate this file with the current version of nanopb generator.
|
#error Regenerate this file with the current version of nanopb generator.
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
PB_BIND(DeviceMetadata, DeviceMetadata, AUTO)
|
PB_BIND(meshtastic_DeviceMetadata, meshtastic_DeviceMetadata, AUTO)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
#ifndef PB_MESHTASTIC_MESHTASTIC_DEVICE_METADATA_PB_H_INCLUDED
|
#ifndef PB_MESHTASTIC_MESHTASTIC_DEVICE_METADATA_PB_H_INCLUDED
|
||||||
#define PB_MESHTASTIC_MESHTASTIC_DEVICE_METADATA_PB_H_INCLUDED
|
#define PB_MESHTASTIC_MESHTASTIC_DEVICE_METADATA_PB_H_INCLUDED
|
||||||
#include <pb.h>
|
#include <pb.h>
|
||||||
#include "./config.pb.h"
|
#include "meshtastic/config.pb.h"
|
||||||
|
|
||||||
#if PB_PROTO_HEADER_VERSION != 40
|
#if PB_PROTO_HEADER_VERSION != 40
|
||||||
#error Regenerate this file with the current version of nanopb generator.
|
#error Regenerate this file with the current version of nanopb generator.
|
||||||
@@ -12,7 +12,7 @@
|
|||||||
|
|
||||||
/* Struct definitions */
|
/* Struct definitions */
|
||||||
/* Device metadata response */
|
/* Device metadata response */
|
||||||
typedef struct _DeviceMetadata {
|
typedef struct _meshtastic_DeviceMetadata {
|
||||||
/* Device firmware version string */
|
/* Device firmware version string */
|
||||||
char firmware_version[18];
|
char firmware_version[18];
|
||||||
/* Device state version */
|
/* Device state version */
|
||||||
@@ -26,10 +26,10 @@ typedef struct _DeviceMetadata {
|
|||||||
/* Indicates that the device has an ethernet peripheral */
|
/* Indicates that the device has an ethernet peripheral */
|
||||||
bool hasEthernet;
|
bool hasEthernet;
|
||||||
/* Indicates that the device's role in the mesh */
|
/* Indicates that the device's role in the mesh */
|
||||||
Config_DeviceConfig_Role role;
|
meshtastic_Config_DeviceConfig_Role role;
|
||||||
/* Indicates the device's current enabled position flags */
|
/* Indicates the device's current enabled position flags */
|
||||||
uint32_t position_flags;
|
uint32_t position_flags;
|
||||||
} DeviceMetadata;
|
} meshtastic_DeviceMetadata;
|
||||||
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
@@ -37,21 +37,21 @@ extern "C" {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Initializer values for message structs */
|
/* Initializer values for message structs */
|
||||||
#define DeviceMetadata_init_default {"", 0, 0, 0, 0, 0, _Config_DeviceConfig_Role_MIN, 0}
|
#define meshtastic_DeviceMetadata_init_default {"", 0, 0, 0, 0, 0, _meshtastic_Config_DeviceConfig_Role_MIN, 0}
|
||||||
#define DeviceMetadata_init_zero {"", 0, 0, 0, 0, 0, _Config_DeviceConfig_Role_MIN, 0}
|
#define meshtastic_DeviceMetadata_init_zero {"", 0, 0, 0, 0, 0, _meshtastic_Config_DeviceConfig_Role_MIN, 0}
|
||||||
|
|
||||||
/* Field tags (for use in manual encoding/decoding) */
|
/* Field tags (for use in manual encoding/decoding) */
|
||||||
#define DeviceMetadata_firmware_version_tag 1
|
#define meshtastic_DeviceMetadata_firmware_version_tag 1
|
||||||
#define DeviceMetadata_device_state_version_tag 2
|
#define meshtastic_DeviceMetadata_device_state_version_tag 2
|
||||||
#define DeviceMetadata_canShutdown_tag 3
|
#define meshtastic_DeviceMetadata_canShutdown_tag 3
|
||||||
#define DeviceMetadata_hasWifi_tag 4
|
#define meshtastic_DeviceMetadata_hasWifi_tag 4
|
||||||
#define DeviceMetadata_hasBluetooth_tag 5
|
#define meshtastic_DeviceMetadata_hasBluetooth_tag 5
|
||||||
#define DeviceMetadata_hasEthernet_tag 6
|
#define meshtastic_DeviceMetadata_hasEthernet_tag 6
|
||||||
#define DeviceMetadata_role_tag 7
|
#define meshtastic_DeviceMetadata_role_tag 7
|
||||||
#define DeviceMetadata_position_flags_tag 8
|
#define meshtastic_DeviceMetadata_position_flags_tag 8
|
||||||
|
|
||||||
/* Struct field encoding specification for nanopb */
|
/* Struct field encoding specification for nanopb */
|
||||||
#define DeviceMetadata_FIELDLIST(X, a) \
|
#define meshtastic_DeviceMetadata_FIELDLIST(X, a) \
|
||||||
X(a, STATIC, SINGULAR, STRING, firmware_version, 1) \
|
X(a, STATIC, SINGULAR, STRING, firmware_version, 1) \
|
||||||
X(a, STATIC, SINGULAR, UINT32, device_state_version, 2) \
|
X(a, STATIC, SINGULAR, UINT32, device_state_version, 2) \
|
||||||
X(a, STATIC, SINGULAR, BOOL, canShutdown, 3) \
|
X(a, STATIC, SINGULAR, BOOL, canShutdown, 3) \
|
||||||
@@ -60,16 +60,16 @@ X(a, STATIC, SINGULAR, BOOL, hasBluetooth, 5) \
|
|||||||
X(a, STATIC, SINGULAR, BOOL, hasEthernet, 6) \
|
X(a, STATIC, SINGULAR, BOOL, hasEthernet, 6) \
|
||||||
X(a, STATIC, SINGULAR, UENUM, role, 7) \
|
X(a, STATIC, SINGULAR, UENUM, role, 7) \
|
||||||
X(a, STATIC, SINGULAR, UINT32, position_flags, 8)
|
X(a, STATIC, SINGULAR, UINT32, position_flags, 8)
|
||||||
#define DeviceMetadata_CALLBACK NULL
|
#define meshtastic_DeviceMetadata_CALLBACK NULL
|
||||||
#define DeviceMetadata_DEFAULT NULL
|
#define meshtastic_DeviceMetadata_DEFAULT NULL
|
||||||
|
|
||||||
extern const pb_msgdesc_t DeviceMetadata_msg;
|
extern const pb_msgdesc_t meshtastic_DeviceMetadata_msg;
|
||||||
|
|
||||||
/* Defines for backwards compatibility with code written before nanopb-0.4.0 */
|
/* Defines for backwards compatibility with code written before nanopb-0.4.0 */
|
||||||
#define DeviceMetadata_fields &DeviceMetadata_msg
|
#define meshtastic_DeviceMetadata_fields &meshtastic_DeviceMetadata_msg
|
||||||
|
|
||||||
/* Maximum encoded size of messages (where known) */
|
/* Maximum encoded size of messages (where known) */
|
||||||
#define DeviceMetadata_size 41
|
#define meshtastic_DeviceMetadata_size 41
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
} /* extern "C" */
|
} /* extern "C" */
|
||||||
|
|||||||
@@ -1,18 +1,18 @@
|
|||||||
/* Automatically generated nanopb constant definitions */
|
/* Automatically generated nanopb constant definitions */
|
||||||
/* Generated by nanopb-0.4.7 */
|
/* Generated by nanopb-0.4.7 */
|
||||||
|
|
||||||
#include "./deviceonly.pb.h"
|
#include "meshtastic/deviceonly.pb.h"
|
||||||
#if PB_PROTO_HEADER_VERSION != 40
|
#if PB_PROTO_HEADER_VERSION != 40
|
||||||
#error Regenerate this file with the current version of nanopb generator.
|
#error Regenerate this file with the current version of nanopb generator.
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
PB_BIND(DeviceState, DeviceState, 4)
|
PB_BIND(meshtastic_DeviceState, meshtastic_DeviceState, 4)
|
||||||
|
|
||||||
|
|
||||||
PB_BIND(ChannelFile, ChannelFile, 2)
|
PB_BIND(meshtastic_ChannelFile, meshtastic_ChannelFile, 2)
|
||||||
|
|
||||||
|
|
||||||
PB_BIND(OEMStore, OEMStore, 2)
|
PB_BIND(meshtastic_OEMStore, meshtastic_OEMStore, 2)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -4,8 +4,8 @@
|
|||||||
#ifndef PB_MESHTASTIC_MESHTASTIC_DEVICEONLY_PB_H_INCLUDED
|
#ifndef PB_MESHTASTIC_MESHTASTIC_DEVICEONLY_PB_H_INCLUDED
|
||||||
#define PB_MESHTASTIC_MESHTASTIC_DEVICEONLY_PB_H_INCLUDED
|
#define PB_MESHTASTIC_MESHTASTIC_DEVICEONLY_PB_H_INCLUDED
|
||||||
#include <pb.h>
|
#include <pb.h>
|
||||||
#include "./channel.pb.h"
|
#include "meshtastic/channel.pb.h"
|
||||||
#include "./mesh.pb.h"
|
#include "meshtastic/mesh.pb.h"
|
||||||
|
|
||||||
#if PB_PROTO_HEADER_VERSION != 40
|
#if PB_PROTO_HEADER_VERSION != 40
|
||||||
#error Regenerate this file with the current version of nanopb generator.
|
#error Regenerate this file with the current version of nanopb generator.
|
||||||
@@ -13,14 +13,14 @@
|
|||||||
|
|
||||||
/* Enum definitions */
|
/* Enum definitions */
|
||||||
/* TODO: REPLACE */
|
/* TODO: REPLACE */
|
||||||
typedef enum _ScreenFonts {
|
typedef enum _meshtastic_ScreenFonts {
|
||||||
/* TODO: REPLACE */
|
/* TODO: REPLACE */
|
||||||
ScreenFonts_FONT_SMALL = 0,
|
meshtastic_ScreenFonts_FONT_SMALL = 0,
|
||||||
/* TODO: REPLACE */
|
/* TODO: REPLACE */
|
||||||
ScreenFonts_FONT_MEDIUM = 1,
|
meshtastic_ScreenFonts_FONT_MEDIUM = 1,
|
||||||
/* TODO: REPLACE */
|
/* TODO: REPLACE */
|
||||||
ScreenFonts_FONT_LARGE = 2
|
meshtastic_ScreenFonts_FONT_LARGE = 2
|
||||||
} ScreenFonts;
|
} meshtastic_ScreenFonts;
|
||||||
|
|
||||||
/* Struct definitions */
|
/* Struct definitions */
|
||||||
/* This message is never sent over the wire, but it is used for serializing DB
|
/* This message is never sent over the wire, but it is used for serializing DB
|
||||||
@@ -28,24 +28,24 @@ typedef enum _ScreenFonts {
|
|||||||
FIXME, since we write this each time we enter deep sleep (and have infinite
|
FIXME, since we write this each time we enter deep sleep (and have infinite
|
||||||
flash) it would be better to use some sort of append only data structure for
|
flash) it would be better to use some sort of append only data structure for
|
||||||
the receive queue and use the preferences store for the other stuff */
|
the receive queue and use the preferences store for the other stuff */
|
||||||
typedef struct _DeviceState {
|
typedef struct _meshtastic_DeviceState {
|
||||||
/* Read only settings/info about this node */
|
/* Read only settings/info about this node */
|
||||||
bool has_my_node;
|
bool has_my_node;
|
||||||
MyNodeInfo my_node;
|
meshtastic_MyNodeInfo my_node;
|
||||||
/* My owner info */
|
/* My owner info */
|
||||||
bool has_owner;
|
bool has_owner;
|
||||||
User owner;
|
meshtastic_User owner;
|
||||||
/* TODO: REPLACE */
|
/* TODO: REPLACE */
|
||||||
pb_size_t node_db_count;
|
pb_size_t node_db_count;
|
||||||
NodeInfo node_db[80];
|
meshtastic_NodeInfo node_db[80];
|
||||||
/* Received packets saved for delivery to the phone */
|
/* Received packets saved for delivery to the phone */
|
||||||
pb_size_t receive_queue_count;
|
pb_size_t receive_queue_count;
|
||||||
MeshPacket receive_queue[1];
|
meshtastic_MeshPacket receive_queue[1];
|
||||||
/* We keep the last received text message (only) stored in the device flash,
|
/* We keep the last received text message (only) stored in the device flash,
|
||||||
so we can show it on the screen.
|
so we can show it on the screen.
|
||||||
Might be null */
|
Might be null */
|
||||||
bool has_rx_text_message;
|
bool has_rx_text_message;
|
||||||
MeshPacket rx_text_message;
|
meshtastic_MeshPacket rx_text_message;
|
||||||
/* A version integer used to invalidate old save files when we make
|
/* A version integer used to invalidate old save files when we make
|
||||||
incompatible changes This integer is set at build time and is private to
|
incompatible changes This integer is set at build time and is private to
|
||||||
NodeDB.cpp in the device code. */
|
NodeDB.cpp in the device code. */
|
||||||
@@ -55,37 +55,37 @@ typedef struct _DeviceState {
|
|||||||
bool no_save;
|
bool no_save;
|
||||||
/* Some GPSes seem to have bogus settings from the factory, so we always do one factory reset. */
|
/* Some GPSes seem to have bogus settings from the factory, so we always do one factory reset. */
|
||||||
bool did_gps_reset;
|
bool did_gps_reset;
|
||||||
} DeviceState;
|
} meshtastic_DeviceState;
|
||||||
|
|
||||||
/* The on-disk saved channels */
|
/* The on-disk saved channels */
|
||||||
typedef struct _ChannelFile {
|
typedef struct _meshtastic_ChannelFile {
|
||||||
/* The channels our node knows about */
|
/* The channels our node knows about */
|
||||||
pb_size_t channels_count;
|
pb_size_t channels_count;
|
||||||
Channel channels[8];
|
meshtastic_Channel channels[8];
|
||||||
/* A version integer used to invalidate old save files when we make
|
/* A version integer used to invalidate old save files when we make
|
||||||
incompatible changes This integer is set at build time and is private to
|
incompatible changes This integer is set at build time and is private to
|
||||||
NodeDB.cpp in the device code. */
|
NodeDB.cpp in the device code. */
|
||||||
uint32_t version;
|
uint32_t version;
|
||||||
} ChannelFile;
|
} meshtastic_ChannelFile;
|
||||||
|
|
||||||
typedef PB_BYTES_ARRAY_T(2048) OEMStore_oem_icon_bits_t;
|
typedef PB_BYTES_ARRAY_T(2048) meshtastic_OEMStore_oem_icon_bits_t;
|
||||||
typedef PB_BYTES_ARRAY_T(32) OEMStore_oem_aes_key_t;
|
typedef PB_BYTES_ARRAY_T(32) meshtastic_OEMStore_oem_aes_key_t;
|
||||||
/* This can be used for customizing the firmware distribution. If populated,
|
/* This can be used for customizing the firmware distribution. If populated,
|
||||||
show a secondary bootup screen with cuatom logo and text for 2.5 seconds. */
|
show a secondary bootup screen with cuatom logo and text for 2.5 seconds. */
|
||||||
typedef struct _OEMStore {
|
typedef struct _meshtastic_OEMStore {
|
||||||
/* The Logo width in Px */
|
/* The Logo width in Px */
|
||||||
uint32_t oem_icon_width;
|
uint32_t oem_icon_width;
|
||||||
/* The Logo height in Px */
|
/* The Logo height in Px */
|
||||||
uint32_t oem_icon_height;
|
uint32_t oem_icon_height;
|
||||||
/* The Logo in xbm bytechar format */
|
/* The Logo in xbm bytechar format */
|
||||||
OEMStore_oem_icon_bits_t oem_icon_bits;
|
meshtastic_OEMStore_oem_icon_bits_t oem_icon_bits;
|
||||||
/* Use this font for the OEM text. */
|
/* Use this font for the OEM text. */
|
||||||
ScreenFonts oem_font;
|
meshtastic_ScreenFonts oem_font;
|
||||||
/* Use this font for the OEM text. */
|
/* Use this font for the OEM text. */
|
||||||
char oem_text[40];
|
char oem_text[40];
|
||||||
/* The default device encryption key, 16 or 32 byte */
|
/* The default device encryption key, 16 or 32 byte */
|
||||||
OEMStore_oem_aes_key_t oem_aes_key;
|
meshtastic_OEMStore_oem_aes_key_t oem_aes_key;
|
||||||
} OEMStore;
|
} meshtastic_OEMStore;
|
||||||
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
@@ -93,43 +93,43 @@ extern "C" {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Helper constants for enums */
|
/* Helper constants for enums */
|
||||||
#define _ScreenFonts_MIN ScreenFonts_FONT_SMALL
|
#define _meshtastic_ScreenFonts_MIN meshtastic_ScreenFonts_FONT_SMALL
|
||||||
#define _ScreenFonts_MAX ScreenFonts_FONT_LARGE
|
#define _meshtastic_ScreenFonts_MAX meshtastic_ScreenFonts_FONT_LARGE
|
||||||
#define _ScreenFonts_ARRAYSIZE ((ScreenFonts)(ScreenFonts_FONT_LARGE+1))
|
#define _meshtastic_ScreenFonts_ARRAYSIZE ((meshtastic_ScreenFonts)(meshtastic_ScreenFonts_FONT_LARGE+1))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#define OEMStore_oem_font_ENUMTYPE ScreenFonts
|
#define meshtastic_OEMStore_oem_font_ENUMTYPE meshtastic_ScreenFonts
|
||||||
|
|
||||||
|
|
||||||
/* Initializer values for message structs */
|
/* Initializer values for message structs */
|
||||||
#define DeviceState_init_default {false, MyNodeInfo_init_default, false, User_init_default, 0, {NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default}, 0, {MeshPacket_init_default}, false, MeshPacket_init_default, 0, 0, 0}
|
#define meshtastic_DeviceState_init_default {false, meshtastic_MyNodeInfo_init_default, false, meshtastic_User_init_default, 0, {meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default}, 0, {meshtastic_MeshPacket_init_default}, false, meshtastic_MeshPacket_init_default, 0, 0, 0}
|
||||||
#define ChannelFile_init_default {0, {Channel_init_default, Channel_init_default, Channel_init_default, Channel_init_default, Channel_init_default, Channel_init_default, Channel_init_default, Channel_init_default}, 0}
|
#define meshtastic_ChannelFile_init_default {0, {meshtastic_Channel_init_default, meshtastic_Channel_init_default, meshtastic_Channel_init_default, meshtastic_Channel_init_default, meshtastic_Channel_init_default, meshtastic_Channel_init_default, meshtastic_Channel_init_default, meshtastic_Channel_init_default}, 0}
|
||||||
#define OEMStore_init_default {0, 0, {0, {0}}, _ScreenFonts_MIN, "", {0, {0}}}
|
#define meshtastic_OEMStore_init_default {0, 0, {0, {0}}, _meshtastic_ScreenFonts_MIN, "", {0, {0}}}
|
||||||
#define DeviceState_init_zero {false, MyNodeInfo_init_zero, false, User_init_zero, 0, {NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero}, 0, {MeshPacket_init_zero}, false, MeshPacket_init_zero, 0, 0, 0}
|
#define meshtastic_DeviceState_init_zero {false, meshtastic_MyNodeInfo_init_zero, false, meshtastic_User_init_zero, 0, {meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero}, 0, {meshtastic_MeshPacket_init_zero}, false, meshtastic_MeshPacket_init_zero, 0, 0, 0}
|
||||||
#define ChannelFile_init_zero {0, {Channel_init_zero, Channel_init_zero, Channel_init_zero, Channel_init_zero, Channel_init_zero, Channel_init_zero, Channel_init_zero, Channel_init_zero}, 0}
|
#define meshtastic_ChannelFile_init_zero {0, {meshtastic_Channel_init_zero, meshtastic_Channel_init_zero, meshtastic_Channel_init_zero, meshtastic_Channel_init_zero, meshtastic_Channel_init_zero, meshtastic_Channel_init_zero, meshtastic_Channel_init_zero, meshtastic_Channel_init_zero}, 0}
|
||||||
#define OEMStore_init_zero {0, 0, {0, {0}}, _ScreenFonts_MIN, "", {0, {0}}}
|
#define meshtastic_OEMStore_init_zero {0, 0, {0, {0}}, _meshtastic_ScreenFonts_MIN, "", {0, {0}}}
|
||||||
|
|
||||||
/* Field tags (for use in manual encoding/decoding) */
|
/* Field tags (for use in manual encoding/decoding) */
|
||||||
#define DeviceState_my_node_tag 2
|
#define meshtastic_DeviceState_my_node_tag 2
|
||||||
#define DeviceState_owner_tag 3
|
#define meshtastic_DeviceState_owner_tag 3
|
||||||
#define DeviceState_node_db_tag 4
|
#define meshtastic_DeviceState_node_db_tag 4
|
||||||
#define DeviceState_receive_queue_tag 5
|
#define meshtastic_DeviceState_receive_queue_tag 5
|
||||||
#define DeviceState_rx_text_message_tag 7
|
#define meshtastic_DeviceState_rx_text_message_tag 7
|
||||||
#define DeviceState_version_tag 8
|
#define meshtastic_DeviceState_version_tag 8
|
||||||
#define DeviceState_no_save_tag 9
|
#define meshtastic_DeviceState_no_save_tag 9
|
||||||
#define DeviceState_did_gps_reset_tag 11
|
#define meshtastic_DeviceState_did_gps_reset_tag 11
|
||||||
#define ChannelFile_channels_tag 1
|
#define meshtastic_ChannelFile_channels_tag 1
|
||||||
#define ChannelFile_version_tag 2
|
#define meshtastic_ChannelFile_version_tag 2
|
||||||
#define OEMStore_oem_icon_width_tag 1
|
#define meshtastic_OEMStore_oem_icon_width_tag 1
|
||||||
#define OEMStore_oem_icon_height_tag 2
|
#define meshtastic_OEMStore_oem_icon_height_tag 2
|
||||||
#define OEMStore_oem_icon_bits_tag 3
|
#define meshtastic_OEMStore_oem_icon_bits_tag 3
|
||||||
#define OEMStore_oem_font_tag 4
|
#define meshtastic_OEMStore_oem_font_tag 4
|
||||||
#define OEMStore_oem_text_tag 5
|
#define meshtastic_OEMStore_oem_text_tag 5
|
||||||
#define OEMStore_oem_aes_key_tag 6
|
#define meshtastic_OEMStore_oem_aes_key_tag 6
|
||||||
|
|
||||||
/* Struct field encoding specification for nanopb */
|
/* Struct field encoding specification for nanopb */
|
||||||
#define DeviceState_FIELDLIST(X, a) \
|
#define meshtastic_DeviceState_FIELDLIST(X, a) \
|
||||||
X(a, STATIC, OPTIONAL, MESSAGE, my_node, 2) \
|
X(a, STATIC, OPTIONAL, MESSAGE, my_node, 2) \
|
||||||
X(a, STATIC, OPTIONAL, MESSAGE, owner, 3) \
|
X(a, STATIC, OPTIONAL, MESSAGE, owner, 3) \
|
||||||
X(a, STATIC, REPEATED, MESSAGE, node_db, 4) \
|
X(a, STATIC, REPEATED, MESSAGE, node_db, 4) \
|
||||||
@@ -138,44 +138,44 @@ X(a, STATIC, OPTIONAL, MESSAGE, rx_text_message, 7) \
|
|||||||
X(a, STATIC, SINGULAR, UINT32, version, 8) \
|
X(a, STATIC, SINGULAR, UINT32, version, 8) \
|
||||||
X(a, STATIC, SINGULAR, BOOL, no_save, 9) \
|
X(a, STATIC, SINGULAR, BOOL, no_save, 9) \
|
||||||
X(a, STATIC, SINGULAR, BOOL, did_gps_reset, 11)
|
X(a, STATIC, SINGULAR, BOOL, did_gps_reset, 11)
|
||||||
#define DeviceState_CALLBACK NULL
|
#define meshtastic_DeviceState_CALLBACK NULL
|
||||||
#define DeviceState_DEFAULT NULL
|
#define meshtastic_DeviceState_DEFAULT NULL
|
||||||
#define DeviceState_my_node_MSGTYPE MyNodeInfo
|
#define meshtastic_DeviceState_my_node_MSGTYPE meshtastic_MyNodeInfo
|
||||||
#define DeviceState_owner_MSGTYPE User
|
#define meshtastic_DeviceState_owner_MSGTYPE meshtastic_User
|
||||||
#define DeviceState_node_db_MSGTYPE NodeInfo
|
#define meshtastic_DeviceState_node_db_MSGTYPE meshtastic_NodeInfo
|
||||||
#define DeviceState_receive_queue_MSGTYPE MeshPacket
|
#define meshtastic_DeviceState_receive_queue_MSGTYPE meshtastic_MeshPacket
|
||||||
#define DeviceState_rx_text_message_MSGTYPE MeshPacket
|
#define meshtastic_DeviceState_rx_text_message_MSGTYPE meshtastic_MeshPacket
|
||||||
|
|
||||||
#define ChannelFile_FIELDLIST(X, a) \
|
#define meshtastic_ChannelFile_FIELDLIST(X, a) \
|
||||||
X(a, STATIC, REPEATED, MESSAGE, channels, 1) \
|
X(a, STATIC, REPEATED, MESSAGE, channels, 1) \
|
||||||
X(a, STATIC, SINGULAR, UINT32, version, 2)
|
X(a, STATIC, SINGULAR, UINT32, version, 2)
|
||||||
#define ChannelFile_CALLBACK NULL
|
#define meshtastic_ChannelFile_CALLBACK NULL
|
||||||
#define ChannelFile_DEFAULT NULL
|
#define meshtastic_ChannelFile_DEFAULT NULL
|
||||||
#define ChannelFile_channels_MSGTYPE Channel
|
#define meshtastic_ChannelFile_channels_MSGTYPE meshtastic_Channel
|
||||||
|
|
||||||
#define OEMStore_FIELDLIST(X, a) \
|
#define meshtastic_OEMStore_FIELDLIST(X, a) \
|
||||||
X(a, STATIC, SINGULAR, UINT32, oem_icon_width, 1) \
|
X(a, STATIC, SINGULAR, UINT32, oem_icon_width, 1) \
|
||||||
X(a, STATIC, SINGULAR, UINT32, oem_icon_height, 2) \
|
X(a, STATIC, SINGULAR, UINT32, oem_icon_height, 2) \
|
||||||
X(a, STATIC, SINGULAR, BYTES, oem_icon_bits, 3) \
|
X(a, STATIC, SINGULAR, BYTES, oem_icon_bits, 3) \
|
||||||
X(a, STATIC, SINGULAR, UENUM, oem_font, 4) \
|
X(a, STATIC, SINGULAR, UENUM, oem_font, 4) \
|
||||||
X(a, STATIC, SINGULAR, STRING, oem_text, 5) \
|
X(a, STATIC, SINGULAR, STRING, oem_text, 5) \
|
||||||
X(a, STATIC, SINGULAR, BYTES, oem_aes_key, 6)
|
X(a, STATIC, SINGULAR, BYTES, oem_aes_key, 6)
|
||||||
#define OEMStore_CALLBACK NULL
|
#define meshtastic_OEMStore_CALLBACK NULL
|
||||||
#define OEMStore_DEFAULT NULL
|
#define meshtastic_OEMStore_DEFAULT NULL
|
||||||
|
|
||||||
extern const pb_msgdesc_t DeviceState_msg;
|
extern const pb_msgdesc_t meshtastic_DeviceState_msg;
|
||||||
extern const pb_msgdesc_t ChannelFile_msg;
|
extern const pb_msgdesc_t meshtastic_ChannelFile_msg;
|
||||||
extern const pb_msgdesc_t OEMStore_msg;
|
extern const pb_msgdesc_t meshtastic_OEMStore_msg;
|
||||||
|
|
||||||
/* Defines for backwards compatibility with code written before nanopb-0.4.0 */
|
/* Defines for backwards compatibility with code written before nanopb-0.4.0 */
|
||||||
#define DeviceState_fields &DeviceState_msg
|
#define meshtastic_DeviceState_fields &meshtastic_DeviceState_msg
|
||||||
#define ChannelFile_fields &ChannelFile_msg
|
#define meshtastic_ChannelFile_fields &meshtastic_ChannelFile_msg
|
||||||
#define OEMStore_fields &OEMStore_msg
|
#define meshtastic_OEMStore_fields &meshtastic_OEMStore_msg
|
||||||
|
|
||||||
/* Maximum encoded size of messages (where known) */
|
/* Maximum encoded size of messages (where known) */
|
||||||
#define ChannelFile_size 638
|
#define meshtastic_ChannelFile_size 638
|
||||||
#define DeviceState_size 21800
|
#define meshtastic_DeviceState_size 21800
|
||||||
#define OEMStore_size 2140
|
#define meshtastic_OEMStore_size 2140
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
} /* extern "C" */
|
} /* extern "C" */
|
||||||
|
|||||||
@@ -1,15 +1,15 @@
|
|||||||
/* Automatically generated nanopb constant definitions */
|
/* Automatically generated nanopb constant definitions */
|
||||||
/* Generated by nanopb-0.4.7 */
|
/* Generated by nanopb-0.4.7 */
|
||||||
|
|
||||||
#include "./localonly.pb.h"
|
#include "meshtastic/localonly.pb.h"
|
||||||
#if PB_PROTO_HEADER_VERSION != 40
|
#if PB_PROTO_HEADER_VERSION != 40
|
||||||
#error Regenerate this file with the current version of nanopb generator.
|
#error Regenerate this file with the current version of nanopb generator.
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
PB_BIND(LocalConfig, LocalConfig, 2)
|
PB_BIND(meshtastic_LocalConfig, meshtastic_LocalConfig, 2)
|
||||||
|
|
||||||
|
|
||||||
PB_BIND(LocalModuleConfig, LocalModuleConfig, 2)
|
PB_BIND(meshtastic_LocalModuleConfig, meshtastic_LocalModuleConfig, 2)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -4,75 +4,75 @@
|
|||||||
#ifndef PB_MESHTASTIC_MESHTASTIC_LOCALONLY_PB_H_INCLUDED
|
#ifndef PB_MESHTASTIC_MESHTASTIC_LOCALONLY_PB_H_INCLUDED
|
||||||
#define PB_MESHTASTIC_MESHTASTIC_LOCALONLY_PB_H_INCLUDED
|
#define PB_MESHTASTIC_MESHTASTIC_LOCALONLY_PB_H_INCLUDED
|
||||||
#include <pb.h>
|
#include <pb.h>
|
||||||
#include "./config.pb.h"
|
#include "meshtastic/config.pb.h"
|
||||||
#include "./module_config.pb.h"
|
#include "meshtastic/module_config.pb.h"
|
||||||
|
|
||||||
#if PB_PROTO_HEADER_VERSION != 40
|
#if PB_PROTO_HEADER_VERSION != 40
|
||||||
#error Regenerate this file with the current version of nanopb generator.
|
#error Regenerate this file with the current version of nanopb generator.
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Struct definitions */
|
/* Struct definitions */
|
||||||
typedef struct _LocalConfig {
|
typedef struct _meshtastic_LocalConfig {
|
||||||
/* The part of the config that is specific to the Device */
|
/* The part of the config that is specific to the Device */
|
||||||
bool has_device;
|
bool has_device;
|
||||||
Config_DeviceConfig device;
|
meshtastic_Config_DeviceConfig device;
|
||||||
/* The part of the config that is specific to the GPS Position */
|
/* The part of the config that is specific to the GPS Position */
|
||||||
bool has_position;
|
bool has_position;
|
||||||
Config_PositionConfig position;
|
meshtastic_Config_PositionConfig position;
|
||||||
/* The part of the config that is specific to the Power settings */
|
/* The part of the config that is specific to the Power settings */
|
||||||
bool has_power;
|
bool has_power;
|
||||||
Config_PowerConfig power;
|
meshtastic_Config_PowerConfig power;
|
||||||
/* The part of the config that is specific to the Wifi Settings */
|
/* The part of the config that is specific to the Wifi Settings */
|
||||||
bool has_network;
|
bool has_network;
|
||||||
Config_NetworkConfig network;
|
meshtastic_Config_NetworkConfig network;
|
||||||
/* The part of the config that is specific to the Display */
|
/* The part of the config that is specific to the Display */
|
||||||
bool has_display;
|
bool has_display;
|
||||||
Config_DisplayConfig display;
|
meshtastic_Config_DisplayConfig display;
|
||||||
/* The part of the config that is specific to the Lora Radio */
|
/* The part of the config that is specific to the Lora Radio */
|
||||||
bool has_lora;
|
bool has_lora;
|
||||||
Config_LoRaConfig lora;
|
meshtastic_Config_LoRaConfig lora;
|
||||||
/* The part of the config that is specific to the Bluetooth settings */
|
/* The part of the config that is specific to the Bluetooth settings */
|
||||||
bool has_bluetooth;
|
bool has_bluetooth;
|
||||||
Config_BluetoothConfig bluetooth;
|
meshtastic_Config_BluetoothConfig bluetooth;
|
||||||
/* A version integer used to invalidate old save files when we make
|
/* A version integer used to invalidate old save files when we make
|
||||||
incompatible changes This integer is set at build time and is private to
|
incompatible changes This integer is set at build time and is private to
|
||||||
NodeDB.cpp in the device code. */
|
NodeDB.cpp in the device code. */
|
||||||
uint32_t version;
|
uint32_t version;
|
||||||
} LocalConfig;
|
} meshtastic_LocalConfig;
|
||||||
|
|
||||||
typedef struct _LocalModuleConfig {
|
typedef struct _meshtastic_LocalModuleConfig {
|
||||||
/* The part of the config that is specific to the MQTT module */
|
/* The part of the config that is specific to the MQTT module */
|
||||||
bool has_mqtt;
|
bool has_mqtt;
|
||||||
ModuleConfig_MQTTConfig mqtt;
|
meshtastic_ModuleConfig_MQTTConfig mqtt;
|
||||||
/* The part of the config that is specific to the Serial module */
|
/* The part of the config that is specific to the Serial module */
|
||||||
bool has_serial;
|
bool has_serial;
|
||||||
ModuleConfig_SerialConfig serial;
|
meshtastic_ModuleConfig_SerialConfig serial;
|
||||||
/* The part of the config that is specific to the ExternalNotification module */
|
/* The part of the config that is specific to the ExternalNotification module */
|
||||||
bool has_external_notification;
|
bool has_external_notification;
|
||||||
ModuleConfig_ExternalNotificationConfig external_notification;
|
meshtastic_ModuleConfig_ExternalNotificationConfig external_notification;
|
||||||
/* The part of the config that is specific to the Store & Forward module */
|
/* The part of the config that is specific to the Store & Forward module */
|
||||||
bool has_store_forward;
|
bool has_store_forward;
|
||||||
ModuleConfig_StoreForwardConfig store_forward;
|
meshtastic_ModuleConfig_StoreForwardConfig store_forward;
|
||||||
/* The part of the config that is specific to the RangeTest module */
|
/* The part of the config that is specific to the RangeTest module */
|
||||||
bool has_range_test;
|
bool has_range_test;
|
||||||
ModuleConfig_RangeTestConfig range_test;
|
meshtastic_ModuleConfig_RangeTestConfig range_test;
|
||||||
/* The part of the config that is specific to the Telemetry module */
|
/* The part of the config that is specific to the Telemetry module */
|
||||||
bool has_telemetry;
|
bool has_telemetry;
|
||||||
ModuleConfig_TelemetryConfig telemetry;
|
meshtastic_ModuleConfig_TelemetryConfig telemetry;
|
||||||
/* The part of the config that is specific to the Canned Message module */
|
/* The part of the config that is specific to the Canned Message module */
|
||||||
bool has_canned_message;
|
bool has_canned_message;
|
||||||
ModuleConfig_CannedMessageConfig canned_message;
|
meshtastic_ModuleConfig_CannedMessageConfig canned_message;
|
||||||
/* A version integer used to invalidate old save files when we make
|
/* A version integer used to invalidate old save files when we make
|
||||||
incompatible changes This integer is set at build time and is private to
|
incompatible changes This integer is set at build time and is private to
|
||||||
NodeDB.cpp in the device code. */
|
NodeDB.cpp in the device code. */
|
||||||
uint32_t version;
|
uint32_t version;
|
||||||
/* The part of the config that is specific to the Audio module */
|
/* The part of the config that is specific to the Audio module */
|
||||||
bool has_audio;
|
bool has_audio;
|
||||||
ModuleConfig_AudioConfig audio;
|
meshtastic_ModuleConfig_AudioConfig audio;
|
||||||
/* The part of the config that is specific to the Remote Hardware module */
|
/* The part of the config that is specific to the Remote Hardware module */
|
||||||
bool has_remote_hardware;
|
bool has_remote_hardware;
|
||||||
ModuleConfig_RemoteHardwareConfig remote_hardware;
|
meshtastic_ModuleConfig_RemoteHardwareConfig remote_hardware;
|
||||||
} LocalModuleConfig;
|
} meshtastic_LocalModuleConfig;
|
||||||
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
@@ -80,33 +80,33 @@ extern "C" {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Initializer values for message structs */
|
/* Initializer values for message structs */
|
||||||
#define LocalConfig_init_default {false, Config_DeviceConfig_init_default, false, Config_PositionConfig_init_default, false, Config_PowerConfig_init_default, false, Config_NetworkConfig_init_default, false, Config_DisplayConfig_init_default, false, Config_LoRaConfig_init_default, false, Config_BluetoothConfig_init_default, 0}
|
#define meshtastic_LocalConfig_init_default {false, meshtastic_Config_DeviceConfig_init_default, false, meshtastic_Config_PositionConfig_init_default, false, meshtastic_Config_PowerConfig_init_default, false, meshtastic_Config_NetworkConfig_init_default, false, meshtastic_Config_DisplayConfig_init_default, false, meshtastic_Config_LoRaConfig_init_default, false, meshtastic_Config_BluetoothConfig_init_default, 0}
|
||||||
#define LocalModuleConfig_init_default {false, ModuleConfig_MQTTConfig_init_default, false, ModuleConfig_SerialConfig_init_default, false, ModuleConfig_ExternalNotificationConfig_init_default, false, ModuleConfig_StoreForwardConfig_init_default, false, ModuleConfig_RangeTestConfig_init_default, false, ModuleConfig_TelemetryConfig_init_default, false, ModuleConfig_CannedMessageConfig_init_default, 0, false, ModuleConfig_AudioConfig_init_default, false, ModuleConfig_RemoteHardwareConfig_init_default}
|
#define meshtastic_LocalModuleConfig_init_default {false, meshtastic_ModuleConfig_MQTTConfig_init_default, false, meshtastic_ModuleConfig_SerialConfig_init_default, false, meshtastic_ModuleConfig_ExternalNotificationConfig_init_default, false, meshtastic_ModuleConfig_StoreForwardConfig_init_default, false, meshtastic_ModuleConfig_RangeTestConfig_init_default, false, meshtastic_ModuleConfig_TelemetryConfig_init_default, false, meshtastic_ModuleConfig_CannedMessageConfig_init_default, 0, false, meshtastic_ModuleConfig_AudioConfig_init_default, false, meshtastic_ModuleConfig_RemoteHardwareConfig_init_default}
|
||||||
#define LocalConfig_init_zero {false, Config_DeviceConfig_init_zero, false, Config_PositionConfig_init_zero, false, Config_PowerConfig_init_zero, false, Config_NetworkConfig_init_zero, false, Config_DisplayConfig_init_zero, false, Config_LoRaConfig_init_zero, false, Config_BluetoothConfig_init_zero, 0}
|
#define meshtastic_LocalConfig_init_zero {false, meshtastic_Config_DeviceConfig_init_zero, false, meshtastic_Config_PositionConfig_init_zero, false, meshtastic_Config_PowerConfig_init_zero, false, meshtastic_Config_NetworkConfig_init_zero, false, meshtastic_Config_DisplayConfig_init_zero, false, meshtastic_Config_LoRaConfig_init_zero, false, meshtastic_Config_BluetoothConfig_init_zero, 0}
|
||||||
#define LocalModuleConfig_init_zero {false, ModuleConfig_MQTTConfig_init_zero, false, ModuleConfig_SerialConfig_init_zero, false, ModuleConfig_ExternalNotificationConfig_init_zero, false, ModuleConfig_StoreForwardConfig_init_zero, false, ModuleConfig_RangeTestConfig_init_zero, false, ModuleConfig_TelemetryConfig_init_zero, false, ModuleConfig_CannedMessageConfig_init_zero, 0, false, ModuleConfig_AudioConfig_init_zero, false, ModuleConfig_RemoteHardwareConfig_init_zero}
|
#define meshtastic_LocalModuleConfig_init_zero {false, meshtastic_ModuleConfig_MQTTConfig_init_zero, false, meshtastic_ModuleConfig_SerialConfig_init_zero, false, meshtastic_ModuleConfig_ExternalNotificationConfig_init_zero, false, meshtastic_ModuleConfig_StoreForwardConfig_init_zero, false, meshtastic_ModuleConfig_RangeTestConfig_init_zero, false, meshtastic_ModuleConfig_TelemetryConfig_init_zero, false, meshtastic_ModuleConfig_CannedMessageConfig_init_zero, 0, false, meshtastic_ModuleConfig_AudioConfig_init_zero, false, meshtastic_ModuleConfig_RemoteHardwareConfig_init_zero}
|
||||||
|
|
||||||
/* Field tags (for use in manual encoding/decoding) */
|
/* Field tags (for use in manual encoding/decoding) */
|
||||||
#define LocalConfig_device_tag 1
|
#define meshtastic_LocalConfig_device_tag 1
|
||||||
#define LocalConfig_position_tag 2
|
#define meshtastic_LocalConfig_position_tag 2
|
||||||
#define LocalConfig_power_tag 3
|
#define meshtastic_LocalConfig_power_tag 3
|
||||||
#define LocalConfig_network_tag 4
|
#define meshtastic_LocalConfig_network_tag 4
|
||||||
#define LocalConfig_display_tag 5
|
#define meshtastic_LocalConfig_display_tag 5
|
||||||
#define LocalConfig_lora_tag 6
|
#define meshtastic_LocalConfig_lora_tag 6
|
||||||
#define LocalConfig_bluetooth_tag 7
|
#define meshtastic_LocalConfig_bluetooth_tag 7
|
||||||
#define LocalConfig_version_tag 8
|
#define meshtastic_LocalConfig_version_tag 8
|
||||||
#define LocalModuleConfig_mqtt_tag 1
|
#define meshtastic_LocalModuleConfig_mqtt_tag 1
|
||||||
#define LocalModuleConfig_serial_tag 2
|
#define meshtastic_LocalModuleConfig_serial_tag 2
|
||||||
#define LocalModuleConfig_external_notification_tag 3
|
#define meshtastic_LocalModuleConfig_external_notification_tag 3
|
||||||
#define LocalModuleConfig_store_forward_tag 4
|
#define meshtastic_LocalModuleConfig_store_forward_tag 4
|
||||||
#define LocalModuleConfig_range_test_tag 5
|
#define meshtastic_LocalModuleConfig_range_test_tag 5
|
||||||
#define LocalModuleConfig_telemetry_tag 6
|
#define meshtastic_LocalModuleConfig_telemetry_tag 6
|
||||||
#define LocalModuleConfig_canned_message_tag 7
|
#define meshtastic_LocalModuleConfig_canned_message_tag 7
|
||||||
#define LocalModuleConfig_version_tag 8
|
#define meshtastic_LocalModuleConfig_version_tag 8
|
||||||
#define LocalModuleConfig_audio_tag 9
|
#define meshtastic_LocalModuleConfig_audio_tag 9
|
||||||
#define LocalModuleConfig_remote_hardware_tag 10
|
#define meshtastic_LocalModuleConfig_remote_hardware_tag 10
|
||||||
|
|
||||||
/* Struct field encoding specification for nanopb */
|
/* Struct field encoding specification for nanopb */
|
||||||
#define LocalConfig_FIELDLIST(X, a) \
|
#define meshtastic_LocalConfig_FIELDLIST(X, a) \
|
||||||
X(a, STATIC, OPTIONAL, MESSAGE, device, 1) \
|
X(a, STATIC, OPTIONAL, MESSAGE, device, 1) \
|
||||||
X(a, STATIC, OPTIONAL, MESSAGE, position, 2) \
|
X(a, STATIC, OPTIONAL, MESSAGE, position, 2) \
|
||||||
X(a, STATIC, OPTIONAL, MESSAGE, power, 3) \
|
X(a, STATIC, OPTIONAL, MESSAGE, power, 3) \
|
||||||
@@ -115,17 +115,17 @@ X(a, STATIC, OPTIONAL, MESSAGE, display, 5) \
|
|||||||
X(a, STATIC, OPTIONAL, MESSAGE, lora, 6) \
|
X(a, STATIC, OPTIONAL, MESSAGE, lora, 6) \
|
||||||
X(a, STATIC, OPTIONAL, MESSAGE, bluetooth, 7) \
|
X(a, STATIC, OPTIONAL, MESSAGE, bluetooth, 7) \
|
||||||
X(a, STATIC, SINGULAR, UINT32, version, 8)
|
X(a, STATIC, SINGULAR, UINT32, version, 8)
|
||||||
#define LocalConfig_CALLBACK NULL
|
#define meshtastic_LocalConfig_CALLBACK NULL
|
||||||
#define LocalConfig_DEFAULT NULL
|
#define meshtastic_LocalConfig_DEFAULT NULL
|
||||||
#define LocalConfig_device_MSGTYPE Config_DeviceConfig
|
#define meshtastic_LocalConfig_device_MSGTYPE meshtastic_Config_DeviceConfig
|
||||||
#define LocalConfig_position_MSGTYPE Config_PositionConfig
|
#define meshtastic_LocalConfig_position_MSGTYPE meshtastic_Config_PositionConfig
|
||||||
#define LocalConfig_power_MSGTYPE Config_PowerConfig
|
#define meshtastic_LocalConfig_power_MSGTYPE meshtastic_Config_PowerConfig
|
||||||
#define LocalConfig_network_MSGTYPE Config_NetworkConfig
|
#define meshtastic_LocalConfig_network_MSGTYPE meshtastic_Config_NetworkConfig
|
||||||
#define LocalConfig_display_MSGTYPE Config_DisplayConfig
|
#define meshtastic_LocalConfig_display_MSGTYPE meshtastic_Config_DisplayConfig
|
||||||
#define LocalConfig_lora_MSGTYPE Config_LoRaConfig
|
#define meshtastic_LocalConfig_lora_MSGTYPE meshtastic_Config_LoRaConfig
|
||||||
#define LocalConfig_bluetooth_MSGTYPE Config_BluetoothConfig
|
#define meshtastic_LocalConfig_bluetooth_MSGTYPE meshtastic_Config_BluetoothConfig
|
||||||
|
|
||||||
#define LocalModuleConfig_FIELDLIST(X, a) \
|
#define meshtastic_LocalModuleConfig_FIELDLIST(X, a) \
|
||||||
X(a, STATIC, OPTIONAL, MESSAGE, mqtt, 1) \
|
X(a, STATIC, OPTIONAL, MESSAGE, mqtt, 1) \
|
||||||
X(a, STATIC, OPTIONAL, MESSAGE, serial, 2) \
|
X(a, STATIC, OPTIONAL, MESSAGE, serial, 2) \
|
||||||
X(a, STATIC, OPTIONAL, MESSAGE, external_notification, 3) \
|
X(a, STATIC, OPTIONAL, MESSAGE, external_notification, 3) \
|
||||||
@@ -136,28 +136,28 @@ X(a, STATIC, OPTIONAL, MESSAGE, canned_message, 7) \
|
|||||||
X(a, STATIC, SINGULAR, UINT32, version, 8) \
|
X(a, STATIC, SINGULAR, UINT32, version, 8) \
|
||||||
X(a, STATIC, OPTIONAL, MESSAGE, audio, 9) \
|
X(a, STATIC, OPTIONAL, MESSAGE, audio, 9) \
|
||||||
X(a, STATIC, OPTIONAL, MESSAGE, remote_hardware, 10)
|
X(a, STATIC, OPTIONAL, MESSAGE, remote_hardware, 10)
|
||||||
#define LocalModuleConfig_CALLBACK NULL
|
#define meshtastic_LocalModuleConfig_CALLBACK NULL
|
||||||
#define LocalModuleConfig_DEFAULT NULL
|
#define meshtastic_LocalModuleConfig_DEFAULT NULL
|
||||||
#define LocalModuleConfig_mqtt_MSGTYPE ModuleConfig_MQTTConfig
|
#define meshtastic_LocalModuleConfig_mqtt_MSGTYPE meshtastic_ModuleConfig_MQTTConfig
|
||||||
#define LocalModuleConfig_serial_MSGTYPE ModuleConfig_SerialConfig
|
#define meshtastic_LocalModuleConfig_serial_MSGTYPE meshtastic_ModuleConfig_SerialConfig
|
||||||
#define LocalModuleConfig_external_notification_MSGTYPE ModuleConfig_ExternalNotificationConfig
|
#define meshtastic_LocalModuleConfig_external_notification_MSGTYPE meshtastic_ModuleConfig_ExternalNotificationConfig
|
||||||
#define LocalModuleConfig_store_forward_MSGTYPE ModuleConfig_StoreForwardConfig
|
#define meshtastic_LocalModuleConfig_store_forward_MSGTYPE meshtastic_ModuleConfig_StoreForwardConfig
|
||||||
#define LocalModuleConfig_range_test_MSGTYPE ModuleConfig_RangeTestConfig
|
#define meshtastic_LocalModuleConfig_range_test_MSGTYPE meshtastic_ModuleConfig_RangeTestConfig
|
||||||
#define LocalModuleConfig_telemetry_MSGTYPE ModuleConfig_TelemetryConfig
|
#define meshtastic_LocalModuleConfig_telemetry_MSGTYPE meshtastic_ModuleConfig_TelemetryConfig
|
||||||
#define LocalModuleConfig_canned_message_MSGTYPE ModuleConfig_CannedMessageConfig
|
#define meshtastic_LocalModuleConfig_canned_message_MSGTYPE meshtastic_ModuleConfig_CannedMessageConfig
|
||||||
#define LocalModuleConfig_audio_MSGTYPE ModuleConfig_AudioConfig
|
#define meshtastic_LocalModuleConfig_audio_MSGTYPE meshtastic_ModuleConfig_AudioConfig
|
||||||
#define LocalModuleConfig_remote_hardware_MSGTYPE ModuleConfig_RemoteHardwareConfig
|
#define meshtastic_LocalModuleConfig_remote_hardware_MSGTYPE meshtastic_ModuleConfig_RemoteHardwareConfig
|
||||||
|
|
||||||
extern const pb_msgdesc_t LocalConfig_msg;
|
extern const pb_msgdesc_t meshtastic_LocalConfig_msg;
|
||||||
extern const pb_msgdesc_t LocalModuleConfig_msg;
|
extern const pb_msgdesc_t meshtastic_LocalModuleConfig_msg;
|
||||||
|
|
||||||
/* Defines for backwards compatibility with code written before nanopb-0.4.0 */
|
/* Defines for backwards compatibility with code written before nanopb-0.4.0 */
|
||||||
#define LocalConfig_fields &LocalConfig_msg
|
#define meshtastic_LocalConfig_fields &meshtastic_LocalConfig_msg
|
||||||
#define LocalModuleConfig_fields &LocalModuleConfig_msg
|
#define meshtastic_LocalModuleConfig_fields &meshtastic_LocalModuleConfig_msg
|
||||||
|
|
||||||
/* Maximum encoded size of messages (where known) */
|
/* Maximum encoded size of messages (where known) */
|
||||||
#define LocalConfig_size 425
|
#define meshtastic_LocalConfig_size 425
|
||||||
#define LocalModuleConfig_size 412
|
#define meshtastic_LocalModuleConfig_size 412
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
} /* extern "C" */
|
} /* extern "C" */
|
||||||
|
|||||||
@@ -1,51 +1,51 @@
|
|||||||
/* Automatically generated nanopb constant definitions */
|
/* Automatically generated nanopb constant definitions */
|
||||||
/* Generated by nanopb-0.4.7 */
|
/* Generated by nanopb-0.4.7 */
|
||||||
|
|
||||||
#include "./mesh.pb.h"
|
#include "meshtastic/mesh.pb.h"
|
||||||
#if PB_PROTO_HEADER_VERSION != 40
|
#if PB_PROTO_HEADER_VERSION != 40
|
||||||
#error Regenerate this file with the current version of nanopb generator.
|
#error Regenerate this file with the current version of nanopb generator.
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
PB_BIND(Position, Position, AUTO)
|
PB_BIND(meshtastic_Position, meshtastic_Position, AUTO)
|
||||||
|
|
||||||
|
|
||||||
PB_BIND(User, User, AUTO)
|
PB_BIND(meshtastic_User, meshtastic_User, AUTO)
|
||||||
|
|
||||||
|
|
||||||
PB_BIND(RouteDiscovery, RouteDiscovery, AUTO)
|
PB_BIND(meshtastic_RouteDiscovery, meshtastic_RouteDiscovery, AUTO)
|
||||||
|
|
||||||
|
|
||||||
PB_BIND(Routing, Routing, AUTO)
|
PB_BIND(meshtastic_Routing, meshtastic_Routing, AUTO)
|
||||||
|
|
||||||
|
|
||||||
PB_BIND(Data, Data, 2)
|
PB_BIND(meshtastic_Data, meshtastic_Data, 2)
|
||||||
|
|
||||||
|
|
||||||
PB_BIND(Waypoint, Waypoint, AUTO)
|
PB_BIND(meshtastic_Waypoint, meshtastic_Waypoint, AUTO)
|
||||||
|
|
||||||
|
|
||||||
PB_BIND(MeshPacket, MeshPacket, 2)
|
PB_BIND(meshtastic_MeshPacket, meshtastic_MeshPacket, 2)
|
||||||
|
|
||||||
|
|
||||||
PB_BIND(NodeInfo, NodeInfo, AUTO)
|
PB_BIND(meshtastic_NodeInfo, meshtastic_NodeInfo, AUTO)
|
||||||
|
|
||||||
|
|
||||||
PB_BIND(MyNodeInfo, MyNodeInfo, AUTO)
|
PB_BIND(meshtastic_MyNodeInfo, meshtastic_MyNodeInfo, AUTO)
|
||||||
|
|
||||||
|
|
||||||
PB_BIND(LogRecord, LogRecord, AUTO)
|
PB_BIND(meshtastic_LogRecord, meshtastic_LogRecord, AUTO)
|
||||||
|
|
||||||
|
|
||||||
PB_BIND(QueueStatus, QueueStatus, AUTO)
|
PB_BIND(meshtastic_QueueStatus, meshtastic_QueueStatus, AUTO)
|
||||||
|
|
||||||
|
|
||||||
PB_BIND(FromRadio, FromRadio, 2)
|
PB_BIND(meshtastic_FromRadio, meshtastic_FromRadio, 2)
|
||||||
|
|
||||||
|
|
||||||
PB_BIND(ToRadio, ToRadio, 2)
|
PB_BIND(meshtastic_ToRadio, meshtastic_ToRadio, 2)
|
||||||
|
|
||||||
|
|
||||||
PB_BIND(Compressed, Compressed, AUTO)
|
PB_BIND(meshtastic_Compressed, meshtastic_Compressed, AUTO)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -1,39 +1,39 @@
|
|||||||
/* Automatically generated nanopb constant definitions */
|
/* Automatically generated nanopb constant definitions */
|
||||||
/* Generated by nanopb-0.4.7 */
|
/* Generated by nanopb-0.4.7 */
|
||||||
|
|
||||||
#include "./module_config.pb.h"
|
#include "meshtastic/module_config.pb.h"
|
||||||
#if PB_PROTO_HEADER_VERSION != 40
|
#if PB_PROTO_HEADER_VERSION != 40
|
||||||
#error Regenerate this file with the current version of nanopb generator.
|
#error Regenerate this file with the current version of nanopb generator.
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
PB_BIND(ModuleConfig, ModuleConfig, AUTO)
|
PB_BIND(meshtastic_ModuleConfig, meshtastic_ModuleConfig, AUTO)
|
||||||
|
|
||||||
|
|
||||||
PB_BIND(ModuleConfig_MQTTConfig, ModuleConfig_MQTTConfig, AUTO)
|
PB_BIND(meshtastic_ModuleConfig_MQTTConfig, meshtastic_ModuleConfig_MQTTConfig, AUTO)
|
||||||
|
|
||||||
|
|
||||||
PB_BIND(ModuleConfig_RemoteHardwareConfig, ModuleConfig_RemoteHardwareConfig, AUTO)
|
PB_BIND(meshtastic_ModuleConfig_RemoteHardwareConfig, meshtastic_ModuleConfig_RemoteHardwareConfig, AUTO)
|
||||||
|
|
||||||
|
|
||||||
PB_BIND(ModuleConfig_AudioConfig, ModuleConfig_AudioConfig, AUTO)
|
PB_BIND(meshtastic_ModuleConfig_AudioConfig, meshtastic_ModuleConfig_AudioConfig, AUTO)
|
||||||
|
|
||||||
|
|
||||||
PB_BIND(ModuleConfig_SerialConfig, ModuleConfig_SerialConfig, AUTO)
|
PB_BIND(meshtastic_ModuleConfig_SerialConfig, meshtastic_ModuleConfig_SerialConfig, AUTO)
|
||||||
|
|
||||||
|
|
||||||
PB_BIND(ModuleConfig_ExternalNotificationConfig, ModuleConfig_ExternalNotificationConfig, AUTO)
|
PB_BIND(meshtastic_ModuleConfig_ExternalNotificationConfig, meshtastic_ModuleConfig_ExternalNotificationConfig, AUTO)
|
||||||
|
|
||||||
|
|
||||||
PB_BIND(ModuleConfig_StoreForwardConfig, ModuleConfig_StoreForwardConfig, AUTO)
|
PB_BIND(meshtastic_ModuleConfig_StoreForwardConfig, meshtastic_ModuleConfig_StoreForwardConfig, AUTO)
|
||||||
|
|
||||||
|
|
||||||
PB_BIND(ModuleConfig_RangeTestConfig, ModuleConfig_RangeTestConfig, AUTO)
|
PB_BIND(meshtastic_ModuleConfig_RangeTestConfig, meshtastic_ModuleConfig_RangeTestConfig, AUTO)
|
||||||
|
|
||||||
|
|
||||||
PB_BIND(ModuleConfig_TelemetryConfig, ModuleConfig_TelemetryConfig, AUTO)
|
PB_BIND(meshtastic_ModuleConfig_TelemetryConfig, meshtastic_ModuleConfig_TelemetryConfig, AUTO)
|
||||||
|
|
||||||
|
|
||||||
PB_BIND(ModuleConfig_CannedMessageConfig, ModuleConfig_CannedMessageConfig, AUTO)
|
PB_BIND(meshtastic_ModuleConfig_CannedMessageConfig, meshtastic_ModuleConfig_CannedMessageConfig, AUTO)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -11,70 +11,70 @@
|
|||||||
|
|
||||||
/* Enum definitions */
|
/* Enum definitions */
|
||||||
/* Baudrate for codec2 voice */
|
/* Baudrate for codec2 voice */
|
||||||
typedef enum _ModuleConfig_AudioConfig_Audio_Baud {
|
typedef enum _meshtastic_ModuleConfig_AudioConfig_Audio_Baud {
|
||||||
ModuleConfig_AudioConfig_Audio_Baud_CODEC2_DEFAULT = 0,
|
meshtastic_ModuleConfig_AudioConfig_Audio_Baud_CODEC2_DEFAULT = 0,
|
||||||
ModuleConfig_AudioConfig_Audio_Baud_CODEC2_3200 = 1,
|
meshtastic_ModuleConfig_AudioConfig_Audio_Baud_CODEC2_3200 = 1,
|
||||||
ModuleConfig_AudioConfig_Audio_Baud_CODEC2_2400 = 2,
|
meshtastic_ModuleConfig_AudioConfig_Audio_Baud_CODEC2_2400 = 2,
|
||||||
ModuleConfig_AudioConfig_Audio_Baud_CODEC2_1600 = 3,
|
meshtastic_ModuleConfig_AudioConfig_Audio_Baud_CODEC2_1600 = 3,
|
||||||
ModuleConfig_AudioConfig_Audio_Baud_CODEC2_1400 = 4,
|
meshtastic_ModuleConfig_AudioConfig_Audio_Baud_CODEC2_1400 = 4,
|
||||||
ModuleConfig_AudioConfig_Audio_Baud_CODEC2_1300 = 5,
|
meshtastic_ModuleConfig_AudioConfig_Audio_Baud_CODEC2_1300 = 5,
|
||||||
ModuleConfig_AudioConfig_Audio_Baud_CODEC2_1200 = 6,
|
meshtastic_ModuleConfig_AudioConfig_Audio_Baud_CODEC2_1200 = 6,
|
||||||
ModuleConfig_AudioConfig_Audio_Baud_CODEC2_700 = 7,
|
meshtastic_ModuleConfig_AudioConfig_Audio_Baud_CODEC2_700 = 7,
|
||||||
ModuleConfig_AudioConfig_Audio_Baud_CODEC2_700B = 8
|
meshtastic_ModuleConfig_AudioConfig_Audio_Baud_CODEC2_700B = 8
|
||||||
} ModuleConfig_AudioConfig_Audio_Baud;
|
} meshtastic_ModuleConfig_AudioConfig_Audio_Baud;
|
||||||
|
|
||||||
/* TODO: REPLACE */
|
/* TODO: REPLACE */
|
||||||
typedef enum _ModuleConfig_SerialConfig_Serial_Baud {
|
typedef enum _meshtastic_ModuleConfig_SerialConfig_Serial_Baud {
|
||||||
ModuleConfig_SerialConfig_Serial_Baud_BAUD_DEFAULT = 0,
|
meshtastic_ModuleConfig_SerialConfig_Serial_Baud_BAUD_DEFAULT = 0,
|
||||||
ModuleConfig_SerialConfig_Serial_Baud_BAUD_110 = 1,
|
meshtastic_ModuleConfig_SerialConfig_Serial_Baud_BAUD_110 = 1,
|
||||||
ModuleConfig_SerialConfig_Serial_Baud_BAUD_300 = 2,
|
meshtastic_ModuleConfig_SerialConfig_Serial_Baud_BAUD_300 = 2,
|
||||||
ModuleConfig_SerialConfig_Serial_Baud_BAUD_600 = 3,
|
meshtastic_ModuleConfig_SerialConfig_Serial_Baud_BAUD_600 = 3,
|
||||||
ModuleConfig_SerialConfig_Serial_Baud_BAUD_1200 = 4,
|
meshtastic_ModuleConfig_SerialConfig_Serial_Baud_BAUD_1200 = 4,
|
||||||
ModuleConfig_SerialConfig_Serial_Baud_BAUD_2400 = 5,
|
meshtastic_ModuleConfig_SerialConfig_Serial_Baud_BAUD_2400 = 5,
|
||||||
ModuleConfig_SerialConfig_Serial_Baud_BAUD_4800 = 6,
|
meshtastic_ModuleConfig_SerialConfig_Serial_Baud_BAUD_4800 = 6,
|
||||||
ModuleConfig_SerialConfig_Serial_Baud_BAUD_9600 = 7,
|
meshtastic_ModuleConfig_SerialConfig_Serial_Baud_BAUD_9600 = 7,
|
||||||
ModuleConfig_SerialConfig_Serial_Baud_BAUD_19200 = 8,
|
meshtastic_ModuleConfig_SerialConfig_Serial_Baud_BAUD_19200 = 8,
|
||||||
ModuleConfig_SerialConfig_Serial_Baud_BAUD_38400 = 9,
|
meshtastic_ModuleConfig_SerialConfig_Serial_Baud_BAUD_38400 = 9,
|
||||||
ModuleConfig_SerialConfig_Serial_Baud_BAUD_57600 = 10,
|
meshtastic_ModuleConfig_SerialConfig_Serial_Baud_BAUD_57600 = 10,
|
||||||
ModuleConfig_SerialConfig_Serial_Baud_BAUD_115200 = 11,
|
meshtastic_ModuleConfig_SerialConfig_Serial_Baud_BAUD_115200 = 11,
|
||||||
ModuleConfig_SerialConfig_Serial_Baud_BAUD_230400 = 12,
|
meshtastic_ModuleConfig_SerialConfig_Serial_Baud_BAUD_230400 = 12,
|
||||||
ModuleConfig_SerialConfig_Serial_Baud_BAUD_460800 = 13,
|
meshtastic_ModuleConfig_SerialConfig_Serial_Baud_BAUD_460800 = 13,
|
||||||
ModuleConfig_SerialConfig_Serial_Baud_BAUD_576000 = 14,
|
meshtastic_ModuleConfig_SerialConfig_Serial_Baud_BAUD_576000 = 14,
|
||||||
ModuleConfig_SerialConfig_Serial_Baud_BAUD_921600 = 15
|
meshtastic_ModuleConfig_SerialConfig_Serial_Baud_BAUD_921600 = 15
|
||||||
} ModuleConfig_SerialConfig_Serial_Baud;
|
} meshtastic_ModuleConfig_SerialConfig_Serial_Baud;
|
||||||
|
|
||||||
/* TODO: REPLACE */
|
/* TODO: REPLACE */
|
||||||
typedef enum _ModuleConfig_SerialConfig_Serial_Mode {
|
typedef enum _meshtastic_ModuleConfig_SerialConfig_Serial_Mode {
|
||||||
ModuleConfig_SerialConfig_Serial_Mode_DEFAULT = 0,
|
meshtastic_ModuleConfig_SerialConfig_Serial_Mode_DEFAULT = 0,
|
||||||
ModuleConfig_SerialConfig_Serial_Mode_SIMPLE = 1,
|
meshtastic_ModuleConfig_SerialConfig_Serial_Mode_SIMPLE = 1,
|
||||||
ModuleConfig_SerialConfig_Serial_Mode_PROTO = 2,
|
meshtastic_ModuleConfig_SerialConfig_Serial_Mode_PROTO = 2,
|
||||||
ModuleConfig_SerialConfig_Serial_Mode_TEXTMSG = 3,
|
meshtastic_ModuleConfig_SerialConfig_Serial_Mode_TEXTMSG = 3,
|
||||||
ModuleConfig_SerialConfig_Serial_Mode_NMEA = 4
|
meshtastic_ModuleConfig_SerialConfig_Serial_Mode_NMEA = 4
|
||||||
} ModuleConfig_SerialConfig_Serial_Mode;
|
} meshtastic_ModuleConfig_SerialConfig_Serial_Mode;
|
||||||
|
|
||||||
/* TODO: REPLACE */
|
/* TODO: REPLACE */
|
||||||
typedef enum _ModuleConfig_CannedMessageConfig_InputEventChar {
|
typedef enum _meshtastic_ModuleConfig_CannedMessageConfig_InputEventChar {
|
||||||
/* TODO: REPLACE */
|
/* TODO: REPLACE */
|
||||||
ModuleConfig_CannedMessageConfig_InputEventChar_NONE = 0,
|
meshtastic_ModuleConfig_CannedMessageConfig_InputEventChar_NONE = 0,
|
||||||
/* TODO: REPLACE */
|
/* TODO: REPLACE */
|
||||||
ModuleConfig_CannedMessageConfig_InputEventChar_UP = 17,
|
meshtastic_ModuleConfig_CannedMessageConfig_InputEventChar_UP = 17,
|
||||||
/* TODO: REPLACE */
|
/* TODO: REPLACE */
|
||||||
ModuleConfig_CannedMessageConfig_InputEventChar_DOWN = 18,
|
meshtastic_ModuleConfig_CannedMessageConfig_InputEventChar_DOWN = 18,
|
||||||
/* TODO: REPLACE */
|
/* TODO: REPLACE */
|
||||||
ModuleConfig_CannedMessageConfig_InputEventChar_LEFT = 19,
|
meshtastic_ModuleConfig_CannedMessageConfig_InputEventChar_LEFT = 19,
|
||||||
/* TODO: REPLACE */
|
/* TODO: REPLACE */
|
||||||
ModuleConfig_CannedMessageConfig_InputEventChar_RIGHT = 20,
|
meshtastic_ModuleConfig_CannedMessageConfig_InputEventChar_RIGHT = 20,
|
||||||
/* '\n' */
|
/* '\n' */
|
||||||
ModuleConfig_CannedMessageConfig_InputEventChar_SELECT = 10,
|
meshtastic_ModuleConfig_CannedMessageConfig_InputEventChar_SELECT = 10,
|
||||||
/* TODO: REPLACE */
|
/* TODO: REPLACE */
|
||||||
ModuleConfig_CannedMessageConfig_InputEventChar_BACK = 27,
|
meshtastic_ModuleConfig_CannedMessageConfig_InputEventChar_BACK = 27,
|
||||||
/* TODO: REPLACE */
|
/* TODO: REPLACE */
|
||||||
ModuleConfig_CannedMessageConfig_InputEventChar_CANCEL = 24
|
meshtastic_ModuleConfig_CannedMessageConfig_InputEventChar_CANCEL = 24
|
||||||
} ModuleConfig_CannedMessageConfig_InputEventChar;
|
} meshtastic_ModuleConfig_CannedMessageConfig_InputEventChar;
|
||||||
|
|
||||||
/* Struct definitions */
|
/* Struct definitions */
|
||||||
/* MQTT Client Config */
|
/* MQTT Client Config */
|
||||||
typedef struct _ModuleConfig_MQTTConfig {
|
typedef struct _meshtastic_ModuleConfig_MQTTConfig {
|
||||||
/* If a meshtastic node is able to reach the internet it will normally attempt to gateway any channels that are marked as
|
/* If a meshtastic node is able to reach the internet it will normally attempt to gateway any channels that are marked as
|
||||||
is_uplink_enabled or is_downlink_enabled. */
|
is_uplink_enabled or is_downlink_enabled. */
|
||||||
bool enabled;
|
bool enabled;
|
||||||
@@ -96,22 +96,22 @@ typedef struct _ModuleConfig_MQTTConfig {
|
|||||||
bool encryption_enabled;
|
bool encryption_enabled;
|
||||||
/* Whether to send / consume json packets on MQTT */
|
/* Whether to send / consume json packets on MQTT */
|
||||||
bool json_enabled;
|
bool json_enabled;
|
||||||
} ModuleConfig_MQTTConfig;
|
} meshtastic_ModuleConfig_MQTTConfig;
|
||||||
|
|
||||||
/* RemoteHardwareModule Config */
|
/* RemoteHardwareModule Config */
|
||||||
typedef struct _ModuleConfig_RemoteHardwareConfig {
|
typedef struct _meshtastic_ModuleConfig_RemoteHardwareConfig {
|
||||||
/* Whether the Module is enabled */
|
/* Whether the Module is enabled */
|
||||||
bool enabled;
|
bool enabled;
|
||||||
} ModuleConfig_RemoteHardwareConfig;
|
} meshtastic_ModuleConfig_RemoteHardwareConfig;
|
||||||
|
|
||||||
/* Audio Config for codec2 voice */
|
/* Audio Config for codec2 voice */
|
||||||
typedef struct _ModuleConfig_AudioConfig {
|
typedef struct _meshtastic_ModuleConfig_AudioConfig {
|
||||||
/* Whether Audio is enabled */
|
/* Whether Audio is enabled */
|
||||||
bool codec2_enabled;
|
bool codec2_enabled;
|
||||||
/* PTT Pin */
|
/* PTT Pin */
|
||||||
uint8_t ptt_pin;
|
uint8_t ptt_pin;
|
||||||
/* The audio sample rate to use for codec2 */
|
/* The audio sample rate to use for codec2 */
|
||||||
ModuleConfig_AudioConfig_Audio_Baud bitrate;
|
meshtastic_ModuleConfig_AudioConfig_Audio_Baud bitrate;
|
||||||
/* I2S Word Select */
|
/* I2S Word Select */
|
||||||
uint8_t i2s_ws;
|
uint8_t i2s_ws;
|
||||||
/* I2S Data IN */
|
/* I2S Data IN */
|
||||||
@@ -120,10 +120,10 @@ typedef struct _ModuleConfig_AudioConfig {
|
|||||||
uint8_t i2s_din;
|
uint8_t i2s_din;
|
||||||
/* I2S Clock */
|
/* I2S Clock */
|
||||||
uint8_t i2s_sck;
|
uint8_t i2s_sck;
|
||||||
} ModuleConfig_AudioConfig;
|
} meshtastic_ModuleConfig_AudioConfig;
|
||||||
|
|
||||||
/* Serial Config */
|
/* Serial Config */
|
||||||
typedef struct _ModuleConfig_SerialConfig {
|
typedef struct _meshtastic_ModuleConfig_SerialConfig {
|
||||||
/* Preferences for the SerialModule
|
/* Preferences for the SerialModule
|
||||||
FIXME - Move this out of UserPreferences and into a section for module configuration. */
|
FIXME - Move this out of UserPreferences and into a section for module configuration. */
|
||||||
bool enabled;
|
bool enabled;
|
||||||
@@ -134,15 +134,15 @@ typedef struct _ModuleConfig_SerialConfig {
|
|||||||
/* TODO: REPLACE */
|
/* TODO: REPLACE */
|
||||||
uint32_t txd;
|
uint32_t txd;
|
||||||
/* TODO: REPLACE */
|
/* TODO: REPLACE */
|
||||||
ModuleConfig_SerialConfig_Serial_Baud baud;
|
meshtastic_ModuleConfig_SerialConfig_Serial_Baud baud;
|
||||||
/* TODO: REPLACE */
|
/* TODO: REPLACE */
|
||||||
uint32_t timeout;
|
uint32_t timeout;
|
||||||
/* TODO: REPLACE */
|
/* TODO: REPLACE */
|
||||||
ModuleConfig_SerialConfig_Serial_Mode mode;
|
meshtastic_ModuleConfig_SerialConfig_Serial_Mode mode;
|
||||||
} ModuleConfig_SerialConfig;
|
} meshtastic_ModuleConfig_SerialConfig;
|
||||||
|
|
||||||
/* External Notifications Config */
|
/* External Notifications Config */
|
||||||
typedef struct _ModuleConfig_ExternalNotificationConfig {
|
typedef struct _meshtastic_ModuleConfig_ExternalNotificationConfig {
|
||||||
/* Enable the ExternalNotificationModule */
|
/* Enable the ExternalNotificationModule */
|
||||||
bool enabled;
|
bool enabled;
|
||||||
/* When using in On/Off mode, keep the output on for this many
|
/* When using in On/Off mode, keep the output on for this many
|
||||||
@@ -181,10 +181,10 @@ typedef struct _ModuleConfig_ExternalNotificationConfig {
|
|||||||
Default is 0 which means don't repeat at all. 60 would mean blink
|
Default is 0 which means don't repeat at all. 60 would mean blink
|
||||||
and/or beep for 60 seconds */
|
and/or beep for 60 seconds */
|
||||||
uint16_t nag_timeout;
|
uint16_t nag_timeout;
|
||||||
} ModuleConfig_ExternalNotificationConfig;
|
} meshtastic_ModuleConfig_ExternalNotificationConfig;
|
||||||
|
|
||||||
/* Store and Forward Module Config */
|
/* Store and Forward Module Config */
|
||||||
typedef struct _ModuleConfig_StoreForwardConfig {
|
typedef struct _meshtastic_ModuleConfig_StoreForwardConfig {
|
||||||
/* Enable the Store and Forward Module */
|
/* Enable the Store and Forward Module */
|
||||||
bool enabled;
|
bool enabled;
|
||||||
/* TODO: REPLACE */
|
/* TODO: REPLACE */
|
||||||
@@ -195,10 +195,10 @@ typedef struct _ModuleConfig_StoreForwardConfig {
|
|||||||
uint32_t history_return_max;
|
uint32_t history_return_max;
|
||||||
/* TODO: REPLACE */
|
/* TODO: REPLACE */
|
||||||
uint32_t history_return_window;
|
uint32_t history_return_window;
|
||||||
} ModuleConfig_StoreForwardConfig;
|
} meshtastic_ModuleConfig_StoreForwardConfig;
|
||||||
|
|
||||||
/* Preferences for the RangeTestModule */
|
/* Preferences for the RangeTestModule */
|
||||||
typedef struct _ModuleConfig_RangeTestConfig {
|
typedef struct _meshtastic_ModuleConfig_RangeTestConfig {
|
||||||
/* Enable the Range Test Module */
|
/* Enable the Range Test Module */
|
||||||
bool enabled;
|
bool enabled;
|
||||||
/* Send out range test messages from this node */
|
/* Send out range test messages from this node */
|
||||||
@@ -206,10 +206,10 @@ typedef struct _ModuleConfig_RangeTestConfig {
|
|||||||
/* Bool value indicating that this node should save a RangeTest.csv file.
|
/* Bool value indicating that this node should save a RangeTest.csv file.
|
||||||
ESP32 Only */
|
ESP32 Only */
|
||||||
bool save;
|
bool save;
|
||||||
} ModuleConfig_RangeTestConfig;
|
} meshtastic_ModuleConfig_RangeTestConfig;
|
||||||
|
|
||||||
/* Configuration for both device and environment metrics */
|
/* Configuration for both device and environment metrics */
|
||||||
typedef struct _ModuleConfig_TelemetryConfig {
|
typedef struct _meshtastic_ModuleConfig_TelemetryConfig {
|
||||||
/* Interval in seconds of how often we should try to send our
|
/* Interval in seconds of how often we should try to send our
|
||||||
device metrics to the mesh */
|
device metrics to the mesh */
|
||||||
uint32_t device_update_interval;
|
uint32_t device_update_interval;
|
||||||
@@ -222,10 +222,10 @@ typedef struct _ModuleConfig_TelemetryConfig {
|
|||||||
/* We'll always read the sensor in Celsius, but sometimes we might want to
|
/* We'll always read the sensor in Celsius, but sometimes we might want to
|
||||||
display the results in Fahrenheit as a "user preference". */
|
display the results in Fahrenheit as a "user preference". */
|
||||||
bool environment_display_fahrenheit;
|
bool environment_display_fahrenheit;
|
||||||
} ModuleConfig_TelemetryConfig;
|
} meshtastic_ModuleConfig_TelemetryConfig;
|
||||||
|
|
||||||
/* TODO: REPLACE */
|
/* TODO: REPLACE */
|
||||||
typedef struct _ModuleConfig_CannedMessageConfig {
|
typedef struct _meshtastic_ModuleConfig_CannedMessageConfig {
|
||||||
/* Enable the rotary encoder #1. This is a 'dumb' encoder sending pulses on both A and B pins while rotating. */
|
/* Enable the rotary encoder #1. This is a 'dumb' encoder sending pulses on both A and B pins while rotating. */
|
||||||
bool rotary1_enabled;
|
bool rotary1_enabled;
|
||||||
/* GPIO pin for rotary encoder A port. */
|
/* GPIO pin for rotary encoder A port. */
|
||||||
@@ -235,11 +235,11 @@ typedef struct _ModuleConfig_CannedMessageConfig {
|
|||||||
/* GPIO pin for rotary encoder Press port. */
|
/* GPIO pin for rotary encoder Press port. */
|
||||||
uint32_t inputbroker_pin_press;
|
uint32_t inputbroker_pin_press;
|
||||||
/* Generate input event on CW of this kind. */
|
/* Generate input event on CW of this kind. */
|
||||||
ModuleConfig_CannedMessageConfig_InputEventChar inputbroker_event_cw;
|
meshtastic_ModuleConfig_CannedMessageConfig_InputEventChar inputbroker_event_cw;
|
||||||
/* Generate input event on CCW of this kind. */
|
/* Generate input event on CCW of this kind. */
|
||||||
ModuleConfig_CannedMessageConfig_InputEventChar inputbroker_event_ccw;
|
meshtastic_ModuleConfig_CannedMessageConfig_InputEventChar inputbroker_event_ccw;
|
||||||
/* Generate input event on Press of this kind. */
|
/* Generate input event on Press of this kind. */
|
||||||
ModuleConfig_CannedMessageConfig_InputEventChar inputbroker_event_press;
|
meshtastic_ModuleConfig_CannedMessageConfig_InputEventChar inputbroker_event_press;
|
||||||
/* Enable the Up/Down/Select input device. Can be RAK rotary encoder or 3 buttons. Uses the a/b/press definitions from inputbroker. */
|
/* Enable the Up/Down/Select input device. Can be RAK rotary encoder or 3 buttons. Uses the a/b/press definitions from inputbroker. */
|
||||||
bool updown1_enabled;
|
bool updown1_enabled;
|
||||||
/* Enable/disable CannedMessageModule. */
|
/* Enable/disable CannedMessageModule. */
|
||||||
@@ -250,32 +250,32 @@ typedef struct _ModuleConfig_CannedMessageConfig {
|
|||||||
/* CannedMessageModule also sends a bell character with the messages.
|
/* CannedMessageModule also sends a bell character with the messages.
|
||||||
ExternalNotificationModule can benefit from this feature. */
|
ExternalNotificationModule can benefit from this feature. */
|
||||||
bool send_bell;
|
bool send_bell;
|
||||||
} ModuleConfig_CannedMessageConfig;
|
} meshtastic_ModuleConfig_CannedMessageConfig;
|
||||||
|
|
||||||
/* Module Config */
|
/* Module Config */
|
||||||
typedef struct _ModuleConfig {
|
typedef struct _meshtastic_ModuleConfig {
|
||||||
pb_size_t which_payload_variant;
|
pb_size_t which_payload_variant;
|
||||||
union {
|
union {
|
||||||
/* TODO: REPLACE */
|
/* TODO: REPLACE */
|
||||||
ModuleConfig_MQTTConfig mqtt;
|
meshtastic_ModuleConfig_MQTTConfig mqtt;
|
||||||
/* TODO: REPLACE */
|
/* TODO: REPLACE */
|
||||||
ModuleConfig_SerialConfig serial;
|
meshtastic_ModuleConfig_SerialConfig serial;
|
||||||
/* TODO: REPLACE */
|
/* TODO: REPLACE */
|
||||||
ModuleConfig_ExternalNotificationConfig external_notification;
|
meshtastic_ModuleConfig_ExternalNotificationConfig external_notification;
|
||||||
/* TODO: REPLACE */
|
/* TODO: REPLACE */
|
||||||
ModuleConfig_StoreForwardConfig store_forward;
|
meshtastic_ModuleConfig_StoreForwardConfig store_forward;
|
||||||
/* TODO: REPLACE */
|
/* TODO: REPLACE */
|
||||||
ModuleConfig_RangeTestConfig range_test;
|
meshtastic_ModuleConfig_RangeTestConfig range_test;
|
||||||
/* TODO: REPLACE */
|
/* TODO: REPLACE */
|
||||||
ModuleConfig_TelemetryConfig telemetry;
|
meshtastic_ModuleConfig_TelemetryConfig telemetry;
|
||||||
/* TODO: REPLACE */
|
/* TODO: REPLACE */
|
||||||
ModuleConfig_CannedMessageConfig canned_message;
|
meshtastic_ModuleConfig_CannedMessageConfig canned_message;
|
||||||
/* TODO: REPLACE */
|
/* TODO: REPLACE */
|
||||||
ModuleConfig_AudioConfig audio;
|
meshtastic_ModuleConfig_AudioConfig audio;
|
||||||
/* TODO: REPLACE */
|
/* TODO: REPLACE */
|
||||||
ModuleConfig_RemoteHardwareConfig remote_hardware;
|
meshtastic_ModuleConfig_RemoteHardwareConfig remote_hardware;
|
||||||
} payload_variant;
|
} payload_variant;
|
||||||
} ModuleConfig;
|
} meshtastic_ModuleConfig;
|
||||||
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
@@ -283,133 +283,133 @@ extern "C" {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Helper constants for enums */
|
/* Helper constants for enums */
|
||||||
#define _ModuleConfig_AudioConfig_Audio_Baud_MIN ModuleConfig_AudioConfig_Audio_Baud_CODEC2_DEFAULT
|
#define _meshtastic_ModuleConfig_AudioConfig_Audio_Baud_MIN meshtastic_ModuleConfig_AudioConfig_Audio_Baud_CODEC2_DEFAULT
|
||||||
#define _ModuleConfig_AudioConfig_Audio_Baud_MAX ModuleConfig_AudioConfig_Audio_Baud_CODEC2_700B
|
#define _meshtastic_ModuleConfig_AudioConfig_Audio_Baud_MAX meshtastic_ModuleConfig_AudioConfig_Audio_Baud_CODEC2_700B
|
||||||
#define _ModuleConfig_AudioConfig_Audio_Baud_ARRAYSIZE ((ModuleConfig_AudioConfig_Audio_Baud)(ModuleConfig_AudioConfig_Audio_Baud_CODEC2_700B+1))
|
#define _meshtastic_ModuleConfig_AudioConfig_Audio_Baud_ARRAYSIZE ((meshtastic_ModuleConfig_AudioConfig_Audio_Baud)(meshtastic_ModuleConfig_AudioConfig_Audio_Baud_CODEC2_700B+1))
|
||||||
|
|
||||||
#define _ModuleConfig_SerialConfig_Serial_Baud_MIN ModuleConfig_SerialConfig_Serial_Baud_BAUD_DEFAULT
|
#define _meshtastic_ModuleConfig_SerialConfig_Serial_Baud_MIN meshtastic_ModuleConfig_SerialConfig_Serial_Baud_BAUD_DEFAULT
|
||||||
#define _ModuleConfig_SerialConfig_Serial_Baud_MAX ModuleConfig_SerialConfig_Serial_Baud_BAUD_921600
|
#define _meshtastic_ModuleConfig_SerialConfig_Serial_Baud_MAX meshtastic_ModuleConfig_SerialConfig_Serial_Baud_BAUD_921600
|
||||||
#define _ModuleConfig_SerialConfig_Serial_Baud_ARRAYSIZE ((ModuleConfig_SerialConfig_Serial_Baud)(ModuleConfig_SerialConfig_Serial_Baud_BAUD_921600+1))
|
#define _meshtastic_ModuleConfig_SerialConfig_Serial_Baud_ARRAYSIZE ((meshtastic_ModuleConfig_SerialConfig_Serial_Baud)(meshtastic_ModuleConfig_SerialConfig_Serial_Baud_BAUD_921600+1))
|
||||||
|
|
||||||
#define _ModuleConfig_SerialConfig_Serial_Mode_MIN ModuleConfig_SerialConfig_Serial_Mode_DEFAULT
|
#define _meshtastic_ModuleConfig_SerialConfig_Serial_Mode_MIN meshtastic_ModuleConfig_SerialConfig_Serial_Mode_DEFAULT
|
||||||
#define _ModuleConfig_SerialConfig_Serial_Mode_MAX ModuleConfig_SerialConfig_Serial_Mode_NMEA
|
#define _meshtastic_ModuleConfig_SerialConfig_Serial_Mode_MAX meshtastic_ModuleConfig_SerialConfig_Serial_Mode_NMEA
|
||||||
#define _ModuleConfig_SerialConfig_Serial_Mode_ARRAYSIZE ((ModuleConfig_SerialConfig_Serial_Mode)(ModuleConfig_SerialConfig_Serial_Mode_NMEA+1))
|
#define _meshtastic_ModuleConfig_SerialConfig_Serial_Mode_ARRAYSIZE ((meshtastic_ModuleConfig_SerialConfig_Serial_Mode)(meshtastic_ModuleConfig_SerialConfig_Serial_Mode_NMEA+1))
|
||||||
|
|
||||||
#define _ModuleConfig_CannedMessageConfig_InputEventChar_MIN ModuleConfig_CannedMessageConfig_InputEventChar_NONE
|
#define _meshtastic_ModuleConfig_CannedMessageConfig_InputEventChar_MIN meshtastic_ModuleConfig_CannedMessageConfig_InputEventChar_NONE
|
||||||
#define _ModuleConfig_CannedMessageConfig_InputEventChar_MAX ModuleConfig_CannedMessageConfig_InputEventChar_BACK
|
#define _meshtastic_ModuleConfig_CannedMessageConfig_InputEventChar_MAX meshtastic_ModuleConfig_CannedMessageConfig_InputEventChar_BACK
|
||||||
#define _ModuleConfig_CannedMessageConfig_InputEventChar_ARRAYSIZE ((ModuleConfig_CannedMessageConfig_InputEventChar)(ModuleConfig_CannedMessageConfig_InputEventChar_BACK+1))
|
#define _meshtastic_ModuleConfig_CannedMessageConfig_InputEventChar_ARRAYSIZE ((meshtastic_ModuleConfig_CannedMessageConfig_InputEventChar)(meshtastic_ModuleConfig_CannedMessageConfig_InputEventChar_BACK+1))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#define ModuleConfig_AudioConfig_bitrate_ENUMTYPE ModuleConfig_AudioConfig_Audio_Baud
|
#define meshtastic_ModuleConfig_AudioConfig_bitrate_ENUMTYPE meshtastic_ModuleConfig_AudioConfig_Audio_Baud
|
||||||
|
|
||||||
#define ModuleConfig_SerialConfig_baud_ENUMTYPE ModuleConfig_SerialConfig_Serial_Baud
|
#define meshtastic_ModuleConfig_SerialConfig_baud_ENUMTYPE meshtastic_ModuleConfig_SerialConfig_Serial_Baud
|
||||||
#define ModuleConfig_SerialConfig_mode_ENUMTYPE ModuleConfig_SerialConfig_Serial_Mode
|
#define meshtastic_ModuleConfig_SerialConfig_mode_ENUMTYPE meshtastic_ModuleConfig_SerialConfig_Serial_Mode
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#define ModuleConfig_CannedMessageConfig_inputbroker_event_cw_ENUMTYPE ModuleConfig_CannedMessageConfig_InputEventChar
|
#define meshtastic_ModuleConfig_CannedMessageConfig_inputbroker_event_cw_ENUMTYPE meshtastic_ModuleConfig_CannedMessageConfig_InputEventChar
|
||||||
#define ModuleConfig_CannedMessageConfig_inputbroker_event_ccw_ENUMTYPE ModuleConfig_CannedMessageConfig_InputEventChar
|
#define meshtastic_ModuleConfig_CannedMessageConfig_inputbroker_event_ccw_ENUMTYPE meshtastic_ModuleConfig_CannedMessageConfig_InputEventChar
|
||||||
#define ModuleConfig_CannedMessageConfig_inputbroker_event_press_ENUMTYPE ModuleConfig_CannedMessageConfig_InputEventChar
|
#define meshtastic_ModuleConfig_CannedMessageConfig_inputbroker_event_press_ENUMTYPE meshtastic_ModuleConfig_CannedMessageConfig_InputEventChar
|
||||||
|
|
||||||
|
|
||||||
/* Initializer values for message structs */
|
/* Initializer values for message structs */
|
||||||
#define ModuleConfig_init_default {0, {ModuleConfig_MQTTConfig_init_default}}
|
#define meshtastic_ModuleConfig_init_default {0, {meshtastic_ModuleConfig_MQTTConfig_init_default}}
|
||||||
#define ModuleConfig_MQTTConfig_init_default {0, "", "", "", 0, 0}
|
#define meshtastic_ModuleConfig_MQTTConfig_init_default {0, "", "", "", 0, 0}
|
||||||
#define ModuleConfig_RemoteHardwareConfig_init_default {0}
|
#define meshtastic_ModuleConfig_RemoteHardwareConfig_init_default {0}
|
||||||
#define ModuleConfig_AudioConfig_init_default {0, 0, _ModuleConfig_AudioConfig_Audio_Baud_MIN, 0, 0, 0, 0}
|
#define meshtastic_ModuleConfig_AudioConfig_init_default {0, 0, _meshtastic_ModuleConfig_AudioConfig_Audio_Baud_MIN, 0, 0, 0, 0}
|
||||||
#define ModuleConfig_SerialConfig_init_default {0, 0, 0, 0, _ModuleConfig_SerialConfig_Serial_Baud_MIN, 0, _ModuleConfig_SerialConfig_Serial_Mode_MIN}
|
#define meshtastic_ModuleConfig_SerialConfig_init_default {0, 0, 0, 0, _meshtastic_ModuleConfig_SerialConfig_Serial_Baud_MIN, 0, _meshtastic_ModuleConfig_SerialConfig_Serial_Mode_MIN}
|
||||||
#define ModuleConfig_ExternalNotificationConfig_init_default {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}
|
#define meshtastic_ModuleConfig_ExternalNotificationConfig_init_default {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}
|
||||||
#define ModuleConfig_StoreForwardConfig_init_default {0, 0, 0, 0, 0}
|
#define meshtastic_ModuleConfig_StoreForwardConfig_init_default {0, 0, 0, 0, 0}
|
||||||
#define ModuleConfig_RangeTestConfig_init_default {0, 0, 0}
|
#define meshtastic_ModuleConfig_RangeTestConfig_init_default {0, 0, 0}
|
||||||
#define ModuleConfig_TelemetryConfig_init_default {0, 0, 0, 0, 0}
|
#define meshtastic_ModuleConfig_TelemetryConfig_init_default {0, 0, 0, 0, 0}
|
||||||
#define ModuleConfig_CannedMessageConfig_init_default {0, 0, 0, 0, _ModuleConfig_CannedMessageConfig_InputEventChar_MIN, _ModuleConfig_CannedMessageConfig_InputEventChar_MIN, _ModuleConfig_CannedMessageConfig_InputEventChar_MIN, 0, 0, "", 0}
|
#define meshtastic_ModuleConfig_CannedMessageConfig_init_default {0, 0, 0, 0, _meshtastic_ModuleConfig_CannedMessageConfig_InputEventChar_MIN, _meshtastic_ModuleConfig_CannedMessageConfig_InputEventChar_MIN, _meshtastic_ModuleConfig_CannedMessageConfig_InputEventChar_MIN, 0, 0, "", 0}
|
||||||
#define ModuleConfig_init_zero {0, {ModuleConfig_MQTTConfig_init_zero}}
|
#define meshtastic_ModuleConfig_init_zero {0, {meshtastic_ModuleConfig_MQTTConfig_init_zero}}
|
||||||
#define ModuleConfig_MQTTConfig_init_zero {0, "", "", "", 0, 0}
|
#define meshtastic_ModuleConfig_MQTTConfig_init_zero {0, "", "", "", 0, 0}
|
||||||
#define ModuleConfig_RemoteHardwareConfig_init_zero {0}
|
#define meshtastic_ModuleConfig_RemoteHardwareConfig_init_zero {0}
|
||||||
#define ModuleConfig_AudioConfig_init_zero {0, 0, _ModuleConfig_AudioConfig_Audio_Baud_MIN, 0, 0, 0, 0}
|
#define meshtastic_ModuleConfig_AudioConfig_init_zero {0, 0, _meshtastic_ModuleConfig_AudioConfig_Audio_Baud_MIN, 0, 0, 0, 0}
|
||||||
#define ModuleConfig_SerialConfig_init_zero {0, 0, 0, 0, _ModuleConfig_SerialConfig_Serial_Baud_MIN, 0, _ModuleConfig_SerialConfig_Serial_Mode_MIN}
|
#define meshtastic_ModuleConfig_SerialConfig_init_zero {0, 0, 0, 0, _meshtastic_ModuleConfig_SerialConfig_Serial_Baud_MIN, 0, _meshtastic_ModuleConfig_SerialConfig_Serial_Mode_MIN}
|
||||||
#define ModuleConfig_ExternalNotificationConfig_init_zero {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}
|
#define meshtastic_ModuleConfig_ExternalNotificationConfig_init_zero {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}
|
||||||
#define ModuleConfig_StoreForwardConfig_init_zero {0, 0, 0, 0, 0}
|
#define meshtastic_ModuleConfig_StoreForwardConfig_init_zero {0, 0, 0, 0, 0}
|
||||||
#define ModuleConfig_RangeTestConfig_init_zero {0, 0, 0}
|
#define meshtastic_ModuleConfig_RangeTestConfig_init_zero {0, 0, 0}
|
||||||
#define ModuleConfig_TelemetryConfig_init_zero {0, 0, 0, 0, 0}
|
#define meshtastic_ModuleConfig_TelemetryConfig_init_zero {0, 0, 0, 0, 0}
|
||||||
#define ModuleConfig_CannedMessageConfig_init_zero {0, 0, 0, 0, _ModuleConfig_CannedMessageConfig_InputEventChar_MIN, _ModuleConfig_CannedMessageConfig_InputEventChar_MIN, _ModuleConfig_CannedMessageConfig_InputEventChar_MIN, 0, 0, "", 0}
|
#define meshtastic_ModuleConfig_CannedMessageConfig_init_zero {0, 0, 0, 0, _meshtastic_ModuleConfig_CannedMessageConfig_InputEventChar_MIN, _meshtastic_ModuleConfig_CannedMessageConfig_InputEventChar_MIN, _meshtastic_ModuleConfig_CannedMessageConfig_InputEventChar_MIN, 0, 0, "", 0}
|
||||||
|
|
||||||
/* Field tags (for use in manual encoding/decoding) */
|
/* Field tags (for use in manual encoding/decoding) */
|
||||||
#define ModuleConfig_MQTTConfig_enabled_tag 1
|
#define meshtastic_ModuleConfig_MQTTConfig_enabled_tag 1
|
||||||
#define ModuleConfig_MQTTConfig_address_tag 2
|
#define meshtastic_ModuleConfig_MQTTConfig_address_tag 2
|
||||||
#define ModuleConfig_MQTTConfig_username_tag 3
|
#define meshtastic_ModuleConfig_MQTTConfig_username_tag 3
|
||||||
#define ModuleConfig_MQTTConfig_password_tag 4
|
#define meshtastic_ModuleConfig_MQTTConfig_password_tag 4
|
||||||
#define ModuleConfig_MQTTConfig_encryption_enabled_tag 5
|
#define meshtastic_ModuleConfig_MQTTConfig_encryption_enabled_tag 5
|
||||||
#define ModuleConfig_MQTTConfig_json_enabled_tag 6
|
#define meshtastic_ModuleConfig_MQTTConfig_json_enabled_tag 6
|
||||||
#define ModuleConfig_RemoteHardwareConfig_enabled_tag 1
|
#define meshtastic_ModuleConfig_RemoteHardwareConfig_enabled_tag 1
|
||||||
#define ModuleConfig_AudioConfig_codec2_enabled_tag 1
|
#define meshtastic_ModuleConfig_AudioConfig_codec2_enabled_tag 1
|
||||||
#define ModuleConfig_AudioConfig_ptt_pin_tag 2
|
#define meshtastic_ModuleConfig_AudioConfig_ptt_pin_tag 2
|
||||||
#define ModuleConfig_AudioConfig_bitrate_tag 3
|
#define meshtastic_ModuleConfig_AudioConfig_bitrate_tag 3
|
||||||
#define ModuleConfig_AudioConfig_i2s_ws_tag 4
|
#define meshtastic_ModuleConfig_AudioConfig_i2s_ws_tag 4
|
||||||
#define ModuleConfig_AudioConfig_i2s_sd_tag 5
|
#define meshtastic_ModuleConfig_AudioConfig_i2s_sd_tag 5
|
||||||
#define ModuleConfig_AudioConfig_i2s_din_tag 6
|
#define meshtastic_ModuleConfig_AudioConfig_i2s_din_tag 6
|
||||||
#define ModuleConfig_AudioConfig_i2s_sck_tag 7
|
#define meshtastic_ModuleConfig_AudioConfig_i2s_sck_tag 7
|
||||||
#define ModuleConfig_SerialConfig_enabled_tag 1
|
#define meshtastic_ModuleConfig_SerialConfig_enabled_tag 1
|
||||||
#define ModuleConfig_SerialConfig_echo_tag 2
|
#define meshtastic_ModuleConfig_SerialConfig_echo_tag 2
|
||||||
#define ModuleConfig_SerialConfig_rxd_tag 3
|
#define meshtastic_ModuleConfig_SerialConfig_rxd_tag 3
|
||||||
#define ModuleConfig_SerialConfig_txd_tag 4
|
#define meshtastic_ModuleConfig_SerialConfig_txd_tag 4
|
||||||
#define ModuleConfig_SerialConfig_baud_tag 5
|
#define meshtastic_ModuleConfig_SerialConfig_baud_tag 5
|
||||||
#define ModuleConfig_SerialConfig_timeout_tag 6
|
#define meshtastic_ModuleConfig_SerialConfig_timeout_tag 6
|
||||||
#define ModuleConfig_SerialConfig_mode_tag 7
|
#define meshtastic_ModuleConfig_SerialConfig_mode_tag 7
|
||||||
#define ModuleConfig_ExternalNotificationConfig_enabled_tag 1
|
#define meshtastic_ModuleConfig_ExternalNotificationConfig_enabled_tag 1
|
||||||
#define ModuleConfig_ExternalNotificationConfig_output_ms_tag 2
|
#define meshtastic_ModuleConfig_ExternalNotificationConfig_output_ms_tag 2
|
||||||
#define ModuleConfig_ExternalNotificationConfig_output_tag 3
|
#define meshtastic_ModuleConfig_ExternalNotificationConfig_output_tag 3
|
||||||
#define ModuleConfig_ExternalNotificationConfig_active_tag 4
|
#define meshtastic_ModuleConfig_ExternalNotificationConfig_active_tag 4
|
||||||
#define ModuleConfig_ExternalNotificationConfig_alert_message_tag 5
|
#define meshtastic_ModuleConfig_ExternalNotificationConfig_alert_message_tag 5
|
||||||
#define ModuleConfig_ExternalNotificationConfig_alert_bell_tag 6
|
#define meshtastic_ModuleConfig_ExternalNotificationConfig_alert_bell_tag 6
|
||||||
#define ModuleConfig_ExternalNotificationConfig_use_pwm_tag 7
|
#define meshtastic_ModuleConfig_ExternalNotificationConfig_use_pwm_tag 7
|
||||||
#define ModuleConfig_ExternalNotificationConfig_output_vibra_tag 8
|
#define meshtastic_ModuleConfig_ExternalNotificationConfig_output_vibra_tag 8
|
||||||
#define ModuleConfig_ExternalNotificationConfig_output_buzzer_tag 9
|
#define meshtastic_ModuleConfig_ExternalNotificationConfig_output_buzzer_tag 9
|
||||||
#define ModuleConfig_ExternalNotificationConfig_alert_message_vibra_tag 10
|
#define meshtastic_ModuleConfig_ExternalNotificationConfig_alert_message_vibra_tag 10
|
||||||
#define ModuleConfig_ExternalNotificationConfig_alert_message_buzzer_tag 11
|
#define meshtastic_ModuleConfig_ExternalNotificationConfig_alert_message_buzzer_tag 11
|
||||||
#define ModuleConfig_ExternalNotificationConfig_alert_bell_vibra_tag 12
|
#define meshtastic_ModuleConfig_ExternalNotificationConfig_alert_bell_vibra_tag 12
|
||||||
#define ModuleConfig_ExternalNotificationConfig_alert_bell_buzzer_tag 13
|
#define meshtastic_ModuleConfig_ExternalNotificationConfig_alert_bell_buzzer_tag 13
|
||||||
#define ModuleConfig_ExternalNotificationConfig_nag_timeout_tag 14
|
#define meshtastic_ModuleConfig_ExternalNotificationConfig_nag_timeout_tag 14
|
||||||
#define ModuleConfig_StoreForwardConfig_enabled_tag 1
|
#define meshtastic_ModuleConfig_StoreForwardConfig_enabled_tag 1
|
||||||
#define ModuleConfig_StoreForwardConfig_heartbeat_tag 2
|
#define meshtastic_ModuleConfig_StoreForwardConfig_heartbeat_tag 2
|
||||||
#define ModuleConfig_StoreForwardConfig_records_tag 3
|
#define meshtastic_ModuleConfig_StoreForwardConfig_records_tag 3
|
||||||
#define ModuleConfig_StoreForwardConfig_history_return_max_tag 4
|
#define meshtastic_ModuleConfig_StoreForwardConfig_history_return_max_tag 4
|
||||||
#define ModuleConfig_StoreForwardConfig_history_return_window_tag 5
|
#define meshtastic_ModuleConfig_StoreForwardConfig_history_return_window_tag 5
|
||||||
#define ModuleConfig_RangeTestConfig_enabled_tag 1
|
#define meshtastic_ModuleConfig_RangeTestConfig_enabled_tag 1
|
||||||
#define ModuleConfig_RangeTestConfig_sender_tag 2
|
#define meshtastic_ModuleConfig_RangeTestConfig_sender_tag 2
|
||||||
#define ModuleConfig_RangeTestConfig_save_tag 3
|
#define meshtastic_ModuleConfig_RangeTestConfig_save_tag 3
|
||||||
#define ModuleConfig_TelemetryConfig_device_update_interval_tag 1
|
#define meshtastic_ModuleConfig_TelemetryConfig_device_update_interval_tag 1
|
||||||
#define ModuleConfig_TelemetryConfig_environment_update_interval_tag 2
|
#define meshtastic_ModuleConfig_TelemetryConfig_environment_update_interval_tag 2
|
||||||
#define ModuleConfig_TelemetryConfig_environment_measurement_enabled_tag 3
|
#define meshtastic_ModuleConfig_TelemetryConfig_environment_measurement_enabled_tag 3
|
||||||
#define ModuleConfig_TelemetryConfig_environment_screen_enabled_tag 4
|
#define meshtastic_ModuleConfig_TelemetryConfig_environment_screen_enabled_tag 4
|
||||||
#define ModuleConfig_TelemetryConfig_environment_display_fahrenheit_tag 5
|
#define meshtastic_ModuleConfig_TelemetryConfig_environment_display_fahrenheit_tag 5
|
||||||
#define ModuleConfig_CannedMessageConfig_rotary1_enabled_tag 1
|
#define meshtastic_ModuleConfig_CannedMessageConfig_rotary1_enabled_tag 1
|
||||||
#define ModuleConfig_CannedMessageConfig_inputbroker_pin_a_tag 2
|
#define meshtastic_ModuleConfig_CannedMessageConfig_inputbroker_pin_a_tag 2
|
||||||
#define ModuleConfig_CannedMessageConfig_inputbroker_pin_b_tag 3
|
#define meshtastic_ModuleConfig_CannedMessageConfig_inputbroker_pin_b_tag 3
|
||||||
#define ModuleConfig_CannedMessageConfig_inputbroker_pin_press_tag 4
|
#define meshtastic_ModuleConfig_CannedMessageConfig_inputbroker_pin_press_tag 4
|
||||||
#define ModuleConfig_CannedMessageConfig_inputbroker_event_cw_tag 5
|
#define meshtastic_ModuleConfig_CannedMessageConfig_inputbroker_event_cw_tag 5
|
||||||
#define ModuleConfig_CannedMessageConfig_inputbroker_event_ccw_tag 6
|
#define meshtastic_ModuleConfig_CannedMessageConfig_inputbroker_event_ccw_tag 6
|
||||||
#define ModuleConfig_CannedMessageConfig_inputbroker_event_press_tag 7
|
#define meshtastic_ModuleConfig_CannedMessageConfig_inputbroker_event_press_tag 7
|
||||||
#define ModuleConfig_CannedMessageConfig_updown1_enabled_tag 8
|
#define meshtastic_ModuleConfig_CannedMessageConfig_updown1_enabled_tag 8
|
||||||
#define ModuleConfig_CannedMessageConfig_enabled_tag 9
|
#define meshtastic_ModuleConfig_CannedMessageConfig_enabled_tag 9
|
||||||
#define ModuleConfig_CannedMessageConfig_allow_input_source_tag 10
|
#define meshtastic_ModuleConfig_CannedMessageConfig_allow_input_source_tag 10
|
||||||
#define ModuleConfig_CannedMessageConfig_send_bell_tag 11
|
#define meshtastic_ModuleConfig_CannedMessageConfig_send_bell_tag 11
|
||||||
#define ModuleConfig_mqtt_tag 1
|
#define meshtastic_ModuleConfig_mqtt_tag 1
|
||||||
#define ModuleConfig_serial_tag 2
|
#define meshtastic_ModuleConfig_serial_tag 2
|
||||||
#define ModuleConfig_external_notification_tag 3
|
#define meshtastic_ModuleConfig_external_notification_tag 3
|
||||||
#define ModuleConfig_store_forward_tag 4
|
#define meshtastic_ModuleConfig_store_forward_tag 4
|
||||||
#define ModuleConfig_range_test_tag 5
|
#define meshtastic_ModuleConfig_range_test_tag 5
|
||||||
#define ModuleConfig_telemetry_tag 6
|
#define meshtastic_ModuleConfig_telemetry_tag 6
|
||||||
#define ModuleConfig_canned_message_tag 7
|
#define meshtastic_ModuleConfig_canned_message_tag 7
|
||||||
#define ModuleConfig_audio_tag 8
|
#define meshtastic_ModuleConfig_audio_tag 8
|
||||||
#define ModuleConfig_remote_hardware_tag 9
|
#define meshtastic_ModuleConfig_remote_hardware_tag 9
|
||||||
|
|
||||||
/* Struct field encoding specification for nanopb */
|
/* Struct field encoding specification for nanopb */
|
||||||
#define ModuleConfig_FIELDLIST(X, a) \
|
#define meshtastic_ModuleConfig_FIELDLIST(X, a) \
|
||||||
X(a, STATIC, ONEOF, MESSAGE, (payload_variant,mqtt,payload_variant.mqtt), 1) \
|
X(a, STATIC, ONEOF, MESSAGE, (payload_variant,mqtt,payload_variant.mqtt), 1) \
|
||||||
X(a, STATIC, ONEOF, MESSAGE, (payload_variant,serial,payload_variant.serial), 2) \
|
X(a, STATIC, ONEOF, MESSAGE, (payload_variant,serial,payload_variant.serial), 2) \
|
||||||
X(a, STATIC, ONEOF, MESSAGE, (payload_variant,external_notification,payload_variant.external_notification), 3) \
|
X(a, STATIC, ONEOF, MESSAGE, (payload_variant,external_notification,payload_variant.external_notification), 3) \
|
||||||
@@ -419,34 +419,34 @@ X(a, STATIC, ONEOF, MESSAGE, (payload_variant,telemetry,payload_variant.te
|
|||||||
X(a, STATIC, ONEOF, MESSAGE, (payload_variant,canned_message,payload_variant.canned_message), 7) \
|
X(a, STATIC, ONEOF, MESSAGE, (payload_variant,canned_message,payload_variant.canned_message), 7) \
|
||||||
X(a, STATIC, ONEOF, MESSAGE, (payload_variant,audio,payload_variant.audio), 8) \
|
X(a, STATIC, ONEOF, MESSAGE, (payload_variant,audio,payload_variant.audio), 8) \
|
||||||
X(a, STATIC, ONEOF, MESSAGE, (payload_variant,remote_hardware,payload_variant.remote_hardware), 9)
|
X(a, STATIC, ONEOF, MESSAGE, (payload_variant,remote_hardware,payload_variant.remote_hardware), 9)
|
||||||
#define ModuleConfig_CALLBACK NULL
|
#define meshtastic_ModuleConfig_CALLBACK NULL
|
||||||
#define ModuleConfig_DEFAULT NULL
|
#define meshtastic_ModuleConfig_DEFAULT NULL
|
||||||
#define ModuleConfig_payload_variant_mqtt_MSGTYPE ModuleConfig_MQTTConfig
|
#define meshtastic_ModuleConfig_payload_variant_mqtt_MSGTYPE meshtastic_ModuleConfig_MQTTConfig
|
||||||
#define ModuleConfig_payload_variant_serial_MSGTYPE ModuleConfig_SerialConfig
|
#define meshtastic_ModuleConfig_payload_variant_serial_MSGTYPE meshtastic_ModuleConfig_SerialConfig
|
||||||
#define ModuleConfig_payload_variant_external_notification_MSGTYPE ModuleConfig_ExternalNotificationConfig
|
#define meshtastic_ModuleConfig_payload_variant_external_notification_MSGTYPE meshtastic_ModuleConfig_ExternalNotificationConfig
|
||||||
#define ModuleConfig_payload_variant_store_forward_MSGTYPE ModuleConfig_StoreForwardConfig
|
#define meshtastic_ModuleConfig_payload_variant_store_forward_MSGTYPE meshtastic_ModuleConfig_StoreForwardConfig
|
||||||
#define ModuleConfig_payload_variant_range_test_MSGTYPE ModuleConfig_RangeTestConfig
|
#define meshtastic_ModuleConfig_payload_variant_range_test_MSGTYPE meshtastic_ModuleConfig_RangeTestConfig
|
||||||
#define ModuleConfig_payload_variant_telemetry_MSGTYPE ModuleConfig_TelemetryConfig
|
#define meshtastic_ModuleConfig_payload_variant_telemetry_MSGTYPE meshtastic_ModuleConfig_TelemetryConfig
|
||||||
#define ModuleConfig_payload_variant_canned_message_MSGTYPE ModuleConfig_CannedMessageConfig
|
#define meshtastic_ModuleConfig_payload_variant_canned_message_MSGTYPE meshtastic_ModuleConfig_CannedMessageConfig
|
||||||
#define ModuleConfig_payload_variant_audio_MSGTYPE ModuleConfig_AudioConfig
|
#define meshtastic_ModuleConfig_payload_variant_audio_MSGTYPE meshtastic_ModuleConfig_AudioConfig
|
||||||
#define ModuleConfig_payload_variant_remote_hardware_MSGTYPE ModuleConfig_RemoteHardwareConfig
|
#define meshtastic_ModuleConfig_payload_variant_remote_hardware_MSGTYPE meshtastic_ModuleConfig_RemoteHardwareConfig
|
||||||
|
|
||||||
#define ModuleConfig_MQTTConfig_FIELDLIST(X, a) \
|
#define meshtastic_ModuleConfig_MQTTConfig_FIELDLIST(X, a) \
|
||||||
X(a, STATIC, SINGULAR, BOOL, enabled, 1) \
|
X(a, STATIC, SINGULAR, BOOL, enabled, 1) \
|
||||||
X(a, STATIC, SINGULAR, STRING, address, 2) \
|
X(a, STATIC, SINGULAR, STRING, address, 2) \
|
||||||
X(a, STATIC, SINGULAR, STRING, username, 3) \
|
X(a, STATIC, SINGULAR, STRING, username, 3) \
|
||||||
X(a, STATIC, SINGULAR, STRING, password, 4) \
|
X(a, STATIC, SINGULAR, STRING, password, 4) \
|
||||||
X(a, STATIC, SINGULAR, BOOL, encryption_enabled, 5) \
|
X(a, STATIC, SINGULAR, BOOL, encryption_enabled, 5) \
|
||||||
X(a, STATIC, SINGULAR, BOOL, json_enabled, 6)
|
X(a, STATIC, SINGULAR, BOOL, json_enabled, 6)
|
||||||
#define ModuleConfig_MQTTConfig_CALLBACK NULL
|
#define meshtastic_ModuleConfig_MQTTConfig_CALLBACK NULL
|
||||||
#define ModuleConfig_MQTTConfig_DEFAULT NULL
|
#define meshtastic_ModuleConfig_MQTTConfig_DEFAULT NULL
|
||||||
|
|
||||||
#define ModuleConfig_RemoteHardwareConfig_FIELDLIST(X, a) \
|
#define meshtastic_ModuleConfig_RemoteHardwareConfig_FIELDLIST(X, a) \
|
||||||
X(a, STATIC, SINGULAR, BOOL, enabled, 1)
|
X(a, STATIC, SINGULAR, BOOL, enabled, 1)
|
||||||
#define ModuleConfig_RemoteHardwareConfig_CALLBACK NULL
|
#define meshtastic_ModuleConfig_RemoteHardwareConfig_CALLBACK NULL
|
||||||
#define ModuleConfig_RemoteHardwareConfig_DEFAULT NULL
|
#define meshtastic_ModuleConfig_RemoteHardwareConfig_DEFAULT NULL
|
||||||
|
|
||||||
#define ModuleConfig_AudioConfig_FIELDLIST(X, a) \
|
#define meshtastic_ModuleConfig_AudioConfig_FIELDLIST(X, a) \
|
||||||
X(a, STATIC, SINGULAR, BOOL, codec2_enabled, 1) \
|
X(a, STATIC, SINGULAR, BOOL, codec2_enabled, 1) \
|
||||||
X(a, STATIC, SINGULAR, UINT32, ptt_pin, 2) \
|
X(a, STATIC, SINGULAR, UINT32, ptt_pin, 2) \
|
||||||
X(a, STATIC, SINGULAR, UENUM, bitrate, 3) \
|
X(a, STATIC, SINGULAR, UENUM, bitrate, 3) \
|
||||||
@@ -454,10 +454,10 @@ X(a, STATIC, SINGULAR, UINT32, i2s_ws, 4) \
|
|||||||
X(a, STATIC, SINGULAR, UINT32, i2s_sd, 5) \
|
X(a, STATIC, SINGULAR, UINT32, i2s_sd, 5) \
|
||||||
X(a, STATIC, SINGULAR, UINT32, i2s_din, 6) \
|
X(a, STATIC, SINGULAR, UINT32, i2s_din, 6) \
|
||||||
X(a, STATIC, SINGULAR, UINT32, i2s_sck, 7)
|
X(a, STATIC, SINGULAR, UINT32, i2s_sck, 7)
|
||||||
#define ModuleConfig_AudioConfig_CALLBACK NULL
|
#define meshtastic_ModuleConfig_AudioConfig_CALLBACK NULL
|
||||||
#define ModuleConfig_AudioConfig_DEFAULT NULL
|
#define meshtastic_ModuleConfig_AudioConfig_DEFAULT NULL
|
||||||
|
|
||||||
#define ModuleConfig_SerialConfig_FIELDLIST(X, a) \
|
#define meshtastic_ModuleConfig_SerialConfig_FIELDLIST(X, a) \
|
||||||
X(a, STATIC, SINGULAR, BOOL, enabled, 1) \
|
X(a, STATIC, SINGULAR, BOOL, enabled, 1) \
|
||||||
X(a, STATIC, SINGULAR, BOOL, echo, 2) \
|
X(a, STATIC, SINGULAR, BOOL, echo, 2) \
|
||||||
X(a, STATIC, SINGULAR, UINT32, rxd, 3) \
|
X(a, STATIC, SINGULAR, UINT32, rxd, 3) \
|
||||||
@@ -465,10 +465,10 @@ X(a, STATIC, SINGULAR, UINT32, txd, 4) \
|
|||||||
X(a, STATIC, SINGULAR, UENUM, baud, 5) \
|
X(a, STATIC, SINGULAR, UENUM, baud, 5) \
|
||||||
X(a, STATIC, SINGULAR, UINT32, timeout, 6) \
|
X(a, STATIC, SINGULAR, UINT32, timeout, 6) \
|
||||||
X(a, STATIC, SINGULAR, UENUM, mode, 7)
|
X(a, STATIC, SINGULAR, UENUM, mode, 7)
|
||||||
#define ModuleConfig_SerialConfig_CALLBACK NULL
|
#define meshtastic_ModuleConfig_SerialConfig_CALLBACK NULL
|
||||||
#define ModuleConfig_SerialConfig_DEFAULT NULL
|
#define meshtastic_ModuleConfig_SerialConfig_DEFAULT NULL
|
||||||
|
|
||||||
#define ModuleConfig_ExternalNotificationConfig_FIELDLIST(X, a) \
|
#define meshtastic_ModuleConfig_ExternalNotificationConfig_FIELDLIST(X, a) \
|
||||||
X(a, STATIC, SINGULAR, BOOL, enabled, 1) \
|
X(a, STATIC, SINGULAR, BOOL, enabled, 1) \
|
||||||
X(a, STATIC, SINGULAR, UINT32, output_ms, 2) \
|
X(a, STATIC, SINGULAR, UINT32, output_ms, 2) \
|
||||||
X(a, STATIC, SINGULAR, UINT32, output, 3) \
|
X(a, STATIC, SINGULAR, UINT32, output, 3) \
|
||||||
@@ -483,35 +483,35 @@ X(a, STATIC, SINGULAR, BOOL, alert_message_buzzer, 11) \
|
|||||||
X(a, STATIC, SINGULAR, BOOL, alert_bell_vibra, 12) \
|
X(a, STATIC, SINGULAR, BOOL, alert_bell_vibra, 12) \
|
||||||
X(a, STATIC, SINGULAR, BOOL, alert_bell_buzzer, 13) \
|
X(a, STATIC, SINGULAR, BOOL, alert_bell_buzzer, 13) \
|
||||||
X(a, STATIC, SINGULAR, UINT32, nag_timeout, 14)
|
X(a, STATIC, SINGULAR, UINT32, nag_timeout, 14)
|
||||||
#define ModuleConfig_ExternalNotificationConfig_CALLBACK NULL
|
#define meshtastic_ModuleConfig_ExternalNotificationConfig_CALLBACK NULL
|
||||||
#define ModuleConfig_ExternalNotificationConfig_DEFAULT NULL
|
#define meshtastic_ModuleConfig_ExternalNotificationConfig_DEFAULT NULL
|
||||||
|
|
||||||
#define ModuleConfig_StoreForwardConfig_FIELDLIST(X, a) \
|
#define meshtastic_ModuleConfig_StoreForwardConfig_FIELDLIST(X, a) \
|
||||||
X(a, STATIC, SINGULAR, BOOL, enabled, 1) \
|
X(a, STATIC, SINGULAR, BOOL, enabled, 1) \
|
||||||
X(a, STATIC, SINGULAR, BOOL, heartbeat, 2) \
|
X(a, STATIC, SINGULAR, BOOL, heartbeat, 2) \
|
||||||
X(a, STATIC, SINGULAR, UINT32, records, 3) \
|
X(a, STATIC, SINGULAR, UINT32, records, 3) \
|
||||||
X(a, STATIC, SINGULAR, UINT32, history_return_max, 4) \
|
X(a, STATIC, SINGULAR, UINT32, history_return_max, 4) \
|
||||||
X(a, STATIC, SINGULAR, UINT32, history_return_window, 5)
|
X(a, STATIC, SINGULAR, UINT32, history_return_window, 5)
|
||||||
#define ModuleConfig_StoreForwardConfig_CALLBACK NULL
|
#define meshtastic_ModuleConfig_StoreForwardConfig_CALLBACK NULL
|
||||||
#define ModuleConfig_StoreForwardConfig_DEFAULT NULL
|
#define meshtastic_ModuleConfig_StoreForwardConfig_DEFAULT NULL
|
||||||
|
|
||||||
#define ModuleConfig_RangeTestConfig_FIELDLIST(X, a) \
|
#define meshtastic_ModuleConfig_RangeTestConfig_FIELDLIST(X, a) \
|
||||||
X(a, STATIC, SINGULAR, BOOL, enabled, 1) \
|
X(a, STATIC, SINGULAR, BOOL, enabled, 1) \
|
||||||
X(a, STATIC, SINGULAR, UINT32, sender, 2) \
|
X(a, STATIC, SINGULAR, UINT32, sender, 2) \
|
||||||
X(a, STATIC, SINGULAR, BOOL, save, 3)
|
X(a, STATIC, SINGULAR, BOOL, save, 3)
|
||||||
#define ModuleConfig_RangeTestConfig_CALLBACK NULL
|
#define meshtastic_ModuleConfig_RangeTestConfig_CALLBACK NULL
|
||||||
#define ModuleConfig_RangeTestConfig_DEFAULT NULL
|
#define meshtastic_ModuleConfig_RangeTestConfig_DEFAULT NULL
|
||||||
|
|
||||||
#define ModuleConfig_TelemetryConfig_FIELDLIST(X, a) \
|
#define meshtastic_ModuleConfig_TelemetryConfig_FIELDLIST(X, a) \
|
||||||
X(a, STATIC, SINGULAR, UINT32, device_update_interval, 1) \
|
X(a, STATIC, SINGULAR, UINT32, device_update_interval, 1) \
|
||||||
X(a, STATIC, SINGULAR, UINT32, environment_update_interval, 2) \
|
X(a, STATIC, SINGULAR, UINT32, environment_update_interval, 2) \
|
||||||
X(a, STATIC, SINGULAR, BOOL, environment_measurement_enabled, 3) \
|
X(a, STATIC, SINGULAR, BOOL, environment_measurement_enabled, 3) \
|
||||||
X(a, STATIC, SINGULAR, BOOL, environment_screen_enabled, 4) \
|
X(a, STATIC, SINGULAR, BOOL, environment_screen_enabled, 4) \
|
||||||
X(a, STATIC, SINGULAR, BOOL, environment_display_fahrenheit, 5)
|
X(a, STATIC, SINGULAR, BOOL, environment_display_fahrenheit, 5)
|
||||||
#define ModuleConfig_TelemetryConfig_CALLBACK NULL
|
#define meshtastic_ModuleConfig_TelemetryConfig_CALLBACK NULL
|
||||||
#define ModuleConfig_TelemetryConfig_DEFAULT NULL
|
#define meshtastic_ModuleConfig_TelemetryConfig_DEFAULT NULL
|
||||||
|
|
||||||
#define ModuleConfig_CannedMessageConfig_FIELDLIST(X, a) \
|
#define meshtastic_ModuleConfig_CannedMessageConfig_FIELDLIST(X, a) \
|
||||||
X(a, STATIC, SINGULAR, BOOL, rotary1_enabled, 1) \
|
X(a, STATIC, SINGULAR, BOOL, rotary1_enabled, 1) \
|
||||||
X(a, STATIC, SINGULAR, UINT32, inputbroker_pin_a, 2) \
|
X(a, STATIC, SINGULAR, UINT32, inputbroker_pin_a, 2) \
|
||||||
X(a, STATIC, SINGULAR, UINT32, inputbroker_pin_b, 3) \
|
X(a, STATIC, SINGULAR, UINT32, inputbroker_pin_b, 3) \
|
||||||
@@ -523,43 +523,43 @@ X(a, STATIC, SINGULAR, BOOL, updown1_enabled, 8) \
|
|||||||
X(a, STATIC, SINGULAR, BOOL, enabled, 9) \
|
X(a, STATIC, SINGULAR, BOOL, enabled, 9) \
|
||||||
X(a, STATIC, SINGULAR, STRING, allow_input_source, 10) \
|
X(a, STATIC, SINGULAR, STRING, allow_input_source, 10) \
|
||||||
X(a, STATIC, SINGULAR, BOOL, send_bell, 11)
|
X(a, STATIC, SINGULAR, BOOL, send_bell, 11)
|
||||||
#define ModuleConfig_CannedMessageConfig_CALLBACK NULL
|
#define meshtastic_ModuleConfig_CannedMessageConfig_CALLBACK NULL
|
||||||
#define ModuleConfig_CannedMessageConfig_DEFAULT NULL
|
#define meshtastic_ModuleConfig_CannedMessageConfig_DEFAULT NULL
|
||||||
|
|
||||||
extern const pb_msgdesc_t ModuleConfig_msg;
|
extern const pb_msgdesc_t meshtastic_ModuleConfig_msg;
|
||||||
extern const pb_msgdesc_t ModuleConfig_MQTTConfig_msg;
|
extern const pb_msgdesc_t meshtastic_ModuleConfig_MQTTConfig_msg;
|
||||||
extern const pb_msgdesc_t ModuleConfig_RemoteHardwareConfig_msg;
|
extern const pb_msgdesc_t meshtastic_ModuleConfig_RemoteHardwareConfig_msg;
|
||||||
extern const pb_msgdesc_t ModuleConfig_AudioConfig_msg;
|
extern const pb_msgdesc_t meshtastic_ModuleConfig_AudioConfig_msg;
|
||||||
extern const pb_msgdesc_t ModuleConfig_SerialConfig_msg;
|
extern const pb_msgdesc_t meshtastic_ModuleConfig_SerialConfig_msg;
|
||||||
extern const pb_msgdesc_t ModuleConfig_ExternalNotificationConfig_msg;
|
extern const pb_msgdesc_t meshtastic_ModuleConfig_ExternalNotificationConfig_msg;
|
||||||
extern const pb_msgdesc_t ModuleConfig_StoreForwardConfig_msg;
|
extern const pb_msgdesc_t meshtastic_ModuleConfig_StoreForwardConfig_msg;
|
||||||
extern const pb_msgdesc_t ModuleConfig_RangeTestConfig_msg;
|
extern const pb_msgdesc_t meshtastic_ModuleConfig_RangeTestConfig_msg;
|
||||||
extern const pb_msgdesc_t ModuleConfig_TelemetryConfig_msg;
|
extern const pb_msgdesc_t meshtastic_ModuleConfig_TelemetryConfig_msg;
|
||||||
extern const pb_msgdesc_t ModuleConfig_CannedMessageConfig_msg;
|
extern const pb_msgdesc_t meshtastic_ModuleConfig_CannedMessageConfig_msg;
|
||||||
|
|
||||||
/* Defines for backwards compatibility with code written before nanopb-0.4.0 */
|
/* Defines for backwards compatibility with code written before nanopb-0.4.0 */
|
||||||
#define ModuleConfig_fields &ModuleConfig_msg
|
#define meshtastic_ModuleConfig_fields &meshtastic_ModuleConfig_msg
|
||||||
#define ModuleConfig_MQTTConfig_fields &ModuleConfig_MQTTConfig_msg
|
#define meshtastic_ModuleConfig_MQTTConfig_fields &meshtastic_ModuleConfig_MQTTConfig_msg
|
||||||
#define ModuleConfig_RemoteHardwareConfig_fields &ModuleConfig_RemoteHardwareConfig_msg
|
#define meshtastic_ModuleConfig_RemoteHardwareConfig_fields &meshtastic_ModuleConfig_RemoteHardwareConfig_msg
|
||||||
#define ModuleConfig_AudioConfig_fields &ModuleConfig_AudioConfig_msg
|
#define meshtastic_ModuleConfig_AudioConfig_fields &meshtastic_ModuleConfig_AudioConfig_msg
|
||||||
#define ModuleConfig_SerialConfig_fields &ModuleConfig_SerialConfig_msg
|
#define meshtastic_ModuleConfig_SerialConfig_fields &meshtastic_ModuleConfig_SerialConfig_msg
|
||||||
#define ModuleConfig_ExternalNotificationConfig_fields &ModuleConfig_ExternalNotificationConfig_msg
|
#define meshtastic_ModuleConfig_ExternalNotificationConfig_fields &meshtastic_ModuleConfig_ExternalNotificationConfig_msg
|
||||||
#define ModuleConfig_StoreForwardConfig_fields &ModuleConfig_StoreForwardConfig_msg
|
#define meshtastic_ModuleConfig_StoreForwardConfig_fields &meshtastic_ModuleConfig_StoreForwardConfig_msg
|
||||||
#define ModuleConfig_RangeTestConfig_fields &ModuleConfig_RangeTestConfig_msg
|
#define meshtastic_ModuleConfig_RangeTestConfig_fields &meshtastic_ModuleConfig_RangeTestConfig_msg
|
||||||
#define ModuleConfig_TelemetryConfig_fields &ModuleConfig_TelemetryConfig_msg
|
#define meshtastic_ModuleConfig_TelemetryConfig_fields &meshtastic_ModuleConfig_TelemetryConfig_msg
|
||||||
#define ModuleConfig_CannedMessageConfig_fields &ModuleConfig_CannedMessageConfig_msg
|
#define meshtastic_ModuleConfig_CannedMessageConfig_fields &meshtastic_ModuleConfig_CannedMessageConfig_msg
|
||||||
|
|
||||||
/* Maximum encoded size of messages (where known) */
|
/* Maximum encoded size of messages (where known) */
|
||||||
#define ModuleConfig_AudioConfig_size 19
|
#define meshtastic_ModuleConfig_AudioConfig_size 19
|
||||||
#define ModuleConfig_CannedMessageConfig_size 49
|
#define meshtastic_ModuleConfig_CannedMessageConfig_size 49
|
||||||
#define ModuleConfig_ExternalNotificationConfig_size 40
|
#define meshtastic_ModuleConfig_ExternalNotificationConfig_size 40
|
||||||
#define ModuleConfig_MQTTConfig_size 201
|
#define meshtastic_ModuleConfig_MQTTConfig_size 201
|
||||||
#define ModuleConfig_RangeTestConfig_size 10
|
#define meshtastic_ModuleConfig_RangeTestConfig_size 10
|
||||||
#define ModuleConfig_RemoteHardwareConfig_size 2
|
#define meshtastic_ModuleConfig_RemoteHardwareConfig_size 2
|
||||||
#define ModuleConfig_SerialConfig_size 26
|
#define meshtastic_ModuleConfig_SerialConfig_size 26
|
||||||
#define ModuleConfig_StoreForwardConfig_size 22
|
#define meshtastic_ModuleConfig_StoreForwardConfig_size 22
|
||||||
#define ModuleConfig_TelemetryConfig_size 18
|
#define meshtastic_ModuleConfig_TelemetryConfig_size 18
|
||||||
#define ModuleConfig_size 204
|
#define meshtastic_ModuleConfig_size 204
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
} /* extern "C" */
|
} /* extern "C" */
|
||||||
|
|||||||
@@ -1,12 +1,12 @@
|
|||||||
/* Automatically generated nanopb constant definitions */
|
/* Automatically generated nanopb constant definitions */
|
||||||
/* Generated by nanopb-0.4.7 */
|
/* Generated by nanopb-0.4.7 */
|
||||||
|
|
||||||
#include "./mqtt.pb.h"
|
#include "meshtastic/mqtt.pb.h"
|
||||||
#if PB_PROTO_HEADER_VERSION != 40
|
#if PB_PROTO_HEADER_VERSION != 40
|
||||||
#error Regenerate this file with the current version of nanopb generator.
|
#error Regenerate this file with the current version of nanopb generator.
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
PB_BIND(ServiceEnvelope, ServiceEnvelope, AUTO)
|
PB_BIND(meshtastic_ServiceEnvelope, meshtastic_ServiceEnvelope, AUTO)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
#ifndef PB_MESHTASTIC_MESHTASTIC_MQTT_PB_H_INCLUDED
|
#ifndef PB_MESHTASTIC_MESHTASTIC_MQTT_PB_H_INCLUDED
|
||||||
#define PB_MESHTASTIC_MESHTASTIC_MQTT_PB_H_INCLUDED
|
#define PB_MESHTASTIC_MESHTASTIC_MQTT_PB_H_INCLUDED
|
||||||
#include <pb.h>
|
#include <pb.h>
|
||||||
#include "./mesh.pb.h"
|
#include "meshtastic/mesh.pb.h"
|
||||||
|
|
||||||
#if PB_PROTO_HEADER_VERSION != 40
|
#if PB_PROTO_HEADER_VERSION != 40
|
||||||
#error Regenerate this file with the current version of nanopb generator.
|
#error Regenerate this file with the current version of nanopb generator.
|
||||||
@@ -12,16 +12,16 @@
|
|||||||
|
|
||||||
/* Struct definitions */
|
/* Struct definitions */
|
||||||
/* This message wraps a MeshPacket with extra metadata about the sender and how it arrived. */
|
/* This message wraps a MeshPacket with extra metadata about the sender and how it arrived. */
|
||||||
typedef struct _ServiceEnvelope {
|
typedef struct _meshtastic_ServiceEnvelope {
|
||||||
/* The (probably encrypted) packet */
|
/* The (probably encrypted) packet */
|
||||||
struct _MeshPacket *packet;
|
struct _meshtastic_MeshPacket *packet;
|
||||||
/* The global channel ID it was sent on */
|
/* The global channel ID it was sent on */
|
||||||
char *channel_id;
|
char *channel_id;
|
||||||
/* The sending gateway node ID. Can we use this to authenticate/prevent fake
|
/* The sending gateway node ID. Can we use this to authenticate/prevent fake
|
||||||
nodeid impersonation for senders? - i.e. use gateway/mesh id (which is authenticated) + local node id as
|
nodeid impersonation for senders? - i.e. use gateway/mesh id (which is authenticated) + local node id as
|
||||||
the globally trusted nodenum */
|
the globally trusted nodenum */
|
||||||
char *gateway_id;
|
char *gateway_id;
|
||||||
} ServiceEnvelope;
|
} meshtastic_ServiceEnvelope;
|
||||||
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
@@ -29,30 +29,30 @@ extern "C" {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Initializer values for message structs */
|
/* Initializer values for message structs */
|
||||||
#define ServiceEnvelope_init_default {NULL, NULL, NULL}
|
#define meshtastic_ServiceEnvelope_init_default {NULL, NULL, NULL}
|
||||||
#define ServiceEnvelope_init_zero {NULL, NULL, NULL}
|
#define meshtastic_ServiceEnvelope_init_zero {NULL, NULL, NULL}
|
||||||
|
|
||||||
/* Field tags (for use in manual encoding/decoding) */
|
/* Field tags (for use in manual encoding/decoding) */
|
||||||
#define ServiceEnvelope_packet_tag 1
|
#define meshtastic_ServiceEnvelope_packet_tag 1
|
||||||
#define ServiceEnvelope_channel_id_tag 2
|
#define meshtastic_ServiceEnvelope_channel_id_tag 2
|
||||||
#define ServiceEnvelope_gateway_id_tag 3
|
#define meshtastic_ServiceEnvelope_gateway_id_tag 3
|
||||||
|
|
||||||
/* Struct field encoding specification for nanopb */
|
/* Struct field encoding specification for nanopb */
|
||||||
#define ServiceEnvelope_FIELDLIST(X, a) \
|
#define meshtastic_ServiceEnvelope_FIELDLIST(X, a) \
|
||||||
X(a, POINTER, OPTIONAL, MESSAGE, packet, 1) \
|
X(a, POINTER, OPTIONAL, MESSAGE, packet, 1) \
|
||||||
X(a, POINTER, SINGULAR, STRING, channel_id, 2) \
|
X(a, POINTER, SINGULAR, STRING, channel_id, 2) \
|
||||||
X(a, POINTER, SINGULAR, STRING, gateway_id, 3)
|
X(a, POINTER, SINGULAR, STRING, gateway_id, 3)
|
||||||
#define ServiceEnvelope_CALLBACK NULL
|
#define meshtastic_ServiceEnvelope_CALLBACK NULL
|
||||||
#define ServiceEnvelope_DEFAULT NULL
|
#define meshtastic_ServiceEnvelope_DEFAULT NULL
|
||||||
#define ServiceEnvelope_packet_MSGTYPE MeshPacket
|
#define meshtastic_ServiceEnvelope_packet_MSGTYPE meshtastic_MeshPacket
|
||||||
|
|
||||||
extern const pb_msgdesc_t ServiceEnvelope_msg;
|
extern const pb_msgdesc_t meshtastic_ServiceEnvelope_msg;
|
||||||
|
|
||||||
/* Defines for backwards compatibility with code written before nanopb-0.4.0 */
|
/* Defines for backwards compatibility with code written before nanopb-0.4.0 */
|
||||||
#define ServiceEnvelope_fields &ServiceEnvelope_msg
|
#define meshtastic_ServiceEnvelope_fields &meshtastic_ServiceEnvelope_msg
|
||||||
|
|
||||||
/* Maximum encoded size of messages (where known) */
|
/* Maximum encoded size of messages (where known) */
|
||||||
/* ServiceEnvelope_size depends on runtime parameters */
|
/* meshtastic_ServiceEnvelope_size depends on runtime parameters */
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
} /* extern "C" */
|
} /* extern "C" */
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
/* Automatically generated nanopb constant definitions */
|
/* Automatically generated nanopb constant definitions */
|
||||||
/* Generated by nanopb-0.4.7 */
|
/* Generated by nanopb-0.4.7 */
|
||||||
|
|
||||||
#include "./portnums.pb.h"
|
#include "meshtastic/portnums.pb.h"
|
||||||
#if PB_PROTO_HEADER_VERSION != 40
|
#if PB_PROTO_HEADER_VERSION != 40
|
||||||
#error Regenerate this file with the current version of nanopb generator.
|
#error Regenerate this file with the current version of nanopb generator.
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -22,87 +22,87 @@
|
|||||||
Note: This was formerly a Type enum named 'typ' with the same id #
|
Note: This was formerly a Type enum named 'typ' with the same id #
|
||||||
We have change to this 'portnum' based scheme for specifying app handlers for particular payloads.
|
We have change to this 'portnum' based scheme for specifying app handlers for particular payloads.
|
||||||
This change is backwards compatible by treating the legacy OPAQUE/CLEAR_TEXT values identically. */
|
This change is backwards compatible by treating the legacy OPAQUE/CLEAR_TEXT values identically. */
|
||||||
typedef enum _PortNum {
|
typedef enum _meshtastic_PortNum {
|
||||||
/* Deprecated: do not use in new code (formerly called OPAQUE)
|
/* Deprecated: do not use in new code (formerly called OPAQUE)
|
||||||
A message sent from a device outside of the mesh, in a form the mesh does not understand
|
A message sent from a device outside of the mesh, in a form the mesh does not understand
|
||||||
NOTE: This must be 0, because it is documented in IMeshService.aidl to be so */
|
NOTE: This must be 0, because it is documented in IMeshService.aidl to be so */
|
||||||
PortNum_UNKNOWN_APP = 0,
|
meshtastic_PortNum_UNKNOWN_APP = 0,
|
||||||
/* A simple UTF-8 text message, which even the little micros in the mesh
|
/* A simple UTF-8 text message, which even the little micros in the mesh
|
||||||
can understand and show on their screen eventually in some circumstances
|
can understand and show on their screen eventually in some circumstances
|
||||||
even signal might send messages in this form (see below) */
|
even signal might send messages in this form (see below) */
|
||||||
PortNum_TEXT_MESSAGE_APP = 1,
|
meshtastic_PortNum_TEXT_MESSAGE_APP = 1,
|
||||||
/* Reserved for built-in GPIO/example app.
|
/* Reserved for built-in GPIO/example app.
|
||||||
See remote_hardware.proto/HardwareMessage for details on the message sent/received to this port number */
|
See remote_hardware.proto/HardwareMessage for details on the message sent/received to this port number */
|
||||||
PortNum_REMOTE_HARDWARE_APP = 2,
|
meshtastic_PortNum_REMOTE_HARDWARE_APP = 2,
|
||||||
/* The built-in position messaging app.
|
/* The built-in position messaging app.
|
||||||
Payload is a [Position](/docs/developers/protobufs/api#position) message */
|
Payload is a [Position](/docs/developers/protobufs/api#position) message */
|
||||||
PortNum_POSITION_APP = 3,
|
meshtastic_PortNum_POSITION_APP = 3,
|
||||||
/* The built-in user info app.
|
/* The built-in user info app.
|
||||||
Payload is a [User](/docs/developers/protobufs/api#user) message */
|
Payload is a [User](/docs/developers/protobufs/api#user) message */
|
||||||
PortNum_NODEINFO_APP = 4,
|
meshtastic_PortNum_NODEINFO_APP = 4,
|
||||||
/* Protocol control packets for mesh protocol use.
|
/* Protocol control packets for mesh protocol use.
|
||||||
Payload is a [Routing](/docs/developers/protobufs/api#routing) message */
|
Payload is a [Routing](/docs/developers/protobufs/api#routing) message */
|
||||||
PortNum_ROUTING_APP = 5,
|
meshtastic_PortNum_ROUTING_APP = 5,
|
||||||
/* Admin control packets.
|
/* Admin control packets.
|
||||||
Payload is a [AdminMessage](/docs/developers/protobufs/api#adminmessage) message */
|
Payload is a [AdminMessage](/docs/developers/protobufs/api#adminmessage) message */
|
||||||
PortNum_ADMIN_APP = 6,
|
meshtastic_PortNum_ADMIN_APP = 6,
|
||||||
/* Compressed TEXT_MESSAGE payloads. */
|
/* Compressed TEXT_MESSAGE payloads. */
|
||||||
PortNum_TEXT_MESSAGE_COMPRESSED_APP = 7,
|
meshtastic_PortNum_TEXT_MESSAGE_COMPRESSED_APP = 7,
|
||||||
/* Waypoint payloads.
|
/* Waypoint payloads.
|
||||||
Payload is a [Waypoint](/docs/developers/protobufs/api#waypoint) message */
|
Payload is a [Waypoint](/docs/developers/protobufs/api#waypoint) message */
|
||||||
PortNum_WAYPOINT_APP = 8,
|
meshtastic_PortNum_WAYPOINT_APP = 8,
|
||||||
/* Audio Payloads.
|
/* Audio Payloads.
|
||||||
Encapsulated codec2 packets. On 2.4 GHZ Bandwidths only for now */
|
Encapsulated codec2 packets. On 2.4 GHZ Bandwidths only for now */
|
||||||
PortNum_AUDIO_APP = 9,
|
meshtastic_PortNum_AUDIO_APP = 9,
|
||||||
/* Provides a 'ping' service that replies to any packet it receives.
|
/* Provides a 'ping' service that replies to any packet it receives.
|
||||||
Also serves as a small example module. */
|
Also serves as a small example module. */
|
||||||
PortNum_REPLY_APP = 32,
|
meshtastic_PortNum_REPLY_APP = 32,
|
||||||
/* Used for the python IP tunnel feature */
|
/* Used for the python IP tunnel feature */
|
||||||
PortNum_IP_TUNNEL_APP = 33,
|
meshtastic_PortNum_IP_TUNNEL_APP = 33,
|
||||||
/* Provides a hardware serial interface to send and receive from the Meshtastic network.
|
/* Provides a hardware serial interface to send and receive from the Meshtastic network.
|
||||||
Connect to the RX/TX pins of a device with 38400 8N1. Packets received from the Meshtastic
|
Connect to the RX/TX pins of a device with 38400 8N1. Packets received from the Meshtastic
|
||||||
network is forwarded to the RX pin while sending a packet to TX will go out to the Mesh network.
|
network is forwarded to the RX pin while sending a packet to TX will go out to the Mesh network.
|
||||||
Maximum packet size of 240 bytes.
|
Maximum packet size of 240 bytes.
|
||||||
Module is disabled by default can be turned on by setting SERIAL_MODULE_ENABLED = 1 in SerialPlugh.cpp. */
|
Module is disabled by default can be turned on by setting SERIAL_MODULE_ENABLED = 1 in SerialPlugh.cpp. */
|
||||||
PortNum_SERIAL_APP = 64,
|
meshtastic_PortNum_SERIAL_APP = 64,
|
||||||
/* STORE_FORWARD_APP (Work in Progress)
|
/* STORE_FORWARD_APP (Work in Progress)
|
||||||
Maintained by Jm Casler (MC Hamster) : jm@casler.org */
|
Maintained by Jm Casler (MC Hamster) : jm@casler.org */
|
||||||
PortNum_STORE_FORWARD_APP = 65,
|
meshtastic_PortNum_STORE_FORWARD_APP = 65,
|
||||||
/* Optional port for messages for the range test module. */
|
/* Optional port for messages for the range test module. */
|
||||||
PortNum_RANGE_TEST_APP = 66,
|
meshtastic_PortNum_RANGE_TEST_APP = 66,
|
||||||
/* Provides a format to send and receive telemetry data from the Meshtastic network.
|
/* Provides a format to send and receive telemetry data from the Meshtastic network.
|
||||||
Maintained by Charles Crossan (crossan007) : crossan007@gmail.com */
|
Maintained by Charles Crossan (crossan007) : crossan007@gmail.com */
|
||||||
PortNum_TELEMETRY_APP = 67,
|
meshtastic_PortNum_TELEMETRY_APP = 67,
|
||||||
/* Experimental tools for estimating node position without a GPS
|
/* Experimental tools for estimating node position without a GPS
|
||||||
Maintained by Github user a-f-G-U-C (a Meshtastic contributor)
|
Maintained by Github user a-f-G-U-C (a Meshtastic contributor)
|
||||||
Project files at https://github.com/a-f-G-U-C/Meshtastic-ZPS */
|
Project files at https://github.com/a-f-G-U-C/Meshtastic-ZPS */
|
||||||
PortNum_ZPS_APP = 68,
|
meshtastic_PortNum_ZPS_APP = 68,
|
||||||
/* Used to let multiple instances of Linux native applications communicate
|
/* Used to let multiple instances of Linux native applications communicate
|
||||||
as if they did using their LoRa chip.
|
as if they did using their LoRa chip.
|
||||||
Maintained by GitHub user GUVWAF.
|
Maintained by GitHub user GUVWAF.
|
||||||
Project files at https://github.com/GUVWAF/Meshtasticator */
|
Project files at https://github.com/GUVWAF/Meshtasticator */
|
||||||
PortNum_SIMULATOR_APP = 69,
|
meshtastic_PortNum_SIMULATOR_APP = 69,
|
||||||
/* Provides a traceroute functionality to show the route a packet towards
|
/* Provides a traceroute functionality to show the route a packet towards
|
||||||
a certain destination would take on the mesh. */
|
a certain destination would take on the mesh. */
|
||||||
PortNum_TRACEROUTE_APP = 70,
|
meshtastic_PortNum_TRACEROUTE_APP = 70,
|
||||||
/* Private applications should use portnums >= 256.
|
/* Private applications should use portnums >= 256.
|
||||||
To simplify initial development and testing you can use "PRIVATE_APP"
|
To simplify initial development and testing you can use "PRIVATE_APP"
|
||||||
in your code without needing to rebuild protobuf files (via [regen-protos.sh](https://github.com/meshtastic/firmware/blob/master/bin/regen-protos.sh)) */
|
in your code without needing to rebuild protobuf files (via [regen-protos.sh](https://github.com/meshtastic/firmware/blob/master/bin/regen-protos.sh)) */
|
||||||
PortNum_PRIVATE_APP = 256,
|
meshtastic_PortNum_PRIVATE_APP = 256,
|
||||||
/* ATAK Forwarder Module https://github.com/paulmandal/atak-forwarder */
|
/* ATAK Forwarder Module https://github.com/paulmandal/atak-forwarder */
|
||||||
PortNum_ATAK_FORWARDER = 257,
|
meshtastic_PortNum_ATAK_FORWARDER = 257,
|
||||||
/* Currently we limit port nums to no higher than this value */
|
/* Currently we limit port nums to no higher than this value */
|
||||||
PortNum_MAX = 511
|
meshtastic_PortNum_MAX = 511
|
||||||
} PortNum;
|
} meshtastic_PortNum;
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Helper constants for enums */
|
/* Helper constants for enums */
|
||||||
#define _PortNum_MIN PortNum_UNKNOWN_APP
|
#define _meshtastic_PortNum_MIN meshtastic_PortNum_UNKNOWN_APP
|
||||||
#define _PortNum_MAX PortNum_MAX
|
#define _meshtastic_PortNum_MAX meshtastic_PortNum_MAX
|
||||||
#define _PortNum_ARRAYSIZE ((PortNum)(PortNum_MAX+1))
|
#define _meshtastic_PortNum_ARRAYSIZE ((meshtastic_PortNum)(meshtastic_PortNum_MAX+1))
|
||||||
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
|
|||||||
@@ -1,12 +1,12 @@
|
|||||||
/* Automatically generated nanopb constant definitions */
|
/* Automatically generated nanopb constant definitions */
|
||||||
/* Generated by nanopb-0.4.7 */
|
/* Generated by nanopb-0.4.7 */
|
||||||
|
|
||||||
#include "./remote_hardware.pb.h"
|
#include "meshtastic/remote_hardware.pb.h"
|
||||||
#if PB_PROTO_HEADER_VERSION != 40
|
#if PB_PROTO_HEADER_VERSION != 40
|
||||||
#error Regenerate this file with the current version of nanopb generator.
|
#error Regenerate this file with the current version of nanopb generator.
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
PB_BIND(HardwareMessage, HardwareMessage, AUTO)
|
PB_BIND(meshtastic_HardwareMessage, meshtastic_HardwareMessage, AUTO)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -11,22 +11,22 @@
|
|||||||
|
|
||||||
/* Enum definitions */
|
/* Enum definitions */
|
||||||
/* TODO: REPLACE */
|
/* TODO: REPLACE */
|
||||||
typedef enum _HardwareMessage_Type {
|
typedef enum _meshtastic_HardwareMessage_Type {
|
||||||
/* Unset/unused */
|
/* Unset/unused */
|
||||||
HardwareMessage_Type_UNSET = 0,
|
meshtastic_HardwareMessage_Type_UNSET = 0,
|
||||||
/* Set gpio gpios based on gpio_mask/gpio_value */
|
/* Set gpio gpios based on gpio_mask/gpio_value */
|
||||||
HardwareMessage_Type_WRITE_GPIOS = 1,
|
meshtastic_HardwareMessage_Type_WRITE_GPIOS = 1,
|
||||||
/* We are now interested in watching the gpio_mask gpios.
|
/* We are now interested in watching the gpio_mask gpios.
|
||||||
If the selected gpios change, please broadcast GPIOS_CHANGED.
|
If the selected gpios change, please broadcast GPIOS_CHANGED.
|
||||||
Will implicitly change the gpios requested to be INPUT gpios. */
|
Will implicitly change the gpios requested to be INPUT gpios. */
|
||||||
HardwareMessage_Type_WATCH_GPIOS = 2,
|
meshtastic_HardwareMessage_Type_WATCH_GPIOS = 2,
|
||||||
/* The gpios listed in gpio_mask have changed, the new values are listed in gpio_value */
|
/* The gpios listed in gpio_mask have changed, the new values are listed in gpio_value */
|
||||||
HardwareMessage_Type_GPIOS_CHANGED = 3,
|
meshtastic_HardwareMessage_Type_GPIOS_CHANGED = 3,
|
||||||
/* Read the gpios specified in gpio_mask, send back a READ_GPIOS_REPLY reply with gpio_value populated */
|
/* Read the gpios specified in gpio_mask, send back a READ_GPIOS_REPLY reply with gpio_value populated */
|
||||||
HardwareMessage_Type_READ_GPIOS = 4,
|
meshtastic_HardwareMessage_Type_READ_GPIOS = 4,
|
||||||
/* A reply to READ_GPIOS. gpio_mask and gpio_value will be populated */
|
/* A reply to READ_GPIOS. gpio_mask and gpio_value will be populated */
|
||||||
HardwareMessage_Type_READ_GPIOS_REPLY = 5
|
meshtastic_HardwareMessage_Type_READ_GPIOS_REPLY = 5
|
||||||
} HardwareMessage_Type;
|
} meshtastic_HardwareMessage_Type;
|
||||||
|
|
||||||
/* Struct definitions */
|
/* Struct definitions */
|
||||||
/* An example app to show off the module system. This message is used for
|
/* An example app to show off the module system. This message is used for
|
||||||
@@ -38,15 +38,15 @@ typedef enum _HardwareMessage_Type {
|
|||||||
because no security yet (beyond the channel mechanism).
|
because no security yet (beyond the channel mechanism).
|
||||||
It should be off by default and then protected based on some TBD mechanism
|
It should be off by default and then protected based on some TBD mechanism
|
||||||
(a special channel once multichannel support is included?) */
|
(a special channel once multichannel support is included?) */
|
||||||
typedef struct _HardwareMessage {
|
typedef struct _meshtastic_HardwareMessage {
|
||||||
/* What type of HardwareMessage is this? */
|
/* What type of HardwareMessage is this? */
|
||||||
HardwareMessage_Type type;
|
meshtastic_HardwareMessage_Type type;
|
||||||
/* What gpios are we changing. Not used for all MessageTypes, see MessageType for details */
|
/* What gpios are we changing. Not used for all MessageTypes, see MessageType for details */
|
||||||
uint64_t gpio_mask;
|
uint64_t gpio_mask;
|
||||||
/* For gpios that were listed in gpio_mask as valid, what are the signal levels for those gpios.
|
/* For gpios that were listed in gpio_mask as valid, what are the signal levels for those gpios.
|
||||||
Not used for all MessageTypes, see MessageType for details */
|
Not used for all MessageTypes, see MessageType for details */
|
||||||
uint64_t gpio_value;
|
uint64_t gpio_value;
|
||||||
} HardwareMessage;
|
} meshtastic_HardwareMessage;
|
||||||
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
@@ -54,37 +54,37 @@ extern "C" {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Helper constants for enums */
|
/* Helper constants for enums */
|
||||||
#define _HardwareMessage_Type_MIN HardwareMessage_Type_UNSET
|
#define _meshtastic_HardwareMessage_Type_MIN meshtastic_HardwareMessage_Type_UNSET
|
||||||
#define _HardwareMessage_Type_MAX HardwareMessage_Type_READ_GPIOS_REPLY
|
#define _meshtastic_HardwareMessage_Type_MAX meshtastic_HardwareMessage_Type_READ_GPIOS_REPLY
|
||||||
#define _HardwareMessage_Type_ARRAYSIZE ((HardwareMessage_Type)(HardwareMessage_Type_READ_GPIOS_REPLY+1))
|
#define _meshtastic_HardwareMessage_Type_ARRAYSIZE ((meshtastic_HardwareMessage_Type)(meshtastic_HardwareMessage_Type_READ_GPIOS_REPLY+1))
|
||||||
|
|
||||||
#define HardwareMessage_type_ENUMTYPE HardwareMessage_Type
|
#define meshtastic_HardwareMessage_type_ENUMTYPE meshtastic_HardwareMessage_Type
|
||||||
|
|
||||||
|
|
||||||
/* Initializer values for message structs */
|
/* Initializer values for message structs */
|
||||||
#define HardwareMessage_init_default {_HardwareMessage_Type_MIN, 0, 0}
|
#define meshtastic_HardwareMessage_init_default {_meshtastic_HardwareMessage_Type_MIN, 0, 0}
|
||||||
#define HardwareMessage_init_zero {_HardwareMessage_Type_MIN, 0, 0}
|
#define meshtastic_HardwareMessage_init_zero {_meshtastic_HardwareMessage_Type_MIN, 0, 0}
|
||||||
|
|
||||||
/* Field tags (for use in manual encoding/decoding) */
|
/* Field tags (for use in manual encoding/decoding) */
|
||||||
#define HardwareMessage_type_tag 1
|
#define meshtastic_HardwareMessage_type_tag 1
|
||||||
#define HardwareMessage_gpio_mask_tag 2
|
#define meshtastic_HardwareMessage_gpio_mask_tag 2
|
||||||
#define HardwareMessage_gpio_value_tag 3
|
#define meshtastic_HardwareMessage_gpio_value_tag 3
|
||||||
|
|
||||||
/* Struct field encoding specification for nanopb */
|
/* Struct field encoding specification for nanopb */
|
||||||
#define HardwareMessage_FIELDLIST(X, a) \
|
#define meshtastic_HardwareMessage_FIELDLIST(X, a) \
|
||||||
X(a, STATIC, SINGULAR, UENUM, type, 1) \
|
X(a, STATIC, SINGULAR, UENUM, type, 1) \
|
||||||
X(a, STATIC, SINGULAR, UINT64, gpio_mask, 2) \
|
X(a, STATIC, SINGULAR, UINT64, gpio_mask, 2) \
|
||||||
X(a, STATIC, SINGULAR, UINT64, gpio_value, 3)
|
X(a, STATIC, SINGULAR, UINT64, gpio_value, 3)
|
||||||
#define HardwareMessage_CALLBACK NULL
|
#define meshtastic_HardwareMessage_CALLBACK NULL
|
||||||
#define HardwareMessage_DEFAULT NULL
|
#define meshtastic_HardwareMessage_DEFAULT NULL
|
||||||
|
|
||||||
extern const pb_msgdesc_t HardwareMessage_msg;
|
extern const pb_msgdesc_t meshtastic_HardwareMessage_msg;
|
||||||
|
|
||||||
/* Defines for backwards compatibility with code written before nanopb-0.4.0 */
|
/* Defines for backwards compatibility with code written before nanopb-0.4.0 */
|
||||||
#define HardwareMessage_fields &HardwareMessage_msg
|
#define meshtastic_HardwareMessage_fields &meshtastic_HardwareMessage_msg
|
||||||
|
|
||||||
/* Maximum encoded size of messages (where known) */
|
/* Maximum encoded size of messages (where known) */
|
||||||
#define HardwareMessage_size 24
|
#define meshtastic_HardwareMessage_size 24
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
} /* extern "C" */
|
} /* extern "C" */
|
||||||
|
|||||||
@@ -1,12 +1,12 @@
|
|||||||
/* Automatically generated nanopb constant definitions */
|
/* Automatically generated nanopb constant definitions */
|
||||||
/* Generated by nanopb-0.4.7 */
|
/* Generated by nanopb-0.4.7 */
|
||||||
|
|
||||||
#include "./rtttl.pb.h"
|
#include "meshtastic/rtttl.pb.h"
|
||||||
#if PB_PROTO_HEADER_VERSION != 40
|
#if PB_PROTO_HEADER_VERSION != 40
|
||||||
#error Regenerate this file with the current version of nanopb generator.
|
#error Regenerate this file with the current version of nanopb generator.
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
PB_BIND(RTTTLConfig, RTTTLConfig, AUTO)
|
PB_BIND(meshtastic_RTTTLConfig, meshtastic_RTTTLConfig, AUTO)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -11,10 +11,10 @@
|
|||||||
|
|
||||||
/* Struct definitions */
|
/* Struct definitions */
|
||||||
/* Canned message module configuration. */
|
/* Canned message module configuration. */
|
||||||
typedef struct _RTTTLConfig {
|
typedef struct _meshtastic_RTTTLConfig {
|
||||||
/* Ringtone for PWM Buzzer in RTTTL Format. */
|
/* Ringtone for PWM Buzzer in RTTTL Format. */
|
||||||
char ringtone[230];
|
char ringtone[230];
|
||||||
} RTTTLConfig;
|
} meshtastic_RTTTLConfig;
|
||||||
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
@@ -22,25 +22,25 @@ extern "C" {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Initializer values for message structs */
|
/* Initializer values for message structs */
|
||||||
#define RTTTLConfig_init_default {""}
|
#define meshtastic_RTTTLConfig_init_default {""}
|
||||||
#define RTTTLConfig_init_zero {""}
|
#define meshtastic_RTTTLConfig_init_zero {""}
|
||||||
|
|
||||||
/* Field tags (for use in manual encoding/decoding) */
|
/* Field tags (for use in manual encoding/decoding) */
|
||||||
#define RTTTLConfig_ringtone_tag 1
|
#define meshtastic_RTTTLConfig_ringtone_tag 1
|
||||||
|
|
||||||
/* Struct field encoding specification for nanopb */
|
/* Struct field encoding specification for nanopb */
|
||||||
#define RTTTLConfig_FIELDLIST(X, a) \
|
#define meshtastic_RTTTLConfig_FIELDLIST(X, a) \
|
||||||
X(a, STATIC, SINGULAR, STRING, ringtone, 1)
|
X(a, STATIC, SINGULAR, STRING, ringtone, 1)
|
||||||
#define RTTTLConfig_CALLBACK NULL
|
#define meshtastic_RTTTLConfig_CALLBACK NULL
|
||||||
#define RTTTLConfig_DEFAULT NULL
|
#define meshtastic_RTTTLConfig_DEFAULT NULL
|
||||||
|
|
||||||
extern const pb_msgdesc_t RTTTLConfig_msg;
|
extern const pb_msgdesc_t meshtastic_RTTTLConfig_msg;
|
||||||
|
|
||||||
/* Defines for backwards compatibility with code written before nanopb-0.4.0 */
|
/* Defines for backwards compatibility with code written before nanopb-0.4.0 */
|
||||||
#define RTTTLConfig_fields &RTTTLConfig_msg
|
#define meshtastic_RTTTLConfig_fields &meshtastic_RTTTLConfig_msg
|
||||||
|
|
||||||
/* Maximum encoded size of messages (where known) */
|
/* Maximum encoded size of messages (where known) */
|
||||||
#define RTTTLConfig_size 232
|
#define meshtastic_RTTTLConfig_size 232
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
} /* extern "C" */
|
} /* extern "C" */
|
||||||
|
|||||||
@@ -1,21 +1,21 @@
|
|||||||
/* Automatically generated nanopb constant definitions */
|
/* Automatically generated nanopb constant definitions */
|
||||||
/* Generated by nanopb-0.4.7 */
|
/* Generated by nanopb-0.4.7 */
|
||||||
|
|
||||||
#include "./storeforward.pb.h"
|
#include "meshtastic/storeforward.pb.h"
|
||||||
#if PB_PROTO_HEADER_VERSION != 40
|
#if PB_PROTO_HEADER_VERSION != 40
|
||||||
#error Regenerate this file with the current version of nanopb generator.
|
#error Regenerate this file with the current version of nanopb generator.
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
PB_BIND(StoreAndForward, StoreAndForward, AUTO)
|
PB_BIND(meshtastic_StoreAndForward, meshtastic_StoreAndForward, AUTO)
|
||||||
|
|
||||||
|
|
||||||
PB_BIND(StoreAndForward_Statistics, StoreAndForward_Statistics, AUTO)
|
PB_BIND(meshtastic_StoreAndForward_Statistics, meshtastic_StoreAndForward_Statistics, AUTO)
|
||||||
|
|
||||||
|
|
||||||
PB_BIND(StoreAndForward_History, StoreAndForward_History, AUTO)
|
PB_BIND(meshtastic_StoreAndForward_History, meshtastic_StoreAndForward_History, AUTO)
|
||||||
|
|
||||||
|
|
||||||
PB_BIND(StoreAndForward_Heartbeat, StoreAndForward_Heartbeat, AUTO)
|
PB_BIND(meshtastic_StoreAndForward_Heartbeat, meshtastic_StoreAndForward_Heartbeat, AUTO)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -12,42 +12,42 @@
|
|||||||
/* Enum definitions */
|
/* Enum definitions */
|
||||||
/* 001 - 063 = From Router
|
/* 001 - 063 = From Router
|
||||||
064 - 127 = From Client */
|
064 - 127 = From Client */
|
||||||
typedef enum _StoreAndForward_RequestResponse {
|
typedef enum _meshtastic_StoreAndForward_RequestResponse {
|
||||||
/* Unset/unused */
|
/* Unset/unused */
|
||||||
StoreAndForward_RequestResponse_UNSET = 0,
|
meshtastic_StoreAndForward_RequestResponse_UNSET = 0,
|
||||||
/* Router is an in error state. */
|
/* Router is an in error state. */
|
||||||
StoreAndForward_RequestResponse_ROUTER_ERROR = 1,
|
meshtastic_StoreAndForward_RequestResponse_ROUTER_ERROR = 1,
|
||||||
/* Router heartbeat */
|
/* Router heartbeat */
|
||||||
StoreAndForward_RequestResponse_ROUTER_HEARTBEAT = 2,
|
meshtastic_StoreAndForward_RequestResponse_ROUTER_HEARTBEAT = 2,
|
||||||
/* Router has requested the client respond. This can work as a
|
/* Router has requested the client respond. This can work as a
|
||||||
"are you there" message. */
|
"are you there" message. */
|
||||||
StoreAndForward_RequestResponse_ROUTER_PING = 3,
|
meshtastic_StoreAndForward_RequestResponse_ROUTER_PING = 3,
|
||||||
/* The response to a "Ping" */
|
/* The response to a "Ping" */
|
||||||
StoreAndForward_RequestResponse_ROUTER_PONG = 4,
|
meshtastic_StoreAndForward_RequestResponse_ROUTER_PONG = 4,
|
||||||
/* Router is currently busy. Please try again later. */
|
/* Router is currently busy. Please try again later. */
|
||||||
StoreAndForward_RequestResponse_ROUTER_BUSY = 5,
|
meshtastic_StoreAndForward_RequestResponse_ROUTER_BUSY = 5,
|
||||||
/* Router is responding to a request for history. */
|
/* Router is responding to a request for history. */
|
||||||
StoreAndForward_RequestResponse_ROUTER_HISTORY = 6,
|
meshtastic_StoreAndForward_RequestResponse_ROUTER_HISTORY = 6,
|
||||||
/* Router is responding to a request for stats. */
|
/* Router is responding to a request for stats. */
|
||||||
StoreAndForward_RequestResponse_ROUTER_STATS = 7,
|
meshtastic_StoreAndForward_RequestResponse_ROUTER_STATS = 7,
|
||||||
/* Client is an in error state. */
|
/* Client is an in error state. */
|
||||||
StoreAndForward_RequestResponse_CLIENT_ERROR = 64,
|
meshtastic_StoreAndForward_RequestResponse_CLIENT_ERROR = 64,
|
||||||
/* Client has requested a replay from the router. */
|
/* Client has requested a replay from the router. */
|
||||||
StoreAndForward_RequestResponse_CLIENT_HISTORY = 65,
|
meshtastic_StoreAndForward_RequestResponse_CLIENT_HISTORY = 65,
|
||||||
/* Client has requested stats from the router. */
|
/* Client has requested stats from the router. */
|
||||||
StoreAndForward_RequestResponse_CLIENT_STATS = 66,
|
meshtastic_StoreAndForward_RequestResponse_CLIENT_STATS = 66,
|
||||||
/* Client has requested the router respond. This can work as a
|
/* Client has requested the router respond. This can work as a
|
||||||
"are you there" message. */
|
"are you there" message. */
|
||||||
StoreAndForward_RequestResponse_CLIENT_PING = 67,
|
meshtastic_StoreAndForward_RequestResponse_CLIENT_PING = 67,
|
||||||
/* The response to a "Ping" */
|
/* The response to a "Ping" */
|
||||||
StoreAndForward_RequestResponse_CLIENT_PONG = 68,
|
meshtastic_StoreAndForward_RequestResponse_CLIENT_PONG = 68,
|
||||||
/* Client has requested that the router abort processing the client's request */
|
/* Client has requested that the router abort processing the client's request */
|
||||||
StoreAndForward_RequestResponse_CLIENT_ABORT = 106
|
meshtastic_StoreAndForward_RequestResponse_CLIENT_ABORT = 106
|
||||||
} StoreAndForward_RequestResponse;
|
} meshtastic_StoreAndForward_RequestResponse;
|
||||||
|
|
||||||
/* Struct definitions */
|
/* Struct definitions */
|
||||||
/* TODO: REPLACE */
|
/* TODO: REPLACE */
|
||||||
typedef struct _StoreAndForward_Statistics {
|
typedef struct _meshtastic_StoreAndForward_Statistics {
|
||||||
/* Number of messages we have ever seen */
|
/* Number of messages we have ever seen */
|
||||||
uint32_t messages_total;
|
uint32_t messages_total;
|
||||||
/* Number of messages we have currently saved our history. */
|
/* Number of messages we have currently saved our history. */
|
||||||
@@ -66,42 +66,42 @@ typedef struct _StoreAndForward_Statistics {
|
|||||||
uint32_t return_max;
|
uint32_t return_max;
|
||||||
/* Is the heartbeat enabled on the server? */
|
/* Is the heartbeat enabled on the server? */
|
||||||
uint32_t return_window;
|
uint32_t return_window;
|
||||||
} StoreAndForward_Statistics;
|
} meshtastic_StoreAndForward_Statistics;
|
||||||
|
|
||||||
/* TODO: REPLACE */
|
/* TODO: REPLACE */
|
||||||
typedef struct _StoreAndForward_History {
|
typedef struct _meshtastic_StoreAndForward_History {
|
||||||
/* Number of that will be sent to the client */
|
/* Number of that will be sent to the client */
|
||||||
uint32_t history_messages;
|
uint32_t history_messages;
|
||||||
/* The window of messages that was used to filter the history client requested */
|
/* The window of messages that was used to filter the history client requested */
|
||||||
uint32_t window;
|
uint32_t window;
|
||||||
/* The window of messages that was used to filter the history client requested */
|
/* The window of messages that was used to filter the history client requested */
|
||||||
uint32_t last_request;
|
uint32_t last_request;
|
||||||
} StoreAndForward_History;
|
} meshtastic_StoreAndForward_History;
|
||||||
|
|
||||||
/* TODO: REPLACE */
|
/* TODO: REPLACE */
|
||||||
typedef struct _StoreAndForward_Heartbeat {
|
typedef struct _meshtastic_StoreAndForward_Heartbeat {
|
||||||
/* Number of that will be sent to the client */
|
/* Number of that will be sent to the client */
|
||||||
uint32_t period;
|
uint32_t period;
|
||||||
/* If set, this is not the primary Store & Forward router on the mesh */
|
/* If set, this is not the primary Store & Forward router on the mesh */
|
||||||
uint32_t secondary;
|
uint32_t secondary;
|
||||||
} StoreAndForward_Heartbeat;
|
} meshtastic_StoreAndForward_Heartbeat;
|
||||||
|
|
||||||
/* TODO: REPLACE */
|
/* TODO: REPLACE */
|
||||||
typedef struct _StoreAndForward {
|
typedef struct _meshtastic_StoreAndForward {
|
||||||
/* TODO: REPLACE */
|
/* TODO: REPLACE */
|
||||||
StoreAndForward_RequestResponse rr;
|
meshtastic_StoreAndForward_RequestResponse rr;
|
||||||
pb_size_t which_variant;
|
pb_size_t which_variant;
|
||||||
union {
|
union {
|
||||||
/* TODO: REPLACE */
|
/* TODO: REPLACE */
|
||||||
StoreAndForward_Statistics stats;
|
meshtastic_StoreAndForward_Statistics stats;
|
||||||
/* TODO: REPLACE */
|
/* TODO: REPLACE */
|
||||||
StoreAndForward_History history;
|
meshtastic_StoreAndForward_History history;
|
||||||
/* TODO: REPLACE */
|
/* TODO: REPLACE */
|
||||||
StoreAndForward_Heartbeat heartbeat;
|
meshtastic_StoreAndForward_Heartbeat heartbeat;
|
||||||
/* Empty Payload */
|
/* Empty Payload */
|
||||||
bool empty;
|
bool empty;
|
||||||
} variant;
|
} variant;
|
||||||
} StoreAndForward;
|
} meshtastic_StoreAndForward;
|
||||||
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
@@ -109,61 +109,61 @@ extern "C" {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Helper constants for enums */
|
/* Helper constants for enums */
|
||||||
#define _StoreAndForward_RequestResponse_MIN StoreAndForward_RequestResponse_UNSET
|
#define _meshtastic_StoreAndForward_RequestResponse_MIN meshtastic_StoreAndForward_RequestResponse_UNSET
|
||||||
#define _StoreAndForward_RequestResponse_MAX StoreAndForward_RequestResponse_CLIENT_ABORT
|
#define _meshtastic_StoreAndForward_RequestResponse_MAX meshtastic_StoreAndForward_RequestResponse_CLIENT_ABORT
|
||||||
#define _StoreAndForward_RequestResponse_ARRAYSIZE ((StoreAndForward_RequestResponse)(StoreAndForward_RequestResponse_CLIENT_ABORT+1))
|
#define _meshtastic_StoreAndForward_RequestResponse_ARRAYSIZE ((meshtastic_StoreAndForward_RequestResponse)(meshtastic_StoreAndForward_RequestResponse_CLIENT_ABORT+1))
|
||||||
|
|
||||||
#define StoreAndForward_rr_ENUMTYPE StoreAndForward_RequestResponse
|
#define meshtastic_StoreAndForward_rr_ENUMTYPE meshtastic_StoreAndForward_RequestResponse
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* Initializer values for message structs */
|
/* Initializer values for message structs */
|
||||||
#define StoreAndForward_init_default {_StoreAndForward_RequestResponse_MIN, 0, {StoreAndForward_Statistics_init_default}}
|
#define meshtastic_StoreAndForward_init_default {_meshtastic_StoreAndForward_RequestResponse_MIN, 0, {meshtastic_StoreAndForward_Statistics_init_default}}
|
||||||
#define StoreAndForward_Statistics_init_default {0, 0, 0, 0, 0, 0, 0, 0, 0}
|
#define meshtastic_StoreAndForward_Statistics_init_default {0, 0, 0, 0, 0, 0, 0, 0, 0}
|
||||||
#define StoreAndForward_History_init_default {0, 0, 0}
|
#define meshtastic_StoreAndForward_History_init_default {0, 0, 0}
|
||||||
#define StoreAndForward_Heartbeat_init_default {0, 0}
|
#define meshtastic_StoreAndForward_Heartbeat_init_default {0, 0}
|
||||||
#define StoreAndForward_init_zero {_StoreAndForward_RequestResponse_MIN, 0, {StoreAndForward_Statistics_init_zero}}
|
#define meshtastic_StoreAndForward_init_zero {_meshtastic_StoreAndForward_RequestResponse_MIN, 0, {meshtastic_StoreAndForward_Statistics_init_zero}}
|
||||||
#define StoreAndForward_Statistics_init_zero {0, 0, 0, 0, 0, 0, 0, 0, 0}
|
#define meshtastic_StoreAndForward_Statistics_init_zero {0, 0, 0, 0, 0, 0, 0, 0, 0}
|
||||||
#define StoreAndForward_History_init_zero {0, 0, 0}
|
#define meshtastic_StoreAndForward_History_init_zero {0, 0, 0}
|
||||||
#define StoreAndForward_Heartbeat_init_zero {0, 0}
|
#define meshtastic_StoreAndForward_Heartbeat_init_zero {0, 0}
|
||||||
|
|
||||||
/* Field tags (for use in manual encoding/decoding) */
|
/* Field tags (for use in manual encoding/decoding) */
|
||||||
#define StoreAndForward_Statistics_messages_total_tag 1
|
#define meshtastic_StoreAndForward_Statistics_messages_total_tag 1
|
||||||
#define StoreAndForward_Statistics_messages_saved_tag 2
|
#define meshtastic_StoreAndForward_Statistics_messages_saved_tag 2
|
||||||
#define StoreAndForward_Statistics_messages_max_tag 3
|
#define meshtastic_StoreAndForward_Statistics_messages_max_tag 3
|
||||||
#define StoreAndForward_Statistics_up_time_tag 4
|
#define meshtastic_StoreAndForward_Statistics_up_time_tag 4
|
||||||
#define StoreAndForward_Statistics_requests_tag 5
|
#define meshtastic_StoreAndForward_Statistics_requests_tag 5
|
||||||
#define StoreAndForward_Statistics_requests_history_tag 6
|
#define meshtastic_StoreAndForward_Statistics_requests_history_tag 6
|
||||||
#define StoreAndForward_Statistics_heartbeat_tag 7
|
#define meshtastic_StoreAndForward_Statistics_heartbeat_tag 7
|
||||||
#define StoreAndForward_Statistics_return_max_tag 8
|
#define meshtastic_StoreAndForward_Statistics_return_max_tag 8
|
||||||
#define StoreAndForward_Statistics_return_window_tag 9
|
#define meshtastic_StoreAndForward_Statistics_return_window_tag 9
|
||||||
#define StoreAndForward_History_history_messages_tag 1
|
#define meshtastic_StoreAndForward_History_history_messages_tag 1
|
||||||
#define StoreAndForward_History_window_tag 2
|
#define meshtastic_StoreAndForward_History_window_tag 2
|
||||||
#define StoreAndForward_History_last_request_tag 3
|
#define meshtastic_StoreAndForward_History_last_request_tag 3
|
||||||
#define StoreAndForward_Heartbeat_period_tag 1
|
#define meshtastic_StoreAndForward_Heartbeat_period_tag 1
|
||||||
#define StoreAndForward_Heartbeat_secondary_tag 2
|
#define meshtastic_StoreAndForward_Heartbeat_secondary_tag 2
|
||||||
#define StoreAndForward_rr_tag 1
|
#define meshtastic_StoreAndForward_rr_tag 1
|
||||||
#define StoreAndForward_stats_tag 2
|
#define meshtastic_StoreAndForward_stats_tag 2
|
||||||
#define StoreAndForward_history_tag 3
|
#define meshtastic_StoreAndForward_history_tag 3
|
||||||
#define StoreAndForward_heartbeat_tag 4
|
#define meshtastic_StoreAndForward_heartbeat_tag 4
|
||||||
#define StoreAndForward_empty_tag 5
|
#define meshtastic_StoreAndForward_empty_tag 5
|
||||||
|
|
||||||
/* Struct field encoding specification for nanopb */
|
/* Struct field encoding specification for nanopb */
|
||||||
#define StoreAndForward_FIELDLIST(X, a) \
|
#define meshtastic_StoreAndForward_FIELDLIST(X, a) \
|
||||||
X(a, STATIC, SINGULAR, UENUM, rr, 1) \
|
X(a, STATIC, SINGULAR, UENUM, rr, 1) \
|
||||||
X(a, STATIC, ONEOF, MESSAGE, (variant,stats,variant.stats), 2) \
|
X(a, STATIC, ONEOF, MESSAGE, (variant,stats,variant.stats), 2) \
|
||||||
X(a, STATIC, ONEOF, MESSAGE, (variant,history,variant.history), 3) \
|
X(a, STATIC, ONEOF, MESSAGE, (variant,history,variant.history), 3) \
|
||||||
X(a, STATIC, ONEOF, MESSAGE, (variant,heartbeat,variant.heartbeat), 4) \
|
X(a, STATIC, ONEOF, MESSAGE, (variant,heartbeat,variant.heartbeat), 4) \
|
||||||
X(a, STATIC, ONEOF, BOOL, (variant,empty,variant.empty), 5)
|
X(a, STATIC, ONEOF, BOOL, (variant,empty,variant.empty), 5)
|
||||||
#define StoreAndForward_CALLBACK NULL
|
#define meshtastic_StoreAndForward_CALLBACK NULL
|
||||||
#define StoreAndForward_DEFAULT NULL
|
#define meshtastic_StoreAndForward_DEFAULT NULL
|
||||||
#define StoreAndForward_variant_stats_MSGTYPE StoreAndForward_Statistics
|
#define meshtastic_StoreAndForward_variant_stats_MSGTYPE meshtastic_StoreAndForward_Statistics
|
||||||
#define StoreAndForward_variant_history_MSGTYPE StoreAndForward_History
|
#define meshtastic_StoreAndForward_variant_history_MSGTYPE meshtastic_StoreAndForward_History
|
||||||
#define StoreAndForward_variant_heartbeat_MSGTYPE StoreAndForward_Heartbeat
|
#define meshtastic_StoreAndForward_variant_heartbeat_MSGTYPE meshtastic_StoreAndForward_Heartbeat
|
||||||
|
|
||||||
#define StoreAndForward_Statistics_FIELDLIST(X, a) \
|
#define meshtastic_StoreAndForward_Statistics_FIELDLIST(X, a) \
|
||||||
X(a, STATIC, SINGULAR, UINT32, messages_total, 1) \
|
X(a, STATIC, SINGULAR, UINT32, messages_total, 1) \
|
||||||
X(a, STATIC, SINGULAR, UINT32, messages_saved, 2) \
|
X(a, STATIC, SINGULAR, UINT32, messages_saved, 2) \
|
||||||
X(a, STATIC, SINGULAR, UINT32, messages_max, 3) \
|
X(a, STATIC, SINGULAR, UINT32, messages_max, 3) \
|
||||||
@@ -173,38 +173,38 @@ X(a, STATIC, SINGULAR, UINT32, requests_history, 6) \
|
|||||||
X(a, STATIC, SINGULAR, BOOL, heartbeat, 7) \
|
X(a, STATIC, SINGULAR, BOOL, heartbeat, 7) \
|
||||||
X(a, STATIC, SINGULAR, UINT32, return_max, 8) \
|
X(a, STATIC, SINGULAR, UINT32, return_max, 8) \
|
||||||
X(a, STATIC, SINGULAR, UINT32, return_window, 9)
|
X(a, STATIC, SINGULAR, UINT32, return_window, 9)
|
||||||
#define StoreAndForward_Statistics_CALLBACK NULL
|
#define meshtastic_StoreAndForward_Statistics_CALLBACK NULL
|
||||||
#define StoreAndForward_Statistics_DEFAULT NULL
|
#define meshtastic_StoreAndForward_Statistics_DEFAULT NULL
|
||||||
|
|
||||||
#define StoreAndForward_History_FIELDLIST(X, a) \
|
#define meshtastic_StoreAndForward_History_FIELDLIST(X, a) \
|
||||||
X(a, STATIC, SINGULAR, UINT32, history_messages, 1) \
|
X(a, STATIC, SINGULAR, UINT32, history_messages, 1) \
|
||||||
X(a, STATIC, SINGULAR, UINT32, window, 2) \
|
X(a, STATIC, SINGULAR, UINT32, window, 2) \
|
||||||
X(a, STATIC, SINGULAR, UINT32, last_request, 3)
|
X(a, STATIC, SINGULAR, UINT32, last_request, 3)
|
||||||
#define StoreAndForward_History_CALLBACK NULL
|
#define meshtastic_StoreAndForward_History_CALLBACK NULL
|
||||||
#define StoreAndForward_History_DEFAULT NULL
|
#define meshtastic_StoreAndForward_History_DEFAULT NULL
|
||||||
|
|
||||||
#define StoreAndForward_Heartbeat_FIELDLIST(X, a) \
|
#define meshtastic_StoreAndForward_Heartbeat_FIELDLIST(X, a) \
|
||||||
X(a, STATIC, SINGULAR, UINT32, period, 1) \
|
X(a, STATIC, SINGULAR, UINT32, period, 1) \
|
||||||
X(a, STATIC, SINGULAR, UINT32, secondary, 2)
|
X(a, STATIC, SINGULAR, UINT32, secondary, 2)
|
||||||
#define StoreAndForward_Heartbeat_CALLBACK NULL
|
#define meshtastic_StoreAndForward_Heartbeat_CALLBACK NULL
|
||||||
#define StoreAndForward_Heartbeat_DEFAULT NULL
|
#define meshtastic_StoreAndForward_Heartbeat_DEFAULT NULL
|
||||||
|
|
||||||
extern const pb_msgdesc_t StoreAndForward_msg;
|
extern const pb_msgdesc_t meshtastic_StoreAndForward_msg;
|
||||||
extern const pb_msgdesc_t StoreAndForward_Statistics_msg;
|
extern const pb_msgdesc_t meshtastic_StoreAndForward_Statistics_msg;
|
||||||
extern const pb_msgdesc_t StoreAndForward_History_msg;
|
extern const pb_msgdesc_t meshtastic_StoreAndForward_History_msg;
|
||||||
extern const pb_msgdesc_t StoreAndForward_Heartbeat_msg;
|
extern const pb_msgdesc_t meshtastic_StoreAndForward_Heartbeat_msg;
|
||||||
|
|
||||||
/* Defines for backwards compatibility with code written before nanopb-0.4.0 */
|
/* Defines for backwards compatibility with code written before nanopb-0.4.0 */
|
||||||
#define StoreAndForward_fields &StoreAndForward_msg
|
#define meshtastic_StoreAndForward_fields &meshtastic_StoreAndForward_msg
|
||||||
#define StoreAndForward_Statistics_fields &StoreAndForward_Statistics_msg
|
#define meshtastic_StoreAndForward_Statistics_fields &meshtastic_StoreAndForward_Statistics_msg
|
||||||
#define StoreAndForward_History_fields &StoreAndForward_History_msg
|
#define meshtastic_StoreAndForward_History_fields &meshtastic_StoreAndForward_History_msg
|
||||||
#define StoreAndForward_Heartbeat_fields &StoreAndForward_Heartbeat_msg
|
#define meshtastic_StoreAndForward_Heartbeat_fields &meshtastic_StoreAndForward_Heartbeat_msg
|
||||||
|
|
||||||
/* Maximum encoded size of messages (where known) */
|
/* Maximum encoded size of messages (where known) */
|
||||||
#define StoreAndForward_Heartbeat_size 12
|
#define meshtastic_StoreAndForward_Heartbeat_size 12
|
||||||
#define StoreAndForward_History_size 18
|
#define meshtastic_StoreAndForward_History_size 18
|
||||||
#define StoreAndForward_Statistics_size 50
|
#define meshtastic_StoreAndForward_Statistics_size 50
|
||||||
#define StoreAndForward_size 54
|
#define meshtastic_StoreAndForward_size 54
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
} /* extern "C" */
|
} /* extern "C" */
|
||||||
|
|||||||
@@ -1,18 +1,18 @@
|
|||||||
/* Automatically generated nanopb constant definitions */
|
/* Automatically generated nanopb constant definitions */
|
||||||
/* Generated by nanopb-0.4.7 */
|
/* Generated by nanopb-0.4.7 */
|
||||||
|
|
||||||
#include "./telemetry.pb.h"
|
#include "meshtastic/telemetry.pb.h"
|
||||||
#if PB_PROTO_HEADER_VERSION != 40
|
#if PB_PROTO_HEADER_VERSION != 40
|
||||||
#error Regenerate this file with the current version of nanopb generator.
|
#error Regenerate this file with the current version of nanopb generator.
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
PB_BIND(DeviceMetrics, DeviceMetrics, AUTO)
|
PB_BIND(meshtastic_DeviceMetrics, meshtastic_DeviceMetrics, AUTO)
|
||||||
|
|
||||||
|
|
||||||
PB_BIND(EnvironmentMetrics, EnvironmentMetrics, AUTO)
|
PB_BIND(meshtastic_EnvironmentMetrics, meshtastic_EnvironmentMetrics, AUTO)
|
||||||
|
|
||||||
|
|
||||||
PB_BIND(Telemetry, Telemetry, AUTO)
|
PB_BIND(meshtastic_Telemetry, meshtastic_Telemetry, AUTO)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -11,38 +11,38 @@
|
|||||||
|
|
||||||
/* Enum definitions */
|
/* Enum definitions */
|
||||||
/* TODO: REPLACE */
|
/* TODO: REPLACE */
|
||||||
typedef enum _TelemetrySensorType {
|
typedef enum _meshtastic_TelemetrySensorType {
|
||||||
/* No external telemetry sensor explicitly set */
|
/* No external telemetry sensor explicitly set */
|
||||||
TelemetrySensorType_SENSOR_UNSET = 0,
|
meshtastic_TelemetrySensorType_SENSOR_UNSET = 0,
|
||||||
/* High accuracy temperature, pressure, humidity */
|
/* High accuracy temperature, pressure, humidity */
|
||||||
TelemetrySensorType_BME280 = 1,
|
meshtastic_TelemetrySensorType_BME280 = 1,
|
||||||
/* High accuracy temperature, pressure, humidity, and air resistance */
|
/* High accuracy temperature, pressure, humidity, and air resistance */
|
||||||
TelemetrySensorType_BME680 = 2,
|
meshtastic_TelemetrySensorType_BME680 = 2,
|
||||||
/* Very high accuracy temperature */
|
/* Very high accuracy temperature */
|
||||||
TelemetrySensorType_MCP9808 = 3,
|
meshtastic_TelemetrySensorType_MCP9808 = 3,
|
||||||
/* Moderate accuracy current and voltage */
|
/* Moderate accuracy current and voltage */
|
||||||
TelemetrySensorType_INA260 = 4,
|
meshtastic_TelemetrySensorType_INA260 = 4,
|
||||||
/* Moderate accuracy current and voltage */
|
/* Moderate accuracy current and voltage */
|
||||||
TelemetrySensorType_INA219 = 5,
|
meshtastic_TelemetrySensorType_INA219 = 5,
|
||||||
/* High accuracy temperature and pressure */
|
/* High accuracy temperature and pressure */
|
||||||
TelemetrySensorType_BMP280 = 6,
|
meshtastic_TelemetrySensorType_BMP280 = 6,
|
||||||
/* High accuracy temperature and humidity */
|
/* High accuracy temperature and humidity */
|
||||||
TelemetrySensorType_SHTC3 = 7,
|
meshtastic_TelemetrySensorType_SHTC3 = 7,
|
||||||
/* High accuracy pressure */
|
/* High accuracy pressure */
|
||||||
TelemetrySensorType_LPS22 = 8,
|
meshtastic_TelemetrySensorType_LPS22 = 8,
|
||||||
/* 3-Axis magnetic sensor */
|
/* 3-Axis magnetic sensor */
|
||||||
TelemetrySensorType_QMC6310 = 9,
|
meshtastic_TelemetrySensorType_QMC6310 = 9,
|
||||||
/* 6-Axis inertial measurement sensor */
|
/* 6-Axis inertial measurement sensor */
|
||||||
TelemetrySensorType_QMI8658 = 10,
|
meshtastic_TelemetrySensorType_QMI8658 = 10,
|
||||||
/* 3-Axis magnetic sensor */
|
/* 3-Axis magnetic sensor */
|
||||||
TelemetrySensorType_QMC5883L = 11,
|
meshtastic_TelemetrySensorType_QMC5883L = 11,
|
||||||
/* High accuracy temperature and humidity */
|
/* High accuracy temperature and humidity */
|
||||||
TelemetrySensorType_SHT31 = 12
|
meshtastic_TelemetrySensorType_SHT31 = 12
|
||||||
} TelemetrySensorType;
|
} meshtastic_TelemetrySensorType;
|
||||||
|
|
||||||
/* Struct definitions */
|
/* Struct definitions */
|
||||||
/* Key native device metrics such as battery level */
|
/* Key native device metrics such as battery level */
|
||||||
typedef struct _DeviceMetrics {
|
typedef struct _meshtastic_DeviceMetrics {
|
||||||
/* 1-100 (0 means powered) */
|
/* 1-100 (0 means powered) */
|
||||||
uint32_t battery_level;
|
uint32_t battery_level;
|
||||||
/* Voltage measured */
|
/* Voltage measured */
|
||||||
@@ -51,10 +51,10 @@ typedef struct _DeviceMetrics {
|
|||||||
float channel_utilization;
|
float channel_utilization;
|
||||||
/* Percent of airtime for transmission used within the last hour. */
|
/* Percent of airtime for transmission used within the last hour. */
|
||||||
float air_util_tx;
|
float air_util_tx;
|
||||||
} DeviceMetrics;
|
} meshtastic_DeviceMetrics;
|
||||||
|
|
||||||
/* Weather station or other environmental metrics */
|
/* Weather station or other environmental metrics */
|
||||||
typedef struct _EnvironmentMetrics {
|
typedef struct _meshtastic_EnvironmentMetrics {
|
||||||
/* Temperature measured */
|
/* Temperature measured */
|
||||||
float temperature;
|
float temperature;
|
||||||
/* Relative humidity percent measured */
|
/* Relative humidity percent measured */
|
||||||
@@ -67,24 +67,24 @@ typedef struct _EnvironmentMetrics {
|
|||||||
float voltage;
|
float voltage;
|
||||||
/* Current measured */
|
/* Current measured */
|
||||||
float current;
|
float current;
|
||||||
} EnvironmentMetrics;
|
} meshtastic_EnvironmentMetrics;
|
||||||
|
|
||||||
/* Types of Measurements the telemetry module is equipped to handle */
|
/* Types of Measurements the telemetry module is equipped to handle */
|
||||||
typedef struct _Telemetry {
|
typedef struct _meshtastic_Telemetry {
|
||||||
/* This is usually not sent over the mesh (to save space), but it is sent
|
/* This is usually not sent over the mesh (to save space), but it is sent
|
||||||
from the phone so that the local device can set its RTC If it is sent over
|
from the phone so that the local device can set its RTC If it is sent over
|
||||||
the mesh (because there are devices on the mesh without GPS), it will only
|
the mesh (because there are devices on the mesh without GPS), it will only
|
||||||
be sent by devices which has a hardware GPS clock (IE Mobile Phone).
|
be sent by devices which has a hardware GPS clock (IE Mobile Phone).
|
||||||
seconds since 1970 */
|
seconds since 1970 */
|
||||||
uint32_t time;
|
uint32_t time;
|
||||||
pb_size_t which_variant;
|
pb_size_t which_variant;
|
||||||
union {
|
union {
|
||||||
/* Key native device metrics such as battery level */
|
/* Key native device metrics such as battery level */
|
||||||
DeviceMetrics device_metrics;
|
meshtastic_DeviceMetrics device_metrics;
|
||||||
/* Weather station or other environmental metrics */
|
/* Weather station or other environmental metrics */
|
||||||
EnvironmentMetrics environment_metrics;
|
meshtastic_EnvironmentMetrics environment_metrics;
|
||||||
} variant;
|
} variant;
|
||||||
} Telemetry;
|
} meshtastic_Telemetry;
|
||||||
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
@@ -92,78 +92,78 @@ extern "C" {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Helper constants for enums */
|
/* Helper constants for enums */
|
||||||
#define _TelemetrySensorType_MIN TelemetrySensorType_SENSOR_UNSET
|
#define _meshtastic_TelemetrySensorType_MIN meshtastic_TelemetrySensorType_SENSOR_UNSET
|
||||||
#define _TelemetrySensorType_MAX TelemetrySensorType_SHT31
|
#define _meshtastic_TelemetrySensorType_MAX meshtastic_TelemetrySensorType_SHT31
|
||||||
#define _TelemetrySensorType_ARRAYSIZE ((TelemetrySensorType)(TelemetrySensorType_SHT31+1))
|
#define _meshtastic_TelemetrySensorType_ARRAYSIZE ((meshtastic_TelemetrySensorType)(meshtastic_TelemetrySensorType_SHT31+1))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* Initializer values for message structs */
|
/* Initializer values for message structs */
|
||||||
#define DeviceMetrics_init_default {0, 0, 0, 0}
|
#define meshtastic_DeviceMetrics_init_default {0, 0, 0, 0}
|
||||||
#define EnvironmentMetrics_init_default {0, 0, 0, 0, 0, 0}
|
#define meshtastic_EnvironmentMetrics_init_default {0, 0, 0, 0, 0, 0}
|
||||||
#define Telemetry_init_default {0, 0, {DeviceMetrics_init_default}}
|
#define meshtastic_Telemetry_init_default {0, 0, {meshtastic_DeviceMetrics_init_default}}
|
||||||
#define DeviceMetrics_init_zero {0, 0, 0, 0}
|
#define meshtastic_DeviceMetrics_init_zero {0, 0, 0, 0}
|
||||||
#define EnvironmentMetrics_init_zero {0, 0, 0, 0, 0, 0}
|
#define meshtastic_EnvironmentMetrics_init_zero {0, 0, 0, 0, 0, 0}
|
||||||
#define Telemetry_init_zero {0, 0, {DeviceMetrics_init_zero}}
|
#define meshtastic_Telemetry_init_zero {0, 0, {meshtastic_DeviceMetrics_init_zero}}
|
||||||
|
|
||||||
/* Field tags (for use in manual encoding/decoding) */
|
/* Field tags (for use in manual encoding/decoding) */
|
||||||
#define DeviceMetrics_battery_level_tag 1
|
#define meshtastic_DeviceMetrics_battery_level_tag 1
|
||||||
#define DeviceMetrics_voltage_tag 2
|
#define meshtastic_DeviceMetrics_voltage_tag 2
|
||||||
#define DeviceMetrics_channel_utilization_tag 3
|
#define meshtastic_DeviceMetrics_channel_utilization_tag 3
|
||||||
#define DeviceMetrics_air_util_tx_tag 4
|
#define meshtastic_DeviceMetrics_air_util_tx_tag 4
|
||||||
#define EnvironmentMetrics_temperature_tag 1
|
#define meshtastic_EnvironmentMetrics_temperature_tag 1
|
||||||
#define EnvironmentMetrics_relative_humidity_tag 2
|
#define meshtastic_EnvironmentMetrics_relative_humidity_tag 2
|
||||||
#define EnvironmentMetrics_barometric_pressure_tag 3
|
#define meshtastic_EnvironmentMetrics_barometric_pressure_tag 3
|
||||||
#define EnvironmentMetrics_gas_resistance_tag 4
|
#define meshtastic_EnvironmentMetrics_gas_resistance_tag 4
|
||||||
#define EnvironmentMetrics_voltage_tag 5
|
#define meshtastic_EnvironmentMetrics_voltage_tag 5
|
||||||
#define EnvironmentMetrics_current_tag 6
|
#define meshtastic_EnvironmentMetrics_current_tag 6
|
||||||
#define Telemetry_time_tag 1
|
#define meshtastic_Telemetry_time_tag 1
|
||||||
#define Telemetry_device_metrics_tag 2
|
#define meshtastic_Telemetry_device_metrics_tag 2
|
||||||
#define Telemetry_environment_metrics_tag 3
|
#define meshtastic_Telemetry_environment_metrics_tag 3
|
||||||
|
|
||||||
/* Struct field encoding specification for nanopb */
|
/* Struct field encoding specification for nanopb */
|
||||||
#define DeviceMetrics_FIELDLIST(X, a) \
|
#define meshtastic_DeviceMetrics_FIELDLIST(X, a) \
|
||||||
X(a, STATIC, SINGULAR, UINT32, battery_level, 1) \
|
X(a, STATIC, SINGULAR, UINT32, battery_level, 1) \
|
||||||
X(a, STATIC, SINGULAR, FLOAT, voltage, 2) \
|
X(a, STATIC, SINGULAR, FLOAT, voltage, 2) \
|
||||||
X(a, STATIC, SINGULAR, FLOAT, channel_utilization, 3) \
|
X(a, STATIC, SINGULAR, FLOAT, channel_utilization, 3) \
|
||||||
X(a, STATIC, SINGULAR, FLOAT, air_util_tx, 4)
|
X(a, STATIC, SINGULAR, FLOAT, air_util_tx, 4)
|
||||||
#define DeviceMetrics_CALLBACK NULL
|
#define meshtastic_DeviceMetrics_CALLBACK NULL
|
||||||
#define DeviceMetrics_DEFAULT NULL
|
#define meshtastic_DeviceMetrics_DEFAULT NULL
|
||||||
|
|
||||||
#define EnvironmentMetrics_FIELDLIST(X, a) \
|
#define meshtastic_EnvironmentMetrics_FIELDLIST(X, a) \
|
||||||
X(a, STATIC, SINGULAR, FLOAT, temperature, 1) \
|
X(a, STATIC, SINGULAR, FLOAT, temperature, 1) \
|
||||||
X(a, STATIC, SINGULAR, FLOAT, relative_humidity, 2) \
|
X(a, STATIC, SINGULAR, FLOAT, relative_humidity, 2) \
|
||||||
X(a, STATIC, SINGULAR, FLOAT, barometric_pressure, 3) \
|
X(a, STATIC, SINGULAR, FLOAT, barometric_pressure, 3) \
|
||||||
X(a, STATIC, SINGULAR, FLOAT, gas_resistance, 4) \
|
X(a, STATIC, SINGULAR, FLOAT, gas_resistance, 4) \
|
||||||
X(a, STATIC, SINGULAR, FLOAT, voltage, 5) \
|
X(a, STATIC, SINGULAR, FLOAT, voltage, 5) \
|
||||||
X(a, STATIC, SINGULAR, FLOAT, current, 6)
|
X(a, STATIC, SINGULAR, FLOAT, current, 6)
|
||||||
#define EnvironmentMetrics_CALLBACK NULL
|
#define meshtastic_EnvironmentMetrics_CALLBACK NULL
|
||||||
#define EnvironmentMetrics_DEFAULT NULL
|
#define meshtastic_EnvironmentMetrics_DEFAULT NULL
|
||||||
|
|
||||||
#define Telemetry_FIELDLIST(X, a) \
|
#define meshtastic_Telemetry_FIELDLIST(X, a) \
|
||||||
X(a, STATIC, SINGULAR, FIXED32, time, 1) \
|
X(a, STATIC, SINGULAR, FIXED32, time, 1) \
|
||||||
X(a, STATIC, ONEOF, MESSAGE, (variant,device_metrics,variant.device_metrics), 2) \
|
X(a, STATIC, ONEOF, MESSAGE, (variant,device_metrics,variant.device_metrics), 2) \
|
||||||
X(a, STATIC, ONEOF, MESSAGE, (variant,environment_metrics,variant.environment_metrics), 3)
|
X(a, STATIC, ONEOF, MESSAGE, (variant,environment_metrics,variant.environment_metrics), 3)
|
||||||
#define Telemetry_CALLBACK NULL
|
#define meshtastic_Telemetry_CALLBACK NULL
|
||||||
#define Telemetry_DEFAULT NULL
|
#define meshtastic_Telemetry_DEFAULT NULL
|
||||||
#define Telemetry_variant_device_metrics_MSGTYPE DeviceMetrics
|
#define meshtastic_Telemetry_variant_device_metrics_MSGTYPE meshtastic_DeviceMetrics
|
||||||
#define Telemetry_variant_environment_metrics_MSGTYPE EnvironmentMetrics
|
#define meshtastic_Telemetry_variant_environment_metrics_MSGTYPE meshtastic_EnvironmentMetrics
|
||||||
|
|
||||||
extern const pb_msgdesc_t DeviceMetrics_msg;
|
extern const pb_msgdesc_t meshtastic_DeviceMetrics_msg;
|
||||||
extern const pb_msgdesc_t EnvironmentMetrics_msg;
|
extern const pb_msgdesc_t meshtastic_EnvironmentMetrics_msg;
|
||||||
extern const pb_msgdesc_t Telemetry_msg;
|
extern const pb_msgdesc_t meshtastic_Telemetry_msg;
|
||||||
|
|
||||||
/* Defines for backwards compatibility with code written before nanopb-0.4.0 */
|
/* Defines for backwards compatibility with code written before nanopb-0.4.0 */
|
||||||
#define DeviceMetrics_fields &DeviceMetrics_msg
|
#define meshtastic_DeviceMetrics_fields &meshtastic_DeviceMetrics_msg
|
||||||
#define EnvironmentMetrics_fields &EnvironmentMetrics_msg
|
#define meshtastic_EnvironmentMetrics_fields &meshtastic_EnvironmentMetrics_msg
|
||||||
#define Telemetry_fields &Telemetry_msg
|
#define meshtastic_Telemetry_fields &meshtastic_Telemetry_msg
|
||||||
|
|
||||||
/* Maximum encoded size of messages (where known) */
|
/* Maximum encoded size of messages (where known) */
|
||||||
#define DeviceMetrics_size 21
|
#define meshtastic_DeviceMetrics_size 21
|
||||||
#define EnvironmentMetrics_size 30
|
#define meshtastic_EnvironmentMetrics_size 30
|
||||||
#define Telemetry_size 37
|
#define meshtastic_Telemetry_size 37
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
} /* extern "C" */
|
} /* extern "C" */
|
||||||
|
|||||||
@@ -1,12 +1,12 @@
|
|||||||
/* Automatically generated nanopb constant definitions */
|
/* Automatically generated nanopb constant definitions */
|
||||||
/* Generated by nanopb-0.4.7 */
|
/* Generated by nanopb-0.4.7 */
|
||||||
|
|
||||||
#include "./xmodem.pb.h"
|
#include "meshtastic/xmodem.pb.h"
|
||||||
#if PB_PROTO_HEADER_VERSION != 40
|
#if PB_PROTO_HEADER_VERSION != 40
|
||||||
#error Regenerate this file with the current version of nanopb generator.
|
#error Regenerate this file with the current version of nanopb generator.
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
PB_BIND(XModem, XModem, AUTO)
|
PB_BIND(meshtastic_XModem, meshtastic_XModem, AUTO)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -10,25 +10,25 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Enum definitions */
|
/* Enum definitions */
|
||||||
typedef enum _XModem_Control {
|
typedef enum _meshtastic_XModem_Control {
|
||||||
XModem_Control_NUL = 0,
|
meshtastic_XModem_Control_NUL = 0,
|
||||||
XModem_Control_SOH = 1,
|
meshtastic_XModem_Control_SOH = 1,
|
||||||
XModem_Control_STX = 2,
|
meshtastic_XModem_Control_STX = 2,
|
||||||
XModem_Control_EOT = 4,
|
meshtastic_XModem_Control_EOT = 4,
|
||||||
XModem_Control_ACK = 6,
|
meshtastic_XModem_Control_ACK = 6,
|
||||||
XModem_Control_NAK = 21,
|
meshtastic_XModem_Control_NAK = 21,
|
||||||
XModem_Control_CAN = 24,
|
meshtastic_XModem_Control_CAN = 24,
|
||||||
XModem_Control_CTRLZ = 26
|
meshtastic_XModem_Control_CTRLZ = 26
|
||||||
} XModem_Control;
|
} meshtastic_XModem_Control;
|
||||||
|
|
||||||
/* Struct definitions */
|
/* Struct definitions */
|
||||||
typedef PB_BYTES_ARRAY_T(128) XModem_buffer_t;
|
typedef PB_BYTES_ARRAY_T(128) meshtastic_XModem_buffer_t;
|
||||||
typedef struct _XModem {
|
typedef struct _meshtastic_XModem {
|
||||||
XModem_Control control;
|
meshtastic_XModem_Control control;
|
||||||
uint16_t seq;
|
uint16_t seq;
|
||||||
uint16_t crc16;
|
uint16_t crc16;
|
||||||
XModem_buffer_t buffer;
|
meshtastic_XModem_buffer_t buffer;
|
||||||
} XModem;
|
} meshtastic_XModem;
|
||||||
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
@@ -36,39 +36,39 @@ extern "C" {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Helper constants for enums */
|
/* Helper constants for enums */
|
||||||
#define _XModem_Control_MIN XModem_Control_NUL
|
#define _meshtastic_XModem_Control_MIN meshtastic_XModem_Control_NUL
|
||||||
#define _XModem_Control_MAX XModem_Control_CTRLZ
|
#define _meshtastic_XModem_Control_MAX meshtastic_XModem_Control_CTRLZ
|
||||||
#define _XModem_Control_ARRAYSIZE ((XModem_Control)(XModem_Control_CTRLZ+1))
|
#define _meshtastic_XModem_Control_ARRAYSIZE ((meshtastic_XModem_Control)(meshtastic_XModem_Control_CTRLZ+1))
|
||||||
|
|
||||||
#define XModem_control_ENUMTYPE XModem_Control
|
#define meshtastic_XModem_control_ENUMTYPE meshtastic_XModem_Control
|
||||||
|
|
||||||
|
|
||||||
/* Initializer values for message structs */
|
/* Initializer values for message structs */
|
||||||
#define XModem_init_default {_XModem_Control_MIN, 0, 0, {0, {0}}}
|
#define meshtastic_XModem_init_default {_meshtastic_XModem_Control_MIN, 0, 0, {0, {0}}}
|
||||||
#define XModem_init_zero {_XModem_Control_MIN, 0, 0, {0, {0}}}
|
#define meshtastic_XModem_init_zero {_meshtastic_XModem_Control_MIN, 0, 0, {0, {0}}}
|
||||||
|
|
||||||
/* Field tags (for use in manual encoding/decoding) */
|
/* Field tags (for use in manual encoding/decoding) */
|
||||||
#define XModem_control_tag 1
|
#define meshtastic_XModem_control_tag 1
|
||||||
#define XModem_seq_tag 2
|
#define meshtastic_XModem_seq_tag 2
|
||||||
#define XModem_crc16_tag 3
|
#define meshtastic_XModem_crc16_tag 3
|
||||||
#define XModem_buffer_tag 4
|
#define meshtastic_XModem_buffer_tag 4
|
||||||
|
|
||||||
/* Struct field encoding specification for nanopb */
|
/* Struct field encoding specification for nanopb */
|
||||||
#define XModem_FIELDLIST(X, a) \
|
#define meshtastic_XModem_FIELDLIST(X, a) \
|
||||||
X(a, STATIC, SINGULAR, UENUM, control, 1) \
|
X(a, STATIC, SINGULAR, UENUM, control, 1) \
|
||||||
X(a, STATIC, SINGULAR, UINT32, seq, 2) \
|
X(a, STATIC, SINGULAR, UINT32, seq, 2) \
|
||||||
X(a, STATIC, SINGULAR, UINT32, crc16, 3) \
|
X(a, STATIC, SINGULAR, UINT32, crc16, 3) \
|
||||||
X(a, STATIC, SINGULAR, BYTES, buffer, 4)
|
X(a, STATIC, SINGULAR, BYTES, buffer, 4)
|
||||||
#define XModem_CALLBACK NULL
|
#define meshtastic_XModem_CALLBACK NULL
|
||||||
#define XModem_DEFAULT NULL
|
#define meshtastic_XModem_DEFAULT NULL
|
||||||
|
|
||||||
extern const pb_msgdesc_t XModem_msg;
|
extern const pb_msgdesc_t meshtastic_XModem_msg;
|
||||||
|
|
||||||
/* Defines for backwards compatibility with code written before nanopb-0.4.0 */
|
/* Defines for backwards compatibility with code written before nanopb-0.4.0 */
|
||||||
#define XModem_fields &XModem_msg
|
#define meshtastic_XModem_fields &meshtastic_XModem_msg
|
||||||
|
|
||||||
/* Maximum encoded size of messages (where known) */
|
/* Maximum encoded size of messages (where known) */
|
||||||
#define XModem_size 141
|
#define meshtastic_XModem_size 141
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
} /* extern "C" */
|
} /* extern "C" */
|
||||||
|
|||||||
@@ -171,7 +171,7 @@ bool initWifi()
|
|||||||
WiFi.onEvent(WiFiEvent);
|
WiFi.onEvent(WiFiEvent);
|
||||||
WiFi.setAutoReconnect(true);
|
WiFi.setAutoReconnect(true);
|
||||||
WiFi.setSleep(false);
|
WiFi.setSleep(false);
|
||||||
if (config.network.address_mode == Config_NetworkConfig_AddressMode_STATIC && config.network.ipv4_config.ip != 0) {
|
if (config.network.address_mode == meshtastic_Config_NetworkConfig_AddressMode_STATIC && config.network.ipv4_config.ip != 0) {
|
||||||
WiFi.config(config.network.ipv4_config.ip, config.network.ipv4_config.gateway, config.network.ipv4_config.subnet,
|
WiFi.config(config.network.ipv4_config.ip, config.network.ipv4_config.gateway, config.network.ipv4_config.subnet,
|
||||||
config.network.ipv4_config.dns,
|
config.network.ipv4_config.dns,
|
||||||
config.network.ipv4_config.dns); // Wifi wants two DNS servers... set both to the same value
|
config.network.ipv4_config.dns); // Wifi wants two DNS servers... set both to the same value
|
||||||
|
|||||||
@@ -16,10 +16,10 @@
|
|||||||
#define MAX_RX_TOPHONE 32
|
#define MAX_RX_TOPHONE 32
|
||||||
|
|
||||||
/// max number of nodes allowed in the mesh
|
/// max number of nodes allowed in the mesh
|
||||||
#define MAX_NUM_NODES (member_size(DeviceState, node_db) / member_size(DeviceState, node_db[0]))
|
#define MAX_NUM_NODES (member_size(meshtastic_DeviceState, node_db) / member_size(meshtastic_DeviceState, node_db[0]))
|
||||||
|
|
||||||
/// Max number of channels allowed
|
/// Max number of channels allowed
|
||||||
#define MAX_NUM_CHANNELS (member_size(ChannelFile, channels) / member_size(ChannelFile, channels[0]))
|
#define MAX_NUM_CHANNELS (member_size(meshtastic_ChannelFile, channels) / member_size(meshtastic_ChannelFile, channels[0]))
|
||||||
|
|
||||||
/// helper function for encoding a record as a protobuf, any failures to encode are fatal and we will panic
|
/// helper function for encoding a record as a protobuf, any failures to encode are fatal and we will panic
|
||||||
/// returns the encoded packet size
|
/// returns the encoded packet size
|
||||||
|
|||||||
@@ -38,7 +38,7 @@ static void writeSecret(char *buf, size_t bufsz, const char *currentVal)
|
|||||||
* @param r Decoded AdminMessage
|
* @param r Decoded AdminMessage
|
||||||
* @return bool
|
* @return bool
|
||||||
*/
|
*/
|
||||||
bool AdminModule::handleReceivedProtobuf(const MeshPacket &mp, AdminMessage *r)
|
bool AdminModule::handleReceivedProtobuf(const meshtastic_MeshPacket &mp, meshtastic_AdminMessage *r)
|
||||||
{
|
{
|
||||||
// if handled == false, then let others look at this message also if they want
|
// if handled == false, then let others look at this message also if they want
|
||||||
bool handled = false;
|
bool handled = false;
|
||||||
@@ -49,26 +49,26 @@ bool AdminModule::handleReceivedProtobuf(const MeshPacket &mp, AdminMessage *r)
|
|||||||
/**
|
/**
|
||||||
* Getters
|
* Getters
|
||||||
*/
|
*/
|
||||||
case AdminMessage_get_owner_request_tag:
|
case meshtastic_AdminMessage_get_owner_request_tag:
|
||||||
LOG_INFO("Client is getting owner\n");
|
LOG_INFO("Client is getting owner\n");
|
||||||
handleGetOwner(mp);
|
handleGetOwner(mp);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case AdminMessage_get_config_request_tag:
|
case meshtastic_AdminMessage_get_config_request_tag:
|
||||||
LOG_INFO("Client is getting config\n");
|
LOG_INFO("Client is getting config\n");
|
||||||
handleGetConfig(mp, r->get_config_request);
|
handleGetConfig(mp, r->get_config_request);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case AdminMessage_get_module_config_request_tag:
|
case meshtastic_AdminMessage_get_module_config_request_tag:
|
||||||
LOG_INFO("Client is getting module config\n");
|
LOG_INFO("Client is getting module config\n");
|
||||||
handleGetModuleConfig(mp, r->get_module_config_request);
|
handleGetModuleConfig(mp, r->get_module_config_request);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case AdminMessage_get_channel_request_tag: {
|
case meshtastic_AdminMessage_get_channel_request_tag: {
|
||||||
uint32_t i = r->get_channel_request - 1;
|
uint32_t i = r->get_channel_request - 1;
|
||||||
LOG_INFO("Client is getting channel %u\n", i);
|
LOG_INFO("Client is getting channel %u\n", i);
|
||||||
if (i >= MAX_NUM_CHANNELS)
|
if (i >= MAX_NUM_CHANNELS)
|
||||||
myReply = allocErrorResponse(Routing_Error_BAD_REQUEST, &mp);
|
myReply = allocErrorResponse(meshtastic_Routing_Error_BAD_REQUEST, &mp);
|
||||||
else
|
else
|
||||||
handleGetChannel(mp, i);
|
handleGetChannel(mp, i);
|
||||||
break;
|
break;
|
||||||
@@ -77,25 +77,25 @@ bool AdminModule::handleReceivedProtobuf(const MeshPacket &mp, AdminMessage *r)
|
|||||||
/**
|
/**
|
||||||
* Setters
|
* Setters
|
||||||
*/
|
*/
|
||||||
case AdminMessage_set_owner_tag:
|
case meshtastic_AdminMessage_set_owner_tag:
|
||||||
LOG_INFO("Client is setting owner\n");
|
LOG_INFO("Client is setting owner\n");
|
||||||
handleSetOwner(r->set_owner);
|
handleSetOwner(r->set_owner);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case AdminMessage_set_config_tag:
|
case meshtastic_AdminMessage_set_config_tag:
|
||||||
LOG_INFO("Client is setting the config\n");
|
LOG_INFO("Client is setting the config\n");
|
||||||
handleSetConfig(r->set_config);
|
handleSetConfig(r->set_config);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case AdminMessage_set_module_config_tag:
|
case meshtastic_AdminMessage_set_module_config_tag:
|
||||||
LOG_INFO("Client is setting the module config\n");
|
LOG_INFO("Client is setting the module config\n");
|
||||||
handleSetModuleConfig(r->set_module_config);
|
handleSetModuleConfig(r->set_module_config);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case AdminMessage_set_channel_tag:
|
case meshtastic_AdminMessage_set_channel_tag:
|
||||||
LOG_INFO("Client is setting channel %d\n", r->set_channel.index);
|
LOG_INFO("Client is setting channel %d\n", r->set_channel.index);
|
||||||
if (r->set_channel.index < 0 || r->set_channel.index >= (int)MAX_NUM_CHANNELS)
|
if (r->set_channel.index < 0 || r->set_channel.index >= (int)MAX_NUM_CHANNELS)
|
||||||
myReply = allocErrorResponse(Routing_Error_BAD_REQUEST, &mp);
|
myReply = allocErrorResponse(meshtastic_Routing_Error_BAD_REQUEST, &mp);
|
||||||
else
|
else
|
||||||
handleSetChannel(r->set_channel);
|
handleSetChannel(r->set_channel);
|
||||||
break;
|
break;
|
||||||
@@ -103,11 +103,11 @@ bool AdminModule::handleReceivedProtobuf(const MeshPacket &mp, AdminMessage *r)
|
|||||||
/**
|
/**
|
||||||
* Other
|
* Other
|
||||||
*/
|
*/
|
||||||
case AdminMessage_reboot_seconds_tag: {
|
case meshtastic_AdminMessage_reboot_seconds_tag: {
|
||||||
reboot(r->reboot_seconds);
|
reboot(r->reboot_seconds);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case AdminMessage_reboot_ota_seconds_tag: {
|
case meshtastic_AdminMessage_reboot_ota_seconds_tag: {
|
||||||
int32_t s = r->reboot_ota_seconds;
|
int32_t s = r->reboot_ota_seconds;
|
||||||
#ifdef ARCH_ESP32
|
#ifdef ARCH_ESP32
|
||||||
if (BleOta::getOtaAppVersion().isEmpty()) {
|
if (BleOta::getOtaAppVersion().isEmpty()) {
|
||||||
@@ -125,35 +125,35 @@ bool AdminModule::handleReceivedProtobuf(const MeshPacket &mp, AdminMessage *r)
|
|||||||
rebootAtMsec = (s < 0) ? 0 : (millis() + s * 1000);
|
rebootAtMsec = (s < 0) ? 0 : (millis() + s * 1000);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case AdminMessage_shutdown_seconds_tag: {
|
case meshtastic_AdminMessage_shutdown_seconds_tag: {
|
||||||
int32_t s = r->shutdown_seconds;
|
int32_t s = r->shutdown_seconds;
|
||||||
LOG_INFO("Shutdown in %d seconds\n", s);
|
LOG_INFO("Shutdown in %d seconds\n", s);
|
||||||
shutdownAtMsec = (s < 0) ? 0 : (millis() + s * 1000);
|
shutdownAtMsec = (s < 0) ? 0 : (millis() + s * 1000);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case AdminMessage_get_device_metadata_request_tag: {
|
case meshtastic_AdminMessage_get_device_metadata_request_tag: {
|
||||||
LOG_INFO("Client is getting device metadata\n");
|
LOG_INFO("Client is getting device metadata\n");
|
||||||
handleGetDeviceMetadata(mp);
|
handleGetDeviceMetadata(mp);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case AdminMessage_factory_reset_tag: {
|
case meshtastic_AdminMessage_factory_reset_tag: {
|
||||||
LOG_INFO("Initiating factory reset\n");
|
LOG_INFO("Initiating factory reset\n");
|
||||||
nodeDB.factoryReset();
|
nodeDB.factoryReset();
|
||||||
reboot(DEFAULT_REBOOT_SECONDS);
|
reboot(DEFAULT_REBOOT_SECONDS);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case AdminMessage_nodedb_reset_tag: {
|
case meshtastic_AdminMessage_nodedb_reset_tag: {
|
||||||
LOG_INFO("Initiating node-db reset\n");
|
LOG_INFO("Initiating node-db reset\n");
|
||||||
nodeDB.resetNodes();
|
nodeDB.resetNodes();
|
||||||
reboot(DEFAULT_REBOOT_SECONDS);
|
reboot(DEFAULT_REBOOT_SECONDS);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case AdminMessage_begin_edit_settings_tag: {
|
case meshtastic_AdminMessage_begin_edit_settings_tag: {
|
||||||
LOG_INFO("Beginning transaction for editing settings\n");
|
LOG_INFO("Beginning transaction for editing settings\n");
|
||||||
hasOpenEditTransaction = true;
|
hasOpenEditTransaction = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case AdminMessage_commit_edit_settings_tag: {
|
case meshtastic_AdminMessage_commit_edit_settings_tag: {
|
||||||
LOG_INFO("Committing transaction for edited settings\n");
|
LOG_INFO("Committing transaction for edited settings\n");
|
||||||
hasOpenEditTransaction = false;
|
hasOpenEditTransaction = false;
|
||||||
saveChanges(SEGMENT_CONFIG | SEGMENT_MODULECONFIG | SEGMENT_DEVICESTATE | SEGMENT_CHANNELS);
|
saveChanges(SEGMENT_CONFIG | SEGMENT_MODULECONFIG | SEGMENT_DEVICESTATE | SEGMENT_CHANNELS);
|
||||||
@@ -167,7 +167,7 @@ bool AdminModule::handleReceivedProtobuf(const MeshPacket &mp, AdminMessage *r)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
default:
|
default:
|
||||||
AdminMessage res = AdminMessage_init_default;
|
meshtastic_AdminMessage res = meshtastic_AdminMessage_init_default;
|
||||||
AdminMessageHandleResult handleResult = MeshModule::handleAdminMessageForAllPlugins(mp, r, &res);
|
AdminMessageHandleResult handleResult = MeshModule::handleAdminMessageForAllPlugins(mp, r, &res);
|
||||||
|
|
||||||
if (handleResult == AdminMessageHandleResult::HANDLED_WITH_RESPONSE) {
|
if (handleResult == AdminMessageHandleResult::HANDLED_WITH_RESPONSE) {
|
||||||
@@ -183,7 +183,7 @@ bool AdminModule::handleReceivedProtobuf(const MeshPacket &mp, AdminMessage *r)
|
|||||||
|
|
||||||
// If asked for a response and it is not yet set, generate an 'ACK' response
|
// If asked for a response and it is not yet set, generate an 'ACK' response
|
||||||
if (mp.decoded.want_response && !myReply) {
|
if (mp.decoded.want_response && !myReply) {
|
||||||
myReply = allocErrorResponse(Routing_Error_NONE, &mp);
|
myReply = allocErrorResponse(meshtastic_Routing_Error_NONE, &mp);
|
||||||
}
|
}
|
||||||
|
|
||||||
return handled;
|
return handled;
|
||||||
@@ -193,7 +193,7 @@ bool AdminModule::handleReceivedProtobuf(const MeshPacket &mp, AdminMessage *r)
|
|||||||
* Setter methods
|
* Setter methods
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void AdminModule::handleSetOwner(const User &o)
|
void AdminModule::handleSetOwner(const meshtastic_User &o)
|
||||||
{
|
{
|
||||||
int changed = 0;
|
int changed = 0;
|
||||||
bool licensed_changed = false;
|
bool licensed_changed = false;
|
||||||
@@ -223,53 +223,53 @@ void AdminModule::handleSetOwner(const User &o)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void AdminModule::handleSetConfig(const Config &c)
|
void AdminModule::handleSetConfig(const meshtastic_Config &c)
|
||||||
{
|
{
|
||||||
bool isRouter = (config.device.role == Config_DeviceConfig_Role_ROUTER);
|
bool isRouter = (config.device.role == meshtastic_Config_DeviceConfig_Role_ROUTER);
|
||||||
bool isRegionUnset = (config.lora.region == Config_LoRaConfig_RegionCode_UNSET);
|
bool isRegionUnset = (config.lora.region == meshtastic_Config_LoRaConfig_RegionCode_UNSET);
|
||||||
|
|
||||||
switch (c.which_payload_variant) {
|
switch (c.which_payload_variant) {
|
||||||
case Config_device_tag:
|
case meshtastic_Config_device_tag:
|
||||||
LOG_INFO("Setting config: Device\n");
|
LOG_INFO("Setting config: Device\n");
|
||||||
config.has_device = true;
|
config.has_device = true;
|
||||||
config.device = c.payload_variant.device;
|
config.device = c.payload_variant.device;
|
||||||
// If we're setting router role for the first time, install its intervals
|
// If we're setting router role for the first time, install its intervals
|
||||||
if (!isRouter && c.payload_variant.device.role == Config_DeviceConfig_Role_ROUTER) {
|
if (!isRouter && c.payload_variant.device.role == meshtastic_Config_DeviceConfig_Role_ROUTER) {
|
||||||
nodeDB.initConfigIntervals();
|
nodeDB.initConfigIntervals();
|
||||||
nodeDB.initModuleConfigIntervals();
|
nodeDB.initModuleConfigIntervals();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case Config_position_tag:
|
case meshtastic_Config_position_tag:
|
||||||
LOG_INFO("Setting config: Position\n");
|
LOG_INFO("Setting config: Position\n");
|
||||||
config.has_position = true;
|
config.has_position = true;
|
||||||
config.position = c.payload_variant.position;
|
config.position = c.payload_variant.position;
|
||||||
// Save nodedb as well in case we got a fixed position packet
|
// Save nodedb as well in case we got a fixed position packet
|
||||||
saveChanges(SEGMENT_DEVICESTATE, false);
|
saveChanges(SEGMENT_DEVICESTATE, false);
|
||||||
break;
|
break;
|
||||||
case Config_power_tag:
|
case meshtastic_Config_power_tag:
|
||||||
LOG_INFO("Setting config: Power\n");
|
LOG_INFO("Setting config: Power\n");
|
||||||
config.has_power = true;
|
config.has_power = true;
|
||||||
config.power = c.payload_variant.power;
|
config.power = c.payload_variant.power;
|
||||||
break;
|
break;
|
||||||
case Config_network_tag:
|
case meshtastic_Config_network_tag:
|
||||||
LOG_INFO("Setting config: WiFi\n");
|
LOG_INFO("Setting config: WiFi\n");
|
||||||
config.has_network = true;
|
config.has_network = true;
|
||||||
config.network = c.payload_variant.network;
|
config.network = c.payload_variant.network;
|
||||||
break;
|
break;
|
||||||
case Config_display_tag:
|
case meshtastic_Config_display_tag:
|
||||||
LOG_INFO("Setting config: Display\n");
|
LOG_INFO("Setting config: Display\n");
|
||||||
config.has_display = true;
|
config.has_display = true;
|
||||||
config.display = c.payload_variant.display;
|
config.display = c.payload_variant.display;
|
||||||
break;
|
break;
|
||||||
case Config_lora_tag:
|
case meshtastic_Config_lora_tag:
|
||||||
LOG_INFO("Setting config: LoRa\n");
|
LOG_INFO("Setting config: LoRa\n");
|
||||||
config.has_lora = true;
|
config.has_lora = true;
|
||||||
config.lora = c.payload_variant.lora;
|
config.lora = c.payload_variant.lora;
|
||||||
if (isRegionUnset && config.lora.region > Config_LoRaConfig_RegionCode_UNSET) {
|
if (isRegionUnset && config.lora.region > meshtastic_Config_LoRaConfig_RegionCode_UNSET) {
|
||||||
config.lora.tx_enabled = true;
|
config.lora.tx_enabled = true;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case Config_bluetooth_tag:
|
case meshtastic_Config_bluetooth_tag:
|
||||||
LOG_INFO("Setting config: Bluetooth\n");
|
LOG_INFO("Setting config: Bluetooth\n");
|
||||||
config.has_bluetooth = true;
|
config.has_bluetooth = true;
|
||||||
config.bluetooth = c.payload_variant.bluetooth;
|
config.bluetooth = c.payload_variant.bluetooth;
|
||||||
@@ -279,50 +279,50 @@ void AdminModule::handleSetConfig(const Config &c)
|
|||||||
saveChanges(SEGMENT_CONFIG);
|
saveChanges(SEGMENT_CONFIG);
|
||||||
}
|
}
|
||||||
|
|
||||||
void AdminModule::handleSetModuleConfig(const ModuleConfig &c)
|
void AdminModule::handleSetModuleConfig(const meshtastic_ModuleConfig &c)
|
||||||
{
|
{
|
||||||
switch (c.which_payload_variant) {
|
switch (c.which_payload_variant) {
|
||||||
case ModuleConfig_mqtt_tag:
|
case meshtastic_ModuleConfig_mqtt_tag:
|
||||||
LOG_INFO("Setting module config: MQTT\n");
|
LOG_INFO("Setting module config: MQTT\n");
|
||||||
moduleConfig.has_mqtt = true;
|
moduleConfig.has_mqtt = true;
|
||||||
moduleConfig.mqtt = c.payload_variant.mqtt;
|
moduleConfig.mqtt = c.payload_variant.mqtt;
|
||||||
break;
|
break;
|
||||||
case ModuleConfig_serial_tag:
|
case meshtastic_ModuleConfig_serial_tag:
|
||||||
LOG_INFO("Setting module config: Serial\n");
|
LOG_INFO("Setting module config: Serial\n");
|
||||||
moduleConfig.has_serial = true;
|
moduleConfig.has_serial = true;
|
||||||
moduleConfig.serial = c.payload_variant.serial;
|
moduleConfig.serial = c.payload_variant.serial;
|
||||||
break;
|
break;
|
||||||
case ModuleConfig_external_notification_tag:
|
case meshtastic_ModuleConfig_external_notification_tag:
|
||||||
LOG_INFO("Setting module config: External Notification\n");
|
LOG_INFO("Setting module config: External Notification\n");
|
||||||
moduleConfig.has_external_notification = true;
|
moduleConfig.has_external_notification = true;
|
||||||
moduleConfig.external_notification = c.payload_variant.external_notification;
|
moduleConfig.external_notification = c.payload_variant.external_notification;
|
||||||
break;
|
break;
|
||||||
case ModuleConfig_store_forward_tag:
|
case meshtastic_ModuleConfig_store_forward_tag:
|
||||||
LOG_INFO("Setting module config: Store & Forward\n");
|
LOG_INFO("Setting module config: Store & Forward\n");
|
||||||
moduleConfig.has_store_forward = true;
|
moduleConfig.has_store_forward = true;
|
||||||
moduleConfig.store_forward = c.payload_variant.store_forward;
|
moduleConfig.store_forward = c.payload_variant.store_forward;
|
||||||
break;
|
break;
|
||||||
case ModuleConfig_range_test_tag:
|
case meshtastic_ModuleConfig_range_test_tag:
|
||||||
LOG_INFO("Setting module config: Range Test\n");
|
LOG_INFO("Setting module config: Range Test\n");
|
||||||
moduleConfig.has_range_test = true;
|
moduleConfig.has_range_test = true;
|
||||||
moduleConfig.range_test = c.payload_variant.range_test;
|
moduleConfig.range_test = c.payload_variant.range_test;
|
||||||
break;
|
break;
|
||||||
case ModuleConfig_telemetry_tag:
|
case meshtastic_ModuleConfig_telemetry_tag:
|
||||||
LOG_INFO("Setting module config: Telemetry\n");
|
LOG_INFO("Setting module config: Telemetry\n");
|
||||||
moduleConfig.has_telemetry = true;
|
moduleConfig.has_telemetry = true;
|
||||||
moduleConfig.telemetry = c.payload_variant.telemetry;
|
moduleConfig.telemetry = c.payload_variant.telemetry;
|
||||||
break;
|
break;
|
||||||
case ModuleConfig_canned_message_tag:
|
case meshtastic_ModuleConfig_canned_message_tag:
|
||||||
LOG_INFO("Setting module config: Canned Message\n");
|
LOG_INFO("Setting module config: Canned Message\n");
|
||||||
moduleConfig.has_canned_message = true;
|
moduleConfig.has_canned_message = true;
|
||||||
moduleConfig.canned_message = c.payload_variant.canned_message;
|
moduleConfig.canned_message = c.payload_variant.canned_message;
|
||||||
break;
|
break;
|
||||||
case ModuleConfig_audio_tag:
|
case meshtastic_ModuleConfig_audio_tag:
|
||||||
LOG_INFO("Setting module config: Audio\n");
|
LOG_INFO("Setting module config: Audio\n");
|
||||||
moduleConfig.has_audio = true;
|
moduleConfig.has_audio = true;
|
||||||
moduleConfig.audio = c.payload_variant.audio;
|
moduleConfig.audio = c.payload_variant.audio;
|
||||||
break;
|
break;
|
||||||
case ModuleConfig_remote_hardware_tag:
|
case meshtastic_ModuleConfig_remote_hardware_tag:
|
||||||
LOG_INFO("Setting module config: Remote Hardware\n");
|
LOG_INFO("Setting module config: Remote Hardware\n");
|
||||||
moduleConfig.has_remote_hardware = true;
|
moduleConfig.has_remote_hardware = true;
|
||||||
moduleConfig.remote_hardware = c.payload_variant.remote_hardware;
|
moduleConfig.remote_hardware = c.payload_variant.remote_hardware;
|
||||||
@@ -332,7 +332,7 @@ void AdminModule::handleSetModuleConfig(const ModuleConfig &c)
|
|||||||
saveChanges(SEGMENT_MODULECONFIG);
|
saveChanges(SEGMENT_MODULECONFIG);
|
||||||
}
|
}
|
||||||
|
|
||||||
void AdminModule::handleSetChannel(const Channel &cc)
|
void AdminModule::handleSetChannel(const meshtastic_Channel &cc)
|
||||||
{
|
{
|
||||||
channels.setChannel(cc);
|
channels.setChannel(cc);
|
||||||
channels.onConfigChanged(); // tell the radios about this change
|
channels.onConfigChanged(); // tell the radios about this change
|
||||||
@@ -343,59 +343,59 @@ void AdminModule::handleSetChannel(const Channel &cc)
|
|||||||
* Getters
|
* Getters
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void AdminModule::handleGetOwner(const MeshPacket &req)
|
void AdminModule::handleGetOwner(const meshtastic_MeshPacket &req)
|
||||||
{
|
{
|
||||||
if (req.decoded.want_response) {
|
if (req.decoded.want_response) {
|
||||||
// We create the reply here
|
// We create the reply here
|
||||||
AdminMessage res = AdminMessage_init_default;
|
meshtastic_AdminMessage res = meshtastic_AdminMessage_init_default;
|
||||||
res.get_owner_response = owner;
|
res.get_owner_response = owner;
|
||||||
|
|
||||||
res.which_payload_variant = AdminMessage_get_owner_response_tag;
|
res.which_payload_variant = meshtastic_AdminMessage_get_owner_response_tag;
|
||||||
myReply = allocDataProtobuf(res);
|
myReply = allocDataProtobuf(res);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void AdminModule::handleGetConfig(const MeshPacket &req, const uint32_t configType)
|
void AdminModule::handleGetConfig(const meshtastic_MeshPacket &req, const uint32_t configType)
|
||||||
{
|
{
|
||||||
AdminMessage res = AdminMessage_init_default;
|
meshtastic_AdminMessage res = meshtastic_AdminMessage_init_default;
|
||||||
|
|
||||||
if (req.decoded.want_response) {
|
if (req.decoded.want_response) {
|
||||||
switch (configType) {
|
switch (configType) {
|
||||||
case AdminMessage_ConfigType_DEVICE_CONFIG:
|
case meshtastic_AdminMessage_ConfigType_DEVICE_CONFIG:
|
||||||
LOG_INFO("Getting config: Device\n");
|
LOG_INFO("Getting config: Device\n");
|
||||||
res.get_config_response.which_payload_variant = Config_device_tag;
|
res.get_config_response.which_payload_variant = meshtastic_Config_device_tag;
|
||||||
res.get_config_response.payload_variant.device = config.device;
|
res.get_config_response.payload_variant.device = config.device;
|
||||||
break;
|
break;
|
||||||
case AdminMessage_ConfigType_POSITION_CONFIG:
|
case meshtastic_AdminMessage_ConfigType_POSITION_CONFIG:
|
||||||
LOG_INFO("Getting config: Position\n");
|
LOG_INFO("Getting config: Position\n");
|
||||||
res.get_config_response.which_payload_variant = Config_position_tag;
|
res.get_config_response.which_payload_variant = meshtastic_Config_position_tag;
|
||||||
res.get_config_response.payload_variant.position = config.position;
|
res.get_config_response.payload_variant.position = config.position;
|
||||||
break;
|
break;
|
||||||
case AdminMessage_ConfigType_POWER_CONFIG:
|
case meshtastic_AdminMessage_ConfigType_POWER_CONFIG:
|
||||||
LOG_INFO("Getting config: Power\n");
|
LOG_INFO("Getting config: Power\n");
|
||||||
res.get_config_response.which_payload_variant = Config_power_tag;
|
res.get_config_response.which_payload_variant = meshtastic_Config_power_tag;
|
||||||
res.get_config_response.payload_variant.power = config.power;
|
res.get_config_response.payload_variant.power = config.power;
|
||||||
break;
|
break;
|
||||||
case AdminMessage_ConfigType_NETWORK_CONFIG:
|
case meshtastic_AdminMessage_ConfigType_NETWORK_CONFIG:
|
||||||
LOG_INFO("Getting config: Network\n");
|
LOG_INFO("Getting config: Network\n");
|
||||||
res.get_config_response.which_payload_variant = Config_network_tag;
|
res.get_config_response.which_payload_variant = meshtastic_Config_network_tag;
|
||||||
res.get_config_response.payload_variant.network = config.network;
|
res.get_config_response.payload_variant.network = config.network;
|
||||||
writeSecret(res.get_config_response.payload_variant.network.wifi_psk,
|
writeSecret(res.get_config_response.payload_variant.network.wifi_psk,
|
||||||
sizeof(res.get_config_response.payload_variant.network.wifi_psk), config.network.wifi_psk);
|
sizeof(res.get_config_response.payload_variant.network.wifi_psk), config.network.wifi_psk);
|
||||||
break;
|
break;
|
||||||
case AdminMessage_ConfigType_DISPLAY_CONFIG:
|
case meshtastic_AdminMessage_ConfigType_DISPLAY_CONFIG:
|
||||||
LOG_INFO("Getting config: Display\n");
|
LOG_INFO("Getting config: Display\n");
|
||||||
res.get_config_response.which_payload_variant = Config_display_tag;
|
res.get_config_response.which_payload_variant = meshtastic_Config_display_tag;
|
||||||
res.get_config_response.payload_variant.display = config.display;
|
res.get_config_response.payload_variant.display = config.display;
|
||||||
break;
|
break;
|
||||||
case AdminMessage_ConfigType_LORA_CONFIG:
|
case meshtastic_AdminMessage_ConfigType_LORA_CONFIG:
|
||||||
LOG_INFO("Getting config: LoRa\n");
|
LOG_INFO("Getting config: LoRa\n");
|
||||||
res.get_config_response.which_payload_variant = Config_lora_tag;
|
res.get_config_response.which_payload_variant = meshtastic_Config_lora_tag;
|
||||||
res.get_config_response.payload_variant.lora = config.lora;
|
res.get_config_response.payload_variant.lora = config.lora;
|
||||||
break;
|
break;
|
||||||
case AdminMessage_ConfigType_BLUETOOTH_CONFIG:
|
case meshtastic_AdminMessage_ConfigType_BLUETOOTH_CONFIG:
|
||||||
LOG_INFO("Getting config: Bluetooth\n");
|
LOG_INFO("Getting config: Bluetooth\n");
|
||||||
res.get_config_response.which_payload_variant = Config_bluetooth_tag;
|
res.get_config_response.which_payload_variant = meshtastic_Config_bluetooth_tag;
|
||||||
res.get_config_response.payload_variant.bluetooth = config.bluetooth;
|
res.get_config_response.payload_variant.bluetooth = config.bluetooth;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -406,60 +406,60 @@ void AdminModule::handleGetConfig(const MeshPacket &req, const uint32_t configTy
|
|||||||
// hideSecret(r.get_radio_response.preferences.wifi_ssid); // hmm - leave public for now, because only minimally private
|
// hideSecret(r.get_radio_response.preferences.wifi_ssid); // hmm - leave public for now, because only minimally private
|
||||||
// and useful for users to know current provisioning) hideSecret(r.get_radio_response.preferences.wifi_password);
|
// and useful for users to know current provisioning) hideSecret(r.get_radio_response.preferences.wifi_password);
|
||||||
// r.get_config_response.which_payloadVariant = Config_ModuleConfig_telemetry_tag;
|
// r.get_config_response.which_payloadVariant = Config_ModuleConfig_telemetry_tag;
|
||||||
res.which_payload_variant = AdminMessage_get_config_response_tag;
|
res.which_payload_variant = meshtastic_AdminMessage_get_config_response_tag;
|
||||||
myReply = allocDataProtobuf(res);
|
myReply = allocDataProtobuf(res);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void AdminModule::handleGetModuleConfig(const MeshPacket &req, const uint32_t configType)
|
void AdminModule::handleGetModuleConfig(const meshtastic_MeshPacket &req, const uint32_t configType)
|
||||||
{
|
{
|
||||||
AdminMessage res = AdminMessage_init_default;
|
meshtastic_AdminMessage res = meshtastic_AdminMessage_init_default;
|
||||||
|
|
||||||
if (req.decoded.want_response) {
|
if (req.decoded.want_response) {
|
||||||
switch (configType) {
|
switch (configType) {
|
||||||
case AdminMessage_ModuleConfigType_MQTT_CONFIG:
|
case meshtastic_AdminMessage_ModuleConfigType_MQTT_CONFIG:
|
||||||
LOG_INFO("Getting module config: MQTT\n");
|
LOG_INFO("Getting module config: MQTT\n");
|
||||||
res.get_module_config_response.which_payload_variant = ModuleConfig_mqtt_tag;
|
res.get_module_config_response.which_payload_variant = meshtastic_ModuleConfig_mqtt_tag;
|
||||||
res.get_module_config_response.payload_variant.mqtt = moduleConfig.mqtt;
|
res.get_module_config_response.payload_variant.mqtt = moduleConfig.mqtt;
|
||||||
break;
|
break;
|
||||||
case AdminMessage_ModuleConfigType_SERIAL_CONFIG:
|
case meshtastic_AdminMessage_ModuleConfigType_SERIAL_CONFIG:
|
||||||
LOG_INFO("Getting module config: Serial\n");
|
LOG_INFO("Getting module config: Serial\n");
|
||||||
res.get_module_config_response.which_payload_variant = ModuleConfig_serial_tag;
|
res.get_module_config_response.which_payload_variant = meshtastic_ModuleConfig_serial_tag;
|
||||||
res.get_module_config_response.payload_variant.serial = moduleConfig.serial;
|
res.get_module_config_response.payload_variant.serial = moduleConfig.serial;
|
||||||
break;
|
break;
|
||||||
case AdminMessage_ModuleConfigType_EXTNOTIF_CONFIG:
|
case meshtastic_AdminMessage_ModuleConfigType_EXTNOTIF_CONFIG:
|
||||||
LOG_INFO("Getting module config: External Notification\n");
|
LOG_INFO("Getting module config: External Notification\n");
|
||||||
res.get_module_config_response.which_payload_variant = ModuleConfig_external_notification_tag;
|
res.get_module_config_response.which_payload_variant = meshtastic_ModuleConfig_external_notification_tag;
|
||||||
res.get_module_config_response.payload_variant.external_notification = moduleConfig.external_notification;
|
res.get_module_config_response.payload_variant.external_notification = moduleConfig.external_notification;
|
||||||
break;
|
break;
|
||||||
case AdminMessage_ModuleConfigType_STOREFORWARD_CONFIG:
|
case meshtastic_AdminMessage_ModuleConfigType_STOREFORWARD_CONFIG:
|
||||||
LOG_INFO("Getting module config: Store & Forward\n");
|
LOG_INFO("Getting module config: Store & Forward\n");
|
||||||
res.get_module_config_response.which_payload_variant = ModuleConfig_store_forward_tag;
|
res.get_module_config_response.which_payload_variant = meshtastic_ModuleConfig_store_forward_tag;
|
||||||
res.get_module_config_response.payload_variant.store_forward = moduleConfig.store_forward;
|
res.get_module_config_response.payload_variant.store_forward = moduleConfig.store_forward;
|
||||||
break;
|
break;
|
||||||
case AdminMessage_ModuleConfigType_RANGETEST_CONFIG:
|
case meshtastic_AdminMessage_ModuleConfigType_RANGETEST_CONFIG:
|
||||||
LOG_INFO("Getting module config: Range Test\n");
|
LOG_INFO("Getting module config: Range Test\n");
|
||||||
res.get_module_config_response.which_payload_variant = ModuleConfig_range_test_tag;
|
res.get_module_config_response.which_payload_variant = meshtastic_ModuleConfig_range_test_tag;
|
||||||
res.get_module_config_response.payload_variant.range_test = moduleConfig.range_test;
|
res.get_module_config_response.payload_variant.range_test = moduleConfig.range_test;
|
||||||
break;
|
break;
|
||||||
case AdminMessage_ModuleConfigType_TELEMETRY_CONFIG:
|
case meshtastic_AdminMessage_ModuleConfigType_TELEMETRY_CONFIG:
|
||||||
LOG_INFO("Getting module config: Telemetry\n");
|
LOG_INFO("Getting module config: Telemetry\n");
|
||||||
res.get_module_config_response.which_payload_variant = ModuleConfig_telemetry_tag;
|
res.get_module_config_response.which_payload_variant = meshtastic_ModuleConfig_telemetry_tag;
|
||||||
res.get_module_config_response.payload_variant.telemetry = moduleConfig.telemetry;
|
res.get_module_config_response.payload_variant.telemetry = moduleConfig.telemetry;
|
||||||
break;
|
break;
|
||||||
case AdminMessage_ModuleConfigType_CANNEDMSG_CONFIG:
|
case meshtastic_AdminMessage_ModuleConfigType_CANNEDMSG_CONFIG:
|
||||||
LOG_INFO("Getting module config: Canned Message\n");
|
LOG_INFO("Getting module config: Canned Message\n");
|
||||||
res.get_module_config_response.which_payload_variant = ModuleConfig_canned_message_tag;
|
res.get_module_config_response.which_payload_variant = meshtastic_ModuleConfig_canned_message_tag;
|
||||||
res.get_module_config_response.payload_variant.canned_message = moduleConfig.canned_message;
|
res.get_module_config_response.payload_variant.canned_message = moduleConfig.canned_message;
|
||||||
break;
|
break;
|
||||||
case AdminMessage_ModuleConfigType_AUDIO_CONFIG:
|
case meshtastic_AdminMessage_ModuleConfigType_AUDIO_CONFIG:
|
||||||
LOG_INFO("Getting module config: Audio\n");
|
LOG_INFO("Getting module config: Audio\n");
|
||||||
res.get_module_config_response.which_payload_variant = ModuleConfig_audio_tag;
|
res.get_module_config_response.which_payload_variant = meshtastic_ModuleConfig_audio_tag;
|
||||||
res.get_module_config_response.payload_variant.audio = moduleConfig.audio;
|
res.get_module_config_response.payload_variant.audio = moduleConfig.audio;
|
||||||
break;
|
break;
|
||||||
case AdminMessage_ModuleConfigType_REMOTEHARDWARE_CONFIG:
|
case meshtastic_AdminMessage_ModuleConfigType_REMOTEHARDWARE_CONFIG:
|
||||||
LOG_INFO("Getting module config: Remote Hardware\n");
|
LOG_INFO("Getting module config: Remote Hardware\n");
|
||||||
res.get_module_config_response.which_payload_variant = ModuleConfig_remote_hardware_tag;
|
res.get_module_config_response.which_payload_variant = meshtastic_ModuleConfig_remote_hardware_tag;
|
||||||
res.get_module_config_response.payload_variant.remote_hardware = moduleConfig.remote_hardware;
|
res.get_module_config_response.payload_variant.remote_hardware = moduleConfig.remote_hardware;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -471,16 +471,16 @@ void AdminModule::handleGetModuleConfig(const MeshPacket &req, const uint32_t co
|
|||||||
// hideSecret(r.get_radio_response.preferences.wifi_ssid); // hmm - leave public for now, because only minimally private
|
// hideSecret(r.get_radio_response.preferences.wifi_ssid); // hmm - leave public for now, because only minimally private
|
||||||
// and useful for users to know current provisioning) hideSecret(r.get_radio_response.preferences.wifi_password);
|
// and useful for users to know current provisioning) hideSecret(r.get_radio_response.preferences.wifi_password);
|
||||||
// r.get_config_response.which_payloadVariant = Config_ModuleConfig_telemetry_tag;
|
// r.get_config_response.which_payloadVariant = Config_ModuleConfig_telemetry_tag;
|
||||||
res.which_payload_variant = AdminMessage_get_module_config_response_tag;
|
res.which_payload_variant = meshtastic_AdminMessage_get_module_config_response_tag;
|
||||||
myReply = allocDataProtobuf(res);
|
myReply = allocDataProtobuf(res);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void AdminModule::handleGetDeviceMetadata(const MeshPacket &req)
|
void AdminModule::handleGetDeviceMetadata(const meshtastic_MeshPacket &req)
|
||||||
{
|
{
|
||||||
AdminMessage r = AdminMessage_init_default;
|
meshtastic_AdminMessage r = meshtastic_AdminMessage_init_default;
|
||||||
|
|
||||||
DeviceMetadata deviceMetadata;
|
meshtastic_DeviceMetadata deviceMetadata;
|
||||||
strncpy(deviceMetadata.firmware_version, myNodeInfo.firmware_version, 18);
|
strncpy(deviceMetadata.firmware_version, myNodeInfo.firmware_version, 18);
|
||||||
deviceMetadata.device_state_version = DEVICESTATE_CUR_VER;
|
deviceMetadata.device_state_version = DEVICESTATE_CUR_VER;
|
||||||
deviceMetadata.canShutdown = pmu_found || HAS_CPU_SHUTDOWN;
|
deviceMetadata.canShutdown = pmu_found || HAS_CPU_SHUTDOWN;
|
||||||
@@ -491,17 +491,17 @@ void AdminModule::handleGetDeviceMetadata(const MeshPacket &req)
|
|||||||
deviceMetadata.position_flags = config.position.position_flags;
|
deviceMetadata.position_flags = config.position.position_flags;
|
||||||
|
|
||||||
r.get_device_metadata_response = deviceMetadata;
|
r.get_device_metadata_response = deviceMetadata;
|
||||||
r.which_payload_variant = AdminMessage_get_device_metadata_response_tag;
|
r.which_payload_variant = meshtastic_AdminMessage_get_device_metadata_response_tag;
|
||||||
myReply = allocDataProtobuf(r);
|
myReply = allocDataProtobuf(r);
|
||||||
}
|
}
|
||||||
|
|
||||||
void AdminModule::handleGetChannel(const MeshPacket &req, uint32_t channelIndex)
|
void AdminModule::handleGetChannel(const meshtastic_MeshPacket &req, uint32_t channelIndex)
|
||||||
{
|
{
|
||||||
if (req.decoded.want_response) {
|
if (req.decoded.want_response) {
|
||||||
// We create the reply here
|
// We create the reply here
|
||||||
AdminMessage r = AdminMessage_init_default;
|
meshtastic_AdminMessage r = meshtastic_AdminMessage_init_default;
|
||||||
r.get_channel_response = channels.getByIndex(channelIndex);
|
r.get_channel_response = channels.getByIndex(channelIndex);
|
||||||
r.which_payload_variant = AdminMessage_get_channel_response_tag;
|
r.which_payload_variant = meshtastic_AdminMessage_get_channel_response_tag;
|
||||||
myReply = allocDataProtobuf(r);
|
myReply = allocDataProtobuf(r);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -526,7 +526,7 @@ void AdminModule::saveChanges(int saveWhat, bool shouldReboot)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
AdminModule::AdminModule() : ProtobufModule("Admin", PortNum_ADMIN_APP, &AdminMessage_msg)
|
AdminModule::AdminModule() : ProtobufModule("Admin", meshtastic_PortNum_ADMIN_APP, &meshtastic_AdminMessage_msg)
|
||||||
{
|
{
|
||||||
// restrict to the admin channel for rx
|
// restrict to the admin channel for rx
|
||||||
boundChannel = Channels::adminChannel;
|
boundChannel = Channels::adminChannel;
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
/**
|
/**
|
||||||
* Admin module for admin messages
|
* Admin module for admin messages
|
||||||
*/
|
*/
|
||||||
class AdminModule : public ProtobufModule<AdminMessage>
|
class AdminModule : public ProtobufModule<meshtastic_AdminMessage>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
/** Constructor
|
/** Constructor
|
||||||
@@ -17,7 +17,7 @@ class AdminModule : public ProtobufModule<AdminMessage>
|
|||||||
|
|
||||||
@return true if you've guaranteed you've handled this message and no other handlers should be considered for it
|
@return true if you've guaranteed you've handled this message and no other handlers should be considered for it
|
||||||
*/
|
*/
|
||||||
virtual bool handleReceivedProtobuf(const MeshPacket &mp, AdminMessage *p) override;
|
virtual bool handleReceivedProtobuf(const meshtastic_MeshPacket &mp, meshtastic_AdminMessage *p) override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
bool hasOpenEditTransaction = false;
|
bool hasOpenEditTransaction = false;
|
||||||
@@ -26,19 +26,19 @@ class AdminModule : public ProtobufModule<AdminMessage>
|
|||||||
/**
|
/**
|
||||||
* Getters
|
* Getters
|
||||||
*/
|
*/
|
||||||
void handleGetOwner(const MeshPacket &req);
|
void handleGetOwner(const meshtastic_MeshPacket &req);
|
||||||
void handleGetConfig(const MeshPacket &req, uint32_t configType);
|
void handleGetConfig(const meshtastic_MeshPacket &req, uint32_t configType);
|
||||||
void handleGetModuleConfig(const MeshPacket &req, uint32_t configType);
|
void handleGetModuleConfig(const meshtastic_MeshPacket &req, uint32_t configType);
|
||||||
void handleGetChannel(const MeshPacket &req, uint32_t channelIndex);
|
void handleGetChannel(const meshtastic_MeshPacket &req, uint32_t channelIndex);
|
||||||
void handleGetDeviceMetadata(const MeshPacket &req);
|
void handleGetDeviceMetadata(const meshtastic_MeshPacket &req);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Setters
|
* Setters
|
||||||
*/
|
*/
|
||||||
void handleSetOwner(const User &o);
|
void handleSetOwner(const meshtastic_User &o);
|
||||||
void handleSetChannel(const Channel &cc);
|
void handleSetChannel(const meshtastic_Channel &cc);
|
||||||
void handleSetConfig(const Config &c);
|
void handleSetConfig(const meshtastic_Config &c);
|
||||||
void handleSetModuleConfig(const ModuleConfig &c);
|
void handleSetModuleConfig(const meshtastic_ModuleConfig &c);
|
||||||
void handleSetChannel();
|
void handleSetChannel();
|
||||||
void reboot(int32_t seconds);
|
void reboot(int32_t seconds);
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -39,12 +39,12 @@ extern uint8_t cardkb_found;
|
|||||||
|
|
||||||
static const char *cannedMessagesConfigFile = "/prefs/cannedConf.proto";
|
static const char *cannedMessagesConfigFile = "/prefs/cannedConf.proto";
|
||||||
|
|
||||||
CannedMessageModuleConfig cannedMessageModuleConfig;
|
meshtastic_CannedMessageModuleConfig cannedMessageModuleConfig;
|
||||||
|
|
||||||
CannedMessageModule *cannedMessageModule;
|
CannedMessageModule *cannedMessageModule;
|
||||||
|
|
||||||
CannedMessageModule::CannedMessageModule()
|
CannedMessageModule::CannedMessageModule()
|
||||||
: SinglePortModule("canned", PortNum_TEXT_MESSAGE_APP), concurrency::OSThread("CannedMessageModule")
|
: SinglePortModule("canned", meshtastic_PortNum_TEXT_MESSAGE_APP), concurrency::OSThread("CannedMessageModule")
|
||||||
{
|
{
|
||||||
if (moduleConfig.canned_message.enabled) {
|
if (moduleConfig.canned_message.enabled) {
|
||||||
this->loadProtoForModule();
|
this->loadProtoForModule();
|
||||||
@@ -122,17 +122,17 @@ int CannedMessageModule::handleInputEvent(const InputEvent *event)
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool validEvent = false;
|
bool validEvent = false;
|
||||||
if (event->inputEvent == static_cast<char>(ModuleConfig_CannedMessageConfig_InputEventChar_UP)) {
|
if (event->inputEvent == static_cast<char>(meshtastic_ModuleConfig_CannedMessageConfig_InputEventChar_UP)) {
|
||||||
LOG_DEBUG("Canned message event UP\n");
|
LOG_DEBUG("Canned message event UP\n");
|
||||||
this->runState = CANNED_MESSAGE_RUN_STATE_ACTION_UP;
|
this->runState = CANNED_MESSAGE_RUN_STATE_ACTION_UP;
|
||||||
validEvent = true;
|
validEvent = true;
|
||||||
}
|
}
|
||||||
if (event->inputEvent == static_cast<char>(ModuleConfig_CannedMessageConfig_InputEventChar_DOWN)) {
|
if (event->inputEvent == static_cast<char>(meshtastic_ModuleConfig_CannedMessageConfig_InputEventChar_DOWN)) {
|
||||||
LOG_DEBUG("Canned message event DOWN\n");
|
LOG_DEBUG("Canned message event DOWN\n");
|
||||||
this->runState = CANNED_MESSAGE_RUN_STATE_ACTION_DOWN;
|
this->runState = CANNED_MESSAGE_RUN_STATE_ACTION_DOWN;
|
||||||
validEvent = true;
|
validEvent = true;
|
||||||
}
|
}
|
||||||
if (event->inputEvent == static_cast<char>(ModuleConfig_CannedMessageConfig_InputEventChar_SELECT)) {
|
if (event->inputEvent == static_cast<char>(meshtastic_ModuleConfig_CannedMessageConfig_InputEventChar_SELECT)) {
|
||||||
LOG_DEBUG("Canned message event Select\n");
|
LOG_DEBUG("Canned message event Select\n");
|
||||||
// when inactive, call the onebutton shortpress instead. Activate Module only on up/down
|
// when inactive, call the onebutton shortpress instead. Activate Module only on up/down
|
||||||
if ((this->runState == CANNED_MESSAGE_RUN_STATE_INACTIVE) || (this->runState == CANNED_MESSAGE_RUN_STATE_DISABLED)) {
|
if ((this->runState == CANNED_MESSAGE_RUN_STATE_INACTIVE) || (this->runState == CANNED_MESSAGE_RUN_STATE_DISABLED)) {
|
||||||
@@ -143,15 +143,15 @@ int CannedMessageModule::handleInputEvent(const InputEvent *event)
|
|||||||
validEvent = true;
|
validEvent = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (event->inputEvent == static_cast<char>(ModuleConfig_CannedMessageConfig_InputEventChar_CANCEL)) {
|
if (event->inputEvent == static_cast<char>(meshtastic_ModuleConfig_CannedMessageConfig_InputEventChar_CANCEL)) {
|
||||||
LOG_DEBUG("Canned message event Cancel\n");
|
LOG_DEBUG("Canned message event Cancel\n");
|
||||||
// emulate a timeout. Same result
|
// emulate a timeout. Same result
|
||||||
this->lastTouchMillis = 0;
|
this->lastTouchMillis = 0;
|
||||||
validEvent = true;
|
validEvent = true;
|
||||||
}
|
}
|
||||||
if ((event->inputEvent == static_cast<char>(ModuleConfig_CannedMessageConfig_InputEventChar_BACK)) ||
|
if ((event->inputEvent == static_cast<char>(meshtastic_ModuleConfig_CannedMessageConfig_InputEventChar_BACK)) ||
|
||||||
(event->inputEvent == static_cast<char>(ModuleConfig_CannedMessageConfig_InputEventChar_LEFT)) ||
|
(event->inputEvent == static_cast<char>(meshtastic_ModuleConfig_CannedMessageConfig_InputEventChar_LEFT)) ||
|
||||||
(event->inputEvent == static_cast<char>(ModuleConfig_CannedMessageConfig_InputEventChar_RIGHT))) {
|
(event->inputEvent == static_cast<char>(meshtastic_ModuleConfig_CannedMessageConfig_InputEventChar_RIGHT))) {
|
||||||
LOG_DEBUG("Canned message event (%x)\n", event->kbchar);
|
LOG_DEBUG("Canned message event (%x)\n", event->kbchar);
|
||||||
if (this->runState == CANNED_MESSAGE_RUN_STATE_FREETEXT) {
|
if (this->runState == CANNED_MESSAGE_RUN_STATE_FREETEXT) {
|
||||||
// pass the pressed key
|
// pass the pressed key
|
||||||
@@ -192,7 +192,7 @@ int CannedMessageModule::handleInputEvent(const InputEvent *event)
|
|||||||
|
|
||||||
void CannedMessageModule::sendText(NodeNum dest, const char *message, bool wantReplies)
|
void CannedMessageModule::sendText(NodeNum dest, const char *message, bool wantReplies)
|
||||||
{
|
{
|
||||||
MeshPacket *p = allocDataPacket();
|
meshtastic_MeshPacket *p = allocDataPacket();
|
||||||
p->to = dest;
|
p->to = dest;
|
||||||
p->want_ack = true;
|
p->want_ack = true;
|
||||||
p->decoded.payload.size = strlen(message);
|
p->decoded.payload.size = strlen(message);
|
||||||
@@ -360,9 +360,9 @@ int32_t CannedMessageModule::runOnce()
|
|||||||
this->freetext.substring(0, this->cursor) + this->payload + this->freetext.substring(this->cursor);
|
this->freetext.substring(0, this->cursor) + this->payload + this->freetext.substring(this->cursor);
|
||||||
}
|
}
|
||||||
this->cursor += 1;
|
this->cursor += 1;
|
||||||
if (this->freetext.length() > Constants_DATA_PAYLOAD_LEN) {
|
if (this->freetext.length() > meshtastic_Constants_DATA_PAYLOAD_LEN) {
|
||||||
this->cursor = Constants_DATA_PAYLOAD_LEN;
|
this->cursor = meshtastic_Constants_DATA_PAYLOAD_LEN;
|
||||||
this->freetext = this->freetext.substring(0, Constants_DATA_PAYLOAD_LEN);
|
this->freetext = this->freetext.substring(0, meshtastic_Constants_DATA_PAYLOAD_LEN);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -398,7 +398,7 @@ const char *CannedMessageModule::getNodeName(NodeNum node)
|
|||||||
if (node == NODENUM_BROADCAST) {
|
if (node == NODENUM_BROADCAST) {
|
||||||
return "Broadcast";
|
return "Broadcast";
|
||||||
} else {
|
} else {
|
||||||
NodeInfo *info = nodeDB.getNode(node);
|
meshtastic_NodeInfo *info = nodeDB.getNode(node);
|
||||||
if (info != NULL) {
|
if (info != NULL) {
|
||||||
return info->user.long_name;
|
return info->user.long_name;
|
||||||
} else {
|
} else {
|
||||||
@@ -457,7 +457,7 @@ void CannedMessageModule::drawFrame(OLEDDisplay *display, OLEDDisplayUiState *st
|
|||||||
}
|
}
|
||||||
display->drawStringf(0 + x, 0 + y, buffer, "To: %s", cannedMessageModule->getNodeName(this->dest));
|
display->drawStringf(0 + x, 0 + y, buffer, "To: %s", cannedMessageModule->getNodeName(this->dest));
|
||||||
// used chars right aligned
|
// used chars right aligned
|
||||||
snprintf(buffer, sizeof(buffer), "%d left", Constants_DATA_PAYLOAD_LEN - this->freetext.length());
|
snprintf(buffer, sizeof(buffer), "%d left", meshtastic_Constants_DATA_PAYLOAD_LEN - this->freetext.length());
|
||||||
display->drawString(x + display->getWidth() - display->getStringWidth(buffer), y + 0, buffer);
|
display->drawString(x + display->getWidth() - display->getStringWidth(buffer), y + 0, buffer);
|
||||||
if (this->destSelect) {
|
if (this->destSelect) {
|
||||||
display->drawString(x + display->getWidth() - display->getStringWidth(buffer) - 1, y + 0, buffer);
|
display->drawString(x + display->getWidth() - display->getStringWidth(buffer) - 1, y + 0, buffer);
|
||||||
@@ -483,8 +483,8 @@ void CannedMessageModule::drawFrame(OLEDDisplay *display, OLEDDisplayUiState *st
|
|||||||
|
|
||||||
void CannedMessageModule::loadProtoForModule()
|
void CannedMessageModule::loadProtoForModule()
|
||||||
{
|
{
|
||||||
if (!nodeDB.loadProto(cannedMessagesConfigFile, CannedMessageModuleConfig_size, sizeof(CannedMessageModuleConfig),
|
if (!nodeDB.loadProto(cannedMessagesConfigFile, meshtastic_CannedMessageModuleConfig_size, sizeof(meshtastic_CannedMessageModuleConfig),
|
||||||
&CannedMessageModuleConfig_msg, &cannedMessageModuleConfig)) {
|
&meshtastic_CannedMessageModuleConfig_msg, &cannedMessageModuleConfig)) {
|
||||||
installDefaultCannedMessageModuleConfig();
|
installDefaultCannedMessageModuleConfig();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -503,7 +503,7 @@ bool CannedMessageModule::saveProtoForModule()
|
|||||||
FS.mkdir("/prefs");
|
FS.mkdir("/prefs");
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
okay &= nodeDB.saveProto(cannedMessagesConfigFile, CannedMessageModuleConfig_size, &CannedMessageModuleConfig_msg,
|
okay &= nodeDB.saveProto(cannedMessagesConfigFile, meshtastic_CannedMessageModuleConfig_size, &meshtastic_CannedMessageModuleConfig_msg,
|
||||||
&cannedMessageModuleConfig);
|
&cannedMessageModuleConfig);
|
||||||
|
|
||||||
return okay;
|
return okay;
|
||||||
@@ -526,19 +526,19 @@ void CannedMessageModule::installDefaultCannedMessageModuleConfig()
|
|||||||
* @return AdminMessageHandleResult HANDLED if message was handled
|
* @return AdminMessageHandleResult HANDLED if message was handled
|
||||||
* HANDLED_WITH_RESULT if a result is also prepared.
|
* HANDLED_WITH_RESULT if a result is also prepared.
|
||||||
*/
|
*/
|
||||||
AdminMessageHandleResult CannedMessageModule::handleAdminMessageForModule(const MeshPacket &mp, AdminMessage *request,
|
AdminMessageHandleResult CannedMessageModule::handleAdminMessageForModule(const meshtastic_MeshPacket &mp, meshtastic_AdminMessage *request,
|
||||||
AdminMessage *response)
|
meshtastic_AdminMessage *response)
|
||||||
{
|
{
|
||||||
AdminMessageHandleResult result;
|
AdminMessageHandleResult result;
|
||||||
|
|
||||||
switch (request->which_payload_variant) {
|
switch (request->which_payload_variant) {
|
||||||
case AdminMessage_get_canned_message_module_messages_request_tag:
|
case meshtastic_AdminMessage_get_canned_message_module_messages_request_tag:
|
||||||
LOG_DEBUG("Client is getting radio canned messages\n");
|
LOG_DEBUG("Client is getting radio canned messages\n");
|
||||||
this->handleGetCannedMessageModuleMessages(mp, response);
|
this->handleGetCannedMessageModuleMessages(mp, response);
|
||||||
result = AdminMessageHandleResult::HANDLED_WITH_RESPONSE;
|
result = AdminMessageHandleResult::HANDLED_WITH_RESPONSE;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case AdminMessage_set_canned_message_module_messages_tag:
|
case meshtastic_AdminMessage_set_canned_message_module_messages_tag:
|
||||||
LOG_DEBUG("Client is setting radio canned messages\n");
|
LOG_DEBUG("Client is setting radio canned messages\n");
|
||||||
this->handleSetCannedMessageModuleMessages(request->set_canned_message_module_messages);
|
this->handleSetCannedMessageModuleMessages(request->set_canned_message_module_messages);
|
||||||
result = AdminMessageHandleResult::HANDLED;
|
result = AdminMessageHandleResult::HANDLED;
|
||||||
@@ -551,11 +551,11 @@ AdminMessageHandleResult CannedMessageModule::handleAdminMessageForModule(const
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
void CannedMessageModule::handleGetCannedMessageModuleMessages(const MeshPacket &req, AdminMessage *response)
|
void CannedMessageModule::handleGetCannedMessageModuleMessages(const meshtastic_MeshPacket &req, meshtastic_AdminMessage *response)
|
||||||
{
|
{
|
||||||
LOG_DEBUG("*** handleGetCannedMessageModuleMessages\n");
|
LOG_DEBUG("*** handleGetCannedMessageModuleMessages\n");
|
||||||
if (req.decoded.want_response) {
|
if (req.decoded.want_response) {
|
||||||
response->which_payload_variant = AdminMessage_get_canned_message_module_messages_response_tag;
|
response->which_payload_variant = meshtastic_AdminMessage_get_canned_message_module_messages_response_tag;
|
||||||
strncpy(response->get_canned_message_module_messages_response, cannedMessageModuleConfig.messages,
|
strncpy(response->get_canned_message_module_messages_response, cannedMessageModuleConfig.messages,
|
||||||
sizeof(response->get_canned_message_module_messages_response));
|
sizeof(response->get_canned_message_module_messages_response));
|
||||||
} // Don't send anything if not instructed to. Better than asserting.
|
} // Don't send anything if not instructed to. Better than asserting.
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ class CannedMessageModule : public SinglePortModule, public Observable<const UIF
|
|||||||
void eventDown();
|
void eventDown();
|
||||||
void eventSelect();
|
void eventSelect();
|
||||||
|
|
||||||
void handleGetCannedMessageModuleMessages(const MeshPacket &req, AdminMessage *response);
|
void handleGetCannedMessageModuleMessages(const meshtastic_MeshPacket &req, meshtastic_AdminMessage *response);
|
||||||
void handleSetCannedMessageModuleMessages(const char *from_msg);
|
void handleSetCannedMessageModuleMessages(const char *from_msg);
|
||||||
|
|
||||||
String drawWithCursor(String text, int cursor);
|
String drawWithCursor(String text, int cursor);
|
||||||
@@ -54,8 +54,8 @@ class CannedMessageModule : public SinglePortModule, public Observable<const UIF
|
|||||||
virtual bool wantUIFrame() override { return this->shouldDraw(); }
|
virtual bool wantUIFrame() override { return this->shouldDraw(); }
|
||||||
virtual Observable<const UIFrameEvent *> *getUIFrameObservable() override { return this; }
|
virtual Observable<const UIFrameEvent *> *getUIFrameObservable() override { return this; }
|
||||||
virtual void drawFrame(OLEDDisplay *display, OLEDDisplayUiState *state, int16_t x, int16_t y) override;
|
virtual void drawFrame(OLEDDisplay *display, OLEDDisplayUiState *state, int16_t x, int16_t y) override;
|
||||||
virtual AdminMessageHandleResult handleAdminMessageForModule(const MeshPacket &mp, AdminMessage *request,
|
virtual AdminMessageHandleResult handleAdminMessageForModule(const meshtastic_MeshPacket &mp, meshtastic_AdminMessage *request,
|
||||||
AdminMessage *response) override;
|
meshtastic_AdminMessage *response) override;
|
||||||
|
|
||||||
void loadProtoForModule();
|
void loadProtoForModule();
|
||||||
bool saveProtoForModule();
|
bool saveProtoForModule();
|
||||||
|
|||||||
@@ -27,7 +27,7 @@
|
|||||||
|
|
||||||
#define ASCII_BELL 0x07
|
#define ASCII_BELL 0x07
|
||||||
|
|
||||||
RTTTLConfig rtttlConfig;
|
meshtastic_RTTTLConfig rtttlConfig;
|
||||||
|
|
||||||
ExternalNotificationModule *externalNotificationModule;
|
ExternalNotificationModule *externalNotificationModule;
|
||||||
|
|
||||||
@@ -142,7 +142,7 @@ void ExternalNotificationModule::stopNow()
|
|||||||
}
|
}
|
||||||
|
|
||||||
ExternalNotificationModule::ExternalNotificationModule()
|
ExternalNotificationModule::ExternalNotificationModule()
|
||||||
: SinglePortModule("ExternalNotificationModule", PortNum_TEXT_MESSAGE_APP), concurrency::OSThread(
|
: SinglePortModule("ExternalNotificationModule", meshtastic_PortNum_TEXT_MESSAGE_APP), concurrency::OSThread(
|
||||||
"ExternalNotificationModule")
|
"ExternalNotificationModule")
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
@@ -164,7 +164,7 @@ ExternalNotificationModule::ExternalNotificationModule()
|
|||||||
// moduleConfig.external_notification.nag_timeout = 300;
|
// moduleConfig.external_notification.nag_timeout = 300;
|
||||||
|
|
||||||
if (moduleConfig.external_notification.enabled) {
|
if (moduleConfig.external_notification.enabled) {
|
||||||
if (!nodeDB.loadProto(rtttlConfigFile, RTTTLConfig_size, sizeof(RTTTLConfig), &RTTTLConfig_msg, &rtttlConfig)) {
|
if (!nodeDB.loadProto(rtttlConfigFile, meshtastic_RTTTLConfig_size, sizeof(meshtastic_RTTTLConfig), &meshtastic_RTTTLConfig_msg, &rtttlConfig)) {
|
||||||
memset(rtttlConfig.ringtone, 0, sizeof(rtttlConfig.ringtone));
|
memset(rtttlConfig.ringtone, 0, sizeof(rtttlConfig.ringtone));
|
||||||
strncpy(rtttlConfig.ringtone,
|
strncpy(rtttlConfig.ringtone,
|
||||||
"a:d=8,o=5,b=125:4d#6,a#,2d#6,16p,g#,4a#,4d#.,p,16g,16a#,d#6,a#,f6,2d#6,16p,c#.6,16c6,16a#,g#.,2a#",
|
"a:d=8,o=5,b=125:4d#6,a#,2d#6,16p,g#,4a#,4d#.,p,16g,16a#,d#6,a#,f6,2d#6,16p,c#.6,16c6,16a#,g#.,2a#",
|
||||||
@@ -205,7 +205,7 @@ ExternalNotificationModule::ExternalNotificationModule()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ProcessMessage ExternalNotificationModule::handleReceived(const MeshPacket &mp)
|
ProcessMessage ExternalNotificationModule::handleReceived(const meshtastic_MeshPacket &mp)
|
||||||
{
|
{
|
||||||
if (moduleConfig.external_notification.enabled) {
|
if (moduleConfig.external_notification.enabled) {
|
||||||
|
|
||||||
@@ -319,19 +319,19 @@ ProcessMessage ExternalNotificationModule::handleReceived(const MeshPacket &mp)
|
|||||||
* @return AdminMessageHandleResult HANDLED if message was handled
|
* @return AdminMessageHandleResult HANDLED if message was handled
|
||||||
* HANDLED_WITH_RESULT if a result is also prepared.
|
* HANDLED_WITH_RESULT if a result is also prepared.
|
||||||
*/
|
*/
|
||||||
AdminMessageHandleResult ExternalNotificationModule::handleAdminMessageForModule(const MeshPacket &mp, AdminMessage *request,
|
AdminMessageHandleResult ExternalNotificationModule::handleAdminMessageForModule(const meshtastic_MeshPacket &mp, meshtastic_AdminMessage *request,
|
||||||
AdminMessage *response)
|
meshtastic_AdminMessage *response)
|
||||||
{
|
{
|
||||||
AdminMessageHandleResult result;
|
AdminMessageHandleResult result;
|
||||||
|
|
||||||
switch (request->which_payload_variant) {
|
switch (request->which_payload_variant) {
|
||||||
case AdminMessage_get_ringtone_request_tag:
|
case meshtastic_AdminMessage_get_ringtone_request_tag:
|
||||||
LOG_INFO("Client is getting ringtone\n");
|
LOG_INFO("Client is getting ringtone\n");
|
||||||
this->handleGetRingtone(mp, response);
|
this->handleGetRingtone(mp, response);
|
||||||
result = AdminMessageHandleResult::HANDLED_WITH_RESPONSE;
|
result = AdminMessageHandleResult::HANDLED_WITH_RESPONSE;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case AdminMessage_set_ringtone_message_tag:
|
case meshtastic_AdminMessage_set_ringtone_message_tag:
|
||||||
LOG_INFO("Client is setting ringtone\n");
|
LOG_INFO("Client is setting ringtone\n");
|
||||||
this->handleSetRingtone(request->set_canned_message_module_messages);
|
this->handleSetRingtone(request->set_canned_message_module_messages);
|
||||||
result = AdminMessageHandleResult::HANDLED;
|
result = AdminMessageHandleResult::HANDLED;
|
||||||
@@ -344,11 +344,11 @@ AdminMessageHandleResult ExternalNotificationModule::handleAdminMessageForModule
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
void ExternalNotificationModule::handleGetRingtone(const MeshPacket &req, AdminMessage *response)
|
void ExternalNotificationModule::handleGetRingtone(const meshtastic_MeshPacket &req, meshtastic_AdminMessage *response)
|
||||||
{
|
{
|
||||||
LOG_INFO("*** handleGetRingtone\n");
|
LOG_INFO("*** handleGetRingtone\n");
|
||||||
if (req.decoded.want_response) {
|
if (req.decoded.want_response) {
|
||||||
response->which_payload_variant = AdminMessage_get_ringtone_response_tag;
|
response->which_payload_variant = meshtastic_AdminMessage_get_ringtone_response_tag;
|
||||||
strncpy(response->get_ringtone_response, rtttlConfig.ringtone, sizeof(response->get_ringtone_response));
|
strncpy(response->get_ringtone_response, rtttlConfig.ringtone, sizeof(response->get_ringtone_response));
|
||||||
} // Don't send anything if not instructed to. Better than asserting.
|
} // Don't send anything if not instructed to. Better than asserting.
|
||||||
}
|
}
|
||||||
@@ -364,6 +364,6 @@ void ExternalNotificationModule::handleSetRingtone(const char *from_msg)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (changed) {
|
if (changed) {
|
||||||
nodeDB.saveProto(rtttlConfigFile, RTTTLConfig_size, &RTTTLConfig_msg, &rtttlConfig);
|
nodeDB.saveProto(rtttlConfigFile, meshtastic_RTTTLConfig_size, &meshtastic_RTTTLConfig_msg, &rtttlConfig);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -40,7 +40,7 @@ class ExternalNotificationModule : public SinglePortModule, private concurrency:
|
|||||||
|
|
||||||
void stopNow();
|
void stopNow();
|
||||||
|
|
||||||
void handleGetRingtone(const MeshPacket &req, AdminMessage *response);
|
void handleGetRingtone(const meshtastic_MeshPacket &req, meshtastic_AdminMessage *response);
|
||||||
void handleSetRingtone(const char *from_msg);
|
void handleSetRingtone(const char *from_msg);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
@@ -48,14 +48,14 @@ class ExternalNotificationModule : public SinglePortModule, private concurrency:
|
|||||||
@return ProcessMessage::STOP if you've guaranteed you've handled this message and no other handlers should be considered for
|
@return ProcessMessage::STOP if you've guaranteed you've handled this message and no other handlers should be considered for
|
||||||
it
|
it
|
||||||
*/
|
*/
|
||||||
virtual ProcessMessage handleReceived(const MeshPacket &mp) override;
|
virtual ProcessMessage handleReceived(const meshtastic_MeshPacket &mp) override;
|
||||||
|
|
||||||
virtual int32_t runOnce() override;
|
virtual int32_t runOnce() override;
|
||||||
|
|
||||||
bool isNagging = false;
|
bool isNagging = false;
|
||||||
|
|
||||||
virtual AdminMessageHandleResult handleAdminMessageForModule(const MeshPacket &mp, AdminMessage *request,
|
virtual AdminMessageHandleResult handleAdminMessageForModule(const meshtastic_MeshPacket &mp, meshtastic_AdminMessage *request,
|
||||||
AdminMessage *response) override;
|
meshtastic_AdminMessage *response) override;
|
||||||
};
|
};
|
||||||
|
|
||||||
extern ExternalNotificationModule *externalNotificationModule;
|
extern ExternalNotificationModule *externalNotificationModule;
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
|
|
||||||
NodeInfoModule *nodeInfoModule;
|
NodeInfoModule *nodeInfoModule;
|
||||||
|
|
||||||
bool NodeInfoModule::handleReceivedProtobuf(const MeshPacket &mp, User *pptr)
|
bool NodeInfoModule::handleReceivedProtobuf(const meshtastic_MeshPacket &mp, meshtastic_User *pptr)
|
||||||
{
|
{
|
||||||
auto p = *pptr;
|
auto p = *pptr;
|
||||||
|
|
||||||
@@ -33,25 +33,25 @@ void NodeInfoModule::sendOurNodeInfo(NodeNum dest, bool wantReplies)
|
|||||||
if (prevPacketId) // if we wrap around to zero, we'll simply fail to cancel in that rare case (no big deal)
|
if (prevPacketId) // if we wrap around to zero, we'll simply fail to cancel in that rare case (no big deal)
|
||||||
service.cancelSending(prevPacketId);
|
service.cancelSending(prevPacketId);
|
||||||
|
|
||||||
MeshPacket *p = allocReply();
|
meshtastic_MeshPacket *p = allocReply();
|
||||||
p->to = dest;
|
p->to = dest;
|
||||||
p->decoded.want_response = wantReplies;
|
p->decoded.want_response = wantReplies;
|
||||||
p->priority = MeshPacket_Priority_BACKGROUND;
|
p->priority = meshtastic_MeshPacket_Priority_BACKGROUND;
|
||||||
prevPacketId = p->id;
|
prevPacketId = p->id;
|
||||||
|
|
||||||
service.sendToMesh(p);
|
service.sendToMesh(p);
|
||||||
}
|
}
|
||||||
|
|
||||||
MeshPacket *NodeInfoModule::allocReply()
|
meshtastic_MeshPacket *NodeInfoModule::allocReply()
|
||||||
{
|
{
|
||||||
User &u = owner;
|
meshtastic_User &u = owner;
|
||||||
|
|
||||||
LOG_INFO("sending owner %s/%s/%s\n", u.id, u.long_name, u.short_name);
|
LOG_INFO("sending owner %s/%s/%s\n", u.id, u.long_name, u.short_name);
|
||||||
return allocDataProtobuf(u);
|
return allocDataProtobuf(u);
|
||||||
}
|
}
|
||||||
|
|
||||||
NodeInfoModule::NodeInfoModule()
|
NodeInfoModule::NodeInfoModule()
|
||||||
: ProtobufModule("nodeinfo", PortNum_NODEINFO_APP, &User_msg), concurrency::OSThread("NodeInfoModule")
|
: ProtobufModule("nodeinfo", meshtastic_PortNum_NODEINFO_APP, &meshtastic_User_msg), concurrency::OSThread("NodeInfoModule")
|
||||||
{
|
{
|
||||||
isPromiscuous = true; // We always want to update our nodedb, even if we are sniffing on others
|
isPromiscuous = true; // We always want to update our nodedb, even if we are sniffing on others
|
||||||
setIntervalFromNow(30 *
|
setIntervalFromNow(30 *
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user