use atat::atat_derive::AtatCmd;
use heapless::String;
use types::Qos;
use super::NoResponse;
pub mod responses;
pub mod types;
pub mod urc;
#[derive(Clone, AtatCmd)]
#[at_cmd("+SQNSMQTTDISCONNECT", NoResponse)]
#[cfg_attr(feature = "defmt", derive(defmt::Format))]
pub struct Disconnect {
#[at_arg(position = 0)]
pub id: u8,
}
#[derive(Clone, AtatCmd)]
#[at_cmd("+SQNSMQTTCFG", NoResponse, timeout = 300)]
#[cfg_attr(feature = "defmt", derive(defmt::Format))]
pub struct Configure<'a> {
#[at_arg(position = 0)]
pub id: u8,
#[at_arg(position = 1, len = 128)]
pub client_id: &'a str,
#[at_arg(position = 2)]
pub username: Option<String<256>>,
#[at_arg(position = 3)]
pub password: Option<String<256>>,
#[at_arg(position = 4)]
pub sp_id: Option<u8>,
}
#[derive(Clone, AtatCmd)]
#[at_cmd("+SQNSMQTTCONNECT", NoResponse, timeout = 300)]
#[cfg_attr(feature = "defmt", derive(defmt::Format))]
pub struct Connect<'a> {
#[at_arg(position = 0)]
pub id: u8,
#[at_arg(position = 1, len = 256)]
pub host: &'a str,
#[at_arg(position = 2)]
pub port: Option<u32>,
#[at_arg(position = 3)]
pub keepalive: Option<u32>,
}
#[derive(Clone, AtatCmd)]
#[at_cmd("+SQNSMQTTPUBLISH", NoResponse, termination = "\r")]
#[cfg_attr(feature = "defmt", derive(defmt::Format))]
pub struct PreparePublish<'a> {
#[at_arg(position = 0)]
pub id: u8,
#[at_arg(position = 1, len = 64)]
pub topic: &'a str,
#[at_arg(position = 2)]
pub qos: Option<Qos>,
#[at_arg(position = 3)]
pub length: usize,
}
#[derive(Clone, AtatCmd)]
#[at_cmd(
"",
NoResponse,
cmd_prefix = "",
termination = "",
value_sep = false,
timeout = 300
)]
#[cfg_attr(feature = "defmt", derive(defmt::Format))]
pub struct Publish<'a> {
#[at_arg(position = 0, len = 2048)]
pub payload: &'a atat::serde_bytes::Bytes,
}
#[derive(Clone, AtatCmd)]
#[at_cmd("+SQNSMQTTRCVMESSAGE", NoResponse, timeout = 300)]
#[cfg_attr(feature = "defmt", derive(defmt::Format))]
pub struct Receive {
#[at_arg(position = 0)]
pub id: u8,
#[at_arg(position = 1)]
pub topic: String<256>,
#[at_arg(position = 2)]
pub mid: Option<u16>,
#[at_arg(position = 3)]
pub max_length: Option<u16>,
}
#[derive(Clone, AtatCmd)]
#[at_cmd("+SQNSMQTTSUBSCRIBE", NoResponse, timeout = 300)]
#[cfg_attr(feature = "defmt", derive(defmt::Format))]
pub struct Subscribe {
#[at_arg(position = 0)]
pub id: u8,
#[at_arg(position = 1)]
pub topic: String<256>,
#[at_arg(position = 2)]
pub qos: Option<Qos>,
}