diff --git a/examples/late-resources.rs b/examples/late-resources.rs index b5dba1467e29003afdadfd2c898915bd3ba306a9..b60c7740f628962e7f0472ffc4422ddb070e9308 100644 --- a/examples/late-resources.rs +++ b/examples/late-resources.rs @@ -32,6 +32,11 @@ app! { static PORT: u16; }, + idle: { + // Test that late resources can be used in idle + resources: [IP_ADDRESS], + } + tasks: { SYS_TICK: { priority: 1, diff --git a/macros/src/trans.rs b/macros/src/trans.rs index 45841e730078ea954423c5582fb9b83be4420d32..96ff770b64f2982de7ae088fbf5ad0f646a68d21 100644 --- a/macros/src/trans.rs +++ b/macros/src/trans.rs @@ -74,8 +74,14 @@ fn idle( }); let _name = Ident::new(format!("_{}", name.as_ref())); - rexprs.push(quote! { - #name: &mut #super_::#_name, + rexprs.push(if resource.expr.is_some() { + quote! { + #name: &mut #super_::#_name, + } + } else { + quote! { + #name: #super_::#_name.as_mut(), + } }); } else { rfields.push(quote! {