meshtastic-android/TODO.md

3.9 KiB

High priority

  • watch for ntofies of numread changing
  • implement android side of mesh radio bluetooth link
  • investigate the Signal SMS message flow path, see if I could just make Mesh a third peer to signal & sms?
  • make signal work when there is no internet up
  • make Signal rx path work
  • send Signal message type. It seems to be? " public static final int WHISPER_TYPE = 2; public static final int PREKEY_TYPE = 3; public static final int SENDERKEY_TYPE = 4; public static final int SENDERKEY_DISTRIBUTION_TYPE = 5;"
  • don't do mesh based algoritm for node id assignment (initially) - instead just store in flash - possibly even in the initial alpha release do this hack
  • use the lora net code on my current protoboard
  • investigate a 16 bit node number. If possible it would make collisions super rare. Much easier to just pick a nodenum and go.
  • add large packet reassembly?
  • optionally turn off crypto in signal
  • change signal package ID
  • good tips on which bands might be more free https://github.com/TheThingsNetwork/ttn/issues/119
  • make my android app show mesh state
  • use https://codelabs.developers.google.com/codelabs/jetpack-compose-basics/#4 to show service state
  • connect to bluetooth device automatically using minimum power
  • fix BT device scanning
  • call crashlytics from exceptionReporter!!! currently not logging failures caught there

protobuf notes protoc -I=. --java_out /tmp mesh.proto

to generate nanopb c code /home/kevinh/packages/nanopb-0.4.0-linux-x86/generator-bin/protoc --nanopb_out=/tmp -I=app/src/main/proto mesh.proto https://jpa.kapsi.fi/nanopb/docs/

nanopb binaries available here: https://jpa.kapsi.fi/nanopb/download/ use nanopb 0.4.0

Medium priority

  • change info() log strings to debug()
  • use platform theme (dark or light)
  • remove mixpanel analytics
  • require user auth to pair with the device (i.e. press button on device to allow a new phone to pair with it). Don't leave device discoverable. Don't let unpaired users do things with device
  • remove example code boilerplate from the service
  • switch from protobuf-java to protobuf-javalite - much faster and smaller, just no JSON debug printing
  • if the rxpacket queue on the device overflows (because android hasn't connected in a while) send a special packet to android which means 'X packets have been dropped because you were offline' -drop oldest packets first

Low priority

  • make analytics optional
  • possibly use finotes for analytics https://finotes.com/
  • also add a receiver that fires after a new update was installed from the play stoe

Done

  • DONE fix bluetooth update

  • DONE refactor sw update code to share with my other bluetooth service

  • DONE don't let sw update got to sleep during the update

  • assert() is apparently a noop - change to use my version of assert

  • DONE add crash reporting

  • DONE add analytics (make them optional)

  • make frontend using https://developer.android.com/jetpack/compose/tutorial

  • change bluetooth mtu length to 512 (default is only 20)

  • DONE get signal running under debugger

  • Find good Signal hooks

  • receive fake packets at power on to built initial state (for debugging, pretend there are a couple of nodes out there)

  • learn our node number

  • test mesh service from activity

  • DONE handle failures in onCharWrite, instead of logAssert - because they can happen if device goes away

  • DONE explictly broadcast towards signal https://developer.android.com/guide/components/broadcasts

  • make test implementation of android service (doesn't use bluetooth)

  • undo base64

  • use android service from Signal

  • send signal message type over wire

  • DONE add broadcasters for use by signal (node changes and packet received)

  • DONE have signal declare receivers: https://developer.android.com/guide/components/broadcasts#manifest-declared-receivers

  • fix // FIXME hack for now - throw IdNotFoundException(id) in MeshService

  • clean up sw update code in device side

  • add real messaging code/protobufs