Enum MessageType

Source
pub enum MessageType {
    Request,
    ResponseSuccess,
    ResponseError,
}
Expand description
 // Test read request.
 use ddaa_protocol::{Command, MessageType, ProtocolMessage};
 let mut buffer: Vec<u8> = vec![0; 38];
 buffer[0] = 0x07;
 buffer[1] = 0x01;
 buffer[2] = 0x05;
 buffer[3] = 0x00;
 buffer[4] = 0x01;
 buffer[5] = 0x00;
 buffer[6] = 0x17;
 buffer[7] = 0x04;

 let expected = ProtocolMessage {
     message_type: MessageType::Request,
     command: Command::Read,
     variable: 0x00,
     data: vec![0x00],
 };
 assert_eq!(
     expected,
     ddaa_protocol::parse_protocol_message(&mut buffer).unwrap(),
     "Type: Request, Command: Read, Variable: 0x00, Data: [0x00]"
 );
// Test write request.
use ddaa_protocol::{Command, MessageType, ProtocolMessage};
let mut buffer: Vec<u8> = vec![0; 38];
buffer[0] = 0x07;
buffer[1] = 0x01;
buffer[2] = 0x1A;
buffer[3] = 0x00;
buffer[4] = 0x01;
buffer[5] = 0x00;
buffer[6] = 0x17;
buffer[7] = 0x04;

let expected = ProtocolMessage {
    message_type: MessageType::Request,
    command: Command::Write,
    variable: 0x00,
    data: vec![0x00],
};
assert_eq!(
    expected,
    ddaa_protocol::parse_protocol_message(&mut buffer).unwrap(),
    "Type: Request, Command: Write, Variable: 0x00, Data: [0x00]"
);
// Test ping request.
use ddaa_protocol::{Command, MessageType, ProtocolMessage};
let mut buffer: Vec<u8> = vec![0; 38];
buffer[0] = 0x07;
buffer[1] = 0x01;
buffer[2] = 0x07;
buffer[3] = 0x00;
buffer[4] = 0x01;
buffer[5] = 0x00;
buffer[6] = 0x17;
buffer[7] = 0x04;

let expected = ProtocolMessage {
    message_type: MessageType::Request,
    command: Command::Ping,
    variable: 0x00,
    data: vec![0x00],
};
assert_eq!(
    expected,
    ddaa_protocol::parse_protocol_message(&mut buffer).unwrap(),
    "Type: Request, Command: Ping, Variable: 0x00, Data: [0x00]"
);
// Test response success.
use ddaa_protocol::{Command, MessageType, ProtocolMessage};
let mut buffer: Vec<u8> = vec![0; 38];
buffer[0] = 0x06;
buffer[1] = 0x01;
buffer[2] = 0x05;
buffer[3] = 0x00;
buffer[4] = 0x01;
buffer[5] = 0x00;
buffer[6] = 0x17;
buffer[7] = 0x04;

let expected = ProtocolMessage {
    message_type: MessageType::ResponseSuccess,
    command: Command::Read,
    variable: 0x00,
    data: vec![0x00],
};
assert_eq!(
    expected,
    ddaa_protocol::parse_protocol_message(&mut buffer).unwrap(),
    "Type: Response Success, Command: Read, Variable: 0x00, Data: [0x00]"
);
// Test response error.
use ddaa_protocol::{Command, MessageType, ProtocolMessage};
let mut buffer: Vec<u8> = vec![0; 38];
buffer[0] = 0x15;
buffer[1] = 0x01;
buffer[2] = 0x05;
buffer[3] = 0x00;
buffer[4] = 0x01;
buffer[5] = 0x00;
buffer[6] = 0x17;
buffer[7] = 0x04;
buffer[8] = 0x01;

let expected = ProtocolMessage {
    message_type: MessageType::ResponseError,
    command: Command::Read,
    variable: 0x00,
    data: vec![0x00],
};
assert_eq!(
    expected,
    ddaa_protocol::parse_protocol_message(&mut buffer).unwrap(),
    "Type: Response Error, Command: Read, Variable: 0x00, Data: [0x00]"
);
// Test ping response.
use ddaa_protocol::{Command, MessageType, ProtocolMessage};
let mut buffer: Vec<u8> = vec![0; 38];
buffer[0] = 0x06;
buffer[1] = 0x01;
buffer[2] = 0x05;
buffer[3] = 0x00;
buffer[4] = 0x01;
buffer[5] = 0x00;
buffer[6] = 0x17;
buffer[7] = 0x04;

let expected = ProtocolMessage {
    message_type: MessageType::ResponseSuccess,
    command: Command::Read,
    variable: 0x00,
    data: vec![0x00],
};
assert_eq!(
    expected,
    ddaa_protocol::parse_protocol_message(&mut buffer).unwrap(),
    "Type: Response Success, Command: Read, Variable: 0x00, Data: [0x00]"
);
// Test Multibyte Request
use ddaa_protocol::{Command, MessageType, ProtocolMessage};
let mut buffer: Vec<u8> = vec![0; 38];
buffer[0] = 0x07;
buffer[1] = 0x01;
buffer[2] = 0x1A;
buffer[3] = 0x02;
buffer[4] = 0x03;
buffer[5] = 0x00;
buffer[6] = 0x01;
buffer[7] = 0x02;
buffer[8] = 0x17;
buffer[9] = 0x04;

