From d9f0d80f733abba5d1ca9e1f8b0b81582975d9a1 Mon Sep 17 00:00:00 2001 From: Fabian Wolter Date: Tue, 15 Jul 2025 09:45:05 +0200 Subject: [PATCH] Make remap value a number --- embassy-stm32/build.rs | 18 ++++++++++++++---- 1 file 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() { let register = format_ident!("{}", remap_info.register.to_lowercase()); let setter = format_ident!("set_{}", remap_info.field.to_lowercase()); - let value = if remap_info.value.contains("true") || remap_info.value.contains("false") { - let value = format_ident!("{}", remap_info.value); - quote!(#value) + let field_metadata = METADATA + .peripherals + .iter() + .filter(|p| p.name.eq_ignore_ascii_case(remap_info.peripheral)) + .flat_map(|p| p.registers.as_ref().unwrap().ir.fieldsets.iter()) + .filter(|f| f.name.eq_ignore_ascii_case(remap_info.register)) + .flat_map(|f| f.fields.iter()) + .find(|f| f.name.eq_ignore_ascii_case(remap_info.field)) + .unwrap(); + + let value = if field_metadata.bit_size == 1 { + let bool_value = format_ident!("{}", remap_info.value > 0); + quote!(#bool_value) } else { - let value = remap_info.value.parse::().unwrap(); + let value = remap_info.value; quote!(#value.into()) };