jt1078 0.1.0

jt1078协议库实现
Documentation
use jt808::models::{Jt808, Jt808BodySerialize, Jt808BodyTrans, Ver808};
use jt_util::bytes::{IBuffRead, IBuffWrite};

/// 0100 注册信息
#[derive(Debug, Default)]
pub struct Jt0x9102 {
    /// 逻辑通道号
    pub channel: u8,
    /// 控制指令(0:关闭音视频传输指令;1:切换码流(增加暂停和继续);2:暂停该通道所有流的发送;3:恢复暂停前流的发送,与暂停前的流类型一致;4:关闭双向对讲)
    pub cmd: u8,
    /// 关闭音视频类型(0:关闭该通道有关的音视频数据;1:只关闭该通道有关的音频,保留该通道有关的视频;2:只关闭该通道有关的视频,保留该通道有关的音频)
    pub close_type: u8,
    /// 切换码流类型(0:主码流,1:子码流)
    pub switch_type: u8,
}
impl Jt808BodySerialize for Jt0x9102 {
    fn write(&mut self, _ver: &Ver808, buf: &mut dyn IBuffWrite) {
        buf.put_u8(self.channel);
        buf.put_u8(self.cmd);
        buf.put_u8(self.close_type);
        buf.put_u8(self.switch_type);
    }

    fn len(&self, _ver: &Ver808) -> usize {
        4
    }
}
impl Jt808BodyTrans for Jt0x9102 {
    fn fill_new<T>(buf: &mut T, _jt808: &Jt808) -> Self
    where
        T: IBuffRead,
    {
        Self {
            channel: buf.get_u8(),
            cmd: buf.get_u8(),
            close_type: buf.get_u8(),
            switch_type: buf.get_u8(),
        }
    }
}