diff options
| -rw-r--r-- | embassy-stm32/build.rs | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/embassy-stm32/build.rs b/embassy-stm32/build.rs index 068dadf4b..11b3b4479 100644 --- a/embassy-stm32/build.rs +++ b/embassy-stm32/build.rs | |||
| @@ -1557,11 +1557,21 @@ fn main() { | |||
| 1557 | let register = format_ident!("{}", remap_info.register.to_lowercase()); | 1557 | let register = format_ident!("{}", remap_info.register.to_lowercase()); |
| 1558 | let setter = format_ident!("set_{}", remap_info.field.to_lowercase()); | 1558 | let setter = format_ident!("set_{}", remap_info.field.to_lowercase()); |
| 1559 | 1559 | ||
| 1560 | let value = if remap_info.value.contains("true") || remap_info.value.contains("false") { | 1560 | let field_metadata = METADATA |
| 1561 | let value = format_ident!("{}", remap_info.value); | 1561 | .peripherals |
| 1562 | quote!(#value) | 1562 | .iter() |
| 1563 | .filter(|p| p.name.eq_ignore_ascii_case(remap_info.peripheral)) | ||
| 1564 | .flat_map(|p| p.registers.as_ref().unwrap().ir.fieldsets.iter()) | ||
| 1565 | .filter(|f| f.name.eq_ignore_ascii_case(remap_info.register)) | ||
| 1566 | .flat_map(|f| f.fields.iter()) | ||
| 1567 | .find(|f| f.name.eq_ignore_ascii_case(remap_info.field)) | ||
| 1568 | .unwrap(); | ||
| 1569 | |||
| 1570 | let value = if field_metadata.bit_size == 1 { | ||
| 1571 | let bool_value = format_ident!("{}", remap_info.value > 0); | ||
| 1572 | quote!(#bool_value) | ||
| 1563 | } else { | 1573 | } else { |
| 1564 | let value = remap_info.value.parse::<u8>().unwrap(); | 1574 | let value = remap_info.value; |
| 1565 | quote!(#value.into()) | 1575 | quote!(#value.into()) |
| 1566 | }; | 1576 | }; |
| 1567 | 1577 | ||
