This seems to fix the ch341 quirk where large packets fail to send. As it can be problematic for other radios, we gate it behind "ch341_quirk" in the config.
* Set `hop_start` in header to determine how many hops each packet traveled
* Set hopLimit of response according to hops used by request
* Identify neighbors based on `hopStart` and `hopLimit`
* NeighborInfo: get all packets and assume a default broadcast interval
* Add fail-safe in case node in between is running modified firmware
* Add `viaMQTT` and `hopsAway` to NodeInfo
* Replace `HOP_RELIABLE` with hopStart for repeated packet
---------
Co-authored-by: Ben Meadors <benmmeadors@gmail.com>
* Mark packets received via MQTT and add option to ignore them
* Don't send packets received via MQTT back into MQTT
Generate implicit ACK for packets we as an MQTT gateway sent
---------
Co-authored-by: Ben Meadors <benmmeadors@gmail.com>
* POC. Board definition JSON upcoming. Generic for now
* side-effect: RP2040 is building again.
* WIP Pico Targets
* current state of affairs
* ahem
* POC. Board definition JSON upcoming. Generic for now
* side-effect: RP2040 is building again.
* WIP Pico Targets
* current state of affairs
* ahem
* fmt
* update toolkit and fmt
* Add built in LED pin
* Use arduino pins
* init SPI bus on right pins.
* Use SPI1 and control chip select manually
* Use macro define for SPI selection. This needs to be defined in the ini file since portduino needs it inside the framework source
* Remove manual CS; works when not using setCS()
* Remove whoopsie debug line
* we are not ARDUINO_AVR_NANO_EVERY any more
* fix rp2040 compilation
* fix RadioLibHAL
* Use new arduino-pico core
* Use cortex-m0plus for BSEC2 library
* Forgot RAK11310 target for BSEC2 library
* That branch was merged
* RAK11310 is working too
---------
Co-authored-by: Ben Meadors <benmmeadors@gmail.com>
Co-authored-by: GUVWAF <thijs@havinga.eu>
* Fix LOG_DEBUG messages when no DEBUG_PORT.
* Fix LOG_DEBUG messages when no DEBUG_PORT.
* Fix LOG_DEBUG messages when no DEBUG_PORT.
* Fix LOG_DEBUG messages when no DEBUG_PORT.
* When channel is active, first try receiving that packet
Afterwards we'll try transmitting again
* Remove setStandby in startSend
Already done in isChannelActive()
* Set LORA_DIO1 as RadioLib GPIO for SX127x
* LORA_DIO1 for Heltec v1, overlaps with GPS_TX
Set to RADIOLIB_NC for now
* If receive was not successful, startReceive doesn't trigger the interrupt
So we have to go back to transmitting anyway
---------
Co-authored-by: Ben Meadors <benmmeadors@gmail.com>
* Yank mqtt service envelope queue
* trybuildfix mqtt system
* removed too much
* no excessive heap debugging on release builds
* send QueueStatus messages
The QueueStatus message is sent as a response to the attempt to queue
an outgoing MeshPacket and contains statuses of the last queue
attempt, TX Queue space and capacity and MeshPacket.id that was
queued.
When TX Queue changes status from completely full to at least
a single slot free a QueueStatus message is also sent to notify
that user can queue more messages.
Signed-off-by: Pavel Boldin <pavel.b@techspark.engineering>
* WIP: update protobufs
Signed-off-by: Pavel Boldin <pavel.b@techspark.engineering>
* update protobufs
* regen protos
Signed-off-by: Pavel Boldin <pavel.b@techspark.engineering>
Co-authored-by: Ben Meadors <benmmeadors@gmail.com>
Co-authored-by: Thomas Göttgens <tgoettgens@gmail.com>
Co-authored-by: Sacha Weatherstone <sachaw100@hotmail.com>
* lay groundwork for a possible future architecture
* switch from feature opt-out to feature opt-in
* lay groundwork for a possible future architecture
* switch from feature opt-out to feature opt-in
* fix USE_RTC in variant.h for rak4631_epaper and t-echo
* ensure Screen.h is not included without configuration.h
Co-authored-by: Peter Lawrence <12226419+majbthrd@users.noreply.github.com>
Co-authored-by: Ben Meadors <benmmeadors@gmail.com>
- Function setRandomDelay() calls either startTransmitTimer() or startTransmitTimerSNR()
- After coming back from Rx/Tx-ing, call setRandomDelay()
- If channel is currently busy, call setRandomDelay()