dstar_gateway_core/codec/dcs/mod.rs
1//! `DCS` reflector wire codec (UDP port 30051).
2//!
3//! `DCS` is the most complex of the three protocols:
4//! - 519-byte LINK with embedded HTML payload
5//! - 19-byte UNLINK
6//! - 14-byte ACK/NAK reply
7//! - 17-byte poll (request and reply identical)
8//! - 100-byte voice frame with embedded D-STAR header
9//!
10//! See [`packet`] for the canonical packet enums, [`encode`] for
11//! TX-side encoders, and [`decode`] for RX-side decoders.
12//!
13//! Reference implementations:
14//! - `ircDDBGateway/Common/ConnectData.cpp:323-393` (LINK/UNLINK/ACK/NAK)
15//! - `ircDDBGateway/Common/AMBEData.cpp:391-431` (voice frame)
16//! - `ircDDBGateway/Common/HeaderData.cpp:515-529` (embedded header)
17//! - `ircDDBGateway/Common/PollData.cpp:170-204` (keepalive)
18//! - `ircDDBGateway/Common/DCSHandler.cpp:54-55` (timer constants)
19//! - `xlxd/src/cdcsprotocol.cpp` (mirror reference)
20
21pub mod consts;
22pub mod decode;
23pub mod encode;
24pub mod error;
25pub mod packet;
26
27pub use decode::{decode_client_to_server, decode_server_to_client};
28pub use encode::{
29 encode_connect_ack, encode_connect_link, encode_connect_nak, encode_connect_unlink,
30 encode_poll_reply, encode_poll_request, encode_voice,
31};
32pub use error::DcsError;
33pub use packet::{ClientPacket, ConnectResult, GatewayType, ServerPacket};