Opionally allow the checksum to be copied.
This commit is contained in:
parent
edbc42e0bf
commit
8290db81fd
6 changed files with 29 additions and 12 deletions
|
@ -148,11 +148,17 @@ void CNXDNFACCH1::encode(unsigned char* data, unsigned int offset) const
|
|||
}
|
||||
}
|
||||
|
||||
void CNXDNFACCH1::getData(unsigned char* data) const
|
||||
void CNXDNFACCH1::getData(unsigned char* data, bool checksum) const
|
||||
{
|
||||
assert(data != NULL);
|
||||
|
||||
::memcpy(data, m_data, 10U);
|
||||
if (checksum) {
|
||||
::memset(data, 0x00U, 12U);
|
||||
::memcpy(data, m_data, 10U);
|
||||
CNXDNCRC::encodeCRC12(data, 80U);
|
||||
} else {
|
||||
::memcpy(data, m_data, 10U);
|
||||
}
|
||||
}
|
||||
|
||||
void CNXDNFACCH1::setData(const unsigned char* data)
|
||||
|
|
|
@ -29,7 +29,7 @@ public:
|
|||
|
||||
void encode(unsigned char* data, unsigned int offset) const;
|
||||
|
||||
void getData(unsigned char* data) const;
|
||||
void getData(unsigned char* data, bool checksum = false) const;
|
||||
|
||||
void setData(const unsigned char* data);
|
||||
|
||||
|
|
|
@ -155,14 +155,19 @@ unsigned char CNXDNSACCH::getStructure() const
|
|||
return (m_data[0U] >> 6) & 0x03U;
|
||||
}
|
||||
|
||||
void CNXDNSACCH::getData(unsigned char* data) const
|
||||
void CNXDNSACCH::getData(unsigned char* data, bool checksum) const
|
||||
{
|
||||
assert(data != NULL);
|
||||
|
||||
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);
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -32,7 +32,7 @@ public:
|
|||
unsigned char getRAN() const;
|
||||
unsigned char getStructure() const;
|
||||
|
||||
void getData(unsigned char* data) const;
|
||||
void getData(unsigned char* data, bool checksum = false) const;
|
||||
|
||||
void setRAN(unsigned char ran);
|
||||
void setStructure(unsigned char structure);
|
||||
|
|
10
NXDNUDCH.cpp
10
NXDNUDCH.cpp
|
@ -174,11 +174,17 @@ unsigned char CNXDNUDCH::getRAN() const
|
|||
return m_data[0U] & 0x3FU;
|
||||
}
|
||||
|
||||
void CNXDNUDCH::getData(unsigned char* data) const
|
||||
void CNXDNUDCH::getData(unsigned char* data, bool checksum) const
|
||||
{
|
||||
assert(data != NULL);
|
||||
|
||||
::memcpy(data, m_data + 1U, 22U);
|
||||
if (checksum) {
|
||||
::memset(data, 0x00U, 25U);
|
||||
::memcpy(data, m_data, 23U);
|
||||
CNXDNCRC::encodeCRC15(data, 184U);
|
||||
} else {
|
||||
::memcpy(data, m_data + 1U, 22U);
|
||||
}
|
||||
}
|
||||
|
||||
void CNXDNUDCH::setRAN(unsigned char ran)
|
||||
|
|
|
@ -31,7 +31,7 @@ public:
|
|||
|
||||
unsigned char getRAN() const;
|
||||
|
||||
void getData(unsigned char* data) const;
|
||||
void getData(unsigned char* data, bool checksum = false) const;
|
||||
|
||||
void setRAN(unsigned char ran);
|
||||
|
||||
|
|
Loading…
Reference in a new issue