[−][src]Trait spectrusty::bus::BusDevice
An interface for emulating devices that communicate with the emulated CPU
via I/O requests.
This trait allows attaching many, different devices to form a so-called "daisy chain".
Implementations of this trait should be provided as an associated type of ControlUnit::BusDevice.
Associated Types
type Timestamp: Sized
[src]
A type used as a time-stamp.
type NextDevice: BusDevice
[src]
A type of the next device in a daisy chain.
Required methods
pub fn next_device_mut(&mut self) -> &mut Self::NextDevice
[src]
Returns a mutable reference to the next device.
pub fn next_device_ref(&self) -> &Self::NextDevice
[src]
Returns a reference to the next device.
pub fn into_next_device(self) -> Self::NextDevice
[src]
Destructs self and returns the instance of the next bus device.
Provided methods
pub fn reset(&mut self, timestamp: Self::Timestamp)
[src]
Resets the device and all devices in this chain.
This method is called from ControlUnit::reset.
Default implementation forwards this call to the next device.
NOTE: Implementations should always forward this call down the chain after optionally applying it
to self
.
pub fn update_timestamp(&mut self, timestamp: Self::Timestamp)
[src]
This method should be called near the end of each frame.
Default implementation forwards this call to the next device.
NOTE: Implementations should always forward this call down the chain after optionally applying it
to self
.
pub fn next_frame(&mut self, eof_timestamp: Self::Timestamp)
[src]
This method should be called just before the T-state counter of the control unit is wrapped when preparing for the next frame.
It allows the devices that are tracking time to adjust stored timestamps accordingly by subtracting
the total number of T-states per frame from the stored ones. The eof_timestamp
argument indicates
the total number of T-states in a single frame.
Optionally enables implementations to perform an end-of-frame action.
Default implementation forwards this call to the next device.
NOTE: Implementations should always forward this call down the chain after optionally applying it
to self
.
pub fn read_io(
&mut self,
port: u16,
timestamp: Self::Timestamp
) -> Option<(u8, Option<NonZeroU16>)>
[src]
&mut self,
port: u16,
timestamp: Self::Timestamp
) -> Option<(u8, Option<NonZeroU16>)>
This method is called by the control unit during an I/O read cycle.
Default implementation forwards this call to the next device.
Returns an optional tuple with the (data, insert wait states).
NOTE: Implementations should only need to forward this call if it does not apply to this device
or if not all bits are modified by the implementing device. In the latter case the result from the
forwarded call should be logically ANDed
with the result of reading from this device and if the
upstream result is None
the result should be returned with all unused bits set to 1.
pub fn write_io(
&mut self,
port: u16,
data: u8,
timestamp: Self::Timestamp
) -> Option<u16>
[src]
&mut self,
port: u16,
data: u8,
timestamp: Self::Timestamp
) -> Option<u16>
This method is called by the control unit during an I/O write cycle.
Returns Some(insert wait states)
if the device has blocked writing through it.
Default implementation forwards this call to the next device.
NOTE: Implementations should only forward this call to the next device if it does not apply
to this device or if the device doesn't block writing. If the device blocks writing to downstream
devices and the port matches, this method must return true
. Otherwise this method should return
the forwarded result.
pub fn type_id(&self) -> TypeId where
Self: 'static,
[src]
Self: 'static,
Gets the TypeId
of self
.
A required part for the ability to downcast dynamic BusDevice
instances.
Safety
The default implementation of this method must not be overwritten by the specializations.
Consider this method as final
.
Implementations on Foreign Types
impl<D> BusDevice for Box<D, Global> where
D: BusDevice,
[src]
D: BusDevice,
type Timestamp = <D as BusDevice>::Timestamp
type NextDevice = <D as BusDevice>::NextDevice
pub fn next_device_mut(
&mut self
) -> &mut <Box<D, Global> as BusDevice>::NextDevice
[src]
&mut self
) -> &mut <Box<D, Global> as BusDevice>::NextDevice
pub fn next_device_ref(&self) -> &<Box<D, Global> as BusDevice>::NextDevice
[src]
pub fn into_next_device(self) -> <Box<D, Global> as BusDevice>::NextDevice
[src]
pub fn reset(&mut self, timestamp: <Box<D, Global> as BusDevice>::Timestamp)
[src]
pub fn update_timestamp(
&mut self,
timestamp: <Box<D, Global> as BusDevice>::Timestamp
)
[src]
&mut self,
timestamp: <Box<D, Global> as BusDevice>::Timestamp
)
pub fn next_frame(
&mut self,
eof_timestamp: <Box<D, Global> as BusDevice>::Timestamp
)
[src]
&mut self,
eof_timestamp: <Box<D, Global> as BusDevice>::Timestamp
)
pub fn read_io(
&mut self,
port: u16,
timestamp: <Box<D, Global> as BusDevice>::Timestamp
) -> Option<(u8, Option<NonZeroU16>)>
[src]
&mut self,
port: u16,
timestamp: <Box<D, Global> as BusDevice>::Timestamp
) -> Option<(u8, Option<NonZeroU16>)>
pub fn write_io(
&mut self,
port: u16,
data: u8,
timestamp: <Box<D, Global> as BusDevice>::Timestamp
) -> Option<u16>
[src]
&mut self,
port: u16,
data: u8,
timestamp: <Box<D, Global> as BusDevice>::Timestamp
) -> Option<u16>
Implementors
impl<D> BusDevice for DynamicBus<D> where
D: BusDevice,
<D as BusDevice>::Timestamp: Debug,
<D as BusDevice>::Timestamp: Copy,
[src]
D: BusDevice,
<D as BusDevice>::Timestamp: Debug,
<D as BusDevice>::Timestamp: Copy,
type Timestamp = <D as BusDevice>::Timestamp
type NextDevice = D
pub fn next_device_mut(
&mut self
) -> &mut <DynamicBus<D> as BusDevice>::NextDevice
[src]
&mut self
) -> &mut <DynamicBus<D> as BusDevice>::NextDevice
pub fn next_device_ref(&self) -> &<DynamicBus<D> as BusDevice>::NextDevice
[src]
pub fn into_next_device(self) -> <DynamicBus<D> as BusDevice>::NextDevice
[src]
pub fn reset(&mut self, timestamp: <DynamicBus<D> as BusDevice>::Timestamp)
[src]
pub fn update_timestamp(
&mut self,
timestamp: <DynamicBus<D> as BusDevice>::Timestamp
)
[src]
&mut self,
timestamp: <DynamicBus<D> as BusDevice>::Timestamp
)
pub fn next_frame(&mut self, timestamp: <DynamicBus<D> as BusDevice>::Timestamp)
[src]
pub fn read_io(
&mut self,
port: u16,
timestamp: <DynamicBus<D> as BusDevice>::Timestamp
) -> Option<(u8, Option<NonZeroU16>)>
[src]
&mut self,
port: u16,
timestamp: <DynamicBus<D> as BusDevice>::Timestamp
) -> Option<(u8, Option<NonZeroU16>)>
pub fn write_io(
&mut self,
port: u16,
data: u8,
timestamp: <DynamicBus<D> as BusDevice>::Timestamp
) -> Option<u16>
[src]
&mut self,
port: u16,
data: u8,
timestamp: <DynamicBus<D> as BusDevice>::Timestamp
) -> Option<u16>
impl<D> BusDevice for DebugBusDevice<D> where
D: BusDevice,
<D as BusDevice>::Timestamp: Debug,
[src]
D: BusDevice,
<D as BusDevice>::Timestamp: Debug,
type Timestamp = <D as BusDevice>::Timestamp
type NextDevice = D
pub fn next_device_mut(
&mut self
) -> &mut <DebugBusDevice<D> as BusDevice>::NextDevice
[src]
&mut self
) -> &mut <DebugBusDevice<D> as BusDevice>::NextDevice
pub fn next_device_ref(&self) -> &<DebugBusDevice<D> as BusDevice>::NextDevice
[src]
pub fn into_next_device(self) -> <DebugBusDevice<D> as BusDevice>::NextDevice
[src]
pub fn read_io(
&mut self,
port: u16,
timestamp: <DebugBusDevice<D> as BusDevice>::Timestamp
) -> Option<(u8, Option<NonZeroU16>)>
[src]
&mut self,
port: u16,
timestamp: <DebugBusDevice<D> as BusDevice>::Timestamp
) -> Option<(u8, Option<NonZeroU16>)>
pub fn write_io(
&mut self,
port: u16,
data: u8,
timestamp: <DebugBusDevice<D> as BusDevice>::Timestamp
) -> Option<u16>
[src]
&mut self,
port: u16,
data: u8,
timestamp: <DebugBusDevice<D> as BusDevice>::Timestamp
) -> Option<u16>
Called by the control unit on IO::write_io.
impl<D> BusDevice for MultiJoystickBusDevice<D> where
D: BusDevice,
[src]
D: BusDevice,
type Timestamp = <D as BusDevice>::Timestamp
type NextDevice = D
pub fn next_device_mut(
&mut self
) -> &mut <MultiJoystickBusDevice<D> as BusDevice>::NextDevice
[src]
&mut self
) -> &mut <MultiJoystickBusDevice<D> as BusDevice>::NextDevice
pub fn next_device_ref(
&self
) -> &<MultiJoystickBusDevice<D> as BusDevice>::NextDevice
[src]
&self
) -> &<MultiJoystickBusDevice<D> as BusDevice>::NextDevice
pub fn into_next_device(
self
) -> <MultiJoystickBusDevice<D> as BusDevice>::NextDevice
[src]
self
) -> <MultiJoystickBusDevice<D> as BusDevice>::NextDevice
pub fn read_io(
&mut self,
port: u16,
timestamp: <MultiJoystickBusDevice<D> as BusDevice>::Timestamp
) -> Option<(u8, Option<NonZeroU16>)>
[src]
&mut self,
port: u16,
timestamp: <MultiJoystickBusDevice<D> as BusDevice>::Timestamp
) -> Option<(u8, Option<NonZeroU16>)>
impl<D, N> BusDevice for OptionalBusDevice<D, N> where
D: BusDevice,
N: BusDevice<Timestamp = <D as BusDevice>::Timestamp>,
<D as BusDevice>::Timestamp: Copy,
[src]
D: BusDevice,
N: BusDevice<Timestamp = <D as BusDevice>::Timestamp>,
<D as BusDevice>::Timestamp: Copy,
type Timestamp = <D as BusDevice>::Timestamp
type NextDevice = N
pub fn next_device_mut(
&mut self
) -> &mut <OptionalBusDevice<D, N> as BusDevice>::NextDevice
[src]
&mut self
) -> &mut <OptionalBusDevice<D, N> as BusDevice>::NextDevice
pub fn next_device_ref(
&self
) -> &<OptionalBusDevice<D, N> as BusDevice>::NextDevice
[src]
&self
) -> &<OptionalBusDevice<D, N> as BusDevice>::NextDevice
pub fn into_next_device(
self
) -> <OptionalBusDevice<D, N> as BusDevice>::NextDevice
[src]
self
) -> <OptionalBusDevice<D, N> as BusDevice>::NextDevice
pub fn reset(
&mut self,
timestamp: <OptionalBusDevice<D, N> as BusDevice>::Timestamp
)
[src]
&mut self,
timestamp: <OptionalBusDevice<D, N> as BusDevice>::Timestamp
)
pub fn update_timestamp(
&mut self,
timestamp: <OptionalBusDevice<D, N> as BusDevice>::Timestamp
)
[src]
&mut self,
timestamp: <OptionalBusDevice<D, N> as BusDevice>::Timestamp
)
pub fn next_frame(
&mut self,
timestamp: <OptionalBusDevice<D, N> as BusDevice>::Timestamp
)
[src]
&mut self,
timestamp: <OptionalBusDevice<D, N> as BusDevice>::Timestamp
)
pub fn read_io(
&mut self,
port: u16,
timestamp: <OptionalBusDevice<D, N> as BusDevice>::Timestamp
) -> Option<(u8, Option<NonZeroU16>)>
[src]
&mut self,
port: u16,
timestamp: <OptionalBusDevice<D, N> as BusDevice>::Timestamp
) -> Option<(u8, Option<NonZeroU16>)>
pub fn write_io(
&mut self,
port: u16,
data: u8,
timestamp: <OptionalBusDevice<D, N> as BusDevice>::Timestamp
) -> Option<u16>
[src]
&mut self,
port: u16,
data: u8,
timestamp: <OptionalBusDevice<D, N> as BusDevice>::Timestamp
) -> Option<u16>
impl<P, A, B, D> BusDevice for Ay3_891xBusDevice<P, A, B, D> where
B: AyIoPort<Timestamp = <D as BusDevice>::Timestamp> + Debug,
D: BusDevice,
A: AyIoPort<Timestamp = <D as BusDevice>::Timestamp> + Debug,
P: AyPortDecode,
<D as BusDevice>::Timestamp: Debug,
<D as BusDevice>::Timestamp: Copy,
[src]
B: AyIoPort<Timestamp = <D as BusDevice>::Timestamp> + Debug,
D: BusDevice,
A: AyIoPort<Timestamp = <D as BusDevice>::Timestamp> + Debug,
P: AyPortDecode,
<D as BusDevice>::Timestamp: Debug,
<D as BusDevice>::Timestamp: Copy,
type Timestamp = <D as BusDevice>::Timestamp
type NextDevice = D
pub fn next_device_mut(
&mut self
) -> &mut <Ay3_891xBusDevice<P, A, B, D> as BusDevice>::NextDevice
[src]
&mut self
) -> &mut <Ay3_891xBusDevice<P, A, B, D> as BusDevice>::NextDevice
pub fn next_device_ref(
&self
) -> &<Ay3_891xBusDevice<P, A, B, D> as BusDevice>::NextDevice
[src]
&self
) -> &<Ay3_891xBusDevice<P, A, B, D> as BusDevice>::NextDevice
pub fn into_next_device(
self
) -> <Ay3_891xBusDevice<P, A, B, D> as BusDevice>::NextDevice
[src]
self
) -> <Ay3_891xBusDevice<P, A, B, D> as BusDevice>::NextDevice
pub fn reset(
&mut self,
timestamp: <Ay3_891xBusDevice<P, A, B, D> as BusDevice>::Timestamp
)
[src]
&mut self,
timestamp: <Ay3_891xBusDevice<P, A, B, D> as BusDevice>::Timestamp
)
pub fn read_io(
&mut self,
port: u16,
timestamp: <Ay3_891xBusDevice<P, A, B, D> as BusDevice>::Timestamp
) -> Option<(u8, Option<NonZeroU16>)>
[src]
&mut self,
port: u16,
timestamp: <Ay3_891xBusDevice<P, A, B, D> as BusDevice>::Timestamp
) -> Option<(u8, Option<NonZeroU16>)>
pub fn write_io(
&mut self,
port: u16,
data: u8,
timestamp: <Ay3_891xBusDevice<P, A, B, D> as BusDevice>::Timestamp
) -> Option<u16>
[src]
&mut self,
port: u16,
data: u8,
timestamp: <Ay3_891xBusDevice<P, A, B, D> as BusDevice>::Timestamp
) -> Option<u16>
pub fn next_frame(
&mut self,
timestamp: <Ay3_891xBusDevice<P, A, B, D> as BusDevice>::Timestamp
)
[src]
&mut self,
timestamp: <Ay3_891xBusDevice<P, A, B, D> as BusDevice>::Timestamp
)
impl<P, D> BusDevice for Plus3CentronicsBusDevice<P, D> where
D: BusDevice,
P: ParallelPortDevice<Timestamp = <D as BusDevice>::Timestamp> + Debug,
<D as BusDevice>::Timestamp: Copy,
[src]
D: BusDevice,
P: ParallelPortDevice<Timestamp = <D as BusDevice>::Timestamp> + Debug,
<D as BusDevice>::Timestamp: Copy,
type Timestamp = <D as BusDevice>::Timestamp
type NextDevice = D
pub fn next_device_mut(
&mut self
) -> &mut <Plus3CentronicsBusDevice<P, D> as BusDevice>::NextDevice
[src]
&mut self
) -> &mut <Plus3CentronicsBusDevice<P, D> as BusDevice>::NextDevice
pub fn next_device_ref(
&self
) -> &<Plus3CentronicsBusDevice<P, D> as BusDevice>::NextDevice
[src]
&self
) -> &<Plus3CentronicsBusDevice<P, D> as BusDevice>::NextDevice
pub fn into_next_device(
self
) -> <Plus3CentronicsBusDevice<P, D> as BusDevice>::NextDevice
[src]
self
) -> <Plus3CentronicsBusDevice<P, D> as BusDevice>::NextDevice
pub fn reset(
&mut self,
timestamp: <Plus3CentronicsBusDevice<P, D> as BusDevice>::Timestamp
)
[src]
&mut self,
timestamp: <Plus3CentronicsBusDevice<P, D> as BusDevice>::Timestamp
)
pub fn next_frame(
&mut self,
eof_timestamp: <Plus3CentronicsBusDevice<P, D> as BusDevice>::Timestamp
)
[src]
&mut self,
eof_timestamp: <Plus3CentronicsBusDevice<P, D> as BusDevice>::Timestamp
)
pub fn update_timestamp(
&mut self,
timestamp: <Plus3CentronicsBusDevice<P, D> as BusDevice>::Timestamp
)
[src]
&mut self,
timestamp: <Plus3CentronicsBusDevice<P, D> as BusDevice>::Timestamp
)
pub fn read_io(
&mut self,
port: u16,
timestamp: <Plus3CentronicsBusDevice<P, D> as BusDevice>::Timestamp
) -> Option<(u8, Option<NonZeroU16>)>
[src]
&mut self,
port: u16,
timestamp: <Plus3CentronicsBusDevice<P, D> as BusDevice>::Timestamp
) -> Option<(u8, Option<NonZeroU16>)>
pub fn write_io(
&mut self,
port: u16,
data: u8,
timestamp: <Plus3CentronicsBusDevice<P, D> as BusDevice>::Timestamp
) -> Option<u16>
[src]
&mut self,
port: u16,
data: u8,
timestamp: <Plus3CentronicsBusDevice<P, D> as BusDevice>::Timestamp
) -> Option<u16>
impl<P, J, D> BusDevice for JoystickBusDevice<P, J, D> where
D: BusDevice,
P: PortAddress,
J: JoystickDevice,
[src]
D: BusDevice,
P: PortAddress,
J: JoystickDevice,
type Timestamp = <D as BusDevice>::Timestamp
type NextDevice = D
pub fn next_device_mut(
&mut self
) -> &mut <JoystickBusDevice<P, J, D> as BusDevice>::NextDevice
[src]
&mut self
) -> &mut <JoystickBusDevice<P, J, D> as BusDevice>::NextDevice
pub fn next_device_ref(
&self
) -> &<JoystickBusDevice<P, J, D> as BusDevice>::NextDevice
[src]
&self
) -> &<JoystickBusDevice<P, J, D> as BusDevice>::NextDevice
pub fn into_next_device(
self
) -> <JoystickBusDevice<P, J, D> as BusDevice>::NextDevice
[src]
self
) -> <JoystickBusDevice<P, J, D> as BusDevice>::NextDevice
pub fn read_io(
&mut self,
port: u16,
timestamp: <JoystickBusDevice<P, J, D> as BusDevice>::Timestamp
) -> Option<(u8, Option<NonZeroU16>)>
[src]
&mut self,
port: u16,
timestamp: <JoystickBusDevice<P, J, D> as BusDevice>::Timestamp
) -> Option<(u8, Option<NonZeroU16>)>
pub fn write_io(
&mut self,
port: u16,
data: u8,
timestamp: <JoystickBusDevice<P, J, D> as BusDevice>::Timestamp
) -> Option<u16>
[src]
&mut self,
port: u16,
data: u8,
timestamp: <JoystickBusDevice<P, J, D> as BusDevice>::Timestamp
) -> Option<u16>
impl<P, M, D> BusDevice for MouseBusDevice<P, M, D> where
M: MouseDevice,
D: BusDevice,
P: PortAddress,
[src]
M: MouseDevice,
D: BusDevice,
P: PortAddress,
type Timestamp = <D as BusDevice>::Timestamp
type NextDevice = D
pub fn next_device_mut(
&mut self
) -> &mut <MouseBusDevice<P, M, D> as BusDevice>::NextDevice
[src]
&mut self
) -> &mut <MouseBusDevice<P, M, D> as BusDevice>::NextDevice
pub fn next_device_ref(
&self
) -> &<MouseBusDevice<P, M, D> as BusDevice>::NextDevice
[src]
&self
) -> &<MouseBusDevice<P, M, D> as BusDevice>::NextDevice
pub fn into_next_device(
self
) -> <MouseBusDevice<P, M, D> as BusDevice>::NextDevice
[src]
self
) -> <MouseBusDevice<P, M, D> as BusDevice>::NextDevice
pub fn read_io(
&mut self,
port: u16,
timestamp: <MouseBusDevice<P, M, D> as BusDevice>::Timestamp
) -> Option<(u8, Option<NonZeroU16>)>
[src]
&mut self,
port: u16,
timestamp: <MouseBusDevice<P, M, D> as BusDevice>::Timestamp
) -> Option<(u8, Option<NonZeroU16>)>
pub fn write_io(
&mut self,
port: u16,
data: u8,
timestamp: <MouseBusDevice<P, M, D> as BusDevice>::Timestamp
) -> Option<u16>
[src]
&mut self,
port: u16,
data: u8,
timestamp: <MouseBusDevice<P, M, D> as BusDevice>::Timestamp
) -> Option<u16>
impl<P, S, D> BusDevice for ZxPrinterBusDevice<P, S, D> where
D: BusDevice,
P: PortAddress,
S: Spooler,
<D as BusDevice>::Timestamp: TimestampOps,
[src]
D: BusDevice,
P: PortAddress,
S: Spooler,
<D as BusDevice>::Timestamp: TimestampOps,
type Timestamp = <D as BusDevice>::Timestamp
type NextDevice = D
pub fn next_device_mut(
&mut self
) -> &mut <ZxPrinterBusDevice<P, S, D> as BusDevice>::NextDevice
[src]
&mut self
) -> &mut <ZxPrinterBusDevice<P, S, D> as BusDevice>::NextDevice
pub fn next_device_ref(
&self
) -> &<ZxPrinterBusDevice<P, S, D> as BusDevice>::NextDevice
[src]
&self
) -> &<ZxPrinterBusDevice<P, S, D> as BusDevice>::NextDevice
pub fn into_next_device(
self
) -> <ZxPrinterBusDevice<P, S, D> as BusDevice>::NextDevice
[src]
self
) -> <ZxPrinterBusDevice<P, S, D> as BusDevice>::NextDevice
pub fn reset(
&mut self,
timestamp: <ZxPrinterBusDevice<P, S, D> as BusDevice>::Timestamp
)
[src]
&mut self,
timestamp: <ZxPrinterBusDevice<P, S, D> as BusDevice>::Timestamp
)
pub fn next_frame(
&mut self,
eof_timestamp: <ZxPrinterBusDevice<P, S, D> as BusDevice>::Timestamp
)
[src]
&mut self,
eof_timestamp: <ZxPrinterBusDevice<P, S, D> as BusDevice>::Timestamp
)
pub fn read_io(
&mut self,
port: u16,
timestamp: <ZxPrinterBusDevice<P, S, D> as BusDevice>::Timestamp
) -> Option<(u8, Option<NonZeroU16>)>
[src]
&mut self,
port: u16,
timestamp: <ZxPrinterBusDevice<P, S, D> as BusDevice>::Timestamp
) -> Option<(u8, Option<NonZeroU16>)>
pub fn write_io(
&mut self,
port: u16,
data: u8,
timestamp: <ZxPrinterBusDevice<P, S, D> as BusDevice>::Timestamp
) -> Option<u16>
[src]
&mut self,
port: u16,
data: u8,
timestamp: <ZxPrinterBusDevice<P, S, D> as BusDevice>::Timestamp
) -> Option<u16>
impl<R, W, N, D> BusDevice for ZxInterface1BusDevice<R, W, N, D> where
D: BusDevice,
R: Read + Debug,
N: ZxNetSocket + Debug,
W: Write + Debug,
<D as BusDevice>::Timestamp: TimestampOps,
[src]
D: BusDevice,
R: Read + Debug,
N: ZxNetSocket + Debug,
W: Write + Debug,
<D as BusDevice>::Timestamp: TimestampOps,
type Timestamp = <D as BusDevice>::Timestamp
type NextDevice = D
pub fn next_device_mut(
&mut self
) -> &mut <ZxInterface1BusDevice<R, W, N, D> as BusDevice>::NextDevice
[src]
&mut self
) -> &mut <ZxInterface1BusDevice<R, W, N, D> as BusDevice>::NextDevice
pub fn next_device_ref(
&self
) -> &<ZxInterface1BusDevice<R, W, N, D> as BusDevice>::NextDevice
[src]
&self
) -> &<ZxInterface1BusDevice<R, W, N, D> as BusDevice>::NextDevice
pub fn into_next_device(
self
) -> <ZxInterface1BusDevice<R, W, N, D> as BusDevice>::NextDevice
[src]
self
) -> <ZxInterface1BusDevice<R, W, N, D> as BusDevice>::NextDevice
pub fn reset(
&mut self,
timestamp: <ZxInterface1BusDevice<R, W, N, D> as BusDevice>::Timestamp
)
[src]
&mut self,
timestamp: <ZxInterface1BusDevice<R, W, N, D> as BusDevice>::Timestamp
)
pub fn update_timestamp(
&mut self,
timestamp: <ZxInterface1BusDevice<R, W, N, D> as BusDevice>::Timestamp
)
[src]
&mut self,
timestamp: <ZxInterface1BusDevice<R, W, N, D> as BusDevice>::Timestamp
)
pub fn next_frame(
&mut self,
eof_timestamp: <ZxInterface1BusDevice<R, W, N, D> as BusDevice>::Timestamp
)
[src]
&mut self,
eof_timestamp: <ZxInterface1BusDevice<R, W, N, D> as BusDevice>::Timestamp
)
pub fn read_io(
&mut self,
port: u16,
timestamp: <ZxInterface1BusDevice<R, W, N, D> as BusDevice>::Timestamp
) -> Option<(u8, Option<NonZeroU16>)>
[src]
&mut self,
port: u16,
timestamp: <ZxInterface1BusDevice<R, W, N, D> as BusDevice>::Timestamp
) -> Option<(u8, Option<NonZeroU16>)>
pub fn write_io(
&mut self,
port: u16,
data: u8,
timestamp: <ZxInterface1BusDevice<R, W, N, D> as BusDevice>::Timestamp
) -> Option<u16>
[src]
&mut self,
port: u16,
data: u8,
timestamp: <ZxInterface1BusDevice<R, W, N, D> as BusDevice>::Timestamp
) -> Option<u16>
impl<S, D> BusDevice for DynamicSerdeBus<S, D> where
D: BusDevice,
<D as BusDevice>::Timestamp: Copy,
<D as BusDevice>::Timestamp: Debug,
[src]
D: BusDevice,
<D as BusDevice>::Timestamp: Copy,
<D as BusDevice>::Timestamp: Debug,
type Timestamp = <D as BusDevice>::Timestamp
type NextDevice = D
pub fn next_device_mut(
&mut self
) -> &mut <DynamicSerdeBus<S, D> as BusDevice>::NextDevice
[src]
&mut self
) -> &mut <DynamicSerdeBus<S, D> as BusDevice>::NextDevice
pub fn next_device_ref(
&self
) -> &<DynamicSerdeBus<S, D> as BusDevice>::NextDevice
[src]
&self
) -> &<DynamicSerdeBus<S, D> as BusDevice>::NextDevice
pub fn into_next_device(
self
) -> <DynamicSerdeBus<S, D> as BusDevice>::NextDevice
[src]
self
) -> <DynamicSerdeBus<S, D> as BusDevice>::NextDevice
pub fn reset(
&mut self,
timestamp: <DynamicSerdeBus<S, D> as BusDevice>::Timestamp
)
[src]
&mut self,
timestamp: <DynamicSerdeBus<S, D> as BusDevice>::Timestamp
)
pub fn update_timestamp(
&mut self,
timestamp: <DynamicSerdeBus<S, D> as BusDevice>::Timestamp
)
[src]
&mut self,
timestamp: <DynamicSerdeBus<S, D> as BusDevice>::Timestamp
)
pub fn next_frame(
&mut self,
timestamp: <DynamicSerdeBus<S, D> as BusDevice>::Timestamp
)
[src]
&mut self,
timestamp: <DynamicSerdeBus<S, D> as BusDevice>::Timestamp
)
pub fn read_io(
&mut self,
port: u16,
timestamp: <DynamicSerdeBus<S, D> as BusDevice>::Timestamp
) -> Option<(u8, Option<NonZeroU16>)>
[src]
&mut self,
port: u16,
timestamp: <DynamicSerdeBus<S, D> as BusDevice>::Timestamp
) -> Option<(u8, Option<NonZeroU16>)>
pub fn write_io(
&mut self,
port: u16,
data: u8,
timestamp: <DynamicSerdeBus<S, D> as BusDevice>::Timestamp
) -> Option<u16>
[src]
&mut self,
port: u16,
data: u8,
timestamp: <DynamicSerdeBus<S, D> as BusDevice>::Timestamp
) -> Option<u16>
impl<T> BusDevice for NullDevice<T>
[src]
type Timestamp = T
type NextDevice = NullDevice<T>
pub fn next_device_mut(
&mut self
) -> &mut <NullDevice<T> as BusDevice>::NextDevice
[src]
&mut self
) -> &mut <NullDevice<T> as BusDevice>::NextDevice
pub fn next_device_ref(&self) -> &<NullDevice<T> as BusDevice>::NextDevice
[src]
pub fn into_next_device(self) -> <NullDevice<T> as BusDevice>::NextDevice
[src]
pub fn reset(&mut self, _timestamp: <NullDevice<T> as BusDevice>::Timestamp)
[src]
pub fn update_timestamp(
&mut self,
_timestamp: <NullDevice<T> as BusDevice>::Timestamp
)
[src]
&mut self,
_timestamp: <NullDevice<T> as BusDevice>::Timestamp
)
pub fn next_frame(
&mut self,
_timestamp: <NullDevice<T> as BusDevice>::Timestamp
)
[src]
&mut self,
_timestamp: <NullDevice<T> as BusDevice>::Timestamp
)
pub fn read_io(
&mut self,
_port: u16,
_timestamp: <NullDevice<T> as BusDevice>::Timestamp
) -> Option<(u8, Option<NonZeroU16>)>
[src]
&mut self,
_port: u16,
_timestamp: <NullDevice<T> as BusDevice>::Timestamp
) -> Option<(u8, Option<NonZeroU16>)>
pub fn write_io(
&mut self,
_port: u16,
_data: u8,
_timestamp: <NullDevice<T> as BusDevice>::Timestamp
) -> Option<u16>
[src]
&mut self,
_port: u16,
_data: u8,
_timestamp: <NullDevice<T> as BusDevice>::Timestamp
) -> Option<u16>