use tokio::sync::oneshot::Sender;
use zb_aps::Data;
use zb_core::Destination;
use zb_core::destination::Device;
use zb_hw::{Error, HwResponse};
use zb_nwk::Source;
use zb_zcl::{Cluster, Frame};
pub use super::Payload;
use crate::response::InternalCommunicationResponse;
#[derive(Debug)]
pub enum Message {
Received {
source: Source,
frame: Data<Frame<Cluster>>,
},
Transmit {
destination: Destination,
payload: Payload,
response: Sender<Result<HwResponse, Error>>,
},
Communicate {
device: Device,
payload: Payload,
response: Sender<Result<InternalCommunicationResponse<Cluster>, Error>>,
},
}