2025-05-27 18:42:18 +01:00
|
|
|
#pragma once
|
|
|
|
|
|
2025-07-28 20:17:13 +02:00
|
|
|
#include <cstddef>
|
2025-05-27 18:42:18 +01:00
|
|
|
#include <cstdint>
|
|
|
|
|
#include <vector>
|
|
|
|
|
|
|
|
|
|
namespace satdump
|
|
|
|
|
{
|
|
|
|
|
template <typename T>
|
2025-12-11 15:09:34 +01:00
|
|
|
inline bool getBit(T &data, int bit)
|
2025-05-27 18:42:18 +01:00
|
|
|
{
|
|
|
|
|
return (data >> bit) & 1;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
template <typename T>
|
|
|
|
|
std::vector<uint8_t> unsigned_to_bitvec(T v)
|
|
|
|
|
{
|
|
|
|
|
std::vector<uint8_t> c;
|
|
|
|
|
for (int s = (sizeof(T) * 8) - 1; s >= 0; s--)
|
|
|
|
|
c.push_back((v >> s) & 1);
|
|
|
|
|
return c;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
template <typename T>
|
|
|
|
|
std::vector<T> oversample_vector(std::vector<T> data, int oversampling)
|
|
|
|
|
{
|
|
|
|
|
std::vector<T> r;
|
|
|
|
|
for (T &v : data)
|
|
|
|
|
for (int i = 0; i < oversampling; i++)
|
|
|
|
|
r.push_back(v);
|
|
|
|
|
return r;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
template <typename T>
|
|
|
|
|
T swap_endian(T u)
|
|
|
|
|
{
|
|
|
|
|
union {
|
|
|
|
|
T u;
|
|
|
|
|
unsigned char u8[sizeof(T)];
|
|
|
|
|
} source, dest;
|
|
|
|
|
|
|
|
|
|
source.u = u;
|
|
|
|
|
|
|
|
|
|
for (size_t k = 0; k < sizeof(T); k++)
|
|
|
|
|
dest.u8[k] = source.u8[sizeof(T) - k - 1];
|
|
|
|
|
|
|
|
|
|
return dest.u;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
inline std::vector<float> double_buffer_to_float(double *ptr, int size)
|
|
|
|
|
{
|
|
|
|
|
std::vector<float> ret;
|
|
|
|
|
for (int i = 0; i < size; i++)
|
|
|
|
|
ret.push_back(ptr[i]);
|
|
|
|
|
return ret;
|
|
|
|
|
}
|
2025-07-23 12:21:02 +02:00
|
|
|
|
2026-01-10 18:52:57 +01:00
|
|
|
inline uint8_t count_ones(uint8_t v)
|
|
|
|
|
{
|
|
|
|
|
uint8_t cnt = 0;
|
|
|
|
|
for (int i = 7; i >= 0; i--)
|
|
|
|
|
if ((v >> i) & 1)
|
|
|
|
|
cnt++;
|
|
|
|
|
return cnt;
|
|
|
|
|
}
|
|
|
|
|
|
2025-07-23 12:21:02 +02:00
|
|
|
uint8_t reverseBits(uint8_t byte);
|
|
|
|
|
|
|
|
|
|
uint16_t reverse16Bits(uint16_t v);
|
2025-05-27 18:42:18 +01:00
|
|
|
} // namespace satdump
|