/radar_pi

Radar plugin for OpenCPN with support for Navico and Garmin radars

Primary LanguageC++

radar_pi - Radar Plugin for OpenCPN

This is a work in progress. It will support Navico Broadband and Halo radars as well as Garmin xHD and possibly others. It is meant as the community effort to only write the common parts of radar support once.

Compiling

You can compile just this plugin without having to compile the entire OpenCPN source. If you check out the plugin source into the plugins subdirectory of your OpenCPN source tree, you can build it as part of it (exactly as with the versions prior to 1.0).

You will need the general preconditions for building OpenCPN from http://opencpn.org/ocpn/developers_manual .

The following command line snippets show how to build the entire package separately from the OpenCPN source. In order to build multiple platforms you can build in separate build-${platform} directories.

Obtain the source code

git clone https://github.com/opencpn-radar-pi/radar_pi.git

Build on Microsoft Windows

mkdir radar_pi\build-win32
cd radar_pi\build-win32
cmake ..
cmake --build .

Windows note: You must place opencpn.lib into your build directory to be able to link the plugin DLL. You can get this file from your local OpenCPN build, or alternatively download from http://sourceforge.net/projects/opencpnplugins/files/opencpn_lib/

Creating a package on Microsoft Windows

Windows

cmake --build . --config release --target package

Build on Linux

Example on 64 bit Intel/AMD64 system:

mkdir radar_pi/build-linux-x86_64
cd radar_pi/build-linux-x86_64
cmake ..
make

Creating a package on Linux

make package

Build on Mac OS X:

XCode can be downloaded from the App Store.

Tools: Can be installed either manually or from Homebrew (http://brew.sh). Homebrew is highly recommended.

brew install cmake
brew install gettext
ln -s /usr/local/Cellar/gettext/0.19.2/bin/msgmerge /usr/local/bin/msgmerge
ln -s /usr/local/Cellar/gettext/0.19.2/bin/msgfmt /usr/local/bin/msgfmt

To target older OS X versions than the one you are running, you need the respective SDKs installed. Official releases target 10.7. The easiest way to achieve that is using https://github.com/devernay/xcodelegacy

Building wxWidgets

(do not use wxmac from Homebrew, it is not compatible with OpenCPN) Get wxWidgets 3.0.x source from http://wxwidgets.org Configure, build and install

cd wxWidgets-3.0.2
./configure --enable-unicode --with-osx-cocoa --with-macosx-sdk=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.7
make
sudo make install

Building the plugin

Before running cmake, you must set the deployment target to OS X 10.7 to be compatible with the libraries used by core OpenCPN

export MACOSX_DEPLOYMENT_TARGET=10.7
mkdir build-mac
cd build-mac
cmake ..
make

Packaging on OS X

Get and install the Packages application from http://s.sudre.free.fr/Software/Packages/about.html

make create-pkg

License

The plugin code is licensed under the terms of the GPL v2.

Acknowledgements

This would be a pretty useless plugin if OpenCPN did not exist. Hurrah for @bdbcat!

The plugin was started by @cowelld, who took @bdbcat's Garmin radar plugin and the reverse engineered data from http://www.roboat.at/technologie/radar/ and created the first working version in 2012.

@canboat started helping Dave. Soon he implemented most of the 4G specific functionality, refactored the code, rewrote the control dialogs, implemented the guard zones, target trails, PPI windows, EBL/VRM and mouse cursor functionality.

@nohal contributed the packaging installers, without which this would still be a set of sources instead of deliverable packages for various platforms.

@Hakansv did a lot of testing and contributed the idle timer, and contributed work on the translations.

@douwefokkema also tested a lot and implemented the heading on radar functionality, optimised the OpenGL drawing, implemented the refresh rate code and optimised the target trails code. Douwe also made the MARPA and ARPA functionality.

@seandepagnier shader support and some optimizations.