diff --git a/bin/program-release-tbeam.sh b/bin/program-release-tbeam.sh index 7870680f..615ec66d 100755 --- a/bin/program-release-tbeam.sh +++ b/bin/program-release-tbeam.sh @@ -2,6 +2,7 @@ set -e VERSION=`bin/buildinfo.py` +FILENAME=release/latest/bins/universal/firmware-tbeam-$VERSION.bin -echo Installing release/latest/bins/firmware-tbeam-US-$VERSION.bin -esptool.py --baud 921600 write_flash 0x10000 release/latest/bins/firmware-tbeam-US-$VERSION.bin +echo Installing $FILENAME +esptool.py --baud 921600 write_flash 0x10000 $FILENAME diff --git a/docs/software/TODO.md b/docs/software/TODO.md index a5924c19..b47fdb95 100644 --- a/docs/software/TODO.md +++ b/docs/software/TODO.md @@ -20,21 +20,35 @@ You probably don't care about this section - skip to the next one. * DONE fix python data packet receiving (nothing showing in log?) * DONE implement 'get channels' Admin plugin operation * DONE use get-channels from python -* use get channels & get settings from android +* DONE use get channels & get settings from android * use set-channel from python +* DONE make settings changes from python work +* DONE pthon should stop fetching channels once we've reached our first empty channel definition (hasSettings == true) +* DONE add check for old devices with new API library +* DONE release python api +* DONE release protobufs +* DONE release to developers +* fix 1.1.50 android debug panel display +* add gui in android app for setting region +* stress test channel download from python, sometimes it seems like we don't get all replies +* investigate @mc-hamster report of heap corruption +* use set-channel from android +* DONE use set-user from android * combine acks and responses in a single message if possible (do routing plugin LAST and drop ACK if someone else has already replied) +* don't send packets we received from the phone BACK TOWARDS THE PHONE (possibly use fromnode 0 for packets the phone sends?) * use portuino TCP connection to debug with python API * make python tests more exhaustive * document the relationship between want_response (indicating remote node received it) and want_ack (indicating that this message should be sent reliably - and also get acks from the first rx node and naks if it is never delivered) -* test multi channel +* stress test multi channel * pick default random admin key +* DONE android should stop fetching channels once we've reached our first empty channel definition (hasSettings == true) +* add channel restrictions for plugins (and restrict routing plugin to the "control" channel) * restrict gpio & serial & settings operations to the admin channel (unless local to the current node) -* add gui in android app for setting region * warn in python api if we are too new to talk to the device code * make a post warning about 1.2, telling how to stay on old android & python clients. link to this from the android dialog message and python version warning. * DONE "FIXME - move the radioconfig/user/channel READ operations into SettingsMessage as well" * DONE scrub protobufs to make sure they are absoloute minimum wiresize (in particular Data, ChannelSets and positions) -* change syncword +* DONE change syncword (now ox2b) * allow chaning packets in single transmission - to increase airtime efficiency and amortize packet overhead * DONE move most parts of meshpacket into the Data packet, so that we can chain multiple Data for sending when they all have a common destination and key. * when selecting a MeshPacket for transmit, scan the TX queue for any Data packets we can merge together as a WirePayload. In the low level send/rx code expand that into multiple MeshPackets as needed (thus 'hiding' from MeshPacket that over the wire we send multiple datapackets @@ -45,15 +59,14 @@ You probably don't care about this section - skip to the next one. * DONE move acks into routing * DONE make all subpackets different versions of data * DONE move routing control into a data packet -* have phoneapi done via plugin +* have phoneapi done via plugin (will allow multiple simultaneous API clients - stop disabling BLE while using phone API) * DONE figure out how to add micro_delta to position, make it so that phone apps don't need to understand it? * only send battery updates a max of once a minute * add python channel selection for sending * DONE record recevied channel in meshpacket * test remote settings operations (confirm it works 3 hops away) -* add channel restrictions for plugins (and restrict routing plugin to the "control" channel) -* make a primaryChannel global and properly maintain it when the phone sends setChannel -* move setCrypto call into packet send and packet decode code +* DONE make a primaryChannel global and properly maintain it when the phone sends setChannel +* DONE move setCrypto call into packet send and packet decode code * implement 'small location diffs' change * move battery level out of position? * DOUBLE CHECK android app can still upgrade 1.1 and 1.0 loads diff --git a/proto b/proto index 7de496ff..94bd0aae 160000 --- a/proto +++ b/proto @@ -1 +1 @@ -Subproject commit 7de496ffe941f88e9d99c2ef2c7bc01f79efe11e +Subproject commit 94bd0aae44e2c16c7776289225c804100c856cd4 diff --git a/src/mesh/RadioLibInterface.h b/src/mesh/RadioLibInterface.h index 726e81b3..cd46968c 100644 --- a/src/mesh/RadioLibInterface.h +++ b/src/mesh/RadioLibInterface.h @@ -80,10 +80,13 @@ class RadioLibInterface : public RadioInterface, protected concurrency::Notified protected: /** - * FIXME, use a meshtastic sync word, but hashed with the Channel name. Currently picking the same default - * the RF95 used (0x14). Note: do not use 0x34 - that is reserved for lorawan + * We use a meshtastic sync word, but hashed with the Channel name. For releases before 1.2 we used 0x12 (or for very old loads 0x14) + * Note: do not use 0x34 - that is reserved for lorawan + * + * We now use 0x2b (so that someday we can possibly use NOT 2b - because that would be funny pun). We will be staying with this code + * for a long time. */ - uint8_t syncWord = SX126X_SYNC_WORD_PRIVATE; + const uint8_t syncWord = 0x2b; float currentLimit = 100; // FIXME diff --git a/src/mesh/generated/deviceonly.pb.h b/src/mesh/generated/deviceonly.pb.h index 52420a37..a1e6de3a 100644 --- a/src/mesh/generated/deviceonly.pb.h +++ b/src/mesh/generated/deviceonly.pb.h @@ -52,7 +52,7 @@ extern "C" { #define DeviceState_version_tag 8 #define DeviceState_no_save_tag 9 #define DeviceState_did_gps_reset_tag 11 -#define DeviceState_channels_tag 12 +#define DeviceState_channels_tag 13 /* Struct field encoding specification for nanopb */ #define DeviceState_FIELDLIST(X, a) \ @@ -65,7 +65,7 @@ X(a, STATIC, OPTIONAL, MESSAGE, rx_text_message, 7) \ X(a, STATIC, SINGULAR, UINT32, version, 8) \ X(a, STATIC, SINGULAR, BOOL, no_save, 9) \ X(a, STATIC, SINGULAR, BOOL, did_gps_reset, 11) \ -X(a, STATIC, REPEATED, MESSAGE, channels, 12) +X(a, STATIC, REPEATED, MESSAGE, channels, 13) #define DeviceState_CALLBACK NULL #define DeviceState_DEFAULT NULL #define DeviceState_radio_MSGTYPE RadioConfig