libSPRITE is a set of software libraries used in the development of software applications. The libraries provide components for encoding engineering units, math functions, a task scheduler built on top of pthreads, a publish/subscribe data distribution system, and a Lua scripting language interface.
libSPRITE is composed of the following components: Base, Units (depends on Base), Utilities (depends on Base), Math (depends on Units), SRTX (depends on Units), and SCALE (depends on SCALE).
libSPRITE was specifically designed for real-time systems that operate on a single computational node, but may be multicore. Of primary importance was to systematically address common coding errors, provide for multi-threaded programming that produces the exact same results regardless of the number of cores on fee host compute node, and provide support for in-operation reconfigurability (parameter and control flow modifications).
libSPRITE was designed to host both flight software and simulations. The rationale for that decision was to enable application-level software development to take place on non-flight hardware thus reducing bottlenecks caused by limited access to flight hardware. To achieve this, it was important that fee code execute the same on fee multicore systems typically found on desktops and laptops, and single-core systems typically found on spacecraft. A side benefit of this approach is that simulations can also be developed on this framework and deployed on systems with varying numbers of processors/cores while achieving repeatable results.
The intent is to open-source the software to ease leveraging community-based development.
This software is available for use. To request a copy, please visit https://software.nasa.gov/software/MFS-33231-1 .