fix bt reads of owner etc

pull/1/head
geeksville 2020-02-04 13:47:42 -08:00
rodzic b538677ad2
commit 37eca63e58
6 zmienionych plików z 11 dodań i 13 usunięć

Wyświetl plik

@ -1,7 +1,6 @@
# High priority # High priority
* implement regen user and radio prefs * implement regen user and radio prefs
* figure out why protobuf reads of Owner fail - debug with jtag
* have meshservice send location data on mesh (if device has a GPS) * have meshservice send location data on mesh (if device has a GPS)
* implement getCurrentTime() - set based off gps but then updated locally * implement getCurrentTime() - set based off gps but then updated locally
* confirm second device receives that gps message and updates device db * confirm second device receives that gps message and updates device db

Wyświetl plik

@ -20,7 +20,7 @@ framework = arduino
board_build.partitions = partition-table.csv board_build.partitions = partition-table.csv
; note: we add src to our include search path so that lmic_project_config can override ; note: we add src to our include search path so that lmic_project_config can override
build_flags = -Wall -Wextra -Wno-missing-field-initializers -Isrc -O3 -Wl,-Map,.pio/build/esp32/output.map -DAXP_DEBUG_PORT=Serial -DCORE_DEBUG_LEVEL=ARDUHAL_LOG_LEVEL_DEBUG build_flags = -Wall -Wextra -Wno-missing-field-initializers -Isrc -O3 -Wl,-Map,.pio/build/esp32/output.map -DAXP_DEBUG_PORT=Serial
; -DLOG_LOCAL_LEVEL=ESP_LOG_DEBUG -DCORE_DEBUG_LEVEL=ARDUHAL_LOG_LEVEL_DEBUG ; -DLOG_LOCAL_LEVEL=ESP_LOG_DEBUG -DCORE_DEBUG_LEVEL=ARDUHAL_LOG_LEVEL_DEBUG
upload_speed = 921600 upload_speed = 921600

Wyświetl plik

@ -229,7 +229,7 @@ When the esp32 advances fromnum, it will delay doing the notify by 100ms, in the
Note: that if the phone ever sees this number decrease, it means the esp32 has rebooted. Note: that if the phone ever sees this number decrease, it means the esp32 has rebooted.
meshMyNodeCharacteristic("ea9f3f82-8dc4-4733-9452-1f6da28892a2", BLECharacteristic::PROPERTY_READ) meshMyNodeCharacteristic("ea9f3f82-8dc4-4733-9452-1f6da28892a2", BLECharacteristic::PROPERTY_READ)
mynode - read/write this to access a MyNodeInfo protobuf mynode - read this to access a MyNodeInfo protobuf
meshNodeInfoCharacteristic("d31e02e0-c8ab-4d3f-9cc9-0b8466bdabe8", BLECharacteristic::PROPERTY_WRITE | BLECharacteristic::PROPERTY_READ), meshNodeInfoCharacteristic("d31e02e0-c8ab-4d3f-9cc9-0b8466bdabe8", BLECharacteristic::PROPERTY_WRITE | BLECharacteristic::PROPERTY_READ),
nodeinfo - read this to get a series of node infos (ending with a null empty record), write to this to restart the read statemachine that returns all the node infos nodeinfo - read this to get a series of node infos (ending with a null empty record), write to this to restart the read statemachine that returns all the node infos

Wyświetl plik

