Norimasa Okamoto / Mbed 2 deprecated TinyJS

Dependencies:   mbed

Fork of TinyJS by Takehisa Oneta

Committer:
ohneta
Date:
Sat Jan 11 20:19:11 2014 +0000
Revision:
0:aae260bdcdd9
Child:
1:d793f113cfc0
TinyJS for mbed porting.; 1st edition.

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