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.
Diff: Mbed_Functions.cpp
- 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);
}