Norimasa Okamoto / Mbed 2 deprecated TinyJS

Dependencies:   mbed

Fork of TinyJS by Takehisa Oneta

Revision:
6:30b4122b0ee2
Parent:
5:b5e4fbe59746
Child:
7:40010b4dc51d
--- a/Mbed_Functions.cpp	Sun Jan 19 16:30:15 2014 +0000
+++ b/Mbed_Functions.cpp	Sun Jan 19 17:57:05 2014 +0000
@@ -69,22 +69,22 @@
 
 //---------------------------------------------
 #define INTERRUPT_NUM   4
-CTinyJS *interrupt_tinyJS;
-int interruptCount = 0;
-string callbackStrings[INTERRUPT_NUM];
-InterruptIn* intrInArray[INTERRUPT_NUM] = {NULL, NULL, NULL, NULL};
+CTinyJS *_mbed_interruptIn_tinyJS;
+int _mbed_interruptIn_Count = 0;
+string _mbed_interruptIn_callbackStrings[INTERRUPT_NUM];
+InterruptIn* _mbed_interrupt_array[INTERRUPT_NUM] = {NULL, NULL, NULL, NULL};
 
-void _interruptVector_0(){
-    interrupt_tinyJS->execute(callbackStrings[0]);
+void _interruptVector0(){
+    _mbed_interruptIn_tinyJS->execute(_mbed_interruptIn_callbackStrings[0]);
 }
-void _interruptVector_1(){
-    interrupt_tinyJS->execute(callbackStrings[1]);
+void _interruptVector1(){
+    _mbed_interruptIn_tinyJS->execute(_mbed_interruptIn_callbackStrings[1]);
 }
-void _interruptVector_2(){
-    interrupt_tinyJS->execute(callbackStrings[2]);
+void _interruptVector2(){
+    _mbed_interruptIn_tinyJS->execute(_mbed_interruptIn_callbackStrings[2]);
 }
-void _interruptVector_3(){
-    interrupt_tinyJS->execute(callbackStrings[3]);
+void _interruptVector3(){
+    _mbed_interruptIn_tinyJS->execute(_mbed_interruptIn_callbackStrings[3]);
 }
 
 void mbedSetInterrupt(CScriptVar *c, void *data)
@@ -103,37 +103,51 @@
         mode = PullDown;
     }
 
-    interrupt_tinyJS = (CTinyJS *)data;
-    callbackStrings[interruptCount] = c->getParameter("callback")->getString();
+    _mbed_interruptIn_tinyJS = (CTinyJS *)data;
+    _mbed_interruptIn_callbackStrings[_mbed_interruptIn_Count] = c->getParameter("callback")->getString();
 
-
-    if (intrInArray[interruptCount] != NULL) {
-        delete intrInArray[interruptCount];
+    if (_mbed_interrupt_array[_mbed_interruptIn_Count] != NULL) {
+        delete _mbed_interrupt_array[_mbed_interruptIn_Count];
     }
 
-    intrInArray[interruptCount] = new InterruptIn(pinName);
-    intrInArray[interruptCount]->mode(mode);
+    _mbed_interrupt_array[_mbed_interruptIn_Count] = new InterruptIn(pinName);
+    _mbed_interrupt_array[_mbed_interruptIn_Count]->mode(mode);
 
-    if (interruptCount == 0) {
-        if (edgeString == "fall") intrInArray[interruptCount]->fall(_interruptVector_0); else if (edgeString == "rise") intrInArray[interruptCount]->rise(_interruptVector_0);
-    } else if (interruptCount == 1) {
-        if (edgeString == "fall") intrInArray[interruptCount]->fall(_interruptVector_1); else if (edgeString == "rise") intrInArray[interruptCount]->rise(_interruptVector_1);
-    } else if (interruptCount == 2) {
-        if (edgeString == "fall") intrInArray[interruptCount]->fall(_interruptVector_2); else if (edgeString == "rise") intrInArray[interruptCount]->rise(_interruptVector_2);
-    } else if (interruptCount == 3) {
-        if (edgeString == "fall") intrInArray[interruptCount]->fall(_interruptVector_3); else if (edgeString == "rise") intrInArray[interruptCount]->rise(_interruptVector_3);
+    if (_mbed_interruptIn_Count == 0) {
+        if (edgeString == "fall")      _mbed_interrupt_array[_mbed_interruptIn_Count]->fall(_interruptVector0);
+        else if (edgeString == "rise") _mbed_interrupt_array[_mbed_interruptIn_Count]->rise(_interruptVector0);
+    } else if (_mbed_interruptIn_Count == 1) {
+        if (edgeString == "fall")      _mbed_interrupt_array[_mbed_interruptIn_Count]->fall(_interruptVector1);
+        else if (edgeString == "rise") _mbed_interrupt_array[_mbed_interruptIn_Count]->rise(_interruptVector1);
+    } else if (_mbed_interruptIn_Count == 2) {
+        if (edgeString == "fall")      _mbed_interrupt_array[_mbed_interruptIn_Count]->fall(_interruptVector2);
+        else if (edgeString == "rise") _mbed_interrupt_array[_mbed_interruptIn_Count]->rise(_interruptVector2);
+    } else if (_mbed_interruptIn_Count == 3) {
+        if (edgeString == "fall")      _mbed_interrupt_array[_mbed_interruptIn_Count]->fall(_interruptVector3);
+        else if (edgeString == "rise") _mbed_interrupt_array[_mbed_interruptIn_Count]->rise(_interruptVector3);
     }
 
+    c->getReturnVar()->setInt(_mbed_interruptIn_Count);
 
-    interruptCount++;
-    if (interruptCount >= INTERRUPT_NUM) {
-        interruptCount = 0;
+    _mbed_interruptIn_Count++;
+    if (_mbed_interruptIn_Count >= INTERRUPT_NUM) {
+        _mbed_interruptIn_Count = 0;
     }
 }
 
-
+/*
 void mbedRemoveInterrupt(CScriptVar *c, void *)
 {
+    int intrno = c->getParameter("interrupt_no")->getInt();
+}
+*/
+
+//---------------------------------------------
+
+void mbedWait(CScriptVar *c, void *)
+{
+    float val = c->getParameter("s")->getDouble();
+    wait(val);
 }
 
 //---------------------------------------------
@@ -152,7 +166,6 @@
     c->getReturnVar()->setInt(i);
 }
 
-
 //---------------------------------------------
 PinName _mbedPinNameExchange(string pinNameString)
 {
@@ -196,49 +209,43 @@
     return NC;
 }
 
-/**
- *
- */
-void mbedPinNames(CScriptVar *c, void *)
-{
-    printf("mbed DIP Pin Names\n");
-    printf("p5 : %d\n", p5);
-    printf("p6 : %d\n", p6);
-    printf("p7 : %d\n", p7);
-    printf("p8 : %d\n", p8);
-    printf("p9 : %d\n", p9);
-    printf("p10 : %d\n", p10);
-    printf("p11 : %d\n", p11);
-    printf("p12 : %d\n", p12);
-    printf("p13 : %d\n", p13);
-    printf("p14 : %d\n", p14);
-    printf("p15 : %d\n", p15);
-    printf("p16 : %d\n", p16);
-    printf("p17 : %d\n", p17);
-    printf("p18 : %d\n", p18);
-    printf("p19 : %d\n", p19);
-    printf("p20 : %d\n", p20);
-    printf("p21 : %d\n", p21);
-    printf("p22 : %d\n", p22);
-    printf("p23 : %d\n", p23);
-    printf("p24 : %d\n", p24);
-    printf("p25 : %d\n", p25);
-    printf("p26 : %d\n", p26);
-    printf("p27 : %d\n", p27);
-    printf("p28 : %d\n", p28);
-    printf("p29 : %d\n", p29);
-    printf("p30 : %d\n", p30);
+//---------------------------------------------
+Timer _mbedTimer;
+
+void mbedTimerStart(CScriptVar *c, void *) {
+    _mbedTimer.start();
+}
+
+void mbedTimerStop(CScriptVar *c, void *) {
+    _mbedTimer.stop();
+}
+
+void mbedTimerReset(CScriptVar *c, void *) {
+    _mbedTimer.reset();
+}
 
-    printf("\n");
-    printf("LED mbed Pin Names\n");
-    printf("LED1 : %d\n", LED1);
-    printf("LED2 : %d\n", LED2);
-    printf("LED3 : %d\n", LED3);
-    printf("LED4 : %d\n", LED4);
+void mbedTimerRead(CScriptVar *c, void *) {
+    float tm = _mbedTimer.read();
+    c->getReturnVar()->setDouble(tm);
+}
+
+
+//---------------------------------------------
+Timeout _mbedTimeout;
+CTinyJS *_mbedTimeout_tinyJS;
+string _mbedTimeout_callbackStrings;
 
-    printf("Other mbed Pin Names\n");
-    printf("USBTX : %d\n", USBTX);
-    printf("USBRX : %d\n", USBRX);
+void _mbedTimeoutVector() {
+    _mbedTimeout_tinyJS->execute(_mbedTimeout_callbackStrings);
+}
+
+void mbedTimeout(CScriptVar *c, void *data) {
+    
+    _mbedTimeout_tinyJS = (CTinyJS *)data;
+    _mbedTimeout_callbackStrings = c->getParameter("callback")->getString();
+    float t = c->getParameter("t")->getDouble();
+
+    _mbedTimeout.attach(&_mbedTimeoutVector, t);
 }
 
 
@@ -252,9 +259,17 @@
     tinyJS->addNative("function mbed.AnalogOut(pinName, val)", mbedAnalogOut, 0);
 
     tinyJS->addNative("function mbed.SetInterrupt(pinName, edge, mode, callback)", mbedSetInterrupt, tinyJS);
-    tinyJS->addNative("function mbed.RemoveInterrupt(pinName)", mbedRemoveInterrupt, tinyJS);
+    //tinyJS->addNative("function mbed.RemoveInterrupt(pinName)", mbedRemoveInterrupt, tinyJS);
+
+    tinyJS->addNative("function mbed.wait(s)", mbedWait, 0);
 
-    tinyJS->addNative("function mbed.PinNames()", mbedPinNames, 0);
+    tinyJS->addNative("function mbed.timerStart", mbedTimerStart, 0);
+    tinyJS->addNative("function mbed.timerStop", mbedTimerStop, 0);
+    tinyJS->addNative("function mbed.timerReset", mbedTimerReset, 0);
+    tinyJS->addNative("function mbed.timerRead", mbedTimerRead, 0);
+
+    tinyJS->addNative("function mbed.Timeout(callback, t)", mbedTimeout, tinyJS);
+
 
     tinyJS->addNative("function mbed.memfree()", mbedMemfree, 0);
 }