744e2cbb8a
`Peripheral` assumed that interrupts can't be preempted, when they can be preempted by higher priority interrupts. So I put the interrupt handler inside a critical section, and also added checks for whether the state had been dropped before the critical section was entered. I also added a `'static` bound to `PeripheralState`, since `Pin` only guarantees that the memory it directly references will not be invalidated. It doesn't guarantee that memory its pointee references also won't be invalidated. There were already some implementations of `PeripheralState` that weren't `'static`, though, so I added an unsafe `PeripheralStateUnchecked` trait and forwarded the `unsafe` to the constructors of the implementors.
22 lines
453 B
TOML
22 lines
453 B
TOML
[package]
|
|
name = "embassy-extras"
|
|
version = "0.1.0"
|
|
authors = ["Dario Nieuwenhuis <dirbaio@dirbaio.net>"]
|
|
edition = "2018"
|
|
|
|
[features]
|
|
defmt-trace = [ ]
|
|
defmt-debug = [ ]
|
|
defmt-info = [ ]
|
|
defmt-warn = [ ]
|
|
defmt-error = [ ]
|
|
|
|
[dependencies]
|
|
embassy = { version = "0.1.0", path = "../embassy" }
|
|
|
|
defmt = { version = "0.2.0", optional = true }
|
|
log = { version = "0.4.11", optional = true }
|
|
cortex-m = "0.7.1"
|
|
critical-section = "0.2.1"
|
|
usb-device = "0.2.7"
|