Merge branch 'master' into dev

This commit is contained in:
Kevin Hester
2020-12-15 16:34:14 +08:00
3 changed files with 14 additions and 5 deletions

2
docs/python-cmd-guide.md Normal file
View File

@@ -0,0 +1,2 @@
# Python API commands guide

View File

@@ -462,16 +462,20 @@ class MeshInterface:
# byte array.
asDict["decoded"]["data"]["payload"] = meshPacket.decoded.data.payload
# UNKNOWN_APP is the default protobuf pornum value, and therefore if not set it will not be populated at all
# UNKNOWN_APP is the default protobuf portnum value, and therefore if not set it will not be populated at all
# to make API usage easier, set it to prevent confusion
if not "portnum" in asDict["decoded"]["data"]:
asDict["decoded"]["data"]["portnum"] = portnums_pb2.PortNum.UNKNOWN_APP
asDict["decoded"]["data"]["portnum"] = portnums_pb2.PortNum.Name(portnums_pb2.PortNum.UNKNOWN_APP)
portnum = asDict["decoded"]["data"]["portnum"]
if isinstance(portnum, str):
portnum = portnums_pb2.PortNum.Value(portnum)
topic = f"meshtastic.receive.data.{portnum}"
# For text messages, we go ahead and decode the text to ascii for our users
if asDict["decoded"]["data"]["portnum"] == portnums_pb2.PortNum.TEXT_MESSAGE_APP:
if portnum == portnums_pb2.PortNum.TEXT_MESSAGE_APP:
topic = "meshtastic.receive.text"
# We don't throw if the utf8 is invalid in the text message. Instead we just don't populate
@@ -486,7 +490,7 @@ class MeshInterface:
logging.error(f"Malformatted utf8 in text message: {ex}")
# decode position protobufs and update nodedb, provide decoded version as "position" in the published msg
if asDict["decoded"]["data"]["portnum"] == portnums_pb2.PortNum.POSITION_APP:
if portnum == portnums_pb2.PortNum.POSITION_APP:
topic = "meshtastic.receive.position"
pb = mesh_pb2.Position()
pb.ParseFromString(meshPacket.decoded.data.payload)
@@ -497,7 +501,7 @@ class MeshInterface:
self._getOrCreateByNum(asDict["from"])["position"] = p
# decode user protobufs and update nodedb, provide decoded version as "position" in the published msg
if asDict["decoded"]["data"]["portnum"] == portnums_pb2.PortNum.NODEINFO_APP:
if portnum == portnums_pb2.PortNum.NODEINFO_APP:
topic = "meshtastic.receive.user"
pb = mesh_pb2.User()
pb.ParseFromString(meshPacket.decoded.data.payload)

View File

@@ -11,6 +11,7 @@ import pyqrcode
import traceback
import codecs
import base64
import pkg_resources
"""The command line arguments"""
args = None
@@ -390,6 +391,8 @@ def main():
parser.set_defaults(router=None)
parser.add_argument('--version', action='version', version=f"{pkg_resources.require('meshtastic')[0].version}")
global args
args = parser.parse_args()
logging.basicConfig(level=logging.DEBUG if args.debug else logging.INFO)