Skip to content

Add Trimble position provider - #4641

Open
Withalion wants to merge 39 commits into
masterfrom
feature/trimble-provider
Open

Add Trimble position provider#4641
Withalion wants to merge 39 commits into
masterfrom
feature/trimble-provider

Conversation

@Withalion

@Withalion Withalion commented Aug 9, 2026

Copy link
Copy Markdown
Collaborator

resolves https://github.com/MerginMaps/product/issues/121

For easier integration with Trimble external GNSS devices a new provider has been added. The setup has been essentially changed to be "one-click". Trimble Mobile Manager (TMM) companion app is required for proper setup.

New Workflows:

screen-20260824-125532.mp4
screen-20260824-124458.mp4

Testing criteria:

  • It's possible to add trimble external GNSS device
  • All information gets filled in GPS info Panel
  • It's possible to manage provider
  • It's not possible to change antenna height in the app, user should get redirected to TMM
  • Elevation transformation is supported
  • Geoid info is visible for both TMM provided height and transformed height
  • Custom CRS setup in TMM is supported
  • App tells you TMM is missing when it's missing

@Withalion Withalion added this to the 2026.4.0 milestone Aug 9, 2026
@Withalion
Withalion requested a review from tomasMizera August 9, 2026 22:48
@Withalion Withalion self-assigned this Aug 9, 2026
@github-actions

Copy link
Copy Markdown

📦 Build Artifacts Ready

OS Status Build Info Workflow run
macOS Build Build failed or not found. #7150
linux Build Build failed or not found. #7176
win64 Build 📬 Mergin Maps 63521 win64 Expires: 09/11/2026 #6352
Android Build 📬 Mergin Maps 846111 APK [armeabi-v7a] Expires: 09/11/2026 #8461
📬 Mergin Maps 846111 APK [armeabi-v7a] Google Play Store #8461
Android Build 📬 Mergin Maps 846151 APK [arm64-v8a] Expires: 09/11/2026 #8461
📬 Mergin Maps 846151 APK [arm64-v8a] Google Play Store #8461
iOS Build 📬 Build number: 26.08.940211 #9402

@IvaKuklica

IvaKuklica commented Aug 12, 2026

Copy link
Copy Markdown

Testing Comments — Android (Trimble Mobile Manager integration)

  • 🧨 1. GPS connection status shows "connected" when Trimble receiver is not actually connected

  • When the user is NOT connected to the Trimble external GPS device (only the Trimble Mobile Manager app is open, with no device paired), the GPS info panel and the Manage GPS receiver screen both incorrectly show the status as "connected."

  • The app is not actually receiving data from the Trimble external GPS device in this state — only TMM itself is running. This is misleading, as it suggests an active GPS connection to the external receiver when none exists.

  • The connection status should reflect whether the external Trimble device itself is connected, not just whether TMM is open.

  • 2. Redirect to TMM on app launch
    When the app is opened, there's a brief redirect to TMM with a loading screen before Mergin Maps is displayed.

Screen_Recording_20260812_144154.mp4
  • 3. Satellites in use/view
    The number of satellites shown for both fields (in use/in view) stays the same, since there's only one value coming from TMM to display.
Screen_Recording_20260811_153349.2.mp4

With trimble position provider after startup it looked like users
started Trimble app instead of MM. We add a bit of delay, so loading is more
natural.
@Withalion

Copy link
Copy Markdown
Collaborator Author

Issues found in testing should be fixed now:

  1. After successful connection to TMM the status is "No data", after connecting to Trimble device the state should change between "Connecting", "Connected", "Disconnecting", "Disconnected". After the device is disconnected the data is not hidden.
  2. The app should not redirect to TMM right away on startup, it will wait until project is loaded. The issue was more noticeable if TMM was not running, if it was running there was no app switch.
  3. Issue has been fixed correct values are shown

@github-actions

github-actions Bot commented Aug 22, 2026

Copy link
Copy Markdown

Coverage Report for CI Build 33050183319

Warning

No base build found for commit fd52673 on master.
Coverage changes can't be calculated without a base build.
If a base build is processing, this comment will update automatically when it completes.

Coverage: 59.543%

Details

  • Patch coverage: No coverable lines changed in this PR.

Uncovered Changes

No uncovered changes found.

Coverage Regressions

Requires a base build to compare against. How to fix this →


Coverage Stats

