diff --git a/src/common/network/BaseNetwork.cpp b/src/common/network/BaseNetwork.cpp
index aa7f9d69..5fa51d56 100644
--- a/src/common/network/BaseNetwork.cpp
+++ b/src/common/network/BaseNetwork.cpp
@@ -205,8 +205,21 @@ bool BaseNetwork::writePeerStatus(json::object obj)
///
/// Writes a group affiliation to the network.
///
+///
+/// Below is the representation of the data layout for the group affiliation
+/// announcement message. The message is 6 bytes in length.
+///
+/// Byte 0 1 2 3
+/// Bit 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0
+/// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+/// | Source ID | Dest ID |
+/// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+/// | |
+/// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+///
///
///
+///
bool BaseNetwork::announceGroupAffiliation(uint32_t srcId, uint32_t dstId)
{
if (m_status != NET_STAT_RUNNING && m_status != NET_STAT_MST_RUNNING)
@@ -224,6 +237,18 @@ bool BaseNetwork::announceGroupAffiliation(uint32_t srcId, uint32_t dstId)
/// Writes a unit registration to the network.
///
///
+///
+/// Below is the representation of the data layout for the unit registration
+/// announcement message. The message is 3 bytes in length.
+///
+/// Byte 0 1 2
+/// Bit 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0
+/// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+/// | Source ID |
+/// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+///
+///
+///
bool BaseNetwork::announceUnitRegistration(uint32_t srcId)
{
if (m_status != NET_STAT_RUNNING && m_status != NET_STAT_MST_RUNNING)
@@ -256,6 +281,7 @@ bool BaseNetwork::announceUnitDeregistration(uint32_t srcId)
/// Writes a complete update of the peer affiliation list to the network.
///
///
+///
bool BaseNetwork::announceAffiliationUpdate(const std::unordered_map affs)
{
if (m_status != NET_STAT_RUNNING && m_status != NET_STAT_MST_RUNNING)
@@ -281,6 +307,7 @@ bool BaseNetwork::announceAffiliationUpdate(const std::unordered_map
///
+///
bool BaseNetwork::announceSiteVCs(const std::vector peers)
{
if (m_status != NET_STAT_RUNNING && m_status != NET_STAT_MST_RUNNING)
@@ -794,6 +821,34 @@ uint16_t BaseNetwork::pktSeq(bool reset)
///
/// Creates an DMR frame message.
///
+///
+/// Below is the representation of the data layout for the DMR frame
+/// message header. The header is 20 bytes in length.
+///
+/// Byte 0 1 2 3
+/// Bit 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0
+/// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+/// | Protocol Tag (DMRD) |
+/// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+/// | Seq No. | Source ID |
+/// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+/// | Destination ID | Reserved |
+/// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+/// | Reserved | Control Flags |S|G| Data Type |
+/// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+/// | Reserved |
+/// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+///
+/// The data starting at offset 20 for 33 bytes if the raw DMR frame.
+///
+/// DMR frame message has 2 trailing bytes:
+///
+/// Byte 53 54
+/// Bit 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0
+/// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+/// | BER | RSSI |
+/// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+///
///
///
///
@@ -828,7 +883,7 @@ UInt8Array BaseNetwork::createDMR_Message(uint32_t& length, const uint32_t strea
FLCO::E flco = data.getFLCO();
buffer[15U] |= flco == FLCO::GROUP ? 0x00U : 0x40U; // Group
- uint8_t dataType = data.getDataType();
+ DataType::E dataType = data.getDataType();
if (dataType == DataType::VOICE_SYNC) {
buffer[15U] |= 0x10U;
}
@@ -857,6 +912,44 @@ UInt8Array BaseNetwork::createDMR_Message(uint32_t& length, const uint32_t strea
///
/// Creates an P25 frame message header.
///
+///
+/// Below is the representation of the data layout for the P25 frame
+/// message header. The header is 24 bytes in length.
+///
+/// Byte 0 1 2 3
+/// Bit 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0
+/// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+/// | Protocol Tag (P25D) |
+/// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+/// | LCO | Source ID |
+/// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+/// | Destination ID | System ID |
+/// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+/// | System ID | Reserved | Control Flags | MFId |
+/// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+/// | Network ID | Reserved |
+/// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+/// | LSD1 | LSD2 | DUID | Frame Length |
+/// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+///
+/// The data starting at offset 20 for variable number of bytes (DUID dependant)
+/// is the P25 frame.
+///
+/// If the P25 frame message is a LDU1, it contains 13 trailing bytes that
+/// contain the frame type, and encryption data.
+///
+/// Byte 180 181 182 183
+/// Bit 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0
+/// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+/// | Frame Type | Algorithm ID | Key ID |
+/// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+/// | Message Indicator |
+/// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+/// | |
+/// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+/// | |
+/// +-+-+-+-+-+-+-+-+
+///
///
///
///
@@ -923,6 +1016,10 @@ void BaseNetwork::createP25_MessageHdr(uint8_t* buffer, p25::defines::DUID::E du
///
/// Creates an P25 LDU1 frame message.
///
+///
+/// The data packed into a P25 LDU1 frame message is near standard DFSI messaging, just instead of
+/// 9 individual frames, they are packed into a single message one right after another.
+///
///
///
///
@@ -1005,6 +1102,10 @@ UInt8Array BaseNetwork::createP25_LDU1Message(uint32_t& length, const p25::lc::L
///
/// Creates an P25 LDU2 frame message.
///
+///
+/// The data packed into a P25 LDU2 frame message is near standard DFSI messaging, just instead of
+/// 9 individual frames, they are packed into a single message one right after another.
+///
///
///
///
@@ -1086,6 +1187,10 @@ UInt8Array BaseNetwork::createP25_LDU2Message(uint32_t& length, const p25::lc::L
///
/// Creates an P25 TDU frame message.
///
+///
+/// The data packed into a P25 TDU frame message is essentially just a message header with control bytes
+/// set.
+///
///
///
///
@@ -1113,6 +1218,10 @@ UInt8Array BaseNetwork::createP25_TDUMessage(uint32_t& length, const p25::lc::LC
///
/// Creates an P25 TSDU frame message.
///
+///
+/// The data packed into a P25 TSDU frame message is essentially just a message header with the FEC encoded
+/// raw TSDU data.
+///
///
///
///
@@ -1147,6 +1256,29 @@ UInt8Array BaseNetwork::createP25_TSDUMessage(uint32_t& length, const p25::lc::L
///
/// Writes P25 PDU frame data to the network.
///
+///
+/// Below is the representation of the data layout for the P25 frame
+/// message header used for a PDU. The header is 24 bytes in length.
+///
+/// Byte 0 1 2 3
+/// Bit 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0
+/// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+/// | Protocol Tag (P25D) |
+/// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+/// |C| SAP | PDU Length (Bytes) |
+/// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+/// | Reserved |
+/// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+/// | | MFId |
+/// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+/// | Reserved |
+/// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+/// | Blk to Flw | Current Block | DUID | Frame Length |
+/// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+///
+/// The data starting at offset 24 for variable number of bytes (DUID dependant)
+/// is the P25 frame.
+///
///
///
///
@@ -1202,6 +1334,28 @@ UInt8Array BaseNetwork::createP25_PDUMessage(uint32_t& length, const p25::data::
///
/// Writes NXDN frame data to the network.
///
+///
+/// Below is the representation of the data layout for the NXDN frame
+/// message header. The header is 24 bytes in length.
+///
+/// Byte 0 1 2 3
+/// Bit 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0
+/// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+/// | Protocol Tag (NXDD) |
+/// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+/// | Message Type | Source ID |
+/// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+/// | Destination ID | Reserved |
+/// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+/// | Reserved | Control Flags |R|G| Reserved |
+/// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+/// | Reserved |
+/// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+/// | | Frame Length |
+/// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+///
+/// The data starting at offset 24 for 48 bytes if the raw NXDN frame.
+///
///
///
///
diff --git a/src/common/network/RTPExtensionHeader.cpp b/src/common/network/RTPExtensionHeader.cpp
index ba8e75bf..2e60827d 100644
--- a/src/common/network/RTPExtensionHeader.cpp
+++ b/src/common/network/RTPExtensionHeader.cpp
@@ -20,6 +20,7 @@ using namespace network::frame;
// ---------------------------------------------------------------------------
// Public Class Members
// ---------------------------------------------------------------------------
+
///
/// Initializes a new instance of the RTPExtensionHeader class.
///
diff --git a/src/common/network/RTPExtensionHeader.h b/src/common/network/RTPExtensionHeader.h
index 05ab1610..ecd79868 100644
--- a/src/common/network/RTPExtensionHeader.h
+++ b/src/common/network/RTPExtensionHeader.h
@@ -32,6 +32,12 @@ namespace network
// ---------------------------------------------------------------------------
// Class Declaration
// Represents an RTP Extension header.
+ //
+ // Byte 0 1 2 3
+ // Bit 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0
+ // +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ // | Payload Type | Payload Length |
+ // +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
// ---------------------------------------------------------------------------
class HOST_SW_API RTPExtensionHeader {
diff --git a/src/common/network/RTPFNEHeader.cpp b/src/common/network/RTPFNEHeader.cpp
index d09a5c0c..52506505 100644
--- a/src/common/network/RTPFNEHeader.cpp
+++ b/src/common/network/RTPFNEHeader.cpp
@@ -21,6 +21,7 @@ using namespace network::frame;
// ---------------------------------------------------------------------------
// Public Class Members
// ---------------------------------------------------------------------------
+
///
/// Initializes a new instance of the RTPFNEHeader class.
///
diff --git a/src/common/network/RTPFNEHeader.h b/src/common/network/RTPFNEHeader.h
index 29eda868..388b036f 100644
--- a/src/common/network/RTPFNEHeader.h
+++ b/src/common/network/RTPFNEHeader.h
@@ -106,6 +106,20 @@ namespace network
// ---------------------------------------------------------------------------
// Class Declaration
// Represents the FNE RTP Extension header.
+ //
+ // Byte 0 1 2 3
+ // Bit 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0
+ // +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ // | Encoded RTP Extension Header |
+ // +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ // | Payload CRC-16 | Function | Sub-function |
+ // +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ // | Stream ID |
+ // +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ // | Peer ID |
+ // +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ // | Message Length |
+ // +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
// ---------------------------------------------------------------------------
class HOST_SW_API RTPFNEHeader : public RTPExtensionHeader {
diff --git a/src/common/network/RTPHeader.cpp b/src/common/network/RTPHeader.cpp
index f0476fd2..72d372ab 100644
--- a/src/common/network/RTPHeader.cpp
+++ b/src/common/network/RTPHeader.cpp
@@ -29,6 +29,7 @@ hrc::hrc_t RTPHeader::m_wcStart = hrc::hrc_t();
// ---------------------------------------------------------------------------
// Public Class Members
// ---------------------------------------------------------------------------
+
///
/// Initializes a new instance of the RTPHeader class.
///
diff --git a/src/common/network/RTPHeader.h b/src/common/network/RTPHeader.h
index 85023c52..5ccc86e5 100644
--- a/src/common/network/RTPHeader.h
+++ b/src/common/network/RTPHeader.h
@@ -34,6 +34,16 @@ namespace network
// ---------------------------------------------------------------------------
// Class Declaration
// Represents an RTP header.
+ //
+ // Byte 0 1 2 3
+ // Bit 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0
+ // +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ // |Ver|P|E| CSRC |M| Payload Type| Sequence |
+ // +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ // | Timestamp |
+ // +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ // | SSRC |
+ // +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
// ---------------------------------------------------------------------------
class HOST_SW_API RTPHeader {
diff --git a/src/dfsi/frames/BlockHeader.h b/src/dfsi/frames/BlockHeader.h
index cb1ea3a0..e75798da 100644
--- a/src/dfsi/frames/BlockHeader.h
+++ b/src/dfsi/frames/BlockHeader.h
@@ -30,14 +30,14 @@ namespace p25
//
// Compact Form
// Byte 0
- // Bit 0 1 2 3 4 5 6 7
+ // Bit 7 6 5 4 3 2 1 0
// +-+-+-+-+-+-+-+-+
// |E| BT |
// +-+-+-+-+-+-+-+-+
//
// Verbose Form
// Byte 0 1 2 3
- // Bit 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7
+ // Bit 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0
// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
// |E| BT | TSO | BL |
// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
diff --git a/src/dfsi/frames/ControlOctet.h b/src/dfsi/frames/ControlOctet.h
index 524a9623..ea8e6309 100644
--- a/src/dfsi/frames/ControlOctet.h
+++ b/src/dfsi/frames/ControlOctet.h
@@ -29,7 +29,7 @@ namespace p25
// Implements a DFSI control octet packet.
//
// Byte 0
- // Bit 0 1 2 3 4 5 6 7
+ // Bit 7 6 5 4 3 2 1 0
// +-+-+-+-+-+-+-+-+
// |S|C| BHC |
// +-+-+-+-+-+-+-+-+
diff --git a/src/dfsi/frames/FullRateVoice.h b/src/dfsi/frames/FullRateVoice.h
index 050d1253..99539028 100644
--- a/src/dfsi/frames/FullRateVoice.h
+++ b/src/dfsi/frames/FullRateVoice.h
@@ -32,7 +32,7 @@ namespace p25
// CAI Frames 1, 2, 10 and 11.
//
// Byte 0 1 2 3
- // Bit 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7
+ // Bit 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0
// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
// | FT | U0(b11-0) | U1(b11-0) |
// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
@@ -47,7 +47,7 @@ namespace p25
// CAI Frames 3 - 8.
//
// Byte 0 1 2 3
- // Bit 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7
+ // Bit 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0
// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
// | FT | U0(b11-0) | U1(b11-0) |
// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
@@ -64,7 +64,7 @@ namespace p25
// CAI Frames 12 - 17.
//
// Byte 0 1 2 3
- // Bit 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7
+ // Bit 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0
// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
// | FT | U0(b11-0) | U1(b11-0) |
// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
@@ -81,7 +81,7 @@ namespace p25
// CAI Frames 9 and 10.
//
// Byte 0 1 2 3
- // Bit 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7
+ // Bit 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0
// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
// | FT | U0(b11-0) | U1(b11-0) |
// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
@@ -103,7 +103,7 @@ namespace p25
// CAI Frames 1, 2, 10 and 11.
//
// Byte 0 1 2 3
- // Bit 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7
+ // Bit 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0
// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
// | FT | IMBE 1 | IMBE 2 | IMBE 3 |
// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
@@ -118,7 +118,7 @@ namespace p25
// CAI Frames 3 - 8.
//
// Byte 0 1 2 3
- // Bit 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7
+ // Bit 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0
// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
// | FT | IMBE 1 | IMBE 2 | IMBE 3 |
// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
@@ -135,7 +135,7 @@ namespace p25
// CAI Frames 12 - 17.
//
// Byte 0 1 2 3
- // Bit 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7
+ // Bit 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0
// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
// | FT | IMBE 1 | IMBE 2 | IMBE 3 |
// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
@@ -152,7 +152,7 @@ namespace p25
// CAI Frames 9 and 10.
//
// Byte 0 1 2 3
- // Bit 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7
+ // Bit 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0
// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
// | FT | IMBE 1 | IMBE 2 | IMBE 3 |
// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
diff --git a/src/dfsi/frames/MotFullRateVoice.h b/src/dfsi/frames/MotFullRateVoice.h
index f49052a6..6442f924 100644
--- a/src/dfsi/frames/MotFullRateVoice.h
+++ b/src/dfsi/frames/MotFullRateVoice.h
@@ -31,7 +31,7 @@ namespace p25
// Implements a P25 Motorola full rate voice packet.
//
// Byte 0 1 2 3
- // Bit 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7
+ // Bit 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0
// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
// | FT | Addtl Data | Addtl Data | Addtl Data |
// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
diff --git a/src/dfsi/frames/MotStartOfStream.h b/src/dfsi/frames/MotStartOfStream.h
index bdc05e98..05956763 100644
--- a/src/dfsi/frames/MotStartOfStream.h
+++ b/src/dfsi/frames/MotStartOfStream.h
@@ -30,7 +30,7 @@ namespace p25
// Implements a P25 Motorola start of stream packet.
//
// Byte 0 1 2 3
- // Bit 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7
+ // Bit 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0
// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
// | Fixed Mark | RT Mode Flag | Start/Stop | Type Flag |
// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
diff --git a/src/dfsi/frames/MotStartVoiceFrame.h b/src/dfsi/frames/MotStartVoiceFrame.h
index fc183b2d..1813d151 100644
--- a/src/dfsi/frames/MotStartVoiceFrame.h
+++ b/src/dfsi/frames/MotStartVoiceFrame.h
@@ -32,7 +32,7 @@ namespace p25
// Implements a P25 Motorola voice frame 1/10 start.
//
// Byte 0 1 2 3
- // Bit 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7
+ // Bit 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0
// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
// | Encoded Motorola Start of Stream |
// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
diff --git a/src/dfsi/frames/MotVoiceHeader1.h b/src/dfsi/frames/MotVoiceHeader1.h
index 42442b01..943d9487 100644
--- a/src/dfsi/frames/MotVoiceHeader1.h
+++ b/src/dfsi/frames/MotVoiceHeader1.h
@@ -31,7 +31,7 @@ namespace p25
// Implements a P25 Motorola voice header frame 1.
//
// Byte 0 1 2 3
- // Bit 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7
+ // Bit 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0
// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
// | Encoded Motorola Start of Stream |
// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
diff --git a/src/dfsi/frames/MotVoiceHeader2.h b/src/dfsi/frames/MotVoiceHeader2.h
index 94b5f353..09c3ca7b 100644
--- a/src/dfsi/frames/MotVoiceHeader2.h
+++ b/src/dfsi/frames/MotVoiceHeader2.h
@@ -31,7 +31,7 @@ namespace p25
// Implements a P25 Motorola voice header frame 2.
//
// Byte 0 1 2 3
- // Bit 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7
+ // Bit 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0
// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
// | Header Control Word |
// + +
diff --git a/src/dfsi/frames/StartOfStream.h b/src/dfsi/frames/StartOfStream.h
index 6a41bc63..6606d812 100644
--- a/src/dfsi/frames/StartOfStream.h
+++ b/src/dfsi/frames/StartOfStream.h
@@ -29,7 +29,7 @@ namespace p25
// Implements a P25 DFSI start of stream packet.
//
// Byte 0 1 2
- // Bit 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7
+ // Bit 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0
// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
// | NID | Rsvd | Err C |
// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+