picking up eos change that did not get committed, for PORT designation feature
This commit is contained in:
parent
14db7f219c
commit
515cc9bcff
2 changed files with 52 additions and 3 deletions
25
README.md
25
README.md
|
|
@ -125,11 +125,19 @@ cd /usr/local/src/MotionCal
|
|||
|
||||
Then select the T-Beam USB serial port in the MotionCal window.
|
||||
|
||||
To include a manually-created PTY, such as a `socat` split stream, pass it with `--port`:
|
||||
|
||||
```sh
|
||||
./MotionCal --port /tmp/ttyMotionCal
|
||||
```
|
||||
|
||||
The port will appear in the Port menu and the Port dropdown even if it is not discovered by MotionCal's automatic `/dev/tty*` scan.
|
||||
|
||||
If running under Wayland and the GUI has trouble starting or rendering, `GDK_BACKEND=x11` forces the wx/GTK path through X11 compatibility.
|
||||
|
||||
```sh
|
||||
cd /usr/local/src/MotionCal
|
||||
GDK_BACKEND=x11 ./MotionCal
|
||||
GDK_BACKEND=x11 ./MotionCal --port /tmp/ttyMotionCal
|
||||
```
|
||||
|
||||
## Calibration Procedure
|
||||
|
|
@ -233,6 +241,21 @@ Try the calibration in a different physical location.
|
|||
Watch for read_fail or overflow messages from the bridge firmware.
|
||||
```
|
||||
|
||||
If MotionCal crashes after a long run with Mesa or AMDGPU allocation errors:
|
||||
|
||||
```text
|
||||
MotionCal's magnetometer sample buffer is bounded at 650 points, so it is not
|
||||
intended to grow without limit. Errors such as "MESA: error: amdgpu: failed to
|
||||
allocate ... from the 32-bit address space" point to the OpenGL/Mesa rendering
|
||||
stack rather than the calibration data buffer.
|
||||
|
||||
Save calibration once the fit is stable, then restart MotionCal for another run.
|
||||
Avoid running multiple OpenGL-heavy viewers at the same time if this reproduces.
|
||||
For troubleshooting, try software rendering:
|
||||
|
||||
LIBGL_ALWAYS_SOFTWARE=1 GDK_BACKEND=x11 ./MotionCal --port /tmp/ttyMotionCal
|
||||
```
|
||||
|
||||
## Repository Notes
|
||||
|
||||
The upstream project did not include a README at the time this fork was created. This document records the local build workflow and the T-Beam/QMC6310 calibration workflow used with this fork.
|
||||
|
|
|
|||
30
gui.cpp
30
gui.cpp
|
|
@ -3,9 +3,22 @@
|
|||
|
||||
|
||||
wxString port_name;
|
||||
static wxArrayString requested_ports;
|
||||
static bool show_calibration_confirmed = false;
|
||||
static bool calibration_saved = false;
|
||||
|
||||
static wxArrayString available_port_list(void)
|
||||
{
|
||||
wxArrayString list = serial_port_list();
|
||||
for (size_t i=0; i < requested_ports.GetCount(); i++) {
|
||||
if (list.Index(requested_ports[i]) == wxNOT_FOUND) {
|
||||
list.Add(requested_ports[i]);
|
||||
}
|
||||
}
|
||||
list.Sort();
|
||||
return list;
|
||||
}
|
||||
|
||||
static int valid_mag_point_count(void)
|
||||
{
|
||||
int i, count=0;
|
||||
|
|
@ -383,7 +396,7 @@ void MyFrame::OnShowMenu(wxMenuEvent &event)
|
|||
menu->AppendRadioItem(9000, " (none)");
|
||||
bool isopen = port_is_open();
|
||||
if (!isopen) menu->Check(9000, true);
|
||||
wxArrayString list = serial_port_list();
|
||||
wxArrayString list = available_port_list();
|
||||
int num = list.GetCount();
|
||||
for (int i=0; i < num; i++) {
|
||||
menu->AppendRadioItem(9001 + i, list[i]);
|
||||
|
|
@ -399,7 +412,7 @@ void MyFrame::OnShowPortList(wxCommandEvent& event)
|
|||
//printf("OnShowPortList\n");
|
||||
m_port_list->Clear();
|
||||
m_port_list->Append("(none)");
|
||||
wxArrayString list = serial_port_list();
|
||||
wxArrayString list = available_port_list();
|
||||
int num = list.GetCount();
|
||||
for (int i=0; i < num; i++) {
|
||||
m_port_list->Append(list[i]);
|
||||
|
|
@ -480,6 +493,19 @@ bool MyApp::OnInit()
|
|||
// make sure we exit properly on macosx
|
||||
SetExitOnFrameDelete(true);
|
||||
|
||||
for (int i=1; i < argc; i++) {
|
||||
wxString arg(argv[i]);
|
||||
if ((arg == "--port" || arg == "-p") && i + 1 < argc) {
|
||||
wxString requested(argv[++i]);
|
||||
if (!requested.IsEmpty() && requested_ports.Index(requested) == wxNOT_FOUND) {
|
||||
requested_ports.Add(requested);
|
||||
}
|
||||
} else if (arg == "--help" || arg == "-h") {
|
||||
fprintf(stderr, "Usage: MotionCal [--port /path/to/tty]\n");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
wxPoint pos(100, 100);
|
||||
|
||||
MyFrame *frame = new MyFrame(NULL, -1, "Motion Sensor Calibration Tool",
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue