(** Data Product notification payload codec (80 bytes fixed). {v 0x00 uint32 block_offset 0x04 uint32 block_count 0x08 uint16 dp_class 0x0A uint8 priority 0x0B uint8 name_len 0x0C bytes name (64 bytes, null-padded) 0x4C uint32 crc32 v} *) type t = { block_offset : int; block_count : int; dp_class : int; priority : int; name_len : int; name : string; crc32 : int; } val codec : t Wire.Codec.t (** Wire codec for the 80-byte DP notification payload. *) val v : block_offset:int -> block_count:int -> dp_class:int -> priority:int -> name:string -> crc32:int -> t (** [v ~block_offset ~block_count ~dp_class ~priority ~name ~crc32] builds a data product notification. *) val name_string : t -> string (** [name_string t] returns the name with trailing nulls stripped. *) val pp : t Fmt.t (** Pretty-print a data product notification. *) val equal : t -> t -> bool (** Structural equality. *)