diff --git a/proto b/proto index b6fdb78c0..943c3c24e 160000 --- a/proto +++ b/proto @@ -1 +1 @@ -Subproject commit b6fdb78c0738d0f348ae45f76de4e6360c7e479e +Subproject commit 943c3c24ec1e5116536cdabe31f496cb5b58a18e diff --git a/src/configuration.h b/src/configuration.h index fb84203d2..e389e46cf 100644 --- a/src/configuration.h +++ b/src/configuration.h @@ -163,7 +163,7 @@ along with this program. If not, see . #if defined(TBEAM_V10) // This string must exactly match the case used in release file names or the android updater won't work -#define HW_VENDOR NodeInfo_HardwareModel_TBEAM +#define HW_VENDOR HardwareModel_TBEAM // #define BUTTON_NEED_PULLUP // if set we need to turn on the internal CPU pullup during sleep @@ -204,7 +204,7 @@ along with this program. If not, see . #elif defined(TBEAM_V07) // This string must exactly match the case used in release file names or the android updater won't work -#define HW_VENDOR NodeInfo_HardwareModel_TBEAM0p7 +#define HW_VENDOR HardwareModel_TBEAM0p7 // #define BUTTON_NEED_PULLUP // if set we need to turn on the internal CPU pullup during sleep @@ -228,7 +228,7 @@ along with this program. If not, see . #elif defined(ARDUINO_HELTEC_WIFI_LORA_32_V2) // This string must exactly match the case used in release file names or the android updater won't work -#define HW_VENDOR NodeInfo_HardwareModel_HELTEC +#define HW_VENDOR HardwareModel_HELTEC // the default ESP32 Pin of 15 is the Oled SCL, set to 36 and 37 and works fine. // Tested on Neo6m module. @@ -258,7 +258,7 @@ along with this program. If not, see . #elif defined(TLORA_V1) // This string must exactly match the case used in release file names or the android updater won't work -#define HW_VENDOR NodeInfo_HardwareModel_TLORA_V1 +#define HW_VENDOR HardwareModel_TLORA_V1 #undef GPS_RX_PIN #undef GPS_TX_PIN #define GPS_RX_PIN 36 @@ -282,7 +282,7 @@ along with this program. If not, see . #elif defined(TLORA_V2) // This string must exactly match the case used in release file names or the android updater won't work -#define HW_VENDOR NodeInfo_HardwareModel_TLORA_V2 +#define HW_VENDOR HardwareModel_TLORA_V2 #undef GPS_RX_PIN #undef GPS_TX_PIN @@ -311,7 +311,7 @@ along with this program. If not, see . #elif defined(TLORA_V1_3) // This string must exactly match the case used in release file names or the android updater won't work -#define HW_VENDOR NodeInfo_HardwareModel_TLORA_V1p3 +#define HW_VENDOR HardwareModel_TLORA_V1p3 #undef GPS_RX_PIN #undef GPS_TX_PIN @@ -338,7 +338,7 @@ along with this program. If not, see . #elif defined(TLORA_V2_1_16) // This string must exactly match the case used in release file names or the android updater won't work -#define HW_VENDOR NodeInfo_HardwareModel_TLORA_V2_1p6_ +#define HW_VENDOR HardwareModel_TLORA_V2_1p6_ #undef GPS_RX_PIN #undef GPS_TX_PIN @@ -366,7 +366,7 @@ along with this program. If not, see . #elif defined(GENIEBLOCKS) // This string must exactly match the case used in release file names or the android updater won't work -#define HW_VENDOR NodeInfo_HardwareModel_GENIEBLOCKS +#define HW_VENDOR HardwareModel_GENIEBLOCKS #undef GPS_RX_PIN #undef GPS_TX_PIN #define GPS_RX_PIN 5 @@ -399,7 +399,7 @@ along with this program. If not, see . #ifdef ARDUINO_NRF52840_PCA10056 // This string must exactly match the case used in release file names or the android updater won't work -#define HW_VENDOR NodeInfo_HardwareModel_NRF52840DK +#define HW_VENDOR HardwareModel_NRF52840DK // This board uses 0 to be mean LED on #undef LED_INVERTED @@ -407,15 +407,15 @@ along with this program. If not, see . #elif defined(ARDUINO_NRF52840_PPR) -#define HW_VENDOR NodeInfo_HardwareModel_PPR +#define HW_VENDOR HardwareModel_PPR #elif NRF52_SERIES -#define HW_VENDOR NodeInfo_HardwareModel_NRF52_UNKNOWN +#define HW_VENDOR HardwareModel_NRF52_UNKNOWN #elif PORTDUINO -#define HW_VENDOR NodeInfo_HardwareModel_PORTDUINO +#define HW_VENDOR HardwareModel_PORTDUINO #define USE_SIM_RADIO diff --git a/src/mesh/NodeDB.cpp b/src/mesh/NodeDB.cpp index 363f84320..96d7cc307 100644 --- a/src/mesh/NodeDB.cpp +++ b/src/mesh/NodeDB.cpp @@ -195,11 +195,13 @@ void NodeDB::init() // keep using that nodenum forever. Crummy guess at our nodenum (but we will check against the nodedb to avoid conflicts) pickNewNodeNum(); + // Set our board type so we can share it with others + owner.hw_model = HW_VENDOR; + // Include our owner in the node db under our nodenum NodeInfo *info = getOrCreateNode(getNodeNum()); info->user = owner; info->has_user = true; - info->hw_model = HW_VENDOR; // removed from 1.2 (though we do use old values if found) // We set these _after_ loading from disk - because they come from the build and are more trusted than diff --git a/src/mesh/generated/deviceonly.pb.h b/src/mesh/generated/deviceonly.pb.h index dec0eb35f..a325dfc50 100644 --- a/src/mesh/generated/deviceonly.pb.h +++ b/src/mesh/generated/deviceonly.pb.h @@ -125,7 +125,7 @@ extern const pb_msgdesc_t ChannelFile_msg; /* Maximum encoded size of messages (where known) */ #define LegacyRadioConfig_size 4 #define LegacyRadioConfig_LegacyPreferences_size 2 -#define DeviceState_size 4896 +#define DeviceState_size 4898 #define ChannelFile_size 832 #ifdef __cplusplus diff --git a/src/mesh/generated/mesh.pb.h b/src/mesh/generated/mesh.pb.h index 72880434e..3c923ad6c 100644 --- a/src/mesh/generated/mesh.pb.h +++ b/src/mesh/generated/mesh.pb.h @@ -11,6 +11,24 @@ #endif /* Enum definitions */ +typedef enum _HardwareModel { + HardwareModel_UNSET = 0, + HardwareModel_TLORA_V2 = 1, + HardwareModel_TLORA_V1 = 2, + HardwareModel_TLORA_V2_1_1p6 = 3, + HardwareModel_TBEAM = 4, + HardwareModel_HELTEC = 5, + HardwareModel_TBEAM0p7 = 6, + HardwareModel_T_ECHO = 7, + HardwareModel_TLORA_V1_1p3 = 8, + HardwareModel_LORA_RELAY_V1 = 32, + HardwareModel_NRF52840DK = 33, + HardwareModel_PPR = 34, + HardwareModel_GENIEBLOCKS = 35, + HardwareModel_NRF52_UNKNOWN = 36, + HardwareModel_PORTDUINO = 37 +} HardwareModel; + typedef enum _Constants { Constants_Unused = 0, Constants_DATA_PAYLOAD_LEN = 240 @@ -51,24 +69,6 @@ typedef enum _MeshPacket_Priority { MeshPacket_Priority_MAX = 127 } MeshPacket_Priority; -typedef enum _NodeInfo_HardwareModel { - NodeInfo_HardwareModel_UNSET = 0, - NodeInfo_HardwareModel_TLORA_V2 = 1, - NodeInfo_HardwareModel_TLORA_V1 = 2, - NodeInfo_HardwareModel_TLORA_V2_1_1p6 = 3, - NodeInfo_HardwareModel_TBEAM = 4, - NodeInfo_HardwareModel_HELTEC = 5, - NodeInfo_HardwareModel_TBEAM0p7 = 6, - NodeInfo_HardwareModel_T_ECHO = 7, - NodeInfo_HardwareModel_TLORA_V1_1p3 = 8, - NodeInfo_HardwareModel_LORA_RELAY_V1 = 32, - NodeInfo_HardwareModel_NRF52840DK = 33, - NodeInfo_HardwareModel_PPR = 34, - NodeInfo_HardwareModel_GENIEBLOCKS = 35, - NodeInfo_HardwareModel_NRF52_UNKNOWN = 36, - NodeInfo_HardwareModel_PORTDUINO = 37 -} NodeInfo_HardwareModel; - typedef enum _LogRecord_Level { LogRecord_Level_UNSET = 0, LogRecord_Level_CRITICAL = 50, @@ -130,6 +130,7 @@ typedef struct _User { char long_name[40]; char short_name[5]; pb_byte_t macaddr[6]; + HardwareModel hw_model; } User; typedef PB_BYTES_ARRAY_T(256) MeshPacket_encrypted_t; @@ -156,7 +157,6 @@ typedef struct _NodeInfo { User user; bool has_position; Position position; - NodeInfo_HardwareModel hw_model; float snr; } NodeInfo; @@ -192,6 +192,10 @@ typedef struct _ToRadio { /* Helper constants for enums */ +#define _HardwareModel_MIN HardwareModel_UNSET +#define _HardwareModel_MAX HardwareModel_PORTDUINO +#define _HardwareModel_ARRAYSIZE ((HardwareModel)(HardwareModel_PORTDUINO+1)) + #define _Constants_MIN Constants_Unused #define _Constants_MAX Constants_DATA_PAYLOAD_LEN #define _Constants_ARRAYSIZE ((Constants)(Constants_DATA_PAYLOAD_LEN+1)) @@ -208,10 +212,6 @@ typedef struct _ToRadio { #define _MeshPacket_Priority_MAX MeshPacket_Priority_MAX #define _MeshPacket_Priority_ARRAYSIZE ((MeshPacket_Priority)(MeshPacket_Priority_MAX+1)) -#define _NodeInfo_HardwareModel_MIN NodeInfo_HardwareModel_UNSET -#define _NodeInfo_HardwareModel_MAX NodeInfo_HardwareModel_PORTDUINO -#define _NodeInfo_HardwareModel_ARRAYSIZE ((NodeInfo_HardwareModel)(NodeInfo_HardwareModel_PORTDUINO+1)) - #define _LogRecord_Level_MIN LogRecord_Level_UNSET #define _LogRecord_Level_MAX LogRecord_Level_CRITICAL #define _LogRecord_Level_ARRAYSIZE ((LogRecord_Level)(LogRecord_Level_CRITICAL+1)) @@ -223,23 +223,23 @@ extern "C" { /* Initializer values for message structs */ #define Position_init_default {0, 0, 0, 0, 0} -#define User_init_default {"", "", "", {0}} +#define User_init_default {"", "", "", {0}, _HardwareModel_MIN} #define RouteDiscovery_init_default {0, {0, 0, 0, 0, 0, 0, 0, 0}} #define Routing_init_default {0, {RouteDiscovery_init_default}} #define Data_init_default {_PortNum_MIN, {0, {0}}, 0, 0, 0, 0} #define MeshPacket_init_default {0, 0, 0, 0, {Data_init_default}, 0, 0, 0, 0, 0, _MeshPacket_Priority_MIN} -#define NodeInfo_init_default {0, false, User_init_default, false, Position_init_default, _NodeInfo_HardwareModel_MIN, 0} +#define NodeInfo_init_default {0, false, User_init_default, false, Position_init_default, 0} #define MyNodeInfo_init_default {0, 0, 0, "", "", "", _CriticalErrorCode_MIN, 0, 0, 0, 0, 0} #define LogRecord_init_default {"", 0, "", _LogRecord_Level_MIN} #define FromRadio_init_default {0, 0, {MyNodeInfo_init_default}} #define ToRadio_init_default {0, {MeshPacket_init_default}} #define Position_init_zero {0, 0, 0, 0, 0} -#define User_init_zero {"", "", "", {0}} +#define User_init_zero {"", "", "", {0}, _HardwareModel_MIN} #define RouteDiscovery_init_zero {0, {0, 0, 0, 0, 0, 0, 0, 0}} #define Routing_init_zero {0, {RouteDiscovery_init_zero}} #define Data_init_zero {_PortNum_MIN, {0, {0}}, 0, 0, 0, 0} #define MeshPacket_init_zero {0, 0, 0, 0, {Data_init_zero}, 0, 0, 0, 0, 0, _MeshPacket_Priority_MIN} -#define NodeInfo_init_zero {0, false, User_init_zero, false, Position_init_zero, _NodeInfo_HardwareModel_MIN, 0} +#define NodeInfo_init_zero {0, false, User_init_zero, false, Position_init_zero, 0} #define MyNodeInfo_init_zero {0, 0, 0, "", "", "", _CriticalErrorCode_MIN, 0, 0, 0, 0, 0} #define LogRecord_init_zero {"", 0, "", _LogRecord_Level_MIN} #define FromRadio_init_zero {0, 0, {MyNodeInfo_init_zero}} @@ -278,6 +278,7 @@ extern "C" { #define User_long_name_tag 2 #define User_short_name_tag 3 #define User_macaddr_tag 4 +#define User_hw_model_tag 6 #define MeshPacket_from_tag 1 #define MeshPacket_to_tag 2 #define MeshPacket_channel_tag 3 @@ -292,7 +293,6 @@ extern "C" { #define NodeInfo_num_tag 1 #define NodeInfo_user_tag 2 #define NodeInfo_position_tag 3 -#define NodeInfo_hw_model_tag 6 #define NodeInfo_snr_tag 7 #define Routing_route_request_tag 1 #define Routing_route_reply_tag 2 @@ -321,7 +321,8 @@ X(a, STATIC, SINGULAR, FIXED32, time, 9) X(a, STATIC, SINGULAR, STRING, id, 1) \ X(a, STATIC, SINGULAR, STRING, long_name, 2) \ X(a, STATIC, SINGULAR, STRING, short_name, 3) \ -X(a, STATIC, SINGULAR, FIXED_LENGTH_BYTES, macaddr, 4) +X(a, STATIC, SINGULAR, FIXED_LENGTH_BYTES, macaddr, 4) \ +X(a, STATIC, SINGULAR, UENUM, hw_model, 6) #define User_CALLBACK NULL #define User_DEFAULT NULL @@ -369,7 +370,6 @@ X(a, STATIC, SINGULAR, UENUM, priority, 12) X(a, STATIC, SINGULAR, UINT32, num, 1) \ X(a, STATIC, OPTIONAL, MESSAGE, user, 2) \ X(a, STATIC, OPTIONAL, MESSAGE, position, 3) \ -X(a, STATIC, SINGULAR, UENUM, hw_model, 6) \ X(a, STATIC, SINGULAR, FLOAT, snr, 7) #define NodeInfo_CALLBACK NULL #define NodeInfo_DEFAULT NULL @@ -449,7 +449,7 @@ extern const pb_msgdesc_t ToRadio_msg; /* Maximum encoded size of messages (where known) */ #define Position_size 37 -#define User_size 72 +#define User_size 74 #define RouteDiscovery_size 40 #define Routing_size 42 #define Data_size 260