Removed the active/inactive concept, and changed bus to use blocking traits to allow users to use shared-bus
This commit is contained in:
parent
55097322a0
commit
ca8268ab31
13 changed files with 127 additions and 239 deletions
|
|
@ -3,18 +3,14 @@ use crate::uninitialized_device::UninitializedDevice;
|
|||
use bit_field::BitArray;
|
||||
use bus::{ActiveBus, ActiveFourWire, ActiveThreeWire, FourWire, ThreeWire};
|
||||
use embedded_hal::digital::v2::OutputPin;
|
||||
use embedded_hal::spi::FullDuplex;
|
||||
|
||||
use interface::Interface;
|
||||
use network::Network;
|
||||
use crate::bus::{ActiveBus, ActiveFourWire, ActiveThreeWire, FourWire, ThreeWire};
|
||||
use crate::bus::{Bus, FourWire, ThreeWire};
|
||||
use crate::host::Host;
|
||||
use crate::inactive_device::InactiveDevice;
|
||||
use crate::register;
|
||||
use crate::socket::Socket;
|
||||
use crate::uninitialized_device::UninitializedDevice;
|
||||
|
||||
pub struct Device<SpiBus: ActiveBus, HostImpl: Host> {
|
||||
pub struct Device<SpiBus: Bus, HostImpl: Host> {
|
||||
pub bus: SpiBus,
|
||||
host: HostImpl,
|
||||
sockets: [u8; 1],
|
||||
|
|
@ -31,7 +27,7 @@ impl<E> From<E> for ResetError<E> {
|
|||
}
|
||||
}
|
||||
|
||||
impl<SpiBus: ActiveBus, HostImpl: Host> Device<SpiBus, HostImpl> {
|
||||
impl<SpiBus: Bus, HostImpl: Host> Device<SpiBus, HostImpl> {
|
||||
pub fn new(bus: SpiBus, host: HostImpl) -> Self {
|
||||
Device {
|
||||
bus,
|
||||
|
|
@ -58,6 +54,7 @@ impl<SpiBus: ActiveBus, HostImpl: Host> Device<SpiBus, HostImpl> {
|
|||
}
|
||||
|
||||
pub fn take_socket(&mut self) -> Option<Socket> {
|
||||
// TODO maybe return Future that resolves when release_socket invoked
|
||||
for index in 0..8 {
|
||||
if self.sockets.get_bit(index) {
|
||||
self.sockets.set_bit(index, false);
|
||||
|
|
@ -82,19 +79,3 @@ impl<SpiBus: ActiveBus, HostImpl: Host> Device<SpiBus, HostImpl> {
|
|||
(self.bus, self.host)
|
||||
}
|
||||
}
|
||||
|
||||
impl<Spi: FullDuplex<u8>, ChipSelect: OutputPin, HostImpl: Host>
|
||||
Device<ActiveFourWire<Spi, ChipSelect>, HostImpl>
|
||||
{
|
||||
pub fn deactivate(self) -> (InactiveDevice<FourWire<ChipSelect>, HostImpl>, Spi) {
|
||||
let (bus, spi) = self.bus.deactivate();
|
||||
(InactiveDevice::new(bus, self.host), spi)
|
||||
}
|
||||
}
|
||||
|
||||
impl<Spi: FullDuplex<u8>, HostImpl: Host> Device<ActiveThreeWire<Spi>, HostImpl> {
|
||||
pub fn deactivate(self) -> (InactiveDevice<ThreeWire, HostImpl>, Spi) {
|
||||
let (bus, spi) = self.bus.deactivate();
|
||||
(InactiveDevice::new(bus, self.host), spi)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue