pub struct DleEncoder {
pub escape_stx_etx: bool,
pub escape_cr: bool,
pub add_stx_etx: bool,
}
Expand description
This struct is used to create a DleEncoder instance. It can also be used to configure the encoder
Fields§
§escape_stx_etx: bool
Configure whether the encoder uses the escaped or non-escaped mode
escape_cr: bool
It is possible to escape CR characters as well in the escaped mode
add_stx_etx: bool
Configure the encoder to not add STX and ETX characters at the start and end when encoding
Implementations§
Source§impl DleEncoder
impl DleEncoder
Sourcepub fn encode(
&self,
source_stream: &[u8],
dest_stream: &mut [u8],
) -> Result<usize, DleError>
pub fn encode( &self, source_stream: &[u8], dest_stream: &mut [u8], ) -> Result<usize, DleError>
This method encodes a given byte stream with ASCII based DLE encoding. It returns the number of encoded bytes or a DLE error code.
§Arguments
source_stream
- The stream to encodedest_stream
- Encoded stream will be written here
§Examples
use dle_encoder::DleEncoder;
let dle_encoder = DleEncoder::default();
let mut encoding_buffer: [u8; 16] = [0; 16];
let example_array: [u8; 3] = [0, 0x02, 0x10];
let encode_result = dle_encoder.encode(
&example_array, &mut encoding_buffer
);
assert!(encode_result.is_ok());
let encoded_len = encode_result.unwrap();
assert_eq!(encoded_len, 7);
println!("Source buffer: {:?}", example_array);
println!("Encoded stream: {:?}", &encoding_buffer[ .. encoded_len])
Sourcepub fn encode_escaped(
&self,
source_stream: &[u8],
dest_stream: &mut [u8],
) -> Result<usize, DleError>
pub fn encode_escaped( &self, source_stream: &[u8], dest_stream: &mut [u8], ) -> Result<usize, DleError>
This method encodes a given byte stream with ASCII based DLE encoding. It explicitely does so in the escaped mode, which is the default mode.
§Arguments
source_stream
- The stream to encodedest_stream
- Encoded stream will be written here
Sourcepub fn encode_non_escaped(
&self,
source_stream: &[u8],
dest_stream: &mut [u8],
) -> Result<usize, DleError>
pub fn encode_non_escaped( &self, source_stream: &[u8], dest_stream: &mut [u8], ) -> Result<usize, DleError>
This method encodes a given byte stream with ASCII based DLE encoding. It explicitely does so in the non-escaped mode.
§Arguments
source_stream
- The stream to encodedest_stream
- Encoded stream will be written here
§Example
use dle_encoder::DleEncoder;
let dle_encoder = DleEncoder::default();
let mut encoding_buffer: [u8; 16] = [0; 16];
let example_array: [u8; 3] = [0, 0x02, 0x10];
let encode_result = dle_encoder.encode_non_escaped(
&example_array, &mut encoding_buffer
);
assert!(encode_result.is_ok());
let encoded_len = encode_result.unwrap();
assert_eq!(encoded_len, 8);
println!("Source buffer: {:?}", example_array);
println!("Encoded stream: {:?}", &encoding_buffer[ .. encoded_len])
Sourcepub fn decode(
&self,
source_stream: &[u8],
dest_stream: &mut [u8],
read_len: &mut usize,
) -> Result<usize, DleError>
pub fn decode( &self, source_stream: &[u8], dest_stream: &mut [u8], read_len: &mut usize, ) -> Result<usize, DleError>
This method decodes a given byte stream which was encoded with a ASCII DLE encoder. It explicitely does so in the escaped mode, which is the default mode. It returns the length of the decoded buffer or an error code if there is a decoder failure or the destination stream is too short.
§Arguments
source_stream
- The stream to decodedest_stream
- Decoded stream will be written hereread_len
- The number of read bytes in the source stream will be assigned to this variable
§Examples
use dle_encoder::DleEncoder;
let dle_encoder = DleEncoder::default();
let mut decoding_buffer: [u8; 16] = [0; 16];
let encoded_array: [u8; 4] = [0x02, 0x10, 0x02 + 0x40, 0x03];
let mut read_len = 0;
let decode_result = dle_encoder.decode(
&encoded_array, &mut decoding_buffer, &mut read_len
);
assert!(decode_result.is_ok());
let decoded_len = decode_result.unwrap();
assert_eq!(decoded_len, 1);
println!("Source buffer: {:?}", encoded_array);
println!("Encoded stream: {:?}", &decoding_buffer[ .. decoded_len])
Sourcepub fn decode_escaped(
&self,
source_stream: &[u8],
dest_stream: &mut [u8],
read_len: &mut usize,
) -> Result<usize, DleError>
pub fn decode_escaped( &self, source_stream: &[u8], dest_stream: &mut [u8], read_len: &mut usize, ) -> Result<usize, DleError>
This method decodes a given byte stream which was encoded with a ASCII DLE encoder. It explicitely does so in the escaped mode, which is the default mode. It returns the length of the decoded buffer or an error code if there is a decoder failure or the destination stream is too short.
§Arguments
source_stream
- The stream to decodedest_stream
- Decoded stream will be written hereread_len
- The number of read bytes in the source stream will be assigned to this variable
Sourcepub fn decode_non_escaped(
&self,
source_stream: &[u8],
dest_stream: &mut [u8],
read_len: &mut usize,
) -> Result<usize, DleError>
pub fn decode_non_escaped( &self, source_stream: &[u8], dest_stream: &mut [u8], read_len: &mut usize, ) -> Result<usize, DleError>
This method decodes a given byte stream which was encoded with a ASCII DLE encoder. It explicitely does so in the non-escaped mode. It returns the length of the decoded buffer or an error code if there is a decoder failure or the destination stream is too short.
§Arguments
source_stream
- The stream to decodedest_stream
- Decoded stream will be written hereread_len
- The number of read bytes in the source stream will be assigned to this variable
§Examples
use dle_encoder::DleEncoder;
let dle_encoder = DleEncoder::default();
let mut decoding_buffer: [u8; 16] = [0; 16];
let encoded_array: [u8; 6] = [0x10, 0x02, 0x02, 0x03, 0x10, 0x03];
let mut read_len = 0;
let decode_result = dle_encoder.decode_non_escaped(
&encoded_array, &mut decoding_buffer, &mut read_len
);
assert!(decode_result.is_ok());
let decoded_len = decode_result.unwrap();
assert_eq!(decoded_len, 2);
println!("Source buffer: {:?}", encoded_array);
println!("Encoded stream: {:?}", &decoding_buffer[ .. decoded_len])
Trait Implementations§
Source§impl Clone for DleEncoder
impl Clone for DleEncoder
Source§fn clone(&self) -> DleEncoder
fn clone(&self) -> DleEncoder
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read more