Closed rgleason closed 1 year ago
Bernd, you've renamed. Thank you. Hopefully in the next 4-5 days we will have the cmake frontend from testplugin_pi more adequately tested for installation on all supported OS with Opencpn 5.7.1. at which point I should be able to update this plugin.
If you would like to test it, testplugin_pi v 1.0.225.1 is in the Beta Catalog in Options > Plugins PIM To enable the beta catalog add to the opencpn.conf or opencpn.ini file [PlugIns] catalogexpert=1 Then you'll be able to change Options > Plugins to use the Beta Catalog.
Here is the Development Manual The Testplugin Template area is https://opencpn-manuals.github.io/main/ocpn-dev-manual/0.1/pm-tp-template.html which needs updates and work. The ShipDriver Template area is where the best explanation about the CI Services Configuration is dealt with. however it is detailed for Ship Driver. Basically,as a start you need free opensource accounts with Circleci, Appveyor and Cloudsmith. If you want me to build these plugins while you get setup and learn, that's fine, I can certainly do it.
Circleci, Appveyor and Cloudsmith ... I think, i will not do that. It is too much time for me.
Understood.
Bernd if you have time, can you test to see if testplugin_pi v1.0.225.1 works on your OS and report on Cruiser Forum in the thread? This needs to be done for all OS before I can deploy to other plugins. Thanks. See https://www.cruisersforum.com/forums/f134/opencpn-beta-version-5-7-1-beta-test-1-plugins-271525.html#post3734363
Bernd I am trying to get raymarine-autopilot circleci builds accepted by cloudsmith. There is some problem perhaps with authentication that I have to get resolved. The other problem we have is that the Linux builds are failing.
In the meantime I have pulled your most recent changes and built it locally and tried it out. I am able to get the buttons to output nmea0183 $talk as shown in the screenshot. Don't know any way to simulate the incoming nmea0183 yet.
I've checked the certifications and found those to be OK, but I did find an "Access Control" parameter in cloudsmith that is new to me and that was set to "read" so that is probably the issue. I've set it to write. I've pushed another commit to github to see if the build chain works now. https://github.com/rgleason/raymarine_autopilot_pi If there is a green checkmark next to the continuous -appveyor build that means the build chain was successful and the files were deployed to cloudsmith and in this case will probably be in the raymarine-autopilot-alpha repository because I did not put a tag on the commit and push tags. https://cloudsmith.io/~opencpn/repos/raymarine-autopilot-alpha/packages/
Github Raymarine-Autopilot on my repos
Hi Rick, sorry for hte late answers, I was a litle busy.
I test the incomming on my developer PC with com0com hub4com hterm https://www.der-hammer.info/pages/terminal.html (or an other serial terminal)
as an internal loop.
Hterm -> com0com(comPair1) <-> hub4com(prozess) <-> com0com(comPair2) -> OPENCPN
or ... if you have too Serial Ports on your PC you can use a "null modem wire"
In the Hterm I copy the NMEA string and send it with
Example sentences with the "autopilot state" to be send to OPENCPN. (make copy and paste to hterm)
Standby : $HTALK,84,16,89,88,40,00,FF,02,06*7C Auto : $HTALK,84,D6,89,88,42,00,00,02,06*0B AutoTrack : $HTALK,84,D6,89,88,4A,00,00,02,06*78 AutoWind : $HTALK,84,D6,89,88,46,00,00,02,06*0F
The "84" command sentence send by Autopilot every second. So when this sentence is not receiving for a long time, I switch off the Plugindisplay to "-------" ....
The meaning of the bytes after the "HTALK" are discribed here : http://www.thomasknauf.de/rap/seatalk2.htm
The very importand command with is needed from from autopilot is the "84" command. but these others are also used from Plugin: 0x84,0x86,0x87,0x91
with the "cloudsmith" problem i think, I could not help.
Bernd.
found some Seatalk NMEA Converter on Github but only in one direction.
https://github.com/MartinDavidWaller/SeaTalkNMEA ( But is not Sending $STALK must be modifyed). https://github.com/MatsA/seatalk1-to-NMEA0183 ( in Pyton)
to buy this works well https://www.gadgetpool.eu/product_info.php?products_id=54&PHPSESSID=pctvmjueihoe36n51uonciqjcp
Bernd, thanks for the helpful directions for testing! I hope to use those when I find some time. Also I actually have an old gadgetpool nmea seatalk link device that needs to have its code updated!
I think I've found the source of the problem with building. Cloudsmith used to have an issue with using "_" in a repository and changed it to "-" automatically in the title. So I am going to try "raymarine-autopilot" set(CLOUDSMITH_BASE_REPOSITORY "raymarine-autopilot") # without the pi Just something else to to try to remember... about using "" with cloudsmith! I think it will work now. I've pushed a commit again and it has built for appveyor https://github.com/rgleason/raymarine_autopilot_pi and deployed files successfully to cloudsmith. to the raymarine-autopilot-beta repository https://cloudsmith.io/~opencpn/repos/raymarine-autopilot-beta/packages/
Lets see if the linux builds work. We may have to fix some things in the code
Well, we had some successes and some failures https://github.com/rgleason/raymarine_autopilot_pi/runs/11879734330
boring into build-raspbian-armhf https://app.circleci.com/pipelines/github/rgleason/raymarine_autopilot_pi/7/workflows/8874fcb2-61ea-4c4b-ab08-cc4c05840f58/jobs/186
It builds until this error. Can you fix it? First please accept my PR which I am goiing to make now.
[ 63%] Building CXX object CMakeFiles/raymarine_autopilot_pi.dir/src/autopilotgui.cpp.o
/usr/bin/c++ -DOCPN_ARMHF -DPLUGIN_USE_SVG -DTIXML_USE_STL -DUSE_S57 -DWXUSINGDLL -D_FILE_OFFSET_BITS=64 -D__WXGTK__ -DocpnUSE_GL -DocpnUSE_GLES -Draymarine_autopilot_pi_EXPORTS -I/ci-source/libs/wxJSON/include -I/ci-source/libs/ocpn-api -I/ci-source/libs/GL -I/ci-source/libs -I/ci-source/extinclude -I/ci-source/ocpninclude -I/ci-source/include -I/ci-source/build/CMakeFiles/include -I/ci-source/src -I/ci-source/libs/tinyxml/include -isystem /usr/lib/arm-linux-gnueabihf/wx/include/gtk3-unicode-3.0 -isystem /usr/include/wx-3.0 -pthread -O3 -DNDEBUG -fPIC -Wall -Wno-unused -fexceptions -rdynamic -fvisibility=hidden -fno-strict-aliasing -O2 -s -DPREFIX=\"/usr/local\" -std=gnu++11 -MD -MT CMakeFiles/raymarine_autopilot_pi.dir/src/autopilotgui.cpp.o -MF CMakeFiles/raymarine_autopilot_pi.dir/src/autopilotgui.cpp.o.d -o CMakeFiles/raymarine_autopilot_pi.dir/src/autopilotgui.cpp.o -c /ci-source/src/autopilotgui.cpp
/ci-source/src/autopilot_pi.cpp: In member function 'void raymarine_autopilot_pi::SetAutopilotparametersChangeable()':
/ci-source/src/autopilot_pi.cpp:468:50: error: 'class Dlg' has no member named 'FromDIP'
468 | m_pDialog->SetMaxSize(Skalefaktor * m_pDialog->FromDIP(wxSize(160, 220)));
| ^~~~~~~
/ci-source/src/autopilot_pi.cpp:469:47: error: 'class Dlg' has no member named 'FromDIP'
469 | m_pDialog->SetSize(Skalefaktor * m_pDialog->FromDIP(wxSize(160, 220)));
| ^~~~~~~
/ci-source/src/autopilot_pi.cpp:470:50: error: 'class Dlg' has no member named 'FromDIP'
470 | m_pDialog->SetMinSize(Skalefaktor * m_pDialog->FromDIP(wxSize(160, 220)));
| ^~~~~~~
/ci-source/src/autopilot_pi.cpp:478:47: error: 'class Dlg' has no member named 'FromDIP'
478 | m_pDialog->SetSize(Skalefaktor * m_pDialog->FromDIP(wxSize(160, 194)));
| ^~~~~~~
/ci-source/src/autopilot_pi.cpp:479:50: error: 'class Dlg' has no member named 'FromDIP'
479 | m_pDialog->SetMinSize(Skalefaktor * m_pDialog->FromDIP(wxSize(160, 194)));
| ^~~~~~~
/ci-source/src/autopilot_pi.cpp:480:50: error: 'class Dlg' has no member named 'FromDIP'
480 | m_pDialog->SetMaxSize(Skalefaktor * m_pDialog->FromDIP(wxSize(160, 194)));
| ^~~~~~~
Some of the other builds are showing the same error https://app.circleci.com/pipelines/github/rgleason/raymarine_autopilot_pi/7/workflows/8874fcb2-61ea-4c4b-ab08-cc4c05840f58/jobs/179
/home/circleci/project/src/autopilot_pi.cpp: In member function ‘void raymarine_autopilot_pi::SetAutopilotparametersChangeable()’:
/home/circleci/project/src/autopilot_pi.cpp:468:50: error: ‘class Dlg’ has no member named ‘FromDIP’
468 | m_pDialog->SetMaxSize(Skalefaktor * m_pDialog->FromDIP(wxSize(160, 220)));
| ^~~~~~~
/home/circleci/project/src/autopilot_pi.cpp:469:47: error: ‘class Dlg’ has no member named ‘FromDIP’
469 | m_pDialog->SetSize(Skalefaktor * m_pDialog->FromDIP(wxSize(160, 220)));
| ^~~~~~
I made the PR back to your repository, so you can accept my changes to fix the build chain first before making other changes.
In CMakeLists.txt under the long description line "testplugin Plugin is used to conrtol a Raymarine Seatalk 1 Autopilot" perhaps we can make it clearer that a nmea0183 to Seatalk 1 converter is required? "Control Raymarine Seatalk 1 Autopilot through a nmea0183-Seatalk 1 converter."
MacOS for O5.6.2 and MacOS-wx32 for O5.7.1 built!
wait, let me some time ! I say it !
Yes, of course, take your time, it is your plugin. Here is the PR for you to accept. https://github.com/BerndCirotzki/raymarine_autopilot_pi/pulls
Some of the other builds are showing the same error https://app.circleci.com/pipelines/github/rgleason/raymarine_autopilot_pi/7/workflows/8874fcb2-61ea-4c4b-ab08-cc4c05840f58/jobs/179
/home/circleci/project/src/autopilot_pi.cpp: In member function ‘void raymarine_autopilot_pi::SetAutopilotparametersChangeable()’: /home/circleci/project/src/autopilot_pi.cpp:468:50: error: ‘class Dlg’ has no member named ‘FromDIP’ 468 | m_pDialog->SetMaxSize(Skalefaktor * m_pDialog->FromDIP(wxSize(160, 220))); | ^~~~~~~ /home/circleci/project/src/autopilot_pi.cpp:469:47: error: ‘class Dlg’ has no member named ‘FromDIP’ 469 | m_pDialog->SetSize(Skalefaktor * m_pDialog->FromDIP(wxSize(160, 220))); | ^~~~~~
corrected it !! It was your's your special wish ... for high resolution on Windows Systems.
..... you ... Bernd, thanks for the helpful directions for testing! I hope to use those when I find some time. Also I actually have an old gadgetpool nmea seatalk link device that needs to have its code updated! ....
I Thing I have somting for you !!! I also have used the "Seatalk Link" before developing my own with an ESP32, and I got the code for it from "Frank Wallenwein" ! his homepage : http://www.tklinux.de/
So I modified this Seatalk Link to my Version 1.73 !! This "hex File" and manual I put for you to my Cloud ... It's only an ATMEGA32 !
https://magentacloud.de/s/TAbbsEbrgy9fK7d
The most ineresting things I added was from place $SNBSE,34 and The "fistlatter change" See in the manual. In the Settings
I would also send you the code for it, but It is the code from Mr. Wallenwein, and so I could not even give it out. When I get an OK from him I would also put to you in my Cloud.
But I found a lot more errors in the code which I have not corrected. (special in the Waypoint sending)
Please tell me when you have downloaded it, so I would delete the Link.
Bernd
Thanks Bernd, I downloaded. it That's the device. Sorry about causing that bug. I will make a PR from your repos next and Push it to my remote, so we can see if it all builds.
Bernd, sorry but we need your programming prowess. https://github.com/rgleason/raymarine_autopilot_pi/runs/11893934644 These all built - MacOS, MacOS-wx32, Msvc, Msvc-wx32, build-flatpak-x86-2208, build-jammy, Its looking much better because one flatpak is building.
build-arm64-debian-bullseye - Failed I think I need to check this in CMake.
CMake Error at CMakeLists.txt:27 (cmake_policy):
Policy "CMP0076" is not known to this version of CMake.
build-armhf-ubuntu-buster - Failed
Error at CMakeLists.txt:27 (cmake_policy):
Policy "CMP0076" is not known to this version of CMake
It also looks like my high res support request is causing a number of the other failures too. How would we correct those builds?
build-arm64-debian-bullseye - Failed
[ 63%] Building CXX object CMakeFiles/raymarine_autopilot_pi.dir/src/autopilotgui.cpp.o
/usr/bin/c++ -DOCPN_ARM64 -DPLUGIN_USE_SVG -DTIXML_USE_STL -DUSE_S57 -DWXUSINGDLL -D_FILE_OFFSET_BITS=64 -D__WXGTK__ -DocpnUSE_GL -DocpnUSE_GLES -Draymarine_autopilot_pi_EXPORTS -I/ci-source/libs/wxJSON/include -I/ci-source/libs/ocpn-api -I/ci-source/libs/GL -I/ci-source/libs -I/ci-source/extinclude -I/ci-source/ocpninclude -I/ci-source/include -I/ci-source/build/CMakeFiles/include -I/ci-source/src -I/ci-source/libs/tinyxml/include -isystem /usr/lib/aarch64-linux-gnu/wx/include/gtk3-unicode-3.0 -isystem /usr/include/wx-3.0 -pthread -O3 -DNDEBUG -fPIC -Wall -Wno-unused -fexceptions -rdynamic -fvisibility=hidden -fno-strict-aliasing -O2 -s -DPREFIX=\"/usr/local\" -std=gnu++11 -o CMakeFiles/raymarine_autopilot_pi.dir/src/autopilotgui.cpp.o -c /ci-source/src/autopilotgui.cpp
/ci-source/src/autopilot_pi.cpp: In member function 'wxString raymarine_autopilot_pi::GetAutopilotCompassDifferenz(wxString&)':
/ci-source/src/autopilot_pi.cpp:1385:59: warning: 'parameter[0]' may be used uninitialized in this function [-Wmaybe-uninitialized]
1385 | if (360 <= (CompassValue = (int)((parameter[0] & 0x0c) >> 2) * 90 + parameter[1] / 2 + parameter[1] % 2))
| ~~~~~~~~~~~~~~~~~~~~~~^~~~
/ci-source/src/autopilot_pi.cpp: In member function 'wxString raymarine_autopilot_pi::GetAutopilotMAGCourse(wxString&)':
/ci-source/src/autopilot_pi.cpp:1306:16: warning: 'parameter[0]' may be used uninitialized in this function [-Wmaybe-uninitialized]
1306 | unsigned char parameter[3];
| ^~~~~~~~~
/ci-source/src/autopilotgui.cpp: In constructor 'm_Parameterdialog::m_Parameterdialog(wxWindow*, wxWindowID, const wxString&, const wxPoint&, const wxSize&, long int)':
/ci-source/src/autopilotgui.cpp:242:82: error: 'FromDIP' was not declared in this scope
242 | m_NoStandbyCounter = new wxTextCtrl( this, wxID_ANY, _("0"), wxDefaultPosition, FromDIP(wxSize( 40,20 )), wxTE_CENTER );
| ^~~~~~~
/ci-source/src/autopilot_pi.cpp: In member function 'wxString raymarine_autopilot_pi::GetAutopilotCompassCourse(wxString&)':
/ci-source/src/autopilot_pi.cpp:1290:62: warning: 'parameter[0]' may be used uninitialized in this function [-Wmaybe-uninitialized]
1290 | if (360 <= (CompassValue = (int)((parameter[0] & 0x0c) >> 2) * 90 + parameter[1] / 2 + parameter[1] % 2)) // Very good checked with St6002
| ~~~~~~~~~~~~~~~~~~~~~~^~~~
[ 82%] Building CXX object CMakeFiles/raymarine_autopilot_pi.dir/src/autopilotgui_impl.cpp.o
/usr/bin/c++ -DDEBUG_BUILD -DPLUGIN_USE_SVG -DTIXML_USE_STL -DUSE_S57 -DWXUSINGDLL -D_FILE_OFFSET_BITS=64 -D__WXGTK__ -DocpnUSE_GL -Draymarine_autopilot_pi_EXPORTS -I/home/circleci/project/libs/wxJSON/include -I/home/circleci/project/libs/ocpn-api -I/home/circleci/project/libs/GL -I/home/circleci/project/libs -I/home/circleci/project/extinclude -I/home/circleci/project/ocpninclude -I/home/circleci/project/include -I/home/circleci/project/build/CMakeFiles/include -I/usr/include/freetype2 -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/atk-1.0 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/gtk-2.0 -I/usr/lib/x86_64-linux-gnu/gtk-2.0/include -I/home/circleci/project/src -I/home/circleci/project/libs/tinyxml/include -isystem /usr/lib/x86_64-linux-gnu/wx/include/gtk2-unicode-3.0 -isystem /usr/include/wx-3.0 -pthread -g -fPIC -Wall -Wno-unused -fexceptions -rdynamic -fvisibility=hidden -fno-strict-aliasing -O0 -g -DPREFIX=\"/usr/local\" -std=gnu++11 -o CMakeFiles/raymarine_autopilot_pi.dir/src/autopilotgui_impl.cpp.o -c /home/circleci/project/src/autopilotgui_impl.cpp
/home/circleci/project/src/autopilotgui.cpp: In constructor ‘m_Parameterdialog::m_Parameterdialog(wxWindow*, wxWindowID, const wxString&, const wxPoint&, const wxSize&, long int)’:
/home/circleci/project/src/autopilotgui.cpp:242:82: error: ‘FromDIP’ was not declared in this scope
m_NoStandbyCounter = new wxTextCtrl( this, wxID_ANY, _("0"), wxDefaultPosition, FromDIP(wxSize( 40,20 )), wxTE_CENTER );
^~~~~~~
build-flatpak-arm64 - Failed
[ 79%] Building CXX object CMakeFiles/raymarine_autopilot_pi.dir/src/autopilotgui.cpp.o
/usr/bin/c++ -DPLUGIN_USE_SVG -DTIXML_USE_STL -DUSE_S57 -DWXUSINGDLL -D_FILE_OFFSET_BITS=64 -D__WXGTK__ -DocpnUSE_GL -Draymarine_autopilot_pi_EXPORTS -I/run/build/raymarine_autopilot_pi/libs/wxJSON/include -I/run/build/raymarine_autopilot_pi/libs/ocpn-api -I/run/build/raymarine_autopilot_pi/libs/GL -I/run/build/raymarine_autopilot_pi/libs -I/run/build/raymarine_autopilot_pi/extinclude -I/run/build/raymarine_autopilot_pi/ocpninclude -I/run/build/raymarine_autopilot_pi/include -I/run/build/raymarine_autopilot_pi/_flatpak_build/CMakeFiles/include -I/usr/include/gtk-3.0 -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/aarch64-linux-gnu/glib-2.0/include -I/usr/include/harfbuzz -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/libmount -I/usr/include/blkid -I/usr/include/fribidi -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/gio-unix-2.0 -I/usr/include/atk-1.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/dbus-1.0 -I/usr/lib/aarch64-linux-gnu/dbus-1.0/include -I/usr/include/at-spi-2.0 -I/run/build/raymarine_autopilot_pi/src -I/run/build/raymarine_autopilot_pi/libs/tinyxml/include -isystem /app/lib/wx/include/gtk3-unicode-3.0 -isystem /app/include/wx-3.0 -O2 -g -pipe -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -fasynchronous-unwind-tables -fstack-clash-protection -fPIC -DFLATPAK -D__WXGTK3__ -pthread -O3 -DNDEBUG -fPIC -Wall -Wno-unused -fexceptions -rdynamic -fvisibility=hidden -fno-strict-aliasing -O2 -s -DPREFIX=\"/app/extensions/raymarine_autopilot_pi\" -std=gnu++11 -MD -MT CMakeFiles/raymarine_autopilot_pi.dir/src/autopilotgui.cpp.o -MF CMakeFiles/raymarine_autopilot_pi.dir/src/autopilotgui.cpp.o.d -o CMakeFiles/raymarine_autopilot_pi.dir/src/autopilotgui.cpp.o -c /run/build/raymarine_autopilot_pi/src/autopilotgui.cpp
/run/build/raymarine_autopilot_pi/src/autopilotgui.cpp: In constructor ‘m_Parameterdialog::m_Parameterdialog(wxWindow*, wxWindowID, const wxString&, const wxPoint&, const wxSize&, long int)’:
/run/build/raymarine_autopilot_pi/src/autopilotgui.cpp:242:82: error: ‘FromDIP’ was not declared in this scope
242 | m_NoStandbyCounter = new wxTextCtrl( this, wxID_ANY, _("0"), wxDefaultPosition, FromDIP(wxSize( 40,20 )), wxTE_CENTER );
| ^~~~~~~
Hi Rick, sorry I hope it's working now.
Very Nice. Everything built, including android! I am going to push this up to opencpn/plugins from cloudsmith raymarine-autopilot-prod so that it will be available in the PIM master catalog in Opencpn. Whoops, there are no files there! I guess I need to increment the version and use a tagged push to get it into this repository.
I expect you've used and tested it and everything is working. (If it isn't some user will let us know.)
We're going to be able to close this issue in a short while.
Super ! thank you very much for all. I close this issue.
Bernd
Its built and has been pushed to the master catalog opencpn/plugins/ master branch. Bdbcat just has to merge it. along with climatology.
Thanks for all your help!
Next I went to cloudsmith and made new repositories raymarine-autopilot-alpha raymarine-autopilot-beta raymarine-autopilot-prod and declared them to be open source (very important and added the opensource license and the opencpn website. I then set the retainage of files settings for each of the 3 repositories. https://cloudsmith.io/~opencpn/repos/?page=2
I then synchronized with your repository, remote and local, and updated the TP FE2 frontend to v1.0.223.1 which bdbcat has just improved for O5.7.1 (and future O5.8). I have pushed that in hope that it would build.
It did not. I have to setup the keys next, for appeveyor, circleci, and cloudsmith. (You need to have accounts for this. I can point you in the right direction for this.) You will also need to do this if you are going to build in the cloud.
I am can also send you an invitation to join the OpenCPN organization on Cloudsmith, once you have an account. That will enable you to manage your plugin on the cloudsmith OpenCPN repository.
More later. Will make a PR to your repository too.