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); CSync::addNXDNSync(data + 2U);
CNXDNLICH lich; CNXDNLICH lich;
lich.setData(netData[0U]); lich.setRaw(netData[0U]);
unsigned char usc = lich.getFCT(); unsigned char usc = lich.getFCT();
unsigned char option = lich.getOption(); unsigned char option = lich.getOption();
lich.setDirection(m_remoteGateway ? NXDN_LICH_DIRECTION_INBOUND : NXDN_LICH_DIRECTION_OUTBOUND); 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); assert(data != NULL);
if (checksum) { ::memcpy(data, m_data, 10U);
::memset(data, 0x00U, 12U); }
::memcpy(data, m_data, 10U);
CNXDNCRC::encodeCRC12(data, 80U); void CNXDNFACCH1::getRaw(unsigned char* data) const
} else { {
::memcpy(data, m_data, 10U); assert(data != NULL);
}
::memset(data, 0x00U, 12U);
::memcpy(data, m_data, 10U);
CNXDNCRC::encodeCRC12(data, 80U);
} }
void CNXDNFACCH1::setData(const unsigned char* data) void CNXDNFACCH1::setData(const unsigned char* data)
@ -168,6 +172,13 @@ void CNXDNFACCH1::setData(const unsigned char* data)
::memcpy(m_data, data, 10U); ::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) CNXDNFACCH1& CNXDNFACCH1::operator=(const CNXDNFACCH1& facch1)
{ {
if (&facch1 != this) if (&facch1 != this)

View file

@ -29,9 +29,11 @@ public:
void encode(unsigned char* data, unsigned int offset) const; 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 setData(const unsigned char* data);
void setRaw(const unsigned char* data);
CNXDNFACCH1& operator=(const CNXDNFACCH1& facch); CNXDNFACCH1& operator=(const CNXDNFACCH1& facch);

View file

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

View file

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

View file

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

View file

@ -32,12 +32,14 @@ public:
unsigned char getRAN() const; unsigned char getRAN() const;
unsigned char getStructure() 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 setRAN(unsigned char ran);
void setStructure(unsigned char structure); void setStructure(unsigned char structure);
void setData(const unsigned char* data); void setData(const unsigned char* data);
void setRaw(const unsigned char* data);
CNXDNSACCH& operator=(const CNXDNSACCH& sacch); CNXDNSACCH& operator=(const CNXDNSACCH& sacch);

View file

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

View file

@ -31,11 +31,13 @@ public:
unsigned char getRAN() const; 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 setRAN(unsigned char ran);
void setData(const unsigned char* data); void setData(const unsigned char* data);
void setRaw(const unsigned char* data);
CNXDNUDCH& operator=(const CNXDNUDCH& udch); CNXDNUDCH& operator=(const CNXDNUDCH& udch);