let expected = ProtocolMessage {
    message_type: MessageType::Request,
    command: Command::Write,
    variable: 0x02,
    data: vec![0x00, 0x01, 0x02],
};
assert_eq!(
    expected,
    ddaa_protocol::parse_protocol_message(&mut buffer).unwrap(),
    "Type: Request, Command: write, Variable: 0x02, Data: [0x00, 0x01, 0x02]"
);
// Test Multibyte Response
use ddaa_protocol::{Command, MessageType, ProtocolMessage};
let mut buffer: Vec<u8> = vec![0; 38];
buffer[0] = 0x06;
buffer[1] = 0x01;
buffer[2] = 0x05;
buffer[3] = 0x02;
buffer[4] = 0x03;
buffer[5] = 0x00;
buffer[6] = 0x01;
buffer[7] = 0x02;
buffer[8] = 0x17;
buffer[9] = 0x04;

let expected = ProtocolMessage {
    message_type: MessageType::ResponseSuccess,
    command: Command::Read,
    variable: 0x02,
    data: vec![0x00, 0x01, 0x02],
};
assert_eq!(
    expected,
    ddaa_protocol::parse_protocol_message(&mut buffer).unwrap(),
    "Type: Response Success, Command: read, Variable: 0x02, Data: [0x00, 0x01, 0x02]"
);
// Test data shifting (buffer is big, and doesn't have a valid set of start bytes.
use ddaa_protocol::{Command, MessageType, ProtocolMessage};
let mut buffer: Vec<u8> = vec![0; 38];
buffer[0] = 0x01;
buffer[1] = 0x05;
buffer[2] = 0x02;
buffer[3] = 0x03;
buffer[4] = 0x00;
buffer[5] = 0x01;
buffer[6] = 0x02;
buffer[7] = 0x17;
buffer[8] = 0x04;
buffer[9] = 0x06;
buffer[10] = 0x01;
buffer[11] = 0x05;
buffer[12] = 0x02;
buffer[13] = 0x03;
buffer[14] = 0x00;
buffer[15] = 0x01;
buffer[16] = 0x02;
buffer[17] = 0x17;
buffer[18] = 0x04;
buffer[19] = 0x06;
buffer[20] = 0x01;
buffer[21] = 0x05;
buffer[22] = 0x02;
buffer[23] = 0x03;
let expected = ProtocolMessage {
    message_type: MessageType::ResponseSuccess,
    command: Command::Read,
    variable: 0x02,
    data: vec![0x00, 0x01, 0x02],
};
assert_eq!(
    expected,
    ddaa_protocol::parse_protocol_message(&mut buffer).unwrap(),
    "Type: Response Success, Command: read, Variable: 0x02, Data: [0x00, 0x01, 0x02]"
);
// Test create read request
use ddaa_protocol::{Command, MessageType, ProtocolMessage};
let mut expected_buffer: Vec<u8> = vec![0; 10];
expected_buffer[0] = 0x07;
expected_buffer[1] = 0x01;
expected_buffer[2] = 0x05;
expected_buffer[3] = 0x01;
expected_buffer[4] = 0x03;
expected_buffer[5] = 0x01;
expected_buffer[6] = 0x03;
expected_buffer[7] = 0x02;
expected_buffer[8] = 0x17;
expected_buffer[9] = 0x04;

let mut data: Vec<u8> = vec![0; 3];
data[0] = 0x01;
data[1] = 0x03;
data[2] = 0x02;

assert_eq!(
   expected_buffer,
   ddaa_protocol::create_protocol_buffer(
       MessageType::Request,
       Command::Read,
       0x01,
       &data
   ),
   "Create Type: Request, Command: Read, Variable: 0x01, Data: [0x01 0x03 0x02]"
);
// Test create write request.
use ddaa_protocol::{Command, MessageType, ProtocolMessage};
let mut expected_buffer: Vec<u8> = vec![0; 10];
expected_buffer[0] = 0x07;
expected_buffer[1] = 0x01;
expected_buffer[2] = 0x1A;
expected_buffer[3] = 0x01;
expected_buffer[4] = 0x03;
expected_buffer[5] = 0x01;
expected_buffer[6] = 0x03;
expected_buffer[7] = 0x02;
expected_buffer[8] = 0x17;
expected_buffer[9] = 0x04;

let mut data: Vec<u8> = vec![0; 3];
data[0] = 0x01;
data[1] = 0x03;
data[2] = 0x02;
assert_eq!(
   expected_buffer,
   ddaa_protocol::create_protocol_buffer(
       MessageType::Request,
       Command::Write,
       0x01,
       &data
   ),
   "Create Type: Request, Command: Write, Variable: 0x01, Data: [0x01 0x03 0x01]"
);
// Test create ping request.
use ddaa_protocol::{Command, MessageType, ProtocolMessage};
let mut expected_buffer: Vec<u8> = vec![0; 8];
expected_buffer[0] = 0x07;
expected_buffer[1] = 0x01;
expected_buffer[2] = 0x07;
expected_buffer[3] = 0x01;
expected_buffer[4] = 0x01;
expected_buffer[5] = 0x01;
expected_buffer[6] = 0x17;
expected_buffer[7] = 0x04;

let mut data: Vec<u8> = vec![0; 1];
data[0] = 0x01;
assert_eq!(
   expected_buffer,
   ddaa_protocol::create_protocol_buffer(
       MessageType::Request,
       Command::Ping,
       0x01,
       &data
   ),
   "Create Type: Request, Command: Ping, Variable: 0x01, Data: [0x01]"
);

Variants§

§

Request

§

ResponseSuccess

§

ResponseError

Trait Implementations§

Source§

impl Debug for MessageType

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl PartialEq for MessageType

Source§

fn eq(&self, other: &MessageType) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Eq for MessageType

Source§

impl StructuralPartialEq for MessageType

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.