@ -43,12 +43,11 @@ uint64_t getCurrentTime()
NodeDB::NodeDB() NodeDB::NodeDB()
{ {
} }
void NodeDB::init() { void NodeDB::init() {
ourNodeNum = getDesiredNodeNum(); myNodeInfo.my_node_num = getDesiredNodeNum();
// Init our blank owner info to reasonable defaults // Init our blank owner info to reasonable defaults
sprintf(owner.id, "!%02x%02x%02x%02x%02x%02x", ourMacAddr[0], sprintf(owner.id, "!%02x%02x%02x%02x%02x%02x", ourMacAddr[0],
@ -58,7 +57,7 @@ void NodeDB::init() {
// FIXME, read owner info from flash // FIXME, read owner info from flash
// Include our owner in the node db under our nodenum // Include our owner in the node db under our nodenum
NodeInfo *info = getOrCreateNode(ourNodeNum); NodeInfo *info = getOrCreateNode(getNodeNum());
info->user = owner; info->user = owner;
info->has_user = true; info->has_user = true;
info->last_seen = getCurrentTime(); info->last_seen = getCurrentTime();

Wyświetl plik

@ -6,12 +6,13 @@
#include "mesh-pb-constants.h" #include "mesh-pb-constants.h"
#include "MeshTypes.h" #include "MeshTypes.h"
extern MyNodeInfo myNodeInfo;
extern User owner;
class NodeDB class NodeDB
{ {
// NodeNum provisionalNodeNum; // if we are trying to find a node num this is our current attempt // NodeNum provisionalNodeNum; // if we are trying to find a node num this is our current attempt
NodeNum ourNodeNum = 0;
// A NodeInfo for every node we've seen // A NodeInfo for every node we've seen
// Eventually use a smarter datastructure // Eventually use a smarter datastructure
// HashMap<NodeNum, NodeInfo> nodes; // HashMap<NodeNum, NodeInfo> nodes;
@ -35,7 +36,7 @@ public:
/// 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 MeshPacket &p);
NodeNum getNodeNum() { return ourNodeNum; } NodeNum getNodeNum() { return myNodeInfo.my_node_num; }
/// if returns false, that means our node should send a DenyNodeNum response. If true, we think the number is okay for use /// if returns false, that means our node should send a DenyNodeNum response. If true, we think the number is okay for use
// bool handleWantNodeNum(NodeNum n); // bool handleWantNodeNum(NodeNum n);
@ -62,5 +63,4 @@ private:
}; };
extern NodeDB nodeDB; extern NodeDB nodeDB;
extern MyNodeInfo myNodeInfo;
extern User owner;

Wyświetl plik

@ -11,7 +11,7 @@ size_t pb_encode_to_bytes(uint8_t *destbuf, size_t destbufsize, const pb_msgdesc
{ {
pb_ostream_t stream = pb_ostream_from_buffer(destbuf, destbufsize); pb_ostream_t stream = pb_ostream_from_buffer(destbuf, destbufsize);
if (!pb_encode(&stream, fields, &src_struct)) if (!pb_encode(&stream, fields, src_struct))
{ {
DEBUG_MSG("Error: can't encode protobuf %s\n", PB_GET_ERROR(&stream)); DEBUG_MSG("Error: can't encode protobuf %s\n", PB_GET_ERROR(&stream));
assert(0); // FIXME - panic assert(0); // FIXME - panic
@ -27,7 +27,7 @@ size_t pb_encode_to_bytes(uint8_t *destbuf, size_t destbufsize, const pb_msgdesc
bool pb_decode_from_bytes(const uint8_t *srcbuf, size_t srcbufsize, const pb_msgdesc_t *fields, void *dest_struct) bool pb_decode_from_bytes(const uint8_t *srcbuf, size_t srcbufsize, const pb_msgdesc_t *fields, void *dest_struct)
{ {
pb_istream_t stream = pb_istream_from_buffer(srcbuf, srcbufsize); pb_istream_t stream = pb_istream_from_buffer(srcbuf, srcbufsize);
if (!pb_decode(&stream, fields, &dest_struct)) if (!pb_decode(&stream, fields, dest_struct))
{ {
DEBUG_MSG("Error: can't decode protobuf %s\n", PB_GET_ERROR(&stream)); DEBUG_MSG("Error: can't decode protobuf %s\n", PB_GET_ERROR(&stream));
return false; return false;