Dario Nieuwenhuis
c6989dfbca
Remove nightly and unstable-traits features in preparation for 1.75.
2023-11-29 17:26:33 +01:00
Barnaby Walters
3efc3eee57
stm32/i2c: implement async i2c v1.
2023-11-24 23:55:46 +01:00
Dario Nieuwenhuis
bc65b8f7ec
stm32/i2c: add async, dual interrupt scaffolding.
2023-11-24 23:55:45 +01:00
Andres Vahter
4f8c79c911
stm32 i2c: allow EHA traits without time feature
2023-11-24 15:56:19 +02:00
Andres Vahter
0f2208c0af
stm32 i2c: remove mod dummy_time
2023-11-11 14:29:24 +02:00
Andres Vahter
6c42885d4a
stm32 i2c: remove pub _timeout api
2023-11-11 14:05:58 +02:00
Andres Vahter
3b33cc4691
i2c: expose async api without needing time
...
This exposes I2C async API without needing "time" feature. With "time" feature additional async API with timeouts is exposed.
2023-11-10 16:04:25 +02:00
Dario Nieuwenhuis
66e399b5c6
Merge pull request #2035 from pbert519/stm_reset_and_enable
...
STM32: combine RccPeripherals reset() and enable() to enable_and_reset()
2023-10-12 14:09:13 +00:00
pbert
ecdd7c0e2f
enable clock first
2023-10-12 11:04:44 +02:00
pbert
f65a96c541
STM32: combine RccPeripherals reset() and enable() to reset_and_enable()
2023-10-12 11:04:19 +02:00
Andres Oliva
063e6f96da
Remove outdated comment
2023-10-11 23:56:21 +02:00
Andres Oliva
e6c47c3718
cargo fmt
2023-10-11 23:47:24 +02:00
Andres Oliva
2f7c2750d1
Feature guarded more unused stuff
2023-10-11 23:45:47 +02:00
Andres Oliva
032b1f2d59
Fix some issues with unused stuff
2023-10-11 23:42:40 +02:00
Andres Oliva
f76d50e837
cfg! macro didn't work, had to duplicate functions with different guards
2023-10-11 23:39:24 +02:00
Andres Oliva
ee5ea7aa06
cargo fmt
2023-10-11 23:34:02 +02:00
Andres Oliva
251d004708
Try using cfg! macro
2023-10-11 23:32:40 +02:00
Andres Oliva
cd68f85501
Added guards to individual APIs
2023-10-11 23:25:13 +02:00
Andres Oliva
b6c0ddb7df
Move the feature gates to the i2c module instead of the pub use statement
2023-10-11 23:05:12 +02:00
Andres Oliva
ee93bbf1d4
Gate pub use _version::*
2023-10-11 22:45:54 +02:00
Andres Oliva
1cd3ae9bd5
Add comment about feature gate on I2C mod
2023-10-11 22:20:17 +02:00
Andres Oliva
bfcca79c1e
Add time feature back and gate i2c on time
2023-10-11 22:12:03 +02:00
Andres Oliva
cd12c9cbce
stm32: add timeout to I2C driver
2023-10-10 18:20:46 +02:00
James Munns
930b8f3495
Add some uncontroversial derives to Error types
2023-10-06 17:45:35 +02:00
xoviat
05218a52e6
stm32: update set_config
2023-10-01 09:39:10 -05:00
xoviat
274f63a879
stm32: fix refcounts for usart, spi, and i2c
2023-09-04 15:47:33 -05:00
Grant Miller
d49f40dd5c
embassy-stm32: Misc clippy fixes
2023-08-06 15:00:39 -05:00
Matt Ickstadt
036bc669cd
stm32: only enable async TimeoutI2c on V2 I2C peripheral
2023-07-31 14:17:50 -05:00
Matt Ickstadt
26cc0e634d
stm32: add async timeout functions to I2c and TimeoutI2c
2023-07-31 13:47:03 -05:00
Matt Ickstadt
1b0f4ee653
stm32: add outlives bounds to TimeoutI2c impl blocks
...
This should make usage and error messages more clear.
2023-07-31 13:35:06 -05:00
Matt Ickstadt
5a8704b4d8
TimeoutI2c: allow ref to live shorter than peripheral
2023-07-28 11:16:43 -05:00
Dario Nieuwenhuis
036e6ae30c
Rename embassy-hal-common to embassy-hal-internal, document it's for internal use only. ( #1700 )
2023-07-28 13:23:22 +02:00
shakencodes
29f3d5b68d
Ensure I2C master_stop() called after error
2023-07-10 16:40:33 -07:00
Dario Nieuwenhuis
558918651e
stm32: update stm32-metapac.
2023-06-19 03:22:12 +02:00
Dario Nieuwenhuis
921780e6bf
Make interrupt module more standard.
...
- Move typelevel interrupts to a special-purpose mod: `embassy_xx::interrupt::typelevel`.
- Reexport the PAC interrupt enum in `embassy_xx::interrupt`.
This has a few advantages:
- The `embassy_xx::interrupt` module is now more "standard".
- It works with `cortex-m` functions for manipulating interrupts, for example.
- It works with RTIC.
- the interrupt enum allows holding value that can be "any interrupt at runtime", this can't be done with typelevel irqs.
- When "const-generics on enums" is stable, we can remove the typelevel interrupts without disruptive changes to `embassy_xx::interrupt`.
2023-06-08 18:00:48 +02:00
Dario Nieuwenhuis
404aa29289
cortex-m: remove owned interrupts.
2023-06-01 03:25:19 +02:00
xoviat
316be179af
stm32: move to bind_interrupts
...
disable lora functionality for now
2023-05-24 17:29:56 -05:00
bors[bot]
41e90e22e2
Merge #1370
...
1370: stm32/i2c: fix races when using dma. r=Dirbaio a=xoviat
This change addresses two races:
1. It removes the `chunks_transferred` state variable that is modified inside the interrupt. Analysis of the code reveals that the only time the waker can be woken is when `chunks_transferred` is incremented. Therefore, waking is enough to signal the `poll_fn` that the `chunks_transferred` has incremented. Moving to `remaining_len` clarifies the code, since there is no need to track how many chunks are remaining.
2. It moves the start of the transfer until after the waker is registered, which could theoretically occur if the clock speed is very low, but probably never would even if this wasn't fixed.
There is another race that I noticed: between writes the waker may not yet be registered. In that case, the code would simply be stuck and the `poll_fn` would never be woken. There is no way to resolve this without broadening the scope of the analysis, and this will likely never occur.
Co-authored-by: xoviat <xoviat@users.noreply.github.com>
2023-04-19 21:36:04 +00:00
xoviat
64b80c2e4d
stm32/i2c: ignore wakes without interrupt
2023-04-19 16:16:44 -05:00
Dario Nieuwenhuis
173c65b543
stm32/dma: refactor.
2023-04-18 16:37:35 +02:00
xoviat
f5216624bb
stm32/i2c: fix races when using dma.
...
fixes #1341 .
2023-04-17 15:24:24 -05:00
Glenn Dirkx
6760258ec3
fix I2C controller problems after NACK
2023-04-10 16:20:47 +02:00
Dario Nieuwenhuis
be37eee13d
Update embedded-hal crates.
2023-04-06 22:41:50 +02:00
huntc
6ab4ecaf83
Stop sampling when exiting the Saadc methods
...
Prior to this commit, the onDrop function was being dropped immediately and not on exiting the Saadc sampling methods.
2023-01-18 14:51:46 +11:00
Dario Nieuwenhuis
10c9cc31b1
Remove unnecessary use of atomic-polyfill.
...
Only use it when CAS is actually needed.
2022-12-23 20:46:49 +01:00
Dario Nieuwenhuis
1e2fb0459d
Switch to async-fn-in-trait
2022-11-25 21:02:06 +01:00
chemicstry
52c03cf0a4
Add more docs
2022-10-24 22:48:40 +03:00
chemicstry
ac61e0ee9f
fmt
2022-10-24 22:39:13 +03:00
chemicstry
33f75419e5
Unify i2cv1 definition with i2cv2
2022-10-24 22:34:10 +03:00
chemicstry
6062978d58
Remove weird async timeouts
2022-10-24 22:22:20 +03:00