Takehisa Oneta / Mbed 2 deprecated TinyJS

Dependencies:   mbed

main.cpp

Committer:
ohneta
Date:
2014-01-11
Revision:
1:d793f113cfc0
Parent:
0:aae260bdcdd9
Child:
3:f56c36ea8266

File content as of revision 1:d793f113cfc0:

/*
 * TinyJS for mbed.
 *
 * Authored by Takehisa Oneta (ohneta@gmail.com)
 * 10th Jan. 2013
 */

/*
 * JavaScript samples
 *    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;}};
 */
 
#include "mbed.h"
#include "TinyJS.h"

Serial pc(USBTX, USBRX);
DigitalOut led1(LED1);
DigitalOut led2(LED2);
DigitalOut led3(LED3);
DigitalOut led4(LED4);

//unsigned char usbArea[1024] __attribute__((section("AHBSRAM0")));
//unsigned char ethArea[1024] __attribute__((section("AHBSRAM1")));


extern int tinyjs_main(int argc, char **argv);

//---------------------------------------------

void mbedDigitalOut(CScriptVar *c, void *)
{
    int pinName = c->getParameter("pinName")->getInt();
    int val = c->getParameter("val")->getInt();

    switch (pinName) {
        case LED1:
            led1 = val;
            break;
        case LED2:
            led2 = val;
            break;
        case LED3:
            led3 = val;
            break;
        case LED4:
            led4 = val;
            break;
    }
}

char ledVarStr[32];
char *mbedLedsVarString(int ledNo)
{
  switch (ledNo) {
      case 1:
        sprintf(ledVarStr,  "var led1 = %d;", LED1);
        break;
      case 2:
        sprintf(ledVarStr,  "var led2 = %d;", LED2);
        break;
      case 3:
        sprintf(ledVarStr,  "var led3 = %d;", LED3);
        break;
      case 4:
        sprintf(ledVarStr,  "var led4 = %d;", LED4);
        break;
      default:
        sprintf(ledVarStr,  "");
        break;
  }
  return ledVarStr;
}

//---------------------------------------------
void mbedMemfree(CScriptVar *c, void *)
{
    int i = 0;
    while(1) {
        void *p = malloc(i);
        if (p == NULL)  break;
        free(p);
        i++;
    }
    c->getReturnVar()->setInt(i);
}

//---------------------------------------------

int readOneLine(char *buffer, const int bufferSize)
{
    int len = 0;

    buffer[0] = '\0';
    while (true) {
        char c = pc.getc();
        pc.putc(c);

        if ('\r' == c) {
            return len;
        } else if( '\n' == c ) {
        } else {
            buffer[len] = c;
            buffer[len + 1] = '\0';
            len++;
            if (len > bufferSize) {
                return len;
            }
        }
    }

    return len;
}

//---------------------------------------------
//---------------------------------------------

int main() {
    pc.baud(57600);

    while(1) {
        printf("\n");
        printf("--------------------------\n");
        printf("TinyJS on mbed LPC1768 ported by ohneta.\n");

        tinyjs_main(NULL, NULL);

        printf("--------------------------\n");
        printf("bye bye\n");
    }
}