Add more scaffolding code to the channel codecs.

This commit is contained in:
Jonathan Naylor 2018-01-25 19:19:54 +00:00
parent 80d97e94ec
commit 059ad7d824
5 changed files with 38 additions and 18 deletions

View file

@ -33,16 +33,22 @@ const unsigned char BIT_MASK_TABLE[] = { 0x80U, 0x40U, 0x20U, 0x10U, 0x08U, 0x04
#define WRITE_BIT1(p,i,b) p[(i)>>3] = (b) ? (p[(i)>>3] | BIT_MASK_TABLE[(i)&7]) : (p[(i)>>3] & ~BIT_MASK_TABLE[(i)&7])
#define READ_BIT1(p,i) (p[(i)>>3] & BIT_MASK_TABLE[(i)&7])
CNXDNFACCH1::CNXDNFACCH1(const CNXDNFACCH1& facch1)
CNXDNFACCH1::CNXDNFACCH1(const CNXDNFACCH1& facch1) :
m_data(NULL)
{
m_data = new unsigned char[10U + 2U];
::memcpy(m_data, facch1.m_data, 10U + 2U);
}
CNXDNFACCH1::CNXDNFACCH1()
CNXDNFACCH1::CNXDNFACCH1() :
m_data(NULL)
{
m_data = new unsigned char[10U + 2U];
}
CNXDNFACCH1::~CNXDNFACCH1()
{
delete[] m_data;
}
bool CNXDNFACCH1::decode(const unsigned char* data)
@ -60,14 +66,21 @@ void CNXDNFACCH1::encode(unsigned char* data) const
void CNXDNFACCH1::getData(unsigned char* data) const
{
assert(data != NULL);
::memcpy(data, m_data, 10U);
}
void CNXDNFACCH1::setData(const unsigned char* data)
{
assert(data != NULL);
::memcpy(m_data, data, 10U);
}
CNXDNFACCH1& CNXDNFACCH1::operator=(const CNXDNFACCH1& facch1)
{
if (&facch1 != this)
::memcpy(m_data, facch1.m_data, 10U + 2U);
return *this;
}

View file

@ -35,6 +35,7 @@ public:
CNXDNFACCH1& operator=(const CNXDNFACCH1& facch);
private:
unsigned char* m_data;
};
#endif

View file

@ -35,14 +35,14 @@ const unsigned char BIT_MASK_TABLE[] = { 0x80U, 0x40U, 0x20U, 0x10U, 0x08U, 0x04
CNXDNFACCH2::CNXDNFACCH2(const CNXDNFACCH2& facch2) :
m_data(NULL)
{
m_data = new unsigned char[25U];
::memcpy(m_data, facch2.m_data, 25U);
m_data = new unsigned char[23U];
::memcpy(m_data, facch2.m_data, 23U);
}
CNXDNFACCH2::CNXDNFACCH2() :
m_data(NULL)
{
m_data = new unsigned char[25U];
m_data = new unsigned char[23U];
}
CNXDNFACCH2::~CNXDNFACCH2()
@ -84,11 +84,7 @@ void CNXDNFACCH2::getData(unsigned char* data) const
{
assert(data != NULL);
unsigned int offset = 8U;
for (unsigned int i = 0U; i < 168U; i++, offset++) {
bool b = READ_BIT1(m_data, offset);
WRITE_BIT1(data, i, b);
}
::memcpy(data, m_data + 1U, 22U);
}
void CNXDNFACCH2::setRAN(unsigned char ran)
@ -101,17 +97,13 @@ void CNXDNFACCH2::setData(const unsigned char* data)
{
assert(data != NULL);
unsigned int offset = 8U;
for (unsigned int i = 0U; i < 168U; i++, offset++) {
bool b = READ_BIT1(data, i);
WRITE_BIT1(m_data, offset, b);
}
::memcpy(m_data + 1U, data, 22U);
}
CNXDNFACCH2& CNXDNFACCH2::operator=(const CNXDNFACCH2& facch2)
{
if (&facch2 != this)
::memcpy(m_data, facch2.m_data, 25U);
::memcpy(m_data, facch2.m_data, 23U);
return *this;
}

View file

@ -33,16 +33,22 @@ const unsigned char BIT_MASK_TABLE[] = { 0x80U, 0x40U, 0x20U, 0x10U, 0x08U, 0x04
#define WRITE_BIT1(p,i,b) p[(i)>>3] = (b) ? (p[(i)>>3] | BIT_MASK_TABLE[(i)&7]) : (p[(i)>>3] & ~BIT_MASK_TABLE[(i)&7])
#define READ_BIT1(p,i) (p[(i)>>3] & BIT_MASK_TABLE[(i)&7])
CNXDNUDCH::CNXDNUDCH(const CNXDNUDCH& udch)
CNXDNUDCH::CNXDNUDCH(const CNXDNUDCH& udch) :
m_data(NULL)
{
m_data = new unsigned char[23U + 2U];
::memcpy(m_data, udch.m_data, 23U + 2U);
}
CNXDNUDCH::CNXDNUDCH()
CNXDNUDCH::CNXDNUDCH() :
m_data(NULL)
{
m_data = new unsigned char[23U + 2U];
}
CNXDNUDCH::~CNXDNUDCH()
{
delete[] m_data;
}
bool CNXDNUDCH::decode(const unsigned char* data)
@ -60,14 +66,21 @@ void CNXDNUDCH::encode(unsigned char* data) const
void CNXDNUDCH::getData(unsigned char* data) const
{
assert(data != NULL);
::memcpy(data, m_data, 23U);
}
void CNXDNUDCH::setData(const unsigned char* data)
{
assert(data != NULL);
::memcpy(m_data, data, 23U);
}
CNXDNUDCH& CNXDNUDCH::operator=(const CNXDNUDCH& udch)
{
if (&udch != this)
::memcpy(m_data, udch.m_data, 23U + 2U);
return *this;
}

View file

@ -36,6 +36,7 @@ public:
CNXDNUDCH& operator=(const CNXDNUDCH& udch);
private:
unsigned char* m_data;
};
#endif