The largest collection of original and contributory work is on my github page, with legacy projects still on SourceForge. Much of my past work has been released as open source, though after 2014 my efforts were mostly proprietary. Since early 2018 I’ve been working in C++17 targeting Nordic nRF5 chips as well as Linux using systemd, Yocto, and bluez. The visible impact of much of that may be seen on github. I have some hopes of eventually publishing material from my recent projects.
Complete Projects
buffer-layout
Much of what I’ve done in the last couple years involves packets of structured data generated by embedded devices. buffer-layout
is a Node.js module used to extract the data as native JavaScript data types using succinct descriptions of the structures, including endianness, bit fields, and unions.
Documentation and support are on github.
PyXB
PyXB is a pure Python tool and library for Python bindings generated from XML Schema documents. It can generate bindings for highly complex schemas across multiple namespaces, and supports customization of the bindings for specific applications. It was designed to support validation of parsed and generated documents against the schema, helping to ensure interoperability.
I started on PyXB in 2009, and evolved and maintained it actively for another six years. Through 2017 it received annual updates with bug fixes, but I haven’t used Python or XML for several years. Unless somebody wants to fund it no further updates are anticipated.
Documentation and support are on github.
Minor Works
fragpool is a memory management library designed for processing packetized data in a network stack that uses stream-oriented data/link layer communications. Designed originally for HDLC support in a PPP implementation contributed to TinyOS, it is also the basis of internal work on wireless sensor networks.
Formerly Significant, Now Retired
BSPACM
BSPACM is a C framework for developing applications on Arm Cortex-M microcontrollers. It serves a similar role to BSP430, providing abstractions that allow source to be shared across vendors and MCUs. It leverages ARM’s CMSIS interface, preferring the control provided by direct manipulation of module register structures over the “convenience” of vendor-specific wrapper functions. It is made available under BSD-3-Clause.
- Documentation: http://pabigot.github.io/bspacm/
- Support: http://github.com/pabigot/bspacm/issues
- Code: http://github.com/pabigot/bspacm
BSP430
BSP430 is a C framework for developing applications on Texas Instruments MSP430 microcontrollers. Similar to TI’s “MSP430Ware”, BSP430 covers a wider range of MSP430 families and supports a higher-level interface abstraction. It is made available under BSD-3-Clause.
- Documentation: http://pabigot.github.io/bsp430/
- Support: http://github.com/pabigot/bsp430/issues
- Code: http://github.com/pabigot/bsp430
MSPGCC
MSPGCC was a suite of patches and packages that provide a complete toolchain for TI MSP430 microcontroller application development, covering assembler/linker (binutils), compiler (gcc), debugger (gdb), C library (msp430-libc), and chip-specific headers (msp430mcu). Originally created in 2001 by Chris Liechti and Dmitry Diky and supported by dozens of contributors over its first decade, I took over evolution and maintenance in spring 2010, refactoring and validating the implementation and adding the first complete open-source support for MSP430 applications using 20-bit–aware code and data. Though MSPGCC entered end-of-life in late 2012 when Texas Instruments and Red Hat teamed to provide a clean-room implementation suitable for merging into upstream GCC, as late as 2014 it was the most robust, complete, and space-optimized open source MSP430 toolchain available. Currently, however, the msp430 support in upstream GCC should be considered superior, and the MSPGCC project is closed as far as I’m concerned.
- Documentation: Wiki
- Support: mspgcc-users list and archive
- Code: Release Tarfiles