Skip to main content

Message

Enum Message 

Source
pub enum Message<B = Box<[u8]>> {
    GetInfo,
    SetTck {
        period_ns: u32,
    },
    Shift {
        num_bits: u32,
        tms: B,
        tdi: B,
    },
}
Expand description

A Message is transferred from the client to the server. For each message, the client is expected to send the message and wait for a response from the server. The server needs to process each message in the order received and promptly provide a response. For the XVC 1.0 protocol, only one connection is assumed.

Variants§

§

GetInfo

Requests info from the server. This is used to determine protocol capabilities of the server.

§

SetTck

Configures the TCK period. When sending JTAG vectors the TCK rate may need to be varied to accommodate cable and board signal integrity conditions. This command is used by clients to adjust the TCK rate in order to slow down or speed up the shifting of JTAG vectors.

Fields

§period_ns: u32
§

Shift

Used to shift JTAG vectors in-and out of a device.

Fields

§num_bits: u32

represents the number of TCK clk toggles needed to shift the vectors out

§tms: B

a byte sized vector with all the TMS data. The vector is num_bits and rounds up to the nearest byte.

§tdi: B

a byte sized vector with all the TDI data. The vector is num_bits and rounds up to the nearest byte.

Implementations§

Source§

impl Message<Box<[u8]>>

Source

pub fn from_reader( reader: &mut impl Read, max_shift_bytes: usize, ) -> Result<OwnedMessage, ReadError>

Read a Message from reader using an internal Decoder.

This is a convenience wrapper that constructs a Decoder configured with max_shift_bytes and delegates to its read_message method.

Example:

use std::io::Cursor;
let mut c = Cursor::new(b"getinfo:");
let msg = xvc_protocol::OwnedMessage::from_reader(&mut c, 1024).unwrap();
assert!(matches!(msg, xvc_protocol::Message::GetInfo));
Source

pub fn borrow<'a>(&'a self) -> BorrowedMessage<'a>

Borrows this message into a BorrowedMessage

Source§

impl<B: AsRef<[u8]>> Message<B>

Source

pub fn write_to(&self, writer: &mut impl Write) -> Result<()>

Serialize this Message to writer in the protocol command format.

  • GetInfo is written as getinfo:
  • SetTck is written as settck: followed by a 4-byte little-endian period
  • Shift is written as shift: followed by a 4-byte little-endian num_bits, then the tms and tdi payload bytes

The function writes raw bytes and returns any I/O error encountered.

Trait Implementations§

Source§

impl<B: Clone> Clone for Message<B>

Source§

fn clone(&self) -> Message<B>

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<B: Debug> Debug for Message<B>

Source§

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

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

impl<B: PartialEq> PartialEq for Message<B>

Source§

fn eq(&self, other: &Message<B>) -> 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<B: Eq> Eq for Message<B>

Source§

impl<B> StructuralPartialEq for Message<B>

Auto Trait Implementations§

§

impl<B> Freeze for Message<B>
where B: Freeze,

§

impl<B> RefUnwindSafe for Message<B>
where B: RefUnwindSafe,

§

impl<B> Send for Message<B>
where B: Send,

§

impl<B> Sync for Message<B>
where B: Sync,

§

impl<B> Unpin for Message<B>
where B: Unpin,

§

impl<B> UnsafeUnpin for Message<B>
where B: UnsafeUnpin,

§

impl<B> UnwindSafe for Message<B>
where B: UnwindSafe,

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. 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> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
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.