mirror of
https://github.com/meshtastic/python.git
synced 2026-01-20 05:37:57 -05:00
51 lines
2.5 KiB
Markdown
51 lines
2.5 KiB
Markdown
# 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
|
|
- let user change radio params via commandline options
|
|
- document properties/fields
|
|
- include more examples: textchat.py, replymessage.py all as one little demo
|
|
- have python client turn on/off radio sleep (use 0 for X to mean restore defaults)
|
|
- have device send a special packet at boot so the serial client can detect if it rebooted
|
|
- 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
|
|
- DONE keep everything in dicts
|
|
|
|
## 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
|
|
|
|
- possibly use tk to make a multiwindow test console: https://stackoverflow.com/questions/12351786/how-to-redirect-print-statements-to-tkinter-text-widget
|
|
|
|
## 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
|