aboutsummaryrefslogtreecommitdiff
path: root/src/protocol/commands/_x_upcase.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/protocol/commands/_x_upcase.rs')
-rw-r--r--src/protocol/commands/_x_upcase.rs24
1 files changed, 24 insertions, 0 deletions
diff --git a/src/protocol/commands/_x_upcase.rs b/src/protocol/commands/_x_upcase.rs
new file mode 100644
index 0000000..218c16c
--- /dev/null
+++ b/src/protocol/commands/_x_upcase.rs
@@ -0,0 +1,24 @@
+use super::prelude::*;
+
+use crate::protocol::common::hex::decode_bin_buf;
+
+#[derive(Debug)]
+pub struct X<'a> {
+ pub addr: &'a [u8],
+ pub len: usize,
+ pub val: &'a [u8],
+}
+
+impl<'a> ParseCommand<'a> for X<'a> {
+ #[inline(always)]
+ fn from_packet(buf: PacketBuf<'a>) -> Option<Self> {
+ let body = buf.into_body();
+
+ let mut body = body.splitn_mut(3, |&b| b == b',' || b == b':');
+ let addr = decode_hex_buf(body.next()?).ok()?;
+ let len = decode_hex(body.next()?).ok()?;
+ let val = decode_bin_buf(body.next()?)?;
+
+ Some(X { addr, len, val })
+ }
+}