bacnet-server 0.15.0

BACnet server: APDU dispatch and service handlers
Documentation
use super::*;

impl<T: TransportPort + 'static> BACnetServer<T> {
    pub(super) fn encode_confirmed_cov_multiple_apdu(
        notification: &COVNotificationMultipleRequest,
        invoke_id: u8,
        max_apdu_length: u16,
    ) -> Result<BytesMut, Error> {
        let mut service_buf = BytesMut::new();
        notification.encode(&mut service_buf)?;
        let pdu = Apdu::ConfirmedRequest(ConfirmedRequestPdu {
            segmented: false,
            more_follows: false,
            segmented_response_accepted: false,
            max_segments: None,
            max_apdu_length,
            invoke_id,
            sequence_number: None,
            proposed_window_size: None,
            service_choice: ConfirmedServiceChoice::CONFIRMED_COV_NOTIFICATION_MULTIPLE,
            service_request: service_buf.freeze(),
        });
        let mut buf = BytesMut::new();
        encode_apdu(&mut buf, &pdu).expect("valid APDU encoding");
        Ok(buf)
    }

    pub(super) fn encode_unconfirmed_cov_multiple_apdu(
        notification: &COVNotificationMultipleRequest,
    ) -> Result<BytesMut, Error> {
        let mut service_buf = BytesMut::new();
        notification.encode(&mut service_buf)?;
        let pdu = Apdu::UnconfirmedRequest(UnconfirmedRequestPdu {
            service_choice: UnconfirmedServiceChoice::UNCONFIRMED_COV_NOTIFICATION_MULTIPLE,
            service_request: service_buf.freeze(),
        });
        let mut buf = BytesMut::new();
        encode_apdu(&mut buf, &pdu).expect("valid APDU encoding");
        Ok(buf)
    }
}