FastArduino v1.10
C++ library to build fast but small Arduino/AVR projects
|
General utilities API that have broad application in programs. More...
Go to the source code of this file.
Namespaces | |
namespace | utils |
Contains all generic utility methods. | |
Macros | |
#define | synchronized _Pragma("GCC diagnostic ignored \"-Wreturn-type\"") ATOMIC_BLOCK(ATOMIC_RESTORESTATE) |
Make a block of code a critical section (not interruptible). More... | |
Enumerations | |
enum class | utils::UnitPrefix : int8_t { GIGA = 9 , MEGA = 6 , KILO = 3 , HECTO = 2 , DECA = 1 , NONE = 0 , DECI = -1 , CENTI = -2 , MILLI = -3 , MICRO = -6 , NANO = -9 } |
Common prefixes for measurement units. More... | |
Functions | |
template<typename T > | |
constexpr T | utils::constrain (T value, T min, T max) |
Constrain value to be greater than or equal to min and lower than or equal to max . More... | |
template<typename TI , typename TO > | |
constexpr TO | utils::map (TI value, TI input_min, TI input_max, TO output_min, TO output_max) |
Linearly transform value from range [input_min ; input_max ] to range [output_min ; output_max ]. More... | |
template<typename T > | |
constexpr T | utils::min (T a, T b) |
Compute the min of 2 integral values. More... | |
template<typename T > | |
constexpr T | utils::max (T a, T b) |
Compute the max of 2 integral values. More... | |
constexpr uint32_t | utils::power_of_10 (int8_t n) |
Calculate a power of 10 at compile-time, provided that n is a constant at call time. More... | |
constexpr int16_t | utils::map_raw_to_physical (int16_t value, UnitPrefix prefix, int16_t range, uint8_t precision_bits) |
Convert the raw value , obtained from an electronics device, using precision_bit number of bits (that defines the input range) into a physical measure for which range defines the complete output range for such value, adjusted according to the unit prefix that we want in the resulting measure. More... | |
constexpr int16_t | utils::map_physical_to_raw (int16_t value, UnitPrefix prefix, int16_t range, uint8_t precision_bits) |
Convert an absolute physical value , expressed in some given measurement unit, scaled with prefix , into a raw measurement as if obtained from a electronics device, using precision_bit number of bits (that defines the device raw measure range); for this device, physical measures are within range . More... | |
constexpr uint8_t | utils::low_byte (uint16_t word) |
Extract the low order byte of a 16-bits word. More... | |
constexpr uint8_t | utils::high_byte (uint16_t word) |
Extract the high order byte of a 16-bits word. More... | |
constexpr uint16_t | utils::as_uint16_t (uint8_t high, uint8_t low) |
Convert 2 bytes into an unsigned int. More... | |
template<typename T > | |
constexpr T | utils::is_zero (T value, T default_value) |
Replace value by default_value if not "true" (also known as "Elvis
operator"). More... | |
template<typename T > | |
void | utils::set_mask (volatile T ®, T mask, T value) |
Common utility to force a part of the value of a register, designated by a bit mask. More... | |
template<typename T > | |
constexpr bool | utils::is_mask_equal (T actual, T mask, T expected) |
Common utility to check if 2 values are equal according to a mask. More... | |
uint8_t | utils::bcd_to_binary (uint8_t bcd) |
Convert Binary-coded decimal byte (each nibble is a digit from 0 to 9) into a natural byte. More... | |
uint8_t | utils::binary_to_bcd (uint8_t binary) |
Convert a natural integers to a BCD byte (2 digits). More... | |
void | utils::swap_bytes (uint16_t &value) |
Swap 2 bytes of a 2-bytes integer. More... | |
void | utils::swap_bytes (int16_t &value) |
Swap 2 bytes of a 2-bytes integer. More... | |
void | utils::swap_bytes (uint32_t &value) |
Reverse 4 bytes of a 4-bytes integer. More... | |
void | utils::swap_bytes (int32_t &value) |
Reverse 4 bytes of a 4-bytes integer. More... | |
void | utils::swap_bytes (uint64_t &value) |
Reverse 8 bytes of a 8-bytes integer. More... | |
void | utils::swap_bytes (int64_t &value) |
Reverse 8 bytes of a 8-bytes integer. More... | |
template<typename T > | |
void | utils::swap (T &a, T &b) |
Swap the values of 2 variables passed by reference. More... | |
template<typename T > | |
constexpr uint8_t | utils::as_uint8_t (T input) |
Cast a one byte long bit-fields struct into a byte. More... | |
template<typename T , typename U = uint8_t[sizeof(T)]> | |
constexpr void | utils::as_array (const T &input, U output) |
Cast an instance of type T to an array of uint8_t of the size of T . More... | |
constexpr uint8_t | utils::calculate_delay1_count (float time_us) |
Calculate the count to pass to delay1() in order to reach time_us microseconds delay. More... | |
constexpr uint8_t | utils::num_bits (uint8_t mask, uint8_t num=0) |
Calculate the number of 1 bits in a byte. More... | |
template<typename T > | |
T | utils::change_endianness (const T &value) |
Change endianness of any integral type (from big to small or small to big). More... | |
General utilities API that have broad application in programs.
Definition in file utilities.h.
#define synchronized _Pragma("GCC diagnostic ignored \"-Wreturn-type\"") ATOMIC_BLOCK(ATOMIC_RESTORESTATE) |
Make a block of code a critical section (not interruptible).
Example:
Definition at line 46 of file utilities.h.