unmp-center 0.1.2

unmp data center
Documentation
//! 请求指令

use crate::link;
use alloc::vec::Vec;
use unmp::id::Id;
use unmp_center_core::{get_code, Cmd, Data, Kind, Status};

pub fn get_id(product_id: u64, product_key: &[u8; 8]) {
    let mut data = Data::new(Kind::GetId, Status::Request);
    let sn = data.sn();
    let code = get_code(sn, &product_id.to_be_bytes(), product_key);
    let cmd = Cmd::GetIdReq {
        product_id: product_id,
        product_code: code,
    };
    data.set_cmd(cmd);
    link::send(&data.to_buf());
}
pub fn login(id: &Id, private_key: &[u8; 8]) {
    let mut data = Data::new(Kind::Login, Status::Request);
    let sn = data.sn();
    let code = get_code(sn, id, private_key);
    let cmd = Cmd::LoginReq { code: code };
    data.set_cmd(cmd);
    link::send(&data.to_buf());
}
pub fn heart() {
    let mut data = Data::new(Kind::Heart, Status::Request);
    let cmd = Cmd::HeartReq {};
    data.set_cmd(cmd);
    link::send(&data.to_buf());
}
pub fn get_timestamp() {
    let mut data = Data::new(Kind::GetTimestamp, Status::Request);
    let cmd = Cmd::GetTimestampReq {};
    data.set_cmd(cmd);
    link::send(&data.to_buf());
}

pub fn set_actual(id: &Id, public_key: &[u8; 8], k: u16, v: &[u8]) {
    let mut data = Data::new(Kind::SetActual, Status::Request);
    let sn = data.sn();
    let code = get_code(sn, id, public_key);
    let cmd = Cmd::SetActualReq {
        id: id.clone(),
        code: code,
        k: k,
        v: Vec::from(v),
    };
    data.set_cmd(cmd);
    link::send(&data.to_buf());
}
pub fn get_actual(id: &Id, public_key: &[u8; 8], k: u16) {
    let mut data = Data::new(Kind::GetActual, Status::Request);
    let sn = data.sn();
    let code = get_code(sn, id, public_key);
    let cmd = Cmd::GetActualReq {
        id: id.clone(),
        code: code,
        k: k,
    };
    data.set_cmd(cmd);
    link::send(&data.to_buf());
}
pub fn sub_actual(id: &Id, public_key: &[u8; 8], k: u16) {
    let mut data = Data::new(Kind::SubActual, Status::Request);
    let sn = data.sn();
    let code = get_code(sn, id, public_key);
    let cmd = Cmd::SubActualReq {
        id: id.clone(),
        code: code,
        k: k,
    };
    data.set_cmd(cmd);
    link::send(&data.to_buf());
}
pub fn sub_all_actual(id: &Id, public_key: &[u8; 8]) {
    let mut data = Data::new(Kind::SubAllActual, Status::Request);
    let sn = data.sn();
    let code = get_code(sn, id, public_key);
    let cmd = Cmd::SubAllActualReq {
        id: id.clone(),
        code: code,
    };
    data.set_cmd(cmd);
    link::send(&data.to_buf());
}
pub fn notice_actual(id: &Id, k: u16, v: &[u8]) {
    let mut data = Data::new(Kind::NoticeActual, Status::Notice);
    let cmd = Cmd::NoticeActual {
        id: id.clone(),
        k: k,
        v: Vec::from(v),
    };
    data.set_cmd(cmd);
    link::send(&data.to_buf());
}

pub fn set_target(id: &Id, public_key: &[u8; 8], k: u16, v: &[u8]) {
    let mut data = Data::new(Kind::SetTarget, Status::Request);
    let sn = data.sn();
    let code = get_code(sn, id, public_key);
    let cmd = Cmd::SetTargetReq {
        id: id.clone(),
        code: code,
        k: k,
        v: Vec::from(v),
    };
    data.set_cmd(cmd);
    link::send(&data.to_buf());
}
pub fn get_target(id: &Id, public_key: &[u8; 8], k: u16) {
    let mut data = Data::new(Kind::GetTarget, Status::Request);
    let sn = data.sn();
    let code = get_code(sn, id, public_key);
    let cmd = Cmd::GetTargetReq {
        id: id.clone(),
        code: code,
        k: k,
    };
    data.set_cmd(cmd);
    link::send(&data.to_buf());
}
pub fn sub_target(id: &Id, public_key: &[u8; 8], k: u16) {
    let mut data = Data::new(Kind::SubTarget, Status::Request);
    let sn = data.sn();
    let code = get_code(sn, id, public_key);
    let cmd = Cmd::SubTargetReq {
        id: id.clone(),
        code: code,
        k: k,
    };
    data.set_cmd(cmd);
    link::send(&data.to_buf());
}
pub fn sub_all_target(id: &Id, public_key: &[u8; 8]) {
    let mut data = Data::new(Kind::SubAllTarget, Status::Request);
    let sn = data.sn();
    let code = get_code(sn, id, public_key);
    let cmd = Cmd::SubAllTargetReq {
        id: id.clone(),
        code: code,
    };
    data.set_cmd(cmd);
    link::send(&data.to_buf());
}
pub fn notice_target(id: &Id, k: u16, v: &[u8]) {
    let mut data = Data::new(Kind::NoticeTarget, Status::Notice);
    let cmd = Cmd::NoticeTarget {
        id: id.clone(),
        k: k,
        v: Vec::from(v),
    };
    data.set_cmd(cmd);
    link::send(&data.to_buf());
}
pub fn enter_bind(code: [u8; 4]) {
    let mut data = Data::new(Kind::EnterBind, Status::Request);
    let cmd = Cmd::EnterBindReq { code: code };
    data.set_cmd(cmd);
    link::send(&data.to_buf());
}
pub fn bind(product_id: u64, code: [u8; 4]) {
    let mut data = Data::new(Kind::Bind, Status::Request);
    let cmd = Cmd::BindReq {
        product_id,
        code: code,
    };
    data.set_cmd(cmd);
    link::send(&data.to_buf());
}
pub fn unbind(id: &Id) {
    let mut data = Data::new(Kind::Unbind, Status::Request);
    let cmd = Cmd::UnbindReq { id: id.clone() };
    data.set_cmd(cmd);
    link::send(&data.to_buf());
}