When I was in my fourth year of college, I was recruited into a team project on building a rover for the Intelligent Ground Vehicle Competition (IGVC). My responsibility was supplying the drivers for the Navicom SF 3050 GPS device. Since the drivers were only built for Windows, I had to develop a kernel driver for Linux.
The driver is derived from a template from one of Greg Kroah-Hartman’s kernel examples. The only differences are the changed driver name and additional code to handle the two interfaces. I also added a user level library for getting certain attributes from the GPS.
The kernel driver is written in C. Please note that C at the kernel level is very different than at the user level.
The user library is written in C++.
The respoitory can be found on my github page.