Skip to content

Release v2.5 - Add TCP and extend AP config #333

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 81 commits into from
Sep 21, 2022
Merged

Release v2.5 - Add TCP and extend AP config #333

merged 81 commits into from
Sep 21, 2022

Conversation

nseidle
Copy link
Member

@nseidle nseidle commented Sep 21, 2022

Changes in this release:

  • Add NMEA over TCP
  • Bug fix - Correctly set default ESP-Now Peer Count
  • Bug fix - Prevent SD firmware panic on 4MB devices
  • Bug fix - Print single list of firmware files
  • Bug fix - Allow SD profiles to overwrite device settings
  • Bug fix - Allow L-Band key update after boot
  • Add resetting an individual profile to factory defaults
  • Add antenna height and reference point to fixed Geodetic base
  • Remove http:// from caster address to avoid DNS failures
  • Print error if SSID is missing for any WiFi feature
  • Increase menu timeouts to 10 minutes
  • Add radio, current position, Bluetooth control to AP config
  • Add Antenna height and ARP to AP config
  • Add ability to copy current coordinates to fixed base to AP config
  • Increase logging capabilities with circular buffer
  • Fix line endings in settings files
  • Display NTRIP Server/Client uptime and reconnects
  • Fix display artifact during RTCM transmission
  • Increase NTRIP error detection and reconnect handling
  • Fix AP config page disconnect on some Android phones
  • Migrate to ESP32 core v2.0.4

LeeLeahy2 and others added 30 commits August 27, 2022 19:11
Enable the NMEA client program to forward data from the RTK NMEA TCP
server to the Vespucci NMEA server.

Use this on a local WiFi network.  Both the RTK and the Android phone
need to connect to the local WiFi network.  This NMEA client program
eliminates the RTK NMEA client code and validates the Android connection
to the Vespucci NMEA server.  Once the Android connection is working, it
is easy to enable the RTK NMEA client by enabling the Mobile Hot Spot on
the phone and switching the WiFi SSID and password in the RTK.
Always disconnect the MQTT client if it was connected.

Prepare to allocate and free the certificateContents and keyContents
buffers.
Update the NMEA client support program
Allocate and free the L-Band context buffers
Prevents the error: write(): fail on fd 48, errno: 113, "Software caused connection abort"

Increase NTRIP Caster authorization timeout to 10s
Empty all of the UART2 receive data into the ring buffer before
attempting to send any data over Bluetooth or log any data.  This should
ensure that entire messages are in the ring buffer and will be handled
as such by Bluetooth and writing to the log file.
Testing:
* Verified client disconnect is detected and closes ESP32 NMEA socket
* Verified disabling NMEA TCP via system menu closes ESP32 NMEA socket
* Verified wifiStop while NMEA client active closes ESP32 NMEA socket
* Switching from Rover to Base closes ESP32 NMEA socket
* Switching from Base to Rover closes ESP32 NMEA socket
Support using a phone as a WiFi hot spot.  The RTK NMEA TCP client
connects to the gateway IP address (the phone's WiFi hot spot) on port
1958.  If an application such as Vespucci is running as a NMEA server
using port 1958, then the RTK will connect to the application.

Android WiFi Settings
1.  Disable WiFi
2.  Enable Mobile Hot Spot
3.  Set the Network Name
4.  Set the Network Password
5.  Set the Band to 2.4 GHz
6.  Enable Wi-Fi sharing - This enables users of the Hot Spot to talk to
applications on the phone

In Vespucci:
1.  Click on the gear icon
2.  Select "Advanced preferences"
3.  Select "Location settings"
4.  Select "GPS/GNSS source"
5.  Select "NMEA from TCP server"
6.  Select "NMEA network source"
7.  Enter an IP address immediately followed by a colon immediately
followed by 1958
8.  Click on the OK button
9.  Check the "Leave GPS/GNSS turned off" checkbox
10. Check the "Fallback to network location" checkbox
11. Exit the Location settings menu by clicking on the back arrow "<"
symbol
12. Exit the Advanced preferences menu by clicking on the back arrow "<"
symbol
13. Exit the Preferences menu by clicking on the back arrow "<" symbol

On the RTK device:
1.  Start the device in Rover mode
2.  Enter Serial Config
3.  Enter '1' to Configure the GNSS Receiver
4.  Enable the NTRIP Client
5.  Enter the WiFi SSID and Password
6.  Set the Caster Address
7.  Set the Caster Port
8.  Set the Caster User Name
9.  Set the Mountpoint
10. Set the Mountpoint Password
11. Exit the GNSS menu
12. Enter 's' to enter the System menu
13. Enter 'c' to enable the NMEA TCP client (connect to phone)
14. Exit the System menu
15. Exit the Main menu
Issue detected: Short log file, captured only 40 minutes when the
maximum log time was set to 60 minutes.

Steps to reproduce:
1. Enter the serial configuration
2. Enter 5 to enter the Logging Menu
3. If logging is disabled, enter 1 to enable logging
4. Enter 2 and then 60 to set the maximum log time to 60 minutes
5. If the maximum log length < 60 minutes then enter 3 and enter a value
greater than or equal to 60 for the maximum log length to produce a
single file containing all of the log data
6. Exit the serial configuration menus
7. After about 5 minutes, enter the serial configuration and disable
logging
8. After about another 15 minutes, enter the serial configuration and
enable logging
9. After an hour the logging should have stopped and the last log file
should contain data that is about 40 minutes long, there should also be
a second log file containing about 5 minutes of data.  However, 15
minutes of data was not logged because logging was disabled!

Previous behavior: Maximum log time computed from the time logging was
first enabled either at boot or after manually enabling logging.  If
logging was stopped and then restarted, a new log file would be created
but logging would stop when the maximum logging time was reached,
including the time that logging was disabled.  The data in the log files
would be missing N minutes due to the logging being disabled.

New behavior: Maximum log time is reset when logging is disabled.  When
logging is enabled again, logging would run up to the maximum log time
and the subsequent log files would contain the total specified data.
Once the maximum logging is reached, logging will stop.  Logging can be
manually disabled and enabled or the system rebooted to start logging
again.

If the test above is re-run, there will be two log files, the first
containing about 5 minutes of data and the second containing a full 60
minutes of data.
Empty UART data into ring buffer then send data
Reset the maximum logging time when logging is disabled
This allows the AP Config of measurement rates to correct set GSV.
Implement settingsToDefaults(). Reduce large arrays on stack.
The new core settings are a blessing and a curse: many bugs discovered and fixed.
Assigning default settings was causing stack canary panic.
Remove old unused code. Webpage never reports "profileNumber".
NTRIP Server stops if 'banned' is detected.
Connection attempts is reset every time the NTRIP Server/Client is restarted. Add count to be displayed during system menu indicating the total re-connect attempts. This is better for uptime displays.
@nseidle nseidle merged commit cc4b12c into main Sep 21, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants