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());
}