Files
cpp/radio/Scrambler.cpp
T
2022-05-31 17:36:42 +00:00

59 lines
1.0 KiB
C++

// --------------------------------------------------------------
#include <string.h>
#include <math.h>
#include <stdint.h>
#include "Scrambler.hpp"
// --------------------------------------------------------------
// Scrambler
// --------------------------------------------------------------
Scrambler::Scrambler(uint32_t state, uint32_t poly)
: m_state(state)
, m_poly(poly)
{
}
Scrambler::~Scrambler()
{
}
uint32_t Scrambler::stateGet()
{
return m_state;
}
void Scrambler::stateSet(uint32_t state)
{
m_state = state;
}
uint8_t Scrambler::process(uint8_t src)
{
uint8_t res = (uint8_t)(src ^ m_state);
for (uint32_t i=0; i < 8; i++)
{
if (m_state & 0x0001)
{
m_state = (m_state >> 1) ^ m_poly;
}
else
{
m_state = (m_state >> 1);
}
}
return res;
}
void Scrambler::process(uint8_t *pSrcDst, uint32_t len)
{
while(len--)
{
*pSrcDst = process(*pSrcDst);
pSrcDst++;
}
}
// --------------------------------------------------------------