aboutsummaryrefslogtreecommitdiff
path: root/rtic-macros/src/codegen.rs
diff options
context:
space:
mode:
Diffstat (limited to 'rtic-macros/src/codegen.rs')
-rw-r--r--rtic-macros/src/codegen.rs77
1 files changed, 77 insertions, 0 deletions
diff --git a/rtic-macros/src/codegen.rs b/rtic-macros/src/codegen.rs
new file mode 100644
index 00000000..48ee5e33
--- /dev/null
+++ b/rtic-macros/src/codegen.rs
@@ -0,0 +1,77 @@
+use proc_macro2::TokenStream as TokenStream2;
+use quote::quote;
+
+use crate::analyze::Analysis;
+use crate::syntax::ast::App;
+
+pub mod bindings;
+
+mod assertions;
+mod async_dispatchers;
+mod hardware_tasks;
+mod idle;
+mod init;
+mod local_resources;
+mod local_resources_struct;
+mod module;
+mod post_init;
+mod pre_init;
+mod shared_resources;
+mod shared_resources_struct;
+mod software_tasks;
+mod util;
+
+mod main;
+
+// TODO: organize codegen to actual parts of code
+// so `main::codegen` generates ALL the code for `fn main`,
+// `software_tasks::codegen` generates ALL the code for software tasks etc...
+
+#[allow(clippy::too_many_lines)]
+pub fn app(app: &App, analysis: &Analysis) -> TokenStream2 {
+ // Generate the `main` function
+ let main = main::codegen(app, analysis);
+ let init_codegen = init::codegen(app, analysis);
+ let idle_codegen = idle::codegen(app, analysis);
+ let shared_resources_codegen = shared_resources::codegen(app, analysis);
+ let local_resources_codegen = local_resources::codegen(app, analysis);
+ let hardware_tasks_codegen = hardware_tasks::codegen(app, analysis);
+ let software_tasks_codegen = software_tasks::codegen(app, analysis);
+ let async_dispatchers_codegen = async_dispatchers::codegen(app, analysis);
+
+ let user_imports = &app.user_imports;
+ let user_code = &app.user_code;
+ let name = &app.name;
+ let device = &app.args.device;
+
+ let rt_err = util::rt_err_ident();
+
+ quote!(
+ /// The RTIC application module
+ pub mod #name {
+ /// Always include the device crate which contains the vector table
+ use #device as #rt_err;
+
+ #(#user_imports)*
+
+ #(#user_code)*
+ /// User code end
+
+ #init_codegen
+
+ #idle_codegen
+
+ #hardware_tasks_codegen
+
+ #software_tasks_codegen
+
+ #shared_resources_codegen
+
+ #local_resources_codegen
+
+ #async_dispatchers_codegen
+
+ #main
+ }
+ )
+}
dir Unnamed repository; edit this file 'description' to name the repository.
aboutsummaryrefslogtreecommitdiff
path: root/test/bundler/acorn.sh (unfollow)
AgeCommit message (Expand)AuthorFilesLines
2023-05-24Fix string checkGravatar Jarred Sumner 1-1/+2
2023-05-24Fixes #3031 (#3041)Gravatar Jarred Sumner 3-2/+105
2023-05-24Implement `require.cache` (#3045)Gravatar Jarred Sumner 9-1/+187
2023-05-24extend test time-outs (#3048)Gravatar Alex Lam S.L 2-7/+7
2023-05-23Implement `bun test --timeout` (#3040)Gravatar Ashcon Partovi 4-6/+80
2023-05-23Fix incorrect URL in loaders.md (#3025)Gravatar Kruithne 1-1/+1
2023-05-23workaroundGravatar Jarred Sumner 1-1/+1
2023-05-23too noisyGravatar Jarred Sumner 1-1/+1
2023-05-23Add pkg-config as a build requirement (#3027)Gravatar Bill Mill 1-0/+1
2023-05-23fix bun init and update node vm docs (#3014)Gravatar dave caruso 3-6/+5
2023-05-23check if key from `exports` can be printed as an identifier (#3032)Gravatar Dylan Conway 1-2/+8
2023-05-23Support test.todo() in ecosystem runnerGravatar Ashcon Partovi 6-292/+430
2023-05-23[bun:test] Don't schedule the GC aggressively on every fileGravatar Jarred Sumner 1-1/+10
2023-05-23Skip failing testsGravatar Jarred Sumner 1-3/+3
2023-05-23[bun:test] Fix async/done-based test.todo (#3015)Gravatar Jarred Sumner 3-10/+51
2023-05-23Support setting a timezone with `process.env.TZ` and `Bun.env.TZ` (#3018)Gravatar Jarred Sumner 12-1/+225
2023-05-22fix extra/ArbitraryModuleNamespaceIdentifiers2 (#3016)Gravatar dave caruso 1-2/+0
2023-05-22Update .prettierignoreGravatar Jarred Sumner 1-0/+1
2023-05-22add some connect test and type changes (#3013)Gravatar dave caruso 5-3/+120
2023-05-22fix marking requestCert (#3012)Gravatar Ciro Spaciari 1-3/+12
2023-05-22[node:http] Fix return type for `getHeader()` (#3007)Gravatar Jarred Sumner 2-7/+15
2023-05-22Write out builtins with TypeScript + Minify them (#2999)Gravatar dave caruso 127-25009/+16346
2023-05-22443 should default to https when no protocol is informed (#3008)Gravatar Ciro Spaciari 1-1/+10
2023-05-22[node:buffer] Add missing `inspect` functionbun-v0.6.3Gravatar Jarred Sumner 5-0/+35
2023-05-22[node:vm] Accept undefined in `createContext`Gravatar Jarred Sumner 1-0/+5
2023-05-22fixup (#3001)Gravatar Ciro Spaciari 1-8/+7
2023-05-22Skip testGravatar Jarred Sumner 1-1/+2
2023-05-22Skip more testsGravatar Jarred Sumner 1-1/+2
2023-05-22[breaking] ServerWebSocket.publish no longer publishes to self by defaultGravatar Jarred Sumner 3-8/+25
2023-05-22[ServerWebSocket] `binaryType` now defaults to `"nodebuffer"`Gravatar Jarred Sumner 3-14/+15
2023-05-22only merge if kind is `var`Gravatar Dylan Conway 1-1/+4
2023-05-22document arch linux workaround, see #2664 (#2997)Gravatar dave caruso 1-0/+10
2023-05-22Fix memory leak in `fetch(url)` (#2989)Gravatar Jarred Sumner 4-11/+136
2023-05-22Update WebKitGravatar Jarred Sumner 1-0/+0
2023-05-21Skip hanging testsGravatar Jarred Sumner 7-6/+13
2023-05-21Fix testGravatar Jarred Sumner 1-10/+10
2023-05-21[internal] Even more loggingGravatar Jarred Sumner 1-3/+5
2023-05-21[internal] Use `HiveArray` instead of bespoke memory allocator in Bun.serve()Gravatar Jarred Sumner 2-89/+14
2023-05-21Fix assertion failureGravatar Jarred Sumner 1-1/+1
2023-05-21oopsieGravatar Jarred Sumner 1-1/+1
2023-05-21WS send with callback (#2986)Gravatar Ciro Spaciari 3-44/+39
2023-05-21[Bun.serve] Support `"nodebuffer"` binaryType in `ServerWebSocket`Gravatar Jarred Sumner 4-77/+122
2023-05-21[WebSocket] Implement `"nodebuffer"` binaryTypeGravatar Jarred Sumner 5-5/+125
2023-05-21[ws client] Make it a little more type safeGravatar Jarred Sumner 1-33/+51
2023-05-21[internal] Add more debug logs for uwsGravatar Jarred Sumner 2-3/+8
2023-05-21[internal] Add a 0 byte to EOF read files as a precautionGravatar Jarred Sumner 1-1/+5
2023-05-21[internal] Make AbortSIgnal usage slightly saferGravatar Jarred Sumner 3-6/+11
2023-05-21Add extra flag just to be sureGravatar Jarred Sumner 1-1/+1
2023-05-21[internal] Fix potential missing callbacks in AbortSignalGravatar Jarred Sumner 2-208/+2