Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of TinyJS by
main.cpp@0:aae260bdcdd9, 2014-01-11 (annotated)
- 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?
User | Revision | Line number | New 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 | } |