Skip to main content

Crate oi4_dnp_encoding

Crate oi4_dnp_encoding 

Source
Expand description

OI4 / DIN SPEC 91406 Digital Nameplate (DNP) encoding / decoding / validation.

Features:

  • std (default): Enables std::error::Error integration; implies alloc.
  • alloc: Provides heap-backed APIs (e.g. encode -> String, decode).
  • strict: Enforces uppercase hex escapes and forbids unescaped reserved ASCII.

Encoding rules summary:

  • Unreserved characters (ALPHA / DIGIT / ‘-’ / ‘.’ / ‘_’ / ‘~’) stay literal.
  • Every other ASCII byte (including the comma itself) MUST be represented as ,XX (uppercase hex) when produced by the encoder.
  • Non-ASCII Unicode stays verbatim (its UTF-8 bytes are not individually re-escaped), unless future spec revisions say otherwise.
  • Decoder (default mode) accepts lowercase hex in escape triplets; encoder always outputs uppercase.
  • Strict mode tightens validation (see feature strict).

No panics on valid usage; no unsafe in production code.

use oi4_dnp_encoding::encode;
let s = "Hello World!"; // space & exclamation must be escaped
let enc = encode(s);
assert_eq!(enc, "Hello,20World,21");

Re-exports§

pub use crate::decode::decode;
pub use crate::encode::encode;
pub use crate::encode::encode_into;
pub use crate::encode::encoded_len;
pub use crate::validate::validate_dnp;
pub use crate::validate::Rules;

Modules§

decode
encode
validate

Structs§

Error

Enums§

ErrorKind