Erki 82f62d1650
All checks were successful
continuous-integration/drone/push Build is passing
Initial commit
2021-09-19 15:42:37 +03:00

51 lines
2.3 KiB
ReStructuredText

.. SkullC documentation master file, created by
sphinx-quickstart on Wed Jul 7 13:46:52 2021.
You can adapt this file completely to your liking, but it should at least
contain the root `toctree` directive.
Welcome to SkullC's documentation!
==================================
**SkullC** is a C++17 library, composed of various modules, meant for **embedded software** development. The code is presently
licensed under MIT and can be freely found in `the Git repository here <https://git.skullnet.me/erki/skullc-peripherals>`_.
The library contains abstractions for commonly used peripheral devices, general utility functions, and an abstraction over
FreeRTOS for RTOS based programming. A lot of it is developed as I go, with some components having more questionable design
as others (since some are implemented as thought-exercises at first). This also speaks about API stability: things may change.
Most of this library has been tested and built for the STM32 boards. Though in theory, the code is not reliant on any specific
HAL and can be expanded to work on any system for which you implement the required interfaces.
Contents
--------
You will find 3 large modules here.
The :doc:`peripherals` contains both abstractions over the ST HAL and various other peripheral devices, such as IMUs,
displays, etc.
The :doc:`utility` contains various "software" helpers, abstractions, etcetera, that don't necessarily interface with
hardware, but in general provide helpful tools for embedded development. This includes logging functionality, a drawing
abstraction, and so forth.
The :doc:`threads` is a set of various C++ abstractions over FreeRTOS. With the key highlight being an implementation of
a signalling system, and the actor model of asynchronous processing.
Usage
-----
The library is made to be as build-tool agnostic as possible. All modules can simply be dropped into whatever IDE/project
structure you have, and then used. No major configuration is necessary. Most modules are header-only, some require additional
source files to be compiled and linked.
For development use, cmake is used to enable unit testing (and should also function for integration with cmake projects).
Conan and catch2 are additional dependencies for unit testing and CI work.
.. toctree::
:maxdepth: 2
:caption: Contents:
peripherals.rst
utility.rst
threads.rst