Simple example that shows how to embed a JavaScript interpreter and expose some mbed system functions to JS allowing a simple JavaScript program to blink a led.

Dependencies:   mbed v7

Committer:
mmikulicic
Date:
Thu Oct 13 09:01:59 2016 +0000
Revision:
0:ca3d04aad28e
Example

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mmikulicic 0:ca3d04aad28e 1 #include "mbed.h"
mmikulicic 0:ca3d04aad28e 2
mmikulicic 0:ca3d04aad28e 3 #include "v7.h"
mmikulicic 0:ca3d04aad28e 4
mmikulicic 0:ca3d04aad28e 5 DigitalOut led_green(LED1);
mmikulicic 0:ca3d04aad28e 6
mmikulicic 0:ca3d04aad28e 7 enum v7_err js_set_led(struct v7 *v7, v7_val_t *res) {
mmikulicic 0:ca3d04aad28e 8 led_green = !v7_get_bool(v7, v7_arg(v7, 0));
mmikulicic 0:ca3d04aad28e 9 return V7_OK;
mmikulicic 0:ca3d04aad28e 10 }
mmikulicic 0:ca3d04aad28e 11
mmikulicic 0:ca3d04aad28e 12 enum v7_err js_wait(struct v7 *v7, v7_val_t *res) {
mmikulicic 0:ca3d04aad28e 13 wait(v7_get_double(v7, v7_arg(v7, 0)));
mmikulicic 0:ca3d04aad28e 14 return V7_OK;
mmikulicic 0:ca3d04aad28e 15 }
mmikulicic 0:ca3d04aad28e 16
mmikulicic 0:ca3d04aad28e 17 int main() {
mmikulicic 0:ca3d04aad28e 18 struct v7 *v7 = v7_create();
mmikulicic 0:ca3d04aad28e 19
mmikulicic 0:ca3d04aad28e 20 v7_set_method(v7, v7_get_global(v7), "setLed", &js_set_led);
mmikulicic 0:ca3d04aad28e 21 v7_set_method(v7, v7_get_global(v7), "wait", &js_wait);
mmikulicic 0:ca3d04aad28e 22
mmikulicic 0:ca3d04aad28e 23 v7_exec(v7,
mmikulicic 0:ca3d04aad28e 24 "while(true) {" \
mmikulicic 0:ca3d04aad28e 25 " setLed(false);" \
mmikulicic 0:ca3d04aad28e 26 " wait(0.2); " \
mmikulicic 0:ca3d04aad28e 27 " setLed(true);" \
mmikulicic 0:ca3d04aad28e 28 " wait(0.8); " \
mmikulicic 0:ca3d04aad28e 29 "}",
mmikulicic 0:ca3d04aad28e 30 NULL);
mmikulicic 0:ca3d04aad28e 31
mmikulicic 0:ca3d04aad28e 32 }