![](/media/cache/group/default_image.jpg.50x50_q85.jpg)
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.
main.cpp@0:ca3d04aad28e, 2016-10-13 (annotated)
- Committer:
- mmikulicic
- Date:
- Thu Oct 13 09:01:59 2016 +0000
- Revision:
- 0:ca3d04aad28e
Example
Who changed what in which revision?
User | Revision | Line number | New 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 | } |