use std::mem;
pub use ca_descr_type::*;
pub use ca_slot_flags::*;
pub use ca_slot_type::*;
mod ca_slot_type {
pub const CA_CI: u32 = 1;
pub const CA_CI_LINK: u32 = 2;
pub const CA_CI_PHYS: u32 = 4;
pub const CA_DESCR: u32 = 8;
pub const CA_SC: u32 = 128;
}
mod ca_slot_flags {
pub const CA_CI_MODULE_NOT_FOUND: u32 = 0;
pub const CA_CI_MODULE_PRESENT: u32 = 1;
pub const CA_CI_MODULE_READY: u32 = 2;
}
#[repr(C)]
#[derive(Default, Debug, Clone, Copy)]
pub struct CaSlotInfo {
pub slot_num: u32,
pub slot_type: u32,
pub flags: u32,
}
mod ca_descr_type {
pub const CA_ECD: u32 = 1;
pub const CA_NDS: u32 = 2;
pub const CA_DSS: u32 = 4;
}
#[repr(C)]
#[derive(Default, Debug)]
pub struct CaDescrInfo {
pub descr_num: u32,
pub descr_type: u32,
}
#[repr(C)]
#[derive(Default, Debug)]
pub struct CaCaps {
pub slot_num: u32,
pub slot_type: u32,
pub descr_num: u32,
pub descr_type: u32,
}
#[repr(C)]
#[derive(Debug)]
pub struct CaMsg {
index: u32,
typ: u32,
pub length: u32,
pub msg: [u8; 256],
}
impl Default for CaMsg {
#[inline]
fn default() -> Self {
unsafe { mem::zeroed::<Self>() }
}
}
#[repr(C)]
#[derive(Default, Debug)]
pub struct CaDescr {
pub index: u32,
pub parity: u32,
pub cw: [u8; 8],
}
#[repr(C)]
#[derive(Default, Debug)]
pub struct CaPid {
pub pid: u32,
pub index: i32,
}
nix::ioctl_none!(
#[inline]
ca_reset,
b'o',
128
);
nix::ioctl_read!(
#[inline]
ca_get_cap,
b'o',
129,
CaCaps
);
nix::ioctl_read!(
#[inline]
ca_get_slot_info,
b'o',
130,
CaSlotInfo
);