skullc-peripherals/Peripherals/Inc/peripherals_utility.hpp
2021-03-12 17:07:18 +02:00

65 lines
890 B
C++

/*
* peripherals_utility.hpp
*
* Created on: Feb 24, 2021
* Author: erki
*/
#ifndef PERIPHERALS_UTILITY_HPP_
#define PERIPHERALS_UTILITY_HPP_
#include <cstdint>
#include "peripherals_config.hpp"
namespace Peripherals
{
void Initialize();
#ifdef PERIPHERALS_USE_DELAY_US
void DelayUs(const std::uint32_t micros);
#endif
template<typename T>
constexpr const T& Clamp(const T& v, const T& lo, const T& hi)
{
if (v > hi)
return hi;
else if (v < lo)
return lo;
else
return v;
}
template<typename T, std::size_t N>
T ByteToTypeBE(const std::uint8_t a[N])
{
T t(0);
for (std::size_t i = 0; i < N; i++)
{
t |= a[i] << (i * 8);
}
return t;
}
template<typename T, std::size_t N>
T ByteToTypeLE(const std::uint8_t a[N])
{
T t(0);
for (std::size_t i = N; i >= 0; i--)
{
t |= a[i] << ((i - 1) * 8);
}
return t;
}
}
#endif /* PERIPHERALS_UTILITY_HPP_ */