I've had a few requests from developers interested in my algorithms to see portions of ny firmware source. Given the amount of time that I have spent on this code, I was reluctant to release it into the public domain or to other for-profit developers. However, I have had a change-of-heart. Indeed, I now beleive that my RiceCNC project cannot succeed without the support of open-source developers.
The following considerations have contributed to my decision:
1 With a patent pending and two applications on the iTunes store my time is spread a bit too thin between my projects.
2 As a team effort, publishing the firmware would enable faster development of new device support along with better testing and debugging of existing device support.
3 I am a Mac developer. Publishing the firmware might encourage someone to develop a similar PC application to share the same firmware.
4 I might interest the Mach 4 development team to adopt some of my algorithms. I think that the quick USB solution that they adopted is tacky at at best. Rather than move the position interpolation to the micro-controller as I did, they merely encode the pulse stream for transmission over the USB serial connection. It requires a high speed USB connection and behaves badly if communication is interrupted. My firmware can shutdown the machine in a more orderly fashion with a loss of communication.
5 I am relasing this code under the GNU GPLv3 license which ensures that the code remain free. Any feature additions or bug fixes applied to the firmware would also need to be published to the public domain. I will also be releasing this code to GITHUB to facilitate multiple authors.