aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatous Hybl <[email protected]>2021-10-22 11:35:46 +0200
committerMatous Hybl <[email protected]>2021-10-22 11:36:47 +0200
commit4fbac401206500327eed532bd9f46b8d58f4300a (patch)
treefb8873ad51a64dd39a629de49201fe994002cb2a
parentb22c472af3a7e88c2855e6de216dcfa15ff155d1 (diff)
Workaround duplicity of DMA channel declaration when the target chip specifies more than one request, by processing only the first declared request for the channel.
-rw-r--r--stm32-metapac-gen/src/lib.rs24
1 files changed, 16 insertions, 8 deletions
diff --git a/stm32-metapac-gen/src/lib.rs b/stm32-metapac-gen/src/lib.rs
index 5c0f1d00c..79dd734ce 100644
--- a/stm32-metapac-gen/src/lib.rs
+++ b/stm32-metapac-gen/src/lib.rs
@@ -379,19 +379,27 @@ pub fn gen(options: Options) {
379 row.push(bi.module.clone()); 379 row.push(bi.module.clone());
380 row.push(bi.block.clone()); 380 row.push(bi.block.clone());
381 row.push(request.clone()); 381 row.push(request.clone());
382 if let Some(channel) = &channel.channel { 382 row.push(if let Some(channel) = &channel.channel {
383 row.push(format!("{{channel: {}}}", channel)); 383 format!("{{channel: {}}}", channel)
384 } else if let Some(dmamux) = &channel.dmamux { 384 } else if let Some(dmamux) = &channel.dmamux {
385 row.push(format!("{{dmamux: {}}}", dmamux)); 385 format!("{{dmamux: {}}}", dmamux)
386 } else { 386 } else {
387 unreachable!(); 387 unreachable!();
388 } 388 });
389 if let Some(request) = channel.request { 389
390 row.push(request.to_string()); 390 row.push(if let Some(request) = channel.request {
391 request.to_string()
391 } else { 392 } else {
392 row.push("()".to_string()); 393 "()".to_string()
394 });
395
396 if peripheral_dma_channels_table
397 .iter()
398 .find(|a| a[..a.len() - 1] == row[..row.len() - 1])
399 .is_none()
400 {
401 peripheral_dma_channels_table.push(row);
393 } 402 }
394 peripheral_dma_channels_table.push(row);
395 } 403 }
396 } 404 }
397 405