pub mod cbm;
pub mod cbmtype;
pub mod channel;
pub mod disk;
pub mod drive;
pub mod error;
pub mod string;
pub mod util;
pub mod validate;
pub use cbm::Cbm;
pub use cbmtype::{
CbmDeviceInfo, CbmDeviceType, CbmErrorNumber, CbmErrorNumberOk, CbmOperation, CbmOperationType,
CbmStatus, DosVersion,
};
pub use channel::{CbmChannel, CbmChannelManager, CbmChannelPurpose};
pub use channel::{CBM_CHANNEL_CTRL, CBM_CHANNEL_LOAD};
pub use disk::{CbmDirListing, CbmDiskHeader, CbmFileEntry, CbmFileType};
pub use drive::CbmDriveUnit;
pub use error::{DeviceError, Error};
pub use string::{AsciiString, CbmString, PetsciiString};
pub use util::{ascii_str_to_petscii, ascii_to_petscii, petscii_str_to_ascii, petscii_to_ascii};
pub use validate::{validate_device, DeviceValidation};
pub use xum1541::DeviceAccessError;
pub use xum1541::DeviceChannel;
pub use xum1541::Error as Xum1541Error;
pub use xum1541::{Device, RemoteUsbDevice, UsbDevice};
pub use xum1541::device::remoteusb::DEFAULT_ADDR as DEFAULT_REMOTE_ADDR;
pub use xum1541::device::remoteusb::DEFAULT_PORT as DEFAULT_REMOTE_PORT;
trait BusGuardRef {
fn bus_ref_or_err(&self) -> Result<&xum1541::Bus, Error>;
}
impl BusGuardRef for parking_lot::MutexGuard<'_, Option<xum1541::Bus>> {
fn bus_ref_or_err(&self) -> Result<&xum1541::Bus, Error> {
self.as_ref()
.ok_or(Error::Xum1541(xum1541::Error::DeviceAccess {
kind: xum1541::DeviceAccessError::NoDevice,
}))
}
}
trait BusGuardMut {
fn bus_mut_or_err(&mut self) -> Result<&mut xum1541::Bus, Error>;
}
impl<'a> BusGuardMut for parking_lot::MutexGuard<'_, Option<xum1541::Bus>> {
fn bus_mut_or_err(&mut self) -> Result<&mut xum1541::Bus, Error> {
self.as_mut()
.ok_or(Error::Xum1541(xum1541::Error::DeviceAccess {
kind: xum1541::DeviceAccessError::NoDevice,
}))
}
}
pub use xum1541::constants::{DEVICE_MAX_NUM, DEVICE_MIN_NUM};
pub const DEFAULT_DEVICE_NUM: u8 = 8;
pub const XUM1541_VENDOR_ID: &str = "16d0";
pub const XUM1541_PRODUCT_ID: &str = "0504";