Skip to content

Commit 7349a1e

Browse files
committed
Update example
1 parent 7715269 commit 7349a1e

File tree

6 files changed

+2419
-71
lines changed

6 files changed

+2419
-71
lines changed

examples/Wasm_Blink/Wasm_Blink.ino

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -114,15 +114,29 @@ m3ApiRawFunction(m3_arduino_digitalWrite)
114114
m3ApiSuccess();
115115
}
116116

117-
// This is a convenience function
118117
m3ApiRawFunction(m3_arduino_getPinLED)
119118
{
120119
m3ApiReturnType (uint32_t)
121120

122121
m3ApiReturn(LED_PIN);
123122
}
124123

125-
// Dummy, for TinyGO
124+
m3ApiRawFunction(m3_arduino_print)
125+
{
126+
m3ApiGetArgMem(const char *, out)
127+
m3ApiGetArg(int32_t, out_len)
128+
129+
//printf("api: print %p\n", out);
130+
131+
char buff[out_len+1];
132+
memcpy(buff, out, out_len);
133+
buff[out_len] = '\0';
134+
135+
Serial.print(buff);
136+
137+
m3ApiSuccess();
138+
}
139+
126140
m3ApiRawFunction(m3_dummy)
127141
{
128142
m3ApiSuccess();
@@ -138,8 +152,11 @@ M3Result LinkArduino (IM3Runtime runtime)
138152
m3_LinkRawFunction (module, arduino, "pinMode", "v(ii)", &m3_arduino_pinMode);
139153
m3_LinkRawFunction (module, arduino, "digitalWrite", "v(ii)", &m3_arduino_digitalWrite);
140154

155+
// Convenience functions
156+
m3_LinkRawFunction (module, arduino, "print", "v(*i)", &m3_arduino_print);
141157
m3_LinkRawFunction (module, arduino, "getPinLED", "i()", &m3_arduino_getPinLED);
142158

159+
// Dummy (for TinyGo)
143160
m3_LinkRawFunction (module, "env", "io_get_stdout", "i()", &m3_dummy);
144161

145162
return m3Err_none;
@@ -212,3 +229,4 @@ void loop()
212229
{
213230
delay(100);
214231
}
232+

wasm_apps/assemblyscript/app.ts

Lines changed: 13 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,37 +1,21 @@
1-
@external("arduino", "millis")
2-
declare function millis(): u32;
1+
import * as dev from "./arduino";
32

4-
@external("arduino", "delay")
5-
declare function delay(ms: u32): void;
6-
7-
@external("arduino", "pinMode")
8-
declare function pinMode(pin: u32, mode: u32): void;
9-
10-
@external("arduino", "digitalWrite")
11-
declare function digitalWrite(pin: u32, value: u32): void;
12-
13-
@external("arduino", "getPinLED")
14-
declare function getPinLED(): u32;
15-
16-
const LOW: u32 = 0;
17-
const HIGH: u32 = 1;
18-
19-
const INPUT: u32 = 0x0;
20-
const OUTPUT: u32 = 0x1;
21-
const INPUT_PULLUP: u32 = 0x2;
22-
23-
let LED: u32 = 0;
3+
let LED: u32 = dev.getPinLED();
244

255
function setup(): void {
26-
LED = getPinLED();
27-
pinMode(LED, OUTPUT);
6+
dev.pinMode(LED, dev.OUTPUT);
7+
8+
dev.print('Hello from AssemblyScript 😊\n');
289
}
2910

3011
function run(): void {
31-
digitalWrite(LED, HIGH);
32-
delay(100);
33-
digitalWrite(LED, LOW);
34-
delay(900);
12+
const t: u32 = dev.millis();
13+
dev.println('[' + t.toString() + '] ' + 'Тест юнікоду.');
14+
15+
dev.digitalWrite(LED, dev.HIGH);
16+
dev.delay(100);
17+
dev.digitalWrite(LED, dev.LOW);
18+
dev.delay(900);
3519
}
3620

3721
/*
@@ -41,3 +25,4 @@ export function _start(): void {
4125
setup();
4226
while (1) run();
4327
}
28+

wasm_apps/assemblyscript/app.wasm

3.95 KB
Binary file not shown.

0 commit comments

Comments
 (0)