From cc01bc8f72f540d0bb83207810bc8902e0b52274 Mon Sep 17 00:00:00 2001 From: geeksville Date: Fri, 11 Sep 2020 12:35:43 -0700 Subject: [PATCH] generate a clear error message if someone sends before we have nodedb --- meshtastic/__init__.py | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/meshtastic/__init__.py b/meshtastic/__init__.py index 4401c6d..12a2e1d 100644 --- a/meshtastic/__init__.py +++ b/meshtastic/__init__.py @@ -103,6 +103,7 @@ class MeshInterface: Keyword Arguments: destinationId {nodeId or nodeNum} -- where to send this message (default: {BROADCAST_ADDR}) + wantAck -- True if you want the message sent in a reliable manner (with retries and ack/nak provided for delivery) Returns the sent packet. The id field will be populated in this packet and can be used to track future message acks/naks. """ @@ -112,6 +113,10 @@ class MeshInterface: def sendData(self, byteData, destinationId=BROADCAST_ADDR, dataType=mesh_pb2.Data.OPAQUE, wantAck=False, wantResponse=False): """Send a data packet to some other node + Keyword Arguments: + destinationId {nodeId or nodeNum} -- where to send this message (default: {BROADCAST_ADDR}) + wantAck -- True if you want the message sent in a reliable manner (with retries and ack/nak provided for delivery) + Returns the sent packet. The id field will be populated in this packet and can be used to track future message acks/naks. """ meshPacket = mesh_pb2.MeshPacket() @@ -187,8 +192,11 @@ class MeshInterface: def _generatePacketId(self): """Get a new unique packet ID""" - self.currentPacketId = (self.currentPacketId + 1) & 0xffffffff - return self.currentPacketId + if self.currentPacketId is None: + raise Exception("Not connected yet, can not generate packet") + else: + self.currentPacketId = (self.currentPacketId + 1) & 0xffffffff + return self.currentPacketId def _disconnected(self): """Called by subclasses to tell clients this interface has disconnected""" @@ -282,7 +290,7 @@ class MeshInterface: try: return self._nodesByNum[num]["user"]["id"] except: - logging.error("Node not found for fromId") + logging.warn("Node not found for fromId") return None def _getOrCreateByNum(self, nodeNum):