Close

When are y'all going to release the darn C++ source code?!

A project log for PiTrac - The DIY Golf Launch Monitor

Launch monitor using low-cost Raspberry pi and camera hardware to determine ball launch speed, angles and spin

james-pilgrimJames Pilgrim 6 days ago1 Comment

A fair question.  We're working on it!  A couple folks have asked - what's taking so long?  So, we figured we'd provide a couple examples of the stuff we are having to do now.  Which to be fair, probably should've been done a while ago.  But in any case...

PiTrac has interfaces to a couple of golf simulators as well as a multi-threaded socket-based framework to connect to future systems.  Which is great!  But those interfaces also introduced an issue as we're preparing to release the code.  Turns out some of the interfaces use 'secret' codes that are specific to each launch monitor vendor -- which now includes PiTrac.  Those codes have to be protected because of the NDA that allowed us to interface to those systems in the first place.

The decision has been to put the code around the key exchange in a separate object file or link library that will be distributed with the rest of the source code.  So far, so good.  But it turns out, the keys (and some related information) could still be discernable by a determined person by various de-compiling tools and other techniques.  Thus, we need to obfuscate (essentially encrypt) the data strings in the object file that will contain the proprietary information.  Not too hard - there's C++ packages for that, so ok.  But, then it turns out that the obfuscation code doesn't easily work in a multi-threaded environment (long story), and yes--of course--the simulator interface is multi-threaded.  So, we're working on that.  Of course, it will entail additional testing with the third-party golf simulators, which also takes time.

Anyway, that's one example of some of the work going on right now.  :/

Other work has been related to making it easier for the average--ish person to build PiTrac.  For example, we have been working to move to a different, standard version of the Gnu compiler that is currently being packaged with the Raspbian Pi Operating System (Version 12.2.0).  Until recently, we've been relying on C++20 or later versions of the compiler for all our projects, including PiTrac.  But we've recognized that having to compile your own compiler just to get a more modern development platform is not an easy task.  So, we've spent some time porting some our more-recent C++ code and libraries back to the version of the compiler that is currently distributed with the Pi O/S.  Which also involves more testing, of course.

Still, despite all of this, it's still a great project to work on!

Discussions

Jesse Hernandez wrote 6 days ago point

Wow! I figured some of the challenges were with the NDA stuff. I am glad ya'll found a way forward. Thanks for the update.

  Are you sure? yes | no