use bacnet_types::constructed::BACnetPortPermission;
use bacnet_types::error::Error;
use bytes::BytesMut;
use crate::primitives;
use super::tagged::{decode_ctx_boolean, decode_ctx_unsigned};
pub fn encode_port_permission(buf: &mut BytesMut, permission: &BACnetPortPermission) {
primitives::encode_ctx_unsigned(buf, 0, u64::from(permission.port_id));
primitives::encode_ctx_boolean(buf, 1, permission.enabled);
}
pub fn decode_port_permission(
data: &[u8],
offset: usize,
) -> Result<(BACnetPortPermission, usize), Error> {
let what = "BACnetPortPermission";
let (port_id, pos) = decode_ctx_unsigned::<u8>(data, offset, 0, what)?;
let (enabled, pos) = decode_ctx_boolean(data, pos, 1, what)?;
Ok((BACnetPortPermission { port_id, enabled }, pos))
}