Conversation
and add cli_test.js
There was a problem hiding this comment.
Pull Request Overview
This PR adds a "SimpleGCS" web-based ground control station designed for autonomous buoys and small boats. It builds on the existing WebTools framework and adds MAVLink FTP capabilities for fetching fence data.
- Adds a complete SimpleGCS implementation with touch-friendly interface for mobile use
- Implements MAVLink FTP protocol for file transfers (specifically for fence data)
- Updates TelemetryDashboard to use a centralized MAVLink module structure
Reviewed Changes
Copilot reviewed 13 out of 20 changed files in this pull request and generated 6 comments.
Show a summary per file
| File | Description |
|---|---|
| modules/MAVLink/mavftp.js | New MAVLink FTP implementation and fence data parser |
| modules/MAVLink/local_modules/ | Added jspack dependencies for binary data handling |
| SimpleGCS/ | Complete new GCS application with map interface and vehicle control |
| TelemetryDashboard/ | Updated to use centralized MAVLink modules and improved connection handling |
| Dev/index.html | Added SimpleGCS to the development index page |
Comments suppressed due to low confidence (1)
modules/MAVLink/mavftp.js:116
- Variable name 'setup_passphase' contains a spelling error. It should be 'setup_passphrase' (missing 'r').
payload: null
|
This is great to see! I think the world will be flooded with custom GCS from now on and I think it's going to make AP's usability much better. |
IamPete1
left a comment
There was a problem hiding this comment.
There is quite a bit of inlining of html/css which could be done in the index either directly or with a template.
The formating is also quite bad in places. It would benefit from a tidyup to make it easyer to read.
| DOCK : 8, | ||
| CIRCLE : 9, |
| params[0] || 0, params[1] || 0, params[2] || 0, params[3] || 0, | ||
| params[4] || 0, params[5] || 0, params[6] || 0 |
There was a problem hiding this comment.
Strictly this should be || NaN
| const el = document.createElement("div"); | ||
| el.className = "toast"; | ||
| el.textContent = msg; | ||
| document.body.appendChild(el); |
There was a problem hiding this comment.
html templates can make this stuff a bit nicer. You can import the template and inject it.
| <div style="display:flex; justify-content:space-between; font-size:13px; margin-bottom:4px;"> | ||
| <span></span> | ||
| <span id="armed-pill" style=" | ||
| padding:1px 4px; border-radius:999px; font-weight:500; | ||
| background:#9e9e9e; color:#111;">DISARM</span> | ||
| </div> | ||
| <div style="opacity:0.8">MODE: <span id="mode-value" style="font-weight:700">—</span></div> |
There was a problem hiding this comment.
Or it looks like this is always added? Maybe it can just be in the html.
| <div style="opacity: 0.7; margin-bottom: 2px;">BATTERY</div> | ||
| <div id="battery-value" style="font-size: 14px; font-weight: bold;">---%</div> | ||
| <div id="current-value" style="font-size: 12px; opacity: 0.85;">--- A</div> |
| }; | ||
|
|
||
| const svg = ` | ||
| <svg xmlns="http://www.w3.org/2000/svg" width="40" height="40" viewBox="0 0 24 24" style="transform: rotate(${rotateDeg}deg); transform-origin: center;"> |
There was a problem hiding this comment.
You can do the rotation in leaflet I think. You could have a look at the map widget in telemetry dashboard.
| url_input.value = localStorage.getItem(LS_KEYS.url) || "ws://127.0.0.1:56781"; | ||
| passphrase_input.value = localStorage.getItem(LS_KEYS.pass) || ""; |
There was a problem hiding this comment.
I have been reading up about GDPR, this is probably not allowed without getting consent first. But I guess we have the same problem on the wiki too.
| } | ||
| } | ||
| } No newline at end of file | ||
| } |
There was a problem hiding this comment.
Its there a real change in this file somewhere?
One disadvantage of the json widget format is that it is hard to read in its native format like this.
| @@ -0,0 +1,113 @@ | |||
| //!/usr/bin/env node | |||
There was a problem hiding this comment.
Would this be better in the new SimpleGSC directory?
|
Not sure why u didnt look around at the existing web-based frontends, and node-based backends before writing this.? There's plenty of existing similar work: ( did u refer to any of these?) |
simple web UI for a boat, designed for my autonomous buoy

builds on #265