|1 year ago|
|GUIDE.md||1 year ago|
|LICENSE||1 year ago|
|README.md||1 year ago|
|funreg.hpp||1 year ago|
funreg: Functional Register I/O using modern C++
funreg provides a functional approach to interacting with registers. The library includes support for memory-mapped registers; however, other types of registers can be supported through creating a simple access interface.
A unique feature of this library is its ability to handle multiple register operations with a single function call; these operations will be merged together so that the register is only read and written once.
Registers may also be organized into groups. These groups can similarly receive a list of operations, which will be directed the to the appropriate registers for the same single-read-single-write process.
For example, LEDs can be controlled by a microcontroller with a single call:
LEDS::modify<LED1::set, LED2::clear, LED3::set>();
...no matter if the LEDs use different registers, or if any of them are controlled by an external circuit rather than a built-in IO peripheral.
GUIDE.md for a walk-through of the available functionality.
- Define registers of any size, at any address, with optional custom access interface
- Define register masks to name the bits of registers
- Define register groups so ease programming (e.g. define an
RTCgroup to work with all real-time clock registers at once)
- Make modifications through groups, masks, or the registers directly
- GCC or Clang with some optimization enabled (O1, O2, O3, Os).