Pure functional packet encoder and decoder for DL/T 645-2007 frames.
Summary
Functions
Adds 0x33 to each byte modulo 256.
Calculates the modulo 256 checksum over the given binary.
Translates a 1-byte error code to a readable reason.
Returns the symbolic name of a DL/T 645 function code.
Packs an abnormal/error response frame. Bit 6 of control code is set (0xC0 | func), and payload contains the 1-byte error code.
Generic frame packer.
Packs a freeze command frame (0x16).
Packs a read address request frame (0x13).
Uses broadcast address AAAAAAAAAAAA by default.
Packs a normal response frame for read address (0x93).
Packs a read data request frame (0x11).
Packs a normal response frame for read data (0x91).
Packs a broadcast time calibration frame (0x08).
Address is typically 999999999999.
Packs a write address request frame (0x15).
Packs a write data request frame (0x14).
Parses a complete DL/T 645-2007 frame binary.
Returns {:ok, %ExDlt645.Frame{}} or {:error, reason}.
Subtracts 0x33 from each byte modulo 256.
Functions
Adds 0x33 to each byte modulo 256.
Calculates the modulo 256 checksum over the given binary.
Translates a 1-byte error code to a readable reason.
Returns the symbolic name of a DL/T 645 function code.
Packs an abnormal/error response frame. Bit 6 of control code is set (0xC0 | func), and payload contains the 1-byte error code.
Generic frame packer.
Packs a freeze command frame (0x16).
Packs a read address request frame (0x13).
Uses broadcast address AAAAAAAAAAAA by default.
Packs a normal response frame for read address (0x93).
@spec pack_read_request( String.t(), non_neg_integer() | binary() | String.t(), keyword() ) :: binary()
Packs a read data request frame (0x11).
@spec pack_read_response( String.t(), non_neg_integer() | binary(), binary(), keyword() ) :: binary()
Packs a normal response frame for read data (0x91).
@spec pack_sync_time_request(NaiveDateTime.t() | DateTime.t(), keyword()) :: binary()
Packs a broadcast time calibration frame (0x08).
Address is typically 999999999999.
Packs a write address request frame (0x15).
@spec pack_write_request( String.t(), non_neg_integer() | binary() | String.t(), binary(), binary(), binary(), keyword() ) :: binary()
Packs a write data request frame (0x14).
@spec parse_frame(binary()) :: {:ok, ExDlt645.Frame.t()} | {:error, term()}
Parses a complete DL/T 645-2007 frame binary.
Returns {:ok, %ExDlt645.Frame{}} or {:error, reason}.
Subtracts 0x33 from each byte modulo 256.