use crate::consts::*;
use rseip_core::codec::Encode;
pub trait Command: Encode {
fn command_code() -> u16;
}
#[derive(Debug, Default)]
pub struct Nop<D> {
pub data: D,
}
impl<D: Encode> Command for Nop<D> {
#[inline(always)]
fn command_code() -> u16 {
EIP_COMMAND_NOP
}
}
#[derive(Debug)]
pub struct ListIdentity;
impl Command for ListIdentity {
#[inline(always)]
fn command_code() -> u16 {
EIP_COMMAND_LIST_IDENTITY
}
}
#[derive(Debug)]
pub struct ListInterfaces;
impl Command for ListInterfaces {
#[inline(always)]
fn command_code() -> u16 {
EIP_COMMAND_LIST_INTERFACES
}
}
#[derive(Debug)]
pub struct ListServices;
impl Command for ListServices {
#[inline(always)]
fn command_code() -> u16 {
EIP_COMMAND_LIST_SERVICE
}
}
#[derive(Debug)]
pub struct RegisterSession;
impl Command for RegisterSession {
#[inline(always)]
fn command_code() -> u16 {
EIP_COMMAND_REGISTER_SESSION
}
}
#[derive(Debug)]
pub struct UnRegisterSession {
pub session_handle: u32,
}
impl Command for UnRegisterSession {
#[inline(always)]
fn command_code() -> u16 {
EIP_COMMAND_UNREGISTER_SESSION
}
}
#[derive(Debug)]
pub struct SendRRData<D> {
pub session_handle: u32,
pub timeout: u16,
pub data: D,
}
impl<D: Encode> Command for SendRRData<D> {
#[inline(always)]
fn command_code() -> u16 {
EIP_COMMAND_SEND_RRDATA
}
}
#[derive(Debug)]
pub struct SendUnitData<D> {
pub session_handle: u32,
pub connection_id: u32,
pub sequence_number: u16,
pub data: D,
}
impl<D: Encode> Command for SendUnitData<D> {
#[inline(always)]
fn command_code() -> u16 {
EIP_COMMAND_SEND_UNIT_DATA
}
}