As discovered and tested by @Mictronics, default Serial FIFO size
on the Pico is 32bytes, which is not enough for GPS messages.
This patch increases the Serial GPS FIFO buffer size to 256
for the RP2040 Architecture
fixes https://github.com/meshtastic/firmware/issues/3989
AG33352 is a Mediatek/Airoha GPS/GLONASS/Galileo/BeiDou receiver.
Patch adds relevant detection and setup code.
Thanks to Bluebrolly and kongduino for providing the relevant
information and testing.
This patch also fixes support for the A3335, which is a related chip.
The setup and detection code now works as tested on a real life
T-1000E!
Thanks to @gpsfan for the guidance.
* Address some FIXME comments
These comments have since been addressed by more modern code.
Remove them to reduce the clutter in the codebase.
* Remove 'dumb idea' from SimpleAllocator
4 year old code that was set never to run can probably be safely
deleted.
* Add GPS detection code for Airoha AG3335
Airoha AG3335 is used in Seeed T-1000E Tracker
* Add support for Airoha AG3335
Airoha AG3335 is used in Seeed T-1000E Tracker. This adds
detection code, and code to configure its use.
---------
Co-authored-by: Ben Meadors <benmmeadors@gmail.com>
* feature-T1000-E: add Added the board definition for T1000-E
- integrate a script for rapid dependency download that is compatible with both Linux and Windows platforms.
- add the pin definitions for UART, SPI, GPIO, and other peripherals have been ensured to be correct.
- add the env configuration for PlatformIO.
* refact-T1000-E: redefine T1000-E board
* feature-T1000-E: add basic sensors
* feature-T1000-E: add button init
* feat: add DRADIOLIB_GODMODE defination for use function setDioAsRfSwitch to DIO LORA RF
* feat : add gps(GNSS_Airoha) sleep mode
* feat: add behavier when rec or send message
* chore: hang IIC bus usage to avoid sensor address conflict
* feat: add sensor data acquisition
* feat : support Airoha GPS
- add disable it in FSM
- update lookForTime and lookForLocation function
* fix: fix a bug
* version: change version to 0.9.0
* Update tracker-t1000-e.json
Remove a space
* Delete variants/tracker-t1000-e/run_once.sh
Delete not need as we will change platformio.ini
* Update platformio.ini
Update SoftDevice 7.3.0 usage in line with other lr1110 targets
Do we need to keep GODMODE ?
* fix: Button behavier incorrect bug
* fix:remove some invaild code of TextMessageModule
* fix: remove invaild comment
* version: change version to 0.9.1
- update mark's patch
- remove some invaild code and comments
- fix button behavier
* trunk format
* fix: HELTEC_CAPSULE_SENSOR_V3 block got accidentally deleted
* fix: EnvironmentTelemetry upstream merge went awry.
* fix: Added macro definitions to ensure correct operation of LORA section
* fix :GNSS_AIROHA macro defination in line with others
* fix: upstream backmerge accidentally.
* fix: wrap macro PIN_3V3_EN BUZZER_EN_PIN GNSS_AIROHA in the TRACKER_T1000_E macro guard
---------
Co-authored-by: Mark Trevor Birss <markbirss@gmail.com>
Co-authored-by: Ben Meadors <benmmeadors@gmail.com>
Co-authored-by: Thomas Göttgens <tgoettgens@gmail.com>
* Refactor GPSPowerState enum
Identifies a case where the GPS hardware is awake, but an update is not yet desired
* Change terminology
* Clear old lock-time prediction on triple press
* Use exponential smoothing to predict lock time
* Rename averageLockTime to predictedLockTime
* Attempt: Send PMREQ with duration 0 on MCU deep-sleep
* Attempt 2: Send PMREQ with duration 0 on MCU deep-sleep
* Revert "Attempt 2: Send PMREQ with duration 0 on MCU deep-sleep"
This reverts commit 8b697cd2a4.
* Revert "Attempt: Send PMREQ with duration 0 on MCU deep-sleep"
This reverts commit 9d29ec7603.
* Remove unused notifyGPSSleep Observable
Handled with notifyDeepSleep, and enable() / disable()
* WIP: simplify GPS power management
An initial attempt only.
* Honor #3e9e0fd
* No-op when moving between GPS_IDLE and GPS_ACTIVE
* Ensure U-blox GPS is awake to receive indefinite sleep command
* Longer pause when waking U-blox to send sleep command
* Actually implement soft and hard sleep..
* Dynamically estimate the threshold for GPS_HARDSLEEP
* Fallback to GPS_HARDSLEEP, if GPS_SOFTSLEEP unsupported
* Move "excessive search time" behavior to scheduler class
* Minor logging adjustments
* Promote log to warning
* Gratuitous buffer clearing on boot
* Fix inverted standby pin logic
Specifically the standby pin for L76B, L76K and clones
Discovered during T-Echo testing: totally broken function, probe method failing.
* Remove redundant pin init
Now handled by setPowerState
* Replace max() with if statements
Avoid those platform specific implementations..
* Trunk formatting
New round of settings.json changes keep catching me out, have to remember to re-enable my "clang-format" for windows workaround.
* Remove some asserts from setPowerState
Original aim was to prevent sending a 0 second PMREQ to U-blox hardware as part of a timed sleep (GPS_HARDSLEEP, GPS_SOFTSLEEP). I'm not sure this is super important, and it feels tidier to just allow the 0 second sleeptime here, rather than fudge the sleeptime further up.
* Fix an error determining whether GPS_SOFTSLEEP is supported
* Clarify a log entry
* Set PIN_STANDBY for MCU deep-sleep
Required to reach TTGO's advertised 0.25mA sleep current for T-Echo. Without this change: ~6mA.
* Refactor GPSPowerState enum
Identifies a case where the GPS hardware is awake, but an update is not yet desired
* Change terminology
* Clear old lock-time prediction on triple press
* Use exponential smoothing to predict lock time
* Rename averageLockTime to predictedLockTime
* Attempt: Send PMREQ with duration 0 on MCU deep-sleep
* Attempt 2: Send PMREQ with duration 0 on MCU deep-sleep
* Revert "Attempt 2: Send PMREQ with duration 0 on MCU deep-sleep"
This reverts commit 8b697cd2a4.
* Revert "Attempt: Send PMREQ with duration 0 on MCU deep-sleep"
This reverts commit 9d29ec7603.
* Replace (bool) isAwake with an enum, to track standby states
* Tidy-up, extra logging
* Rename enum values
* Reorder GPSPowerState enum
Possibly more intuitive when reading logs
* Avoid lego comments
de22c57298 (r1627334779)
* Portduino multiple logging levels
* Fixes based on GPSFan work
* Fix derped logic
* Correct size field for AID message
* Reformat to add comments, beginning of GPS rework
* Update PM2 message for Neo-6
* Correct ECO mode logic as ECO mode is only for Neo-6
* Cleanup ubx.h add a few more comments
* GPS rework, changes for M8 and stub for M10
* Add VALSET commands for u-blox M10 receivers
* Add VALSET commands for u-blox M10 receivers
tweak M8 commands
add comments for VALSET configuration commands
* Add commands to init M10 receivers,
tweak the M8 init sequence, this is a WIP as there are still some issues during init.
Add M10 version of PMREQ.
* Add wakeup source of uartrx to PMREQ_10
The M10 does not respond to commands when asleep,
may need to do this for the M8 as well
---------
Co-authored-by: Jonathan Bennett <jbennett@incomsystems.biz>
Co-authored-by: Ben Meadors <benmmeadors@gmail.com>
* Portduino multiple logging levels
* Fixes based on GPSFan work
* Fix derped logic
* Correct size field for AID message
* Reformat to add comments, beginning of GPS rework
* Update PM2 message for Neo-6
* Correct ECO mode logic as ECO mode is only for Neo-6
* Cleanup ubx.h add a few more comments
* GPS rework, changes for M8 and stub for M10
---------
Co-authored-by: Jonathan Bennett <jbennett@incomsystems.biz>
Co-authored-by: Ben Meadors <benmmeadors@gmail.com>
* Portduino multiple logging levels
* Fixes based on GPSFan work
* Fix derped logic
* Correct size field for AID message
* Reformat to add comments, beginning of GPS rework
* Update PM2 message for Neo-6
* Correct ECO mode logic as ECO mode is only for Neo-6
* Cleanup ubx.h add a few more comments
---------
Co-authored-by: Jonathan Bennett <jbennett@incomsystems.biz>
Co-authored-by: Ben Meadors <benmmeadors@gmail.com>
* Fix for T-Beam 1.2 GPS, with DEBUG enabled
* Don't break other devices
* Saving GPS data on this breaks on next boot. Fix.
* derp
* disable the extra verbosity
* Try the same sort of factory reset as the Lilygo image
* Catch GPS reboots and squash
* trunk
* GPS
---------
Co-authored-by: Ben Meadors <benmmeadors@gmail.com>
* Refactor GPS to not probe if pins not defined
* Use Named Constructor to clean up code
* Move doGPSPowerSave to GPS class
* Make sure to set GPS awake on triple-click
* Cleanup and remove dead code
* Rename GPS_PIN_WAKE to GPS_PIN_STANDBY
* Actually put GPS to sleep between fixes
* add GPS_POWER_TOGGLE for heltec-tracker and t-deck
* Change GPS_THREAD_INTERVAL to 200 ms
* More dead code, compiler warnings, and add returns
* Add Number of sats to log output
* Add pgs enable and triple-click config
* Track average GPS fix time to judge low-power time
* Feed PositionModule on GPS fix
* Don't turn off the 3v3_s line on RAK4631
when the rotary is present.
* Add GPS power standbyOnly option
* Delay setting time currentQuality
to avoid strange log message.
* Typos, comments, and remove unused variable
* Short-circuit the setAwake logic on GPS disable
* heltec-tracker 0.3 GPS power saving
* set en_gpio to defined state
* Fix fixed_position logic with GPS disabled
* Don't process GPS serial when not isAwake
* Add quirk for Heltec Tracker GPS powersave
---------
Co-authored-by: Ben Meadors <benmmeadors@gmail.com>
Co-authored-by: mverch67 <manuel.verch@gmx.de>
Co-authored-by: Manuel <71137295+mverch67@users.noreply.github.com>
* Use UINT32_MAX to indicate no configured GPS
* Refactor GPS to not probe if pins not defined
* Minor cleanups related to rework
* Use Named Constructor to clean up code
* Actually disable the GPS thread
* Don't actually disable the GPS thread
* Move doGPSPowerSave to GPS class
* Make sure to set GPS awake on triple-click
---------
Co-authored-by: Ben Meadors <benmmeadors@gmail.com>
* First attempt at lazy config of GPS
* More GPS rework
Break GPS init into smaller, interruptable steps
Move more GPS commands into ubx.h
Combine Setup functions
* Move the rest of UBX messages to ubs.h
* Add GNSS model recognition function
* Fix GNSS initialization failure
* GPS.cpp difference between runOnce and ESP32S3 and ESP32 versions
Co-authored-by: Ben Meadors <benmmeadors@gmail.com>