Add raw data accessors to the channel data classes.

This commit is contained in:
Jonathan Naylor 2018-02-21 07:48:24 +00:00
parent 4b2df6150f
commit 7696add241
9 changed files with 73 additions and 34 deletions

View File

@ -679,7 +679,7 @@ void CNXDNControl::writeNetwork()
CSync::addNXDNSync(data + 2U);
CNXDNLICH lich;
lich.setData(netData[0U]);
lich.setRaw(netData[0U]);
unsigned char usc = lich.getFCT();
unsigned char option = lich.getOption();
lich.setDirection(m_remoteGateway ? NXDN_LICH_DIRECTION_INBOUND : NXDN_LICH_DIRECTION_OUTBOUND);

View File

@ -148,17 +148,21 @@ void CNXDNFACCH1::encode(unsigned char* data, unsigned int offset) const
}
}
void CNXDNFACCH1::getData(unsigned char* data, bool checksum) const
void CNXDNFACCH1::getData(unsigned char* data) const
{
assert(data != NULL);
if (checksum) {
::memset(data, 0x00U, 12U);
::memcpy(data, m_data, 10U);
CNXDNCRC::encodeCRC12(data, 80U);
} else {
::memcpy(data, m_data, 10U);
}
::memcpy(data, m_data, 10U);
}
void CNXDNFACCH1::getRaw(unsigned char* data) const
{
assert(data != NULL);
::memset(data, 0x00U, 12U);
::memcpy(data, m_data, 10U);
CNXDNCRC::encodeCRC12(data, 80U);
}
void CNXDNFACCH1::setData(const unsigned char* data)
@ -168,6 +172,13 @@ void CNXDNFACCH1::setData(const unsigned char* data)
::memcpy(m_data, data, 10U);
}
void CNXDNFACCH1::setRaw(const unsigned char* data)
{
assert(data != NULL);
::memcpy(m_data, data, 12U);
}
CNXDNFACCH1& CNXDNFACCH1::operator=(const CNXDNFACCH1& facch1)
{
if (&facch1 != this)

View File

@ -29,9 +29,11 @@ public:
void encode(unsigned char* data, unsigned int offset) const;
void getData(unsigned char* data, bool checksum = false) const;
void getData(unsigned char* data) const;
void getRaw(unsigned char* data) const;
void setData(const unsigned char* data);
void setRaw(const unsigned char* data);
CNXDNFACCH1& operator=(const CNXDNFACCH1& facch);

View File

@ -107,7 +107,7 @@ unsigned char CNXDNLICH::getDirection() const
return (m_lich[0U] >> 1) & 0x01U;
}
unsigned char CNXDNLICH::getData() const
unsigned char CNXDNLICH::getRaw() const
{
return m_lich[0U];
}
@ -136,7 +136,7 @@ void CNXDNLICH::setDirection(unsigned char direction)
m_lich[0U] |= (direction << 1) & 0x02U;
}
void CNXDNLICH::setData(unsigned char lich)
void CNXDNLICH::setRaw(unsigned char lich)
{
m_lich[0U] = lich;
}

View File

@ -33,13 +33,13 @@ public:
unsigned char getFCT() const;
unsigned char getOption() const;
unsigned char getDirection() const;
unsigned char getData() const;
unsigned char getRaw() const;
void setRFCT(unsigned char rfct);
void setFCT(unsigned char usc);
void setOption(unsigned char option);
void setDirection(unsigned char direction);
void setData(unsigned char lich);
void setRaw(unsigned char lich);
CNXDNLICH& operator=(const CNXDNLICH& lich);

View File

@ -155,22 +155,26 @@ unsigned char CNXDNSACCH::getStructure() const
return (m_data[0U] >> 6) & 0x03U;
}
void CNXDNSACCH::getData(unsigned char* data, bool checksum) const
void CNXDNSACCH::getData(unsigned char* data) const
{
assert(data != NULL);
if (checksum) {
::memcpy(data, m_data, 4U);
CNXDNCRC::encodeCRC6(data, 26U);
} else {
unsigned int offset = 8U;
for (unsigned int i = 0U; i < 18U; i++, offset++) {
bool b = READ_BIT1(m_data, offset);
WRITE_BIT1(data, i, b);
}
unsigned int offset = 8U;
for (unsigned int i = 0U; i < 18U; i++, offset++) {
bool b = READ_BIT1(m_data, offset);
WRITE_BIT1(data, i, b);
}
}
void CNXDNSACCH::getRaw(unsigned char* data) const
{
assert(data != NULL);
::memcpy(data, m_data, 4U);
CNXDNCRC::encodeCRC6(data, 26U);
}
void CNXDNSACCH::setRAN(unsigned char ran)
{
m_data[0U] &= 0xC0U;
@ -194,6 +198,13 @@ void CNXDNSACCH::setData(const unsigned char* data)
}
}
void CNXDNSACCH::setRaw(const unsigned char* data)
{
assert(data != NULL);
::memcpy(m_data, data, 4U);
}
CNXDNSACCH& CNXDNSACCH::operator=(const CNXDNSACCH& sacch)
{
if (&sacch != this)

View File

@ -32,12 +32,14 @@ public:
unsigned char getRAN() const;
unsigned char getStructure() const;
void getData(unsigned char* data, bool checksum = false) const;
void getData(unsigned char* data) const;
void getRaw(unsigned char* data) const;
void setRAN(unsigned char ran);
void setStructure(unsigned char structure);
void setData(const unsigned char* data);
void setRaw(const unsigned char* data);
CNXDNSACCH& operator=(const CNXDNSACCH& sacch);

View File

@ -174,17 +174,21 @@ unsigned char CNXDNUDCH::getRAN() const
return m_data[0U] & 0x3FU;
}
void CNXDNUDCH::getData(unsigned char* data, bool checksum) const
void CNXDNUDCH::getData(unsigned char* data) const
{
assert(data != NULL);
if (checksum) {
::memset(data, 0x00U, 25U);
::memcpy(data, m_data, 23U);
CNXDNCRC::encodeCRC15(data, 184U);
} else {
::memcpy(data, m_data + 1U, 22U);
}
::memcpy(data, m_data + 1U, 22U);
}
void CNXDNUDCH::getRaw(unsigned char* data) const
{
assert(data != NULL);
::memset(data, 0x00U, 25U);
::memcpy(data, m_data, 23U);
CNXDNCRC::encodeCRC15(data, 184U);
}
void CNXDNUDCH::setRAN(unsigned char ran)
@ -199,6 +203,13 @@ void CNXDNUDCH::setData(const unsigned char* data)
::memcpy(m_data + 1U, data, 22U);
}
void CNXDNUDCH::setRaw(const unsigned char* data)
{
assert(data != NULL);
::memcpy(m_data, data, 25U);
}
CNXDNUDCH& CNXDNUDCH::operator=(const CNXDNUDCH& udch)
{
if (&udch != this)

View File

@ -31,11 +31,13 @@ public:
unsigned char getRAN() const;
void getData(unsigned char* data, bool checksum = false) const;
void getData(unsigned char* data) const;
void getRaw(unsigned char* data) const;
void setRAN(unsigned char ran);
void setData(const unsigned char* data);
void setRaw(const unsigned char* data);
CNXDNUDCH& operator=(const CNXDNUDCH& udch);