13
13
#define LED_BUILTIN 13
14
14
#endif
15
15
16
+ #define WASM_STACK_SLOTS 1024
17
+ #define NATIVE_STACK_SIZE 32768
18
+
16
19
/*
17
20
* WebAssembly app
18
21
*
19
22
* This is essentially a simple "Blink" sketch, compiled to WebAssembly
20
23
* The file was generated from ./wasm_apps/cpp
21
- * You can also find examples for Rust, TinyGO
24
+ * You can also find examples for Rust, AssemblyScript, TinyGo
22
25
*/
23
26
24
27
unsigned char app_wasm[] = {
@@ -122,7 +125,7 @@ m3ApiRawFunction(m3_dummy)
122
125
m3ApiSuccess ();
123
126
}
124
127
125
- M3Result m3_LinkArduino (IM3Runtime runtime)
128
+ M3Result LinkArduino (IM3Runtime runtime)
126
129
{
127
130
IM3Module module = runtime->modules ;
128
131
const char * arduino = " arduino" ;
@@ -150,31 +153,31 @@ void wasm_task(void*)
150
153
M3Result result = m3Err_none;
151
154
152
155
IM3Environment env = m3_NewEnvironment ();
153
- if (!env) FATAL (" m3_NewEnvironment " , " failed" );
156
+ if (!env) FATAL (" NewEnvironment " , " failed" );
154
157
155
- IM3Runtime runtime = m3_NewRuntime (env, 1024 , NULL );
156
- if (!runtime) FATAL (" m3_NewRuntime " , " failed" );
158
+ IM3Runtime runtime = m3_NewRuntime (env, WASM_STACK_SLOTS , NULL );
159
+ if (!runtime) FATAL (" NewRuntime " , " failed" );
157
160
158
161
IM3Module module ;
159
162
result = m3_ParseModule (env, &module , app_wasm, app_wasm_len-1 );
160
- if (result) FATAL (" m3_ParseModule " , result);
163
+ if (result) FATAL (" ParseModule " , result);
161
164
162
165
result = m3_LoadModule (runtime, module );
163
- if (result) FATAL (" m3_LoadModule " , result);
166
+ if (result) FATAL (" LoadModule " , result);
164
167
165
- result = m3_LinkArduino (runtime);
166
- if (result) FATAL (" m3_LinkArduino " , result);
168
+ result = LinkArduino (runtime);
169
+ if (result) FATAL (" LinkArduino " , result);
167
170
168
171
IM3Function f;
169
172
result = m3_FindFunction (&f, runtime, " _start" );
170
- if (result) FATAL (" m3_FindFunction " , result);
173
+ if (result) FATAL (" FindFunction " , result);
171
174
172
175
Serial.println (" Running WebAssembly...\n " );
173
176
174
177
const char * i_argv[1 ] = { NULL };
175
178
result = m3_CallWithArgs (f, 0 , i_argv);
176
179
177
- if (result) FATAL (" m3_CallWithArgs " , result);
180
+ if (result) FATAL (" CallWithArgs " , result);
178
181
179
182
// Should not arrive here
180
183
}
@@ -188,7 +191,7 @@ void setup()
188
191
189
192
#ifdef ESP32
190
193
// On ESP32, we can launch in a separate thread
191
- xTaskCreate (&wasm_task, " wasm3" , 32768 , NULL , 5 , NULL );
194
+ xTaskCreate (&wasm_task, " wasm3" , NATIVE_STACK_SIZE , NULL , 5 , NULL );
192
195
#else
193
196
wasm_task (NULL );
194
197
#endif
0 commit comments