Files
python/TODO.md
geeksville 4e555e2679 doc updates
2020-04-28 15:18:45 -07:00

2.4 KiB

TODO

Before initial release

  • add fromId and toId to received messages dictionaries
  • update nodedb as nodes change
  • radioConfig - getter/setter syntax: https://www.python-course.eu/python3_properties.php
  • DONE keep everything in dicts
  • document properties/fields
  • include more examples: textchat.py, replymessage.py all as one little demo
  • have python client turn off radio sleep (use 0 for X to mean restore defaults)
  • announce at the usual places
  • DONE use port enumeration to find ports https://pyserial.readthedocs.io/en/latest/shortintro.html
  • DONE make serial debug output optional (by providing a null stream)
  • DONE make pubsub work
  • DONE make docs decent

Soon after initial release

  • keep nodedb up-to-date based on received MeshPackets
  • handle radio reboots and redownload db when that happens. Look for a special FromRadio.rebooted packet

Eventual

Primary API: MeshInterface

Wire encoding

When sending protobuf packets over serial or TCP each packet is preceded by uint32 sent in network byte order (big endian). The upper 16 bits must be 0x94C3. The lower 16 bits are packet length (this encoding gives room to eventually allow quite large packets).

Implementations validate length against the maximum possible size of a BLE packet (our lowest common denominator) of 512 bytes. If the length provided is larger than that we assume the packet is corrupted and begin again looking for 0x4403 framing.

The packets flowing towards the device are ToRadio protobufs, the packets flowing from the device are FromRadio protobufs. The 0x94C3 marker can be used as framing to (eventually) resync if packets are corrupted over the wire.

Note: the 0x94C3 framing was chosen to prevent confusion with the 7 bit ascii character set. It also doesn't collide with any valid utf8 encoding. This makes it a bit easier to start a device outputting regular debug output on its serial port and then only after it has received a valid packet from the PC, turn off unencoded debug printing and switch to this packet encoding.

MeshtasticShell

A tool to talk to radios (also serves as an example of the API).

tips to output to multiple windows: https://stackoverflow.com/questions/12351786/how-to-redirect-print-statements-to-tkinter-text-widget