Norimasa Okamoto / Mbed 2 deprecated TinyJS

Dependencies:   mbed

Fork of TinyJS by Takehisa Oneta

Committer:
ohneta
Date:
Sat Jan 11 20:23:40 2014 +0000
Revision:
1:d793f113cfc0
Parent:
0:aae260bdcdd9
Child:
3:f56c36ea8266
added sample of JavaScript

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ohneta 0:aae260bdcdd9 1 /*
ohneta 0:aae260bdcdd9 2 * TinyJS for mbed.
ohneta 0:aae260bdcdd9 3 *
ohneta 0:aae260bdcdd9 4 * Authored by Takehisa Oneta (ohneta@gmail.com)
ohneta 0:aae260bdcdd9 5 * 10th Jan. 2013
ohneta 0:aae260bdcdd9 6 */
ohneta 0:aae260bdcdd9 7
ohneta 1:d793f113cfc0 8 /*
ohneta 1:d793f113cfc0 9 * JavaScript samples
ohneta 1:d793f113cfc0 10 * for (x = 0; x < 256; x++) {for (var i = 0; i <= 3; i++) {mbed.DigitalOut(led1, (1 << i) & 0x01);mbed.DigitalOut(led2, (1 << i) & 0x02);mbed.DigitalOut(led3, (1 << i) & 0x04);mbed.DigitalOut(led4, (1 << i) & 0x08);for (j = 0; j < 300; j++) dummy=0;}for (var i = 3; i >= 0; i--) {mbed.DigitalOut(led1, (1 << i) & 0x01);mbed.DigitalOut(led2, (1 << i) & 0x02);mbed.DigitalOut(led3, (1 << i) & 0x04);mbed.DigitalOut(led4, (1 << i) & 0x08);for (j = 0; j < 10; j++) dummy=0;}};
ohneta 1:d793f113cfc0 11 */
ohneta 1:d793f113cfc0 12
ohneta 0:aae260bdcdd9 13 #include "mbed.h"
ohneta 0:aae260bdcdd9 14 #include "TinyJS.h"
ohneta 0:aae260bdcdd9 15
ohneta 0:aae260bdcdd9 16 Serial pc(USBTX, USBRX);
ohneta 0:aae260bdcdd9 17 DigitalOut led1(LED1);
ohneta 0:aae260bdcdd9 18 DigitalOut led2(LED2);
ohneta 0:aae260bdcdd9 19 DigitalOut led3(LED3);
ohneta 0:aae260bdcdd9 20 DigitalOut led4(LED4);
ohneta 0:aae260bdcdd9 21
ohneta 0:aae260bdcdd9 22 //unsigned char usbArea[1024] __attribute__((section("AHBSRAM0")));
ohneta 0:aae260bdcdd9 23 //unsigned char ethArea[1024] __attribute__((section("AHBSRAM1")));
ohneta 0:aae260bdcdd9 24
ohneta 0:aae260bdcdd9 25
ohneta 0:aae260bdcdd9 26 extern int tinyjs_main(int argc, char **argv);
ohneta 0:aae260bdcdd9 27
ohneta 0:aae260bdcdd9 28 //---------------------------------------------
ohneta 0:aae260bdcdd9 29
ohneta 0:aae260bdcdd9 30 void mbedDigitalOut(CScriptVar *c, void *)
ohneta 0:aae260bdcdd9 31 {
ohneta 0:aae260bdcdd9 32 int pinName = c->getParameter("pinName")->getInt();
ohneta 0:aae260bdcdd9 33 int val = c->getParameter("val")->getInt();
ohneta 0:aae260bdcdd9 34
ohneta 0:aae260bdcdd9 35 switch (pinName) {
ohneta 0:aae260bdcdd9 36 case LED1:
ohneta 0:aae260bdcdd9 37 led1 = val;
ohneta 0:aae260bdcdd9 38 break;
ohneta 0:aae260bdcdd9 39 case LED2:
ohneta 0:aae260bdcdd9 40 led2 = val;
ohneta 0:aae260bdcdd9 41 break;
ohneta 0:aae260bdcdd9 42 case LED3:
ohneta 0:aae260bdcdd9 43 led3 = val;
ohneta 0:aae260bdcdd9 44 break;
ohneta 0:aae260bdcdd9 45 case LED4:
ohneta 0:aae260bdcdd9 46 led4 = val;
ohneta 0:aae260bdcdd9 47 break;
ohneta 0:aae260bdcdd9 48 }
ohneta 0:aae260bdcdd9 49 }
ohneta 0:aae260bdcdd9 50
ohneta 0:aae260bdcdd9 51 char ledVarStr[32];
ohneta 0:aae260bdcdd9 52 char *mbedLedsVarString(int ledNo)
ohneta 0:aae260bdcdd9 53 {
ohneta 0:aae260bdcdd9 54 switch (ledNo) {
ohneta 0:aae260bdcdd9 55 case 1:
ohneta 0:aae260bdcdd9 56 sprintf(ledVarStr, "var led1 = %d;", LED1);
ohneta 0:aae260bdcdd9 57 break;
ohneta 0:aae260bdcdd9 58 case 2:
ohneta 0:aae260bdcdd9 59 sprintf(ledVarStr, "var led2 = %d;", LED2);
ohneta 0:aae260bdcdd9 60 break;
ohneta 0:aae260bdcdd9 61 case 3:
ohneta 0:aae260bdcdd9 62 sprintf(ledVarStr, "var led3 = %d;", LED3);
ohneta 0:aae260bdcdd9 63 break;
ohneta 0:aae260bdcdd9 64 case 4:
ohneta 0:aae260bdcdd9 65 sprintf(ledVarStr, "var led4 = %d;", LED4);
ohneta 0:aae260bdcdd9 66 break;
ohneta 0:aae260bdcdd9 67 default:
ohneta 0:aae260bdcdd9 68 sprintf(ledVarStr, "");
ohneta 0:aae260bdcdd9 69 break;
ohneta 0:aae260bdcdd9 70 }
ohneta 0:aae260bdcdd9 71 return ledVarStr;
ohneta 0:aae260bdcdd9 72 }
ohneta 0:aae260bdcdd9 73
ohneta 0:aae260bdcdd9 74 //---------------------------------------------
ohneta 0:aae260bdcdd9 75 void mbedMemfree(CScriptVar *c, void *)
ohneta 0:aae260bdcdd9 76 {
ohneta 0:aae260bdcdd9 77 int i = 0;
ohneta 0:aae260bdcdd9 78 while(1) {
ohneta 0:aae260bdcdd9 79 void *p = malloc(i);
ohneta 0:aae260bdcdd9 80 if (p == NULL) break;
ohneta 0:aae260bdcdd9 81 free(p);
ohneta 0:aae260bdcdd9 82 i++;
ohneta 0:aae260bdcdd9 83 }
ohneta 0:aae260bdcdd9 84 c->getReturnVar()->setInt(i);
ohneta 0:aae260bdcdd9 85 }
ohneta 0:aae260bdcdd9 86
ohneta 0:aae260bdcdd9 87 //---------------------------------------------
ohneta 0:aae260bdcdd9 88
ohneta 0:aae260bdcdd9 89 int readOneLine(char *buffer, const int bufferSize)
ohneta 0:aae260bdcdd9 90 {
ohneta 0:aae260bdcdd9 91 int len = 0;
ohneta 0:aae260bdcdd9 92
ohneta 0:aae260bdcdd9 93 buffer[0] = '\0';
ohneta 0:aae260bdcdd9 94 while (true) {
ohneta 0:aae260bdcdd9 95 char c = pc.getc();
ohneta 0:aae260bdcdd9 96 pc.putc(c);
ohneta 0:aae260bdcdd9 97
ohneta 0:aae260bdcdd9 98 if ('\r' == c) {
ohneta 0:aae260bdcdd9 99 return len;
ohneta 0:aae260bdcdd9 100 } else if( '\n' == c ) {
ohneta 0:aae260bdcdd9 101 } else {
ohneta 0:aae260bdcdd9 102 buffer[len] = c;
ohneta 0:aae260bdcdd9 103 buffer[len + 1] = '\0';
ohneta 0:aae260bdcdd9 104 len++;
ohneta 0:aae260bdcdd9 105 if (len > bufferSize) {
ohneta 0:aae260bdcdd9 106 return len;
ohneta 0:aae260bdcdd9 107 }
ohneta 0:aae260bdcdd9 108 }
ohneta 0:aae260bdcdd9 109 }
ohneta 0:aae260bdcdd9 110
ohneta 0:aae260bdcdd9 111 return len;
ohneta 0:aae260bdcdd9 112 }
ohneta 0:aae260bdcdd9 113
ohneta 0:aae260bdcdd9 114 //---------------------------------------------
ohneta 0:aae260bdcdd9 115 //---------------------------------------------
ohneta 0:aae260bdcdd9 116
ohneta 0:aae260bdcdd9 117 int main() {
ohneta 0:aae260bdcdd9 118 pc.baud(57600);
ohneta 0:aae260bdcdd9 119
ohneta 0:aae260bdcdd9 120 while(1) {
ohneta 0:aae260bdcdd9 121 printf("\n");
ohneta 0:aae260bdcdd9 122 printf("--------------------------\n");
ohneta 0:aae260bdcdd9 123 printf("TinyJS on mbed LPC1768 ported by ohneta.\n");
ohneta 0:aae260bdcdd9 124
ohneta 0:aae260bdcdd9 125 tinyjs_main(NULL, NULL);
ohneta 0:aae260bdcdd9 126
ohneta 0:aae260bdcdd9 127 printf("--------------------------\n");
ohneta 0:aae260bdcdd9 128 printf("bye bye\n");
ohneta 0:aae260bdcdd9 129 }
ohneta 0:aae260bdcdd9 130 }