Coverage Status
Relevant Lines: 15723
Covered Lines: 9362
Line Coverage: 59.54%
Coverage Strength: 94.19 hits per line

💛 - Coveralls

@github-actions

Copy link
Copy Markdown

📦 Build Artifacts Ready

OS Status Build Info Workflow run
macOS Build 📬 Mergin Maps 71991 dmg Expires: 22/11/2026 #7199
linux Build 📬 Mergin Maps 72251 x86_64 Expires: 22/11/2026 #7225
win64 Build 📬 Mergin Maps 64011 win64 Expires: 22/11/2026 #6401
Android Build 📬 Mergin Maps 851051 APK [arm64-v8a] Expires: 22/11/2026 #8510
📬 Mergin Maps 851051 APK [arm64-v8a] Google Play Store #8510
Android Build 📬 Mergin Maps 851011 APK [armeabi-v7a] Expires: 22/11/2026 #8510
📬 Mergin Maps 851011 APK [armeabi-v7a] Google Play Store #8510
iOS Build 📬 Build number: 26.08.945111 #9451

@RastoHu

RastoHu commented Aug 25, 2026

Copy link
Copy Markdown

Testing 2

  • If antenna height is set in TMM, the MM app does not display its value in the bubble on map canvas.
  • iOS: Connecting to a Trimble device causes an infinite switching loop between the TMM and MM apps.

@github-actions

Copy link
Copy Markdown

📦 Build Artifacts Ready

OS Status Build Info Workflow run
macOS Build 📬 Mergin Maps 72181 dmg Expires: 24/11/2026 #7218
linux Build 📬 Mergin Maps 72441 x86_64 Expires: 24/11/2026 #7244
win64 Build 📬 Mergin Maps 64201 win64 Expires: 24/11/2026 #6420
Android Build 📬 Mergin Maps 852951 APK [arm64-v8a] Expires: 24/11/2026 #8529
📬 Mergin Maps 852951 APK [arm64-v8a] Google Play Store #8529
Android Build 📬 Mergin Maps 852911 APK [armeabi-v7a] Expires: 24/11/2026 #8529
📬 Mergin Maps 852911 APK [armeabi-v7a] Google Play Store #8529
iOS Build 📬 Build number: 26.08.947011 #9470

@RastoHu

RastoHu commented Aug 26, 2026

Copy link
Copy Markdown

Testing 3

  • iOS/Android: When antenna height (AH) is set in TMM, TMM applies the height offset, but our app subtracts the AH value again (e.g., subtracting 5m twice)
  • Android 9: when user disconnects GNSS in TMM, our app should display status "No data" in GPS info panel, but it still show status "Connected"

Enhancement: #4673

@Withalion

Copy link
Copy Markdown
Collaborator Author

Let's make the Android issue as enhancement for future

{ QStringLiteral( "NAD83(MA11) (EPOCH:2010)" ), QStringLiteral( "EPSG:6324" ) },
{ QStringLiteral( "NAD83(PA11) (EPOCH:2010)" ), QStringLiteral( "EPSG:6321" ) },
{ QStringLiteral( "NZGD2000" ), QStringLiteral( "EPSG:4959" ) },
{ QStringLiteral( "OSNetv2009" ), QStringLiteral( "EPSG:4277" ) }, // TODO: create 3D CRS here

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

todo?

emit positionChanged( GeoPosition() );
}

void TrimblePositionProvider::openAntennaHeightPage()

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why not bothering with this native code in trimbleregistration?

@github-actions

Copy link
Copy Markdown

📦 Build Artifacts Ready

OS Status Build Info Workflow run
macOS Build 📬 Mergin Maps 72241 dmg Expires: 25/11/2026 #7224
linux Build 📬 Mergin Maps 72501 x86_64 Expires: 25/11/2026 #7250
win64 Build 📬 Mergin Maps 64261 win64 Expires: 25/11/2026 #6426
Android Build 📬 Mergin Maps 853411 APK [armeabi-v7a] Expires: 25/11/2026 #8534
📬 Mergin Maps 853411 APK [armeabi-v7a] Google Play Store #8534
Android Build 📬 Mergin Maps 853451 APK [arm64-v8a] Expires: 25/11/2026 #8534
📬 Mergin Maps 853451 APK [arm64-v8a] Google Play Store #8534
iOS Build 📬 Build number: 26.08.947611 #9476

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.

4 participants