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 
						 
				 
			
				
					
						
							
							
								chemicstry 
							
						 
					 
					
						
						
						
						
							
						
						
							ca8afacfd0 
							
						 
					 
					
						
						
							
							Implement TimeoutI2c for i2cv2  
						
						
						
						
					 
					
						2022-10-24 22:11:15 +03:00