From 0ff273e68f976a6a199f677b07a931a1969dad7a Mon Sep 17 00:00:00 2001 From: Gordon Williams Date: Thu, 7 Aug 2014 11:04:55 +0100 Subject: [PATCH] arduino compile tweaks --- Makefile | 41 +- README.md | 10 +- boards/ARDUINOMEGA2560.py | 48 + libs/network/network.c | 2 +- scripts/build_platform_config.py | 2 + src/jsinteractive.c | 2 +- src/jslex.c | 2 +- src/jspin.c | 16 +- src/jsutils.c | 12 +- src/jsutils.h | 12 +- src/jsvar.c | 4 +- src/jsvar.h | 12 +- src/jswrap_interactive.c | 2 +- src/jswrap_object.c | 2 +- targets/arduino/Espruino.h | 21 - .../arduino/{Espruino.cpp => espruino.cpp} | 21 +- targets/arduino/jshardware.cpp | 45 +- targets/arduino/jswrapper.c | 1039 ----------------- targets/arduino/keywords.txt | 24 - targets/arduino/platform_config.h | 28 - targets/linux/jshardware.c | 8 +- 21 files changed, 167 insertions(+), 1186 deletions(-) create mode 100644 boards/ARDUINOMEGA2560.py delete mode 100755 targets/arduino/Espruino.h rename targets/arduino/{Espruino.cpp => espruino.cpp} (50%) delete mode 100644 targets/arduino/jswrapper.c delete mode 100644 targets/arduino/keywords.txt delete mode 100644 targets/arduino/platform_config.h diff --git a/Makefile b/Makefile index 8287804e8..76d98bfff 100755 --- a/Makefile +++ b/Makefile @@ -31,6 +31,7 @@ # ARIETTA=1 # LPC1768=1 # beta # LCTECH_STM32F103RBT6=1 # LC Technology STM32F103RBT6 Ebay boards +# ARDUINOMEGA2560=1 # Or nothing for standard linux compile # # Also: @@ -249,11 +250,16 @@ DEFINES +=-DECU -DSTM32F4DISCOVERY USB=1 DEFINES += -DUSE_USB_OTG_FS=1 FAMILY=STM32F4 -CHIP=STM32F407 BOARD=ECU STLIB=STM32F4XX PRECOMPILED_OBJS+=$(ROOT)/targetlibs/stm32f4/lib/startup_stm32f4xx.o OPTIMIZEFLAGS+=-O3 +else ifdef ARDUINOMEGA2560 +EMBEDDED=1 +DEFINES+=-D__AVR_ATmega2560__ +BOARD=ARDUINOMEGA2560 +ARDUINO_AVR=1 +OPTIMIZEFLAGS+=-Os else ifdef CARAMBOLA EMBEDDED=1 BOARD=CARAMBOLA @@ -846,6 +852,33 @@ SOURCES += targets/mbed/main.c CPPSOURCES += targets/mbed/jshardware.cpp endif +ifdef ARDUINO_AVR +MCU = atmega2560 +F_CPU = 16000000 +FORMAT = ihex + +ARDUINO_LIB=$(ROOT)/targetlibs/arduino_avr/cores/arduino +ARCHFLAGS += -DF_CPU=$(F_CPU) -mmcu=$(MCU) -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums +LDFLAGS += --relax +AVR=1 +INCLUDE+=-I$(ARDUINO_LIB) -I$(ARDUINO_LIB)/../../variants/mega +DEFINES += -DARDUINO_AVR -D$(CHIP) -D$(BOARD) +SOURCES += \ +$(ARDUINO_LIB)/wiring.c \ +$(ARDUINO_LIB)/wiring_digital.c + +CPPSOURCES += \ +$(ARDUINO_LIB)/main.cpp \ +$(ARDUINO_LIB)/new.cpp \ +$(ARDUINO_LIB)/WString.cpp \ +$(ARDUINO_LIB)/Print.cpp \ +$(ARDUINO_LIB)/HardwareSerial.cpp \ +targets/arduino/jshardware.cpp \ +targets/arduino/espruino.cpp + +export CCPREFIX=avr- +endif + ifdef ARM LINKER_FILE = gen/linker.ld DEFINES += -DARM @@ -862,12 +895,6 @@ endif # Limit code size growth via inlining to 8% Normally 30% it seems... This reduces code size while still being able to use -O3 OPTIMIZEFLAGS += --param inline-unit-growth=8 - -# 4.6 -#export CCPREFIX=arm-linux-gnueabi- -# 4.5 -#export CCPREFIX=~/sat/bin/arm-none-eabi- -# 4.4 export CCPREFIX=arm-none-eabi- endif # ARM diff --git a/README.md b/README.md index 1b4fc20b4..4ecc1841b 100644 --- a/README.md +++ b/README.md @@ -78,7 +78,7 @@ If you are a board manufacturer interested in getting your board officially supp * Raspberry Pi - WORKING - GPIO via filesystem (no SPI or I2C) * Sony SmartWatch - NOT WORKING - USB VCP support for F2 still needed * MBed platforms - have not worked for a while - full hardware wrapper still required -* Arduino - has never worked. Used to compile but probably doesn't any more +* ARDUINOMEGA2560 - has never worked * LC-TECH STM32F103RBT6 - WORKING, but with some issues (LED inverted logic, BTN needs pullup to work) @@ -111,12 +111,14 @@ It may complain that there isn't enough space on the chip. This isn't an issue u Just run `make` -## Arduino (ALPHA) +## Arduino This will not work - these steps are only to get you started. -* Ensure that `targets/arduino/utility` is symlinked to `src` -* Symlink `...arduino_workspace/libraries/Espruino` to `targets/arduino` +* `sudo apt-get install gcc-avr avr-libc avrdude` +* `sudo cp -r /usr/share/arduino/hardware/arduino targetlibs/arduino_avr` +* `ARDUINOMEGA2560=1 make` +* You'll need to flash it yourself ### Raspberry Pi diff --git a/boards/ARDUINOMEGA2560.py b/boards/ARDUINOMEGA2560.py new file mode 100644 index 000000000..474bb8365 --- /dev/null +++ b/boards/ARDUINOMEGA2560.py @@ -0,0 +1,48 @@ +#!/bin/false +# This file is part of Espruino, a JavaScript interpreter for Microcontrollers +# +# Copyright (C) 2013 Gordon Williams +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +# +# ---------------------------------------------------------------------------------------- +# This file contains information for a specific board - the available pins, and where LEDs, +# Buttons, and other in-built peripherals are. It is used to build documentation as well +# as various source and header files for Espruino. +# ---------------------------------------------------------------------------------------- + +import pinutils; +info = { + 'name' : "Arduino Mega 2560", + 'default_console' : "EV_SERIAL1", + 'variables' : 1023, + 'binary_name' : 'espruino_%v_arduinomega2560', +}; +chip = { + 'part' : "ATMEGA2560", + 'family' : "AVR", + 'package' : "", + 'ram' : 32, + 'flash' : 256, + 'speed' : 16, + 'usart' : 1, + 'spi' : 0, + 'i2c' : 0, + 'adc' : 0, + 'dac' : 0, +}; +# left-right, or top-bottom order +board = { +}; +devices = { +}; + +board_css = """ +"""; + +def get_pins(): + pins = pinutils.generate_pins(0,7) + # just fake pins D0 .. D7 + return pins diff --git a/libs/network/network.c b/libs/network/network.c index a8deb1bbc..20f61a49a 100644 --- a/libs/network/network.c +++ b/libs/network/network.c @@ -63,7 +63,7 @@ void networkPutAddressAsString(JsVar *object, const char *name, unsigned char * data[l++] = itoch(ip[i]>>4); data[l++] = itoch(ip[i]&15); } else { - itoa((int)ip[i], &data[l], base); + itostr((int)ip[i], &data[l], base); } l = (int)strlen(data); if (i+dir!=nBytes && separator) { diff --git a/scripts/build_platform_config.py b/scripts/build_platform_config.py index 873e5cfe3..8dbf43505 100755 --- a/scripts/build_platform_config.py +++ b/scripts/build_platform_config.py @@ -153,6 +153,8 @@ elif board.chip["family"]=="STM32F4": codeOut("#define STM32API2 // hint to jshardware that the API is a lot different") elif board.chip["family"]=="LPC1768": board.chip["class"]="MBED" +elif board.chip["family"]=="AVR": + board.chip["class"]="AVR" else: die('Unknown chip family '+board.chip["family"]) diff --git a/src/jsinteractive.c b/src/jsinteractive.c index 4ea3e2742..0b0cacdb6 100644 --- a/src/jsinteractive.c +++ b/src/jsinteractive.c @@ -166,7 +166,7 @@ void jsiConsolePrintf(const char *fmt, ...) { NO_INLINE void jsiConsolePrintInt(JsVarInt d) { char buf[32]; - itoa(d, buf, 10); + itostr(d, buf, 10); jsiConsolePrint(buf); } diff --git a/src/jslex.c b/src/jslex.c index 9747c1e06..70ba17545 100644 --- a/src/jslex.c +++ b/src/jslex.c @@ -677,7 +677,7 @@ void jslTokenAsString(int token, char *str, size_t len) { assert(len>=10); strncpy(str, "?[",len); - itoa(token, &str[2], 10); + itostr(token, &str[2], 10); strncat(str, "]",len); } diff --git a/src/jspin.c b/src/jspin.c index f75fa42e7..de1bfc5ec 100644 --- a/src/jspin.c +++ b/src/jspin.c @@ -122,35 +122,35 @@ void jshGetPinString(char *result, Pin pin) { #endif pin=JSH_PORTB_OFFSET && pin=JSH_PORTC_OFFSET && pin=JSH_PORTD_OFFSET && pin=JSH_PORTE_OFFSET && pin=JSH_PORTF_OFFSET && pin=JSH_PORTG_OFFSET && pin=JSH_PORTH_OFFSET && pin // for va_args #include -#ifdef LINUX +#if defined(LINUX) || defined(ARDUINO_AVR) #include #else // these are in maths, but are used all over the place @@ -43,8 +43,7 @@ extern int isfinite ( double ); OPT - potential for speed optimisation */ -// surely bool is defined?? -#ifdef ARM +#if defined(ARM) || defined(AVR) typedef unsigned int size_t; #define alloca(x) __builtin_alloca(x) #endif @@ -58,8 +57,11 @@ typedef enum {FALSE = 0, TRUE = !FALSE} bool; //#define FALSE (0) #endif +#ifndef Arduino_h #define true (1) #define false (0) +#endif + #define DBL_MIN 2.2250738585072014e-308 #define DBL_MAX 1.7976931348623157e+308 @@ -415,9 +417,7 @@ unsigned int rand(); JsVarFloat stringToFloatWithRadix(const char *s, int forceRadix); JsVarFloat stringToFloat(const char *str); -#ifndef HAS_STDLIB -void itoa(JsVarInt val,char *str,unsigned int base); -#endif +void itostr(JsVarInt val,char *str,unsigned int base); // like itoa, but uses JsVarInt (good on non-32 bit systems) char itoch(int val); // super ftoa that does fixed point and radix diff --git a/src/jsvar.c b/src/jsvar.c index 33d169e0b..7c2f3de29 100644 --- a/src/jsvar.c +++ b/src/jsvar.c @@ -714,7 +714,7 @@ size_t jsvGetString(const JsVar *v, char *str, size_t len) { strncpy(str, s, len); return strlen(s); } else if (jsvIsInt(v)) { - itoa(v->varData.integer, str, 10); + itostr(v->varData.integer, str, 10); return strlen(str); } else if (jsvIsFloat(v)) { ftoa_bounded(v->varData.floating, str, len); @@ -797,7 +797,7 @@ JsVar *jsvAsString(JsVar *v, bool unlockVar) { jshGetPinString(buf, (Pin)v->varData.integer); str = jsvNewFromString(buf); } else if (jsvIsInt(v)) { - itoa(v->varData.integer, buf, 10); + itostr(v->varData.integer, buf, 10); str = jsvNewFromString(buf); } else if (jsvIsFloat(v)) { ftoa_bounded(v->varData.floating, buf, sizeof(buf)); diff --git a/src/jsvar.h b/src/jsvar.h index 44b993982..bbdb7b887 100644 --- a/src/jsvar.h +++ b/src/jsvar.h @@ -337,22 +337,22 @@ static inline size_t jsvGetCharactersInVar(const JsVar *v) { /// This is the number of characters a JsVar can contain, NOT string length static inline void jsvSetCharactersInVar(JsVar *v, size_t chars) { unsigned int f = v->flags&JSV_VARTYPEMASK; - JsVarFlags m = (JsVarFlags)v->flags&~JSV_VARTYPEMASK; + JsVarFlags m = (JsVarFlags)(v->flags&~JSV_VARTYPEMASK); assert(f >= JSV_NAME_STRING_INT_0); assert((JSV_NAME_STRING_INT_0 < JSV_NAME_STRING_0) && (JSV_NAME_STRING_0 < JSV_STRING_0) && (JSV_STRING_0 < JSV_STRING_EXT_0)); // this relies on ordering if (f<=JSV_NAME_STRING_MAX) { if (f<=JSV_NAME_STRING_INT_MAX) - v->flags = m | (JSV_NAME_STRING_INT_0+chars); + v->flags = (JsVarFlags)(m | (JSV_NAME_STRING_INT_0+chars)); else - v->flags = m | (JSV_NAME_STRING_0+chars); + v->flags = (JsVarFlags)(m | (JSV_NAME_STRING_0+chars)); } else { if (f<=JSV_STRING_MAX) { - v->flags = m | (JSV_STRING_0+chars); + v->flags = (JsVarFlags)(m | (JSV_STRING_0+chars)); } else { assert(f <= JSV_STRING_EXT_MAX); - v->flags = m | (JSV_STRING_EXT_0+chars); + v->flags = (JsVarFlags)(m | (JSV_STRING_EXT_0+chars)); } } } @@ -360,7 +360,7 @@ static inline void jsvSetCharactersInVar(JsVar *v, size_t chars) { static inline void jsvMakeFunctionParameter(JsVar *v) { assert(jsvIsString(v)); if (!jsvIsName(v)) jsvMakeIntoVariableName(v,0); - v->flags |= JSV_NATIVE; + v->flags = (JsVarFlags)(v->flags | JSV_NATIVE); } /** Check if two Basic Variables are equal (this IGNORES the value that is pointed to, diff --git a/src/jswrap_interactive.c b/src/jswrap_interactive.c index 0a0ca7200..204e4482a 100644 --- a/src/jswrap_interactive.c +++ b/src/jswrap_interactive.c @@ -231,7 +231,7 @@ JsVar *jswrap_interface_getSerial() { for (i=0;i=2 && radix<=36) { char buf[JS_NUMBER_BUFFER_SIZE]; if (jsvIsInt(parent)) - itoa(jsvGetInteger(parent), buf, (unsigned int)radix); + itostr(jsvGetInteger(parent), buf, (unsigned int)radix); else ftoa_bounded_extra(jsvGetFloat(parent), buf, sizeof(buf), (int)radix, -1); return jsvNewFromString(buf); diff --git a/targets/arduino/Espruino.h b/targets/arduino/Espruino.h deleted file mode 100755 index f718ea493..000000000 --- a/targets/arduino/Espruino.h +++ /dev/null @@ -1,21 +0,0 @@ -/* - Espruino.h -*/ - -// ensure this library description is only included once -#ifndef Espruino_h -#define Espruino_h - -// library interface description -class Espruino -{ - // user-accessible "public" interface - public: - Espruino(); - void init(void); - void loop(void); - -}; - -#endif - diff --git a/targets/arduino/Espruino.cpp b/targets/arduino/espruino.cpp similarity index 50% rename from targets/arduino/Espruino.cpp rename to targets/arduino/espruino.cpp index 703990a9f..cd9a42846 100755 --- a/targets/arduino/Espruino.cpp +++ b/targets/arduino/espruino.cpp @@ -11,31 +11,24 @@ extern "C" { #include "jsinteractive.h" } -#include "Espruino.h" #include "Arduino.h" #include "HardwareSerial.h" -// Constructor ///////////////////////////////////////////////////////////////// -// Function that handles the creation and setup of instances - -Espruino::Espruino(void) { -} - -void Espruino::init(void) { +void setup(void) { Serial.println("jshInit..."); jshInit(); bool buttonState = false; - buttonState = jshPinInput(BTN_PININDEX) == BTN_ONSTATE; + buttonState = false; +#ifdef BTN_PININDEX + jshPinInput(BTN_PININDEX) == BTN_ONSTATE; +#endif Serial.println("jsiInit..."); jsiInit(!buttonState); // pressing USER button skips autoload Serial.println("Init done."); } -// Public Methods ////////////////////////////////////////////////////////////// -// Functions available in Wiring sketches, this library, and other libraries - -void Espruino::loop(void) { -// jsiLoop(); +void loop(void) { + jsiLoop(); } diff --git a/targets/arduino/jshardware.cpp b/targets/arduino/jshardware.cpp index 5f58c25e6..4aa445be9 100644 --- a/targets/arduino/jshardware.cpp +++ b/targets/arduino/jshardware.cpp @@ -34,6 +34,9 @@ IOEventFlags pinToEVEXTI(Pin pin) { void jshInit() { } +void jshReset() { +} + void jshKill() { } @@ -63,9 +66,20 @@ void jshDelayMicroseconds(int microsec) { delayMicroseconds(microsec); } +/// Is the pin state manual (has the user asked us explicitly to change it?) +bool jshGetPinStateIsManual(Pin pin) { +} + +void jshSetPinStateIsManual(Pin pin, bool manual) { +} + void jshPinSetState(Pin pin, JshPinState state) { } +JshPinState jshPinGetState(Pin pin) { + return JSHPINSTATE_UNDEFINED; +} + void jshPinSetValue(Pin pin, bool value) { } @@ -73,10 +87,6 @@ bool jshPinGetValue(Pin pin) { return false; } -bool jshIsPinValid(Pin pin) { - return true; -} - bool jshIsDeviceInitialised(IOEventFlags device) { return true; } bool jshIsUSBSERIALConnected() { @@ -114,6 +124,9 @@ JsVarFloat jshPinAnalog(Pin pin) { return value; } +int jshPinAnalogFast(Pin pin) { +} + void jshPinOutput(Pin pin, bool value) { if (jshIsPinValid(pin)) { @@ -125,6 +138,15 @@ void jshPinOutput(Pin pin, bool value) { void jshPinAnalogOutput(Pin pin, JsVarFloat value, JsVarFloat freq) { // if freq<=0, the default is used } +void jshSetOutputValue(JshPinFunction func, int value) { +} + +void jshEnableWatchDog(JsVarFloat timeout) { +} + +bool jshGetWatchedPinState(IOEventFlags device) { +} + void jshPinPulse(Pin pin, bool value, JsVarFloat time) { if (jshIsPinValid(pin)) { jshPinSetState(pin, JSHPINSTATE_GPIO_OUT); @@ -134,18 +156,19 @@ void jshPinPulse(Pin pin, bool value, JsVarFloat time) { } else jsError("Invalid pin!"); } +bool jshCanWatch(Pin pin) { + return false; +} + void jshPinWatch(Pin pin, bool shouldWatch) { if (jshIsPinValid(pin)) { -#ifdef SYSFS_GPIO_DIR - gpioShouldWatch[pin] = shouldWatch; - if (shouldWatch) { - jshPinSetState(pin, JSHPINSTATE_GPIO_IN); - gpioLastState[pin] = jshPinGetValue(pin); - } -#endif } else jsError("Invalid pin!"); } +JshPinFunction jshGetCurrentPinFunction(Pin pin) { + return JSH_NOTHING; +} + bool jshIsEventForPin(IOEvent *event, Pin pin) { return IOEVENTFLAGS_GETTYPE(event->flags) == pinToEVEXTI(pin); } diff --git a/targets/arduino/jswrapper.c b/targets/arduino/jswrapper.c deleted file mode 100644 index ffab8c772..000000000 --- a/targets/arduino/jswrapper.c +++ /dev/null @@ -1,1039 +0,0 @@ -// Automatically generated wrapper file -// Generated by scripts/build_jsfunctions.py - -#include "jswrapper.h" -#include "jswrap_pin.h" -#include "jswrap_functions.h" -#include "jswrap_interactive.h" -#include "jswrap_json.h" -#include "jswrap_object.h" -#include "jswrap_string.h" -#include "jswrap_array.h" -#include "jswrap_arraybuffer.h" -#include "jswrap_serial.h" -#include "jswrap_spi_i2c.h" -#include "jswrap_onewire.h" -#include "jswrap_io.h" - -#if( 'q\0\0\0' & 'q' ) - #error( "architecture is big-endian. need to test and make sure this works" ) -#endif -// beware big endian! -#define CH2(a,b) ( ((b)<<8) | (a) ) -#define CH4(a,b,c,d) ( ((d)<<24) | ((c)<<16) | ((b)<<8) | (a) ) -#define CMP2(var, a,b) ((*(unsigned short*)&var)==CH2(a,b)) -#define CMP3(var, a,b,c) (((*(unsigned int*)&var)&0x00FFFFFF)==CH4(a,b,c,0)) -#define CMP4(var, a,b,c,d) ((*(unsigned int*)&var)==CH4(a,b,c,d)) - -JsVar *jswHandleFunctionCall(JsVar *parent, JsVar *parentName, const char *name) { - if (parent) { - // ------------------------------------------ METHODS ON OBJECT - if (CMP4(name[0],'c','l','o','n') && CMP2(name[4],'e','\0')) { - // Object.clone (src/jswrap_object.c) - jspParseEmptyFunction(); - JsVar *_r = jswrap_object_clone(parent); - return _r; - } else if (CMP4(name[0],'e','m','i','t') && name[4]=='\0') { - // Object.emit (src/jswrap_object.c) - JsVar *event, *v1, *v2; - jspParseFunction(0, &event, &v1, &v2, 0); - jswrap_object_emit(parent, event, v1, v2); - jsvUnLock(event); - jsvUnLock(v1); - jsvUnLock(v2); - return 0; - } else if (CMP4(name[0],'l','e','n','g') && CMP3(name[4],'t','h','\0')) { - // Object.length (src/jswrap_object.c) - jspParseVariableName(); - JsVar *_r = jswrap_object_length(parent); - return _r; - } else if (CMP3(name[0],'o','n','\0')) { - // Object.on (src/jswrap_object.c) - JsVar *event, *listener; - jspParseFunction(0, &event, &listener, 0, 0); - jswrap_object_on(parent, event, listener); - jsvUnLock(event); - jsvUnLock(listener); - return 0; - } else if (CMP4(name[0],'r','e','m','o') && CMP4(name[4],'v','e','A','l') && CMP4(name[8],'l','L','i','s') && CMP4(name[12],'t','e','n','e') && CMP3(name[16],'r','s','\0')) { - // Object.removeAllListeners (src/jswrap_object.c) - JsVar *event = jspParseSingleFunction(); - jswrap_object_removeAllListeners(parent, event); - jsvUnLock(event); - return 0; - } else if (CMP4(name[0],'t','o','S','t') && CMP4(name[4],'r','i','n','g') && name[8]=='\0') { - // Object.toString (src/jswrap_object.c) - jspParseEmptyFunction(); - JsVar *_r = jswrap_object_toString(parent); - return _r; - } - // ------------------------------------------ INSTANCE + STATIC METHODS - if (jsvIsString(parent)) { - if (CMP4(name[0],'i','n','d','e') && CMP4(name[4],'x','O','f','\0')) { - // String.indexOf (src/jswrap_string.c) - JsVar *substring = jspParseSingleFunction(); - JsVar *_r = jsvNewFromInteger(jswrap_string_indexOf(parent, substring)); - jsvUnLock(substring); - return _r; - } else if (CMP4(name[0],'c','h','a','r')) { - if (CMP3(name[4],'A','t','\0')) { - // String.charAt (src/jswrap_string.c) - JsVar *pos = jspParseSingleFunction(); - JsVar *_r = jswrap_string_charAt(parent, jsvGetIntegerAndUnLock(pos)); - return _r; - } else if (CMP4(name[4],'C','o','d','e') && CMP3(name[8],'A','t','\0')) { - // String.charCodeAt (src/jswrap_string.c) - JsVar *pos = jspParseSingleFunction(); - JsVar *_r = jsvNewFromInteger(jswrap_string_charCodeAt(parent, jsvGetIntegerAndUnLock(pos))); - return _r; - } - } else if (name[0]=='s') { - if (CMP4(name[1],'p','l','i','t') && name[5]=='\0') { - // String.split (src/jswrap_string.c) - JsVar *separator = jspParseSingleFunction(); - JsVar *_r = jswrap_string_split(parent, separator); - jsvUnLock(separator); - return _r; - } else if (CMP4(name[1],'u','b','s','t') && name[5]=='r') { - if (CMP4(name[6],'i','n','g','\0')) { - // String.substring (src/jswrap_string.c) - JsVar *start, *end; - jspParseFunction(0, &start, &end, 0, 0); - JsVar *_r = jswrap_string_substring(parent, jsvGetIntegerAndUnLock(start), end); - jsvUnLock(end); - return _r; - } else if (name[6]==0) { - // String.substr (src/jswrap_string.c) - JsVar *start, *len; - jspParseFunction(0, &start, &len, 0, 0); - JsVar *_r = jswrap_string_substr(parent, jsvGetIntegerAndUnLock(start), len); - jsvUnLock(len); - return _r; - } - } - } - } - if (CMP4(parent->varData.str[0],'J','S','O','N') && parent->varData.str[4]=='\0') { - if (CMP4(name[0],'p','a','r','s') && CMP2(name[4],'e','\0')) { - // JSON.parse (src/jswrap_json.c) - return jswrap_json_parse(parent, parentName); - } else if (CMP4(name[0],'s','t','r','i') && CMP4(name[4],'n','g','i','f') && CMP2(name[8],'y','\0')) { - // JSON.stringify (src/jswrap_json.c) - return jswrap_json_stringify(parent, parentName); - } - } - if (CMP4(parent->varData.str[0],'S','t','r','i') && CMP3(parent->varData.str[4],'n','g','\0')) { - if (CMP4(name[0],'f','r','o','m') && CMP4(name[4],'C','h','a','r') && CMP4(name[8],'C','o','d','e') && name[12]=='\0') { - // String.fromCharCode (src/jswrap_string.c) - JsVar *code = jspParseSingleFunction(); - JsVar *_r = jswrap_string_fromCharCode(jsvGetIntegerAndUnLock(code)); - return _r; - } - } - if (CMP4(parent->varData.str[0],'D','o','u','b') && CMP3(parent->varData.str[4],'l','e','\0')) { - if (CMP4(name[0],'d','o','u','b') && CMP4(name[4],'l','e','T','o') && CMP4(name[8],'I','n','t','B') && CMP4(name[12],'i','t','s','\0')) { - // Double.doubleToIntBits (libs/jswrap_math.c) - JsVar *x = jspParseSingleFunction(); - JsVar *_r = jsvNewFromInteger(*(JsVarInt*)&x); - jsvUnLock(x); - return _r; - } - } - if (jsvIsFunction(parent)) { - if (CMP4(name[0],'r','e','p','l') && CMP4(name[4],'a','c','e','W') && CMP4(name[8],'i','t','h','\0')) { - // Function.replaceWith (src/jswrap_object.c) - JsVar *newFunc = jspParseSingleFunction(); - jswrap_function_replaceWith(parent, newFunc); - jsvUnLock(newFunc); - return 0; - } - } - if (jsvIsArray(parent)) { - if (CMP4(name[0],'c','o','n','t') && CMP4(name[4],'a','i','n','s') && name[8]=='\0') { - // Array.contains (src/jswrap_array.c) - JsVar *value = jspParseSingleFunction(); - JsVar *_r = jsvNewFromBool(jswrap_array_contains(parent, value)); - jsvUnLock(value); - return _r; - } else if (CMP4(name[0],'i','n','d','e') && CMP4(name[4],'x','O','f','\0')) { - // Array.indexOf (src/jswrap_array.c) - JsVar *value = jspParseSingleFunction(); - JsVar *_r = jswrap_array_indexOf(parent, value); - jsvUnLock(value); - return _r; - } else if (CMP4(name[0],'j','o','i','n') && name[4]=='\0') { - // Array.join (src/jswrap_array.c) - JsVar *separator = jspParseSingleFunction(); - JsVar *_r = jswrap_array_join(parent, separator); - jsvUnLock(separator); - return _r; - } else if (CMP4(name[0],'m','a','p','\0')) { - // Array.map (src/jswrap_array.c) - JsVar *function, *thisArg; - jspParseFunction(0, &function, &thisArg, 0, 0); - JsVar *_r = jswrap_array_map(parent, function, thisArg); - jsvUnLock(function); - jsvUnLock(thisArg); - return _r; - } else if (name[0]=='p') { - if (CMP4(name[1],'u','s','h','\0')) { - // Array.push (src/jswrap_array.c) - JsVar *value = jspParseSingleFunction(); - JsVar *_r = jsvNewFromInteger(jsvArrayPush(parent, value)); - jsvUnLock(value); - return _r; - } else if (CMP3(name[1],'o','p','\0')) { - // Array.pop (src/jswrap_array.c) - jspParseEmptyFunction(); - JsVar *_r = jsvArrayPop(parent); - return _r; - } - } else if (CMP4(name[0],'s','p','l','i') && CMP3(name[4],'c','e','\0')) { - // Array.splice (src/jswrap_array.c) - JsVar *index, *howMany, *element1, *element2, *element3, *element4, *element5, *element6; - jspParseFunction8(0, &index, &howMany, &element1, &element2, &element3, &element4, &element5, &element6); - JsVar *_r = jswrap_array_splice(parent, jsvGetIntegerAndUnLock(index), howMany, element1, element2, element3, element4, element5, element6); - jsvUnLock(howMany); - jsvUnLock(element1); - jsvUnLock(element2); - jsvUnLock(element3); - jsvUnLock(element4); - jsvUnLock(element5); - jsvUnLock(element6); - return _r; - } - } - if (CMP4(parent->varData.str[0],'M','a','t','h') && parent->varData.str[4]=='\0') { - if (name[0]=='a') { - if (CMP4(name[1],'c','o','s','\0')) { - // Math.acos (libs/jswrap_math.c) - JsVar *x = jspParseSingleFunction(); - JsVar *_r = jsvNewFromFloat(acos(jsvGetFloatAndUnLock(x))); - return _r; - } else if (CMP4(name[1],'s','i','n','\0')) { - // Math.asin (libs/jswrap_math.c) - JsVar *x = jspParseSingleFunction(); - JsVar *_r = jsvNewFromFloat(asin(jsvGetFloatAndUnLock(x))); - return _r; - } else if (CMP3(name[1],'t','a','n')) { - if (CMP2(name[4],'2','\0')) { - // Math.atan2 (libs/jswrap_math.c) - JsVar *y, *x; - jspParseFunction(0, &y, &x, 0, 0); - JsVar *_r = jsvNewFromFloat(atan2(jsvGetFloatAndUnLock(y), jsvGetFloatAndUnLock(x))); - return _r; - } else if (name[4]==0) { - // Math.atan (libs/jswrap_math.c) - JsVar *x = jspParseSingleFunction(); - JsVar *_r = jsvNewFromFloat(atan(jsvGetFloatAndUnLock(x))); - return _r; - } - } - } else if (name[0]=='c') { - if (CMP4(name[1],'e','i','l','\0')) { - // Math.ceil (libs/jswrap_math.c) - JsVar *x = jspParseSingleFunction(); - JsVar *_r = jsvNewFromFloat(ceil(jsvGetFloatAndUnLock(x))); - return _r; - } else if (CMP3(name[1],'o','s','\0')) { - // Math.cos (libs/jswrap_math.c) - JsVar *theta = jspParseSingleFunction(); - JsVar *_r = jsvNewFromFloat(sin(jsvGetFloat(theta) + (3.14159265359/2.0))); - jsvUnLock(theta); - return _r; - } - } else if (CMP2(name[0],'E','\0')) { - // Math.E (libs/jswrap_math.c) - jspParseVariableName(); - JsVar *_r = jsvNewFromFloat(2.71828182846); - return _r; - } else if (CMP4(name[0],'p','o','w','\0')) { - // Math.pow (libs/jswrap_math.c) - JsVar *x, *y; - jspParseFunction(0, &x, &y, 0, 0); - JsVar *_r = jsvNewFromFloat(pow(jsvGetFloatAndUnLock(x), jsvGetFloatAndUnLock(y))); - return _r; - } else if (CMP4(name[0],'f','l','o','o') && CMP2(name[4],'r','\0')) { - // Math.floor (libs/jswrap_math.c) - JsVar *x = jspParseSingleFunction(); - JsVar *_r = jsvNewFromFloat(floor(jsvGetFloatAndUnLock(x))); - return _r; - } else if (CMP4(name[0],'l','o','g','\0')) { - // Math.log (libs/jswrap_math.c) - JsVar *x = jspParseSingleFunction(); - JsVar *_r = jsvNewFromFloat(log(jsvGetFloatAndUnLock(x))); - return _r; - } else if (CMP3(name[0],'P','I','\0')) { - // Math.PI (libs/jswrap_math.c) - jspParseVariableName(); - JsVar *_r = jsvNewFromFloat(3.14159265359); - return _r; - } else if (name[0]=='s') { - if (CMP3(name[1],'i','n','\0')) { - // Math.sin (libs/jswrap_math.c) - JsVar *theta = jspParseSingleFunction(); - JsVar *_r = jsvNewFromFloat(sin(jsvGetFloatAndUnLock(theta))); - return _r; - } else if (CMP4(name[1],'q','r','t','\0')) { - // Math.sqrt (libs/jswrap_math.c) - JsVar *x = jspParseSingleFunction(); - JsVar *_r = jsvNewFromFloat(pow(jsvGetFloat(x),0.5)); - jsvUnLock(x); - return _r; - } - } else if (name[0]=='r') { - if (CMP4(name[1],'a','n','d','o') && CMP2(name[5],'m','\0')) { - // Math.random (libs/jswrap_math.c) - jspParseEmptyFunction(); - JsVar *_r = jsvNewFromFloat((JsVarFloat)rand() / (JsVarFloat)RAND_MAX); - return _r; - } else if (CMP4(name[1],'o','u','n','d') && name[5]=='\0') { - // Math.round (libs/jswrap_math.c) - JsVar *x = jspParseSingleFunction(); - JsVar *_r = jsvNewFromInteger((JsVarInt)round(jsvGetFloatAndUnLock(x))); - return _r; - } - } else if (CMP4(name[0],'w','r','a','p') && name[4]=='\0') { - // Math.wrap (libs/jswrap_math.c) - JsVar *x, *max; - jspParseFunction(0, &x, &max, 0, 0); - JsVar *_r = jsvNewFromFloat(wrapAround(jsvGetFloatAndUnLock(x), jsvGetFloatAndUnLock(max))); - return _r; - } else if (CMP4(name[0],'e','x','p','\0')) { - // Math.exp (libs/jswrap_math.c) - JsVar *x = jspParseSingleFunction(); - JsVar *_r = jsvNewFromFloat(exp(jsvGetFloatAndUnLock(x))); - return _r; - } - } - if (CMP4(parent->varData.str[0],'c','o','n','s') && CMP4(parent->varData.str[4],'o','l','e','\0')) { - if (CMP4(name[0],'l','o','g','\0')) { - // console.log (src/jswrap_interactive.c) - JsVar *text = jspParseSingleFunction(); - jswrap_interface_print(text); - jsvUnLock(text); - return 0; - } - } - if (jsvIsArrayBuffer(parent) && parent->varData.arraybuffer.type!=ARRAYBUFFERVIEW_ARRAYBUFFER) { - if (CMP4(name[0],'i','n','t','e') && CMP4(name[4],'r','p','o','l') && CMP3(name[8],'a','t','e')) { - if (CMP3(name[11],'2','d','\0')) { - // ArrayBufferView.interpolate2d (src/jswrap_arraybuffer.c) - JsVar *width, *x, *y; - jspParseFunction(0, &width, &x, &y, 0); - JsVar *_r = jsvNewFromFloat(jswrap_arraybufferview_interpolate2d(parent, jsvGetIntegerAndUnLock(width), jsvGetFloatAndUnLock(x), jsvGetFloatAndUnLock(y))); - return _r; - } else if (name[11]==0) { - // ArrayBufferView.interpolate (src/jswrap_arraybuffer.c) - JsVar *index = jspParseSingleFunction(); - JsVar *_r = jsvNewFromFloat(jswrap_arraybufferview_interpolate(parent, jsvGetFloatAndUnLock(index))); - return _r; - } - } else if (name[0]=='b') { - if (CMP3(name[1],'y','t','e')) { - if (CMP4(name[4],'L','e','n','g') && CMP3(name[8],'t','h','\0')) { - // ArrayBufferView.byteLength (src/jswrap_arraybuffer.c) - jspParseVariableName(); - JsVar *_r = jsvNewFromInteger(parent->varData.arraybuffer.length * JSV_ARRAYBUFFER_GET_SIZE(parent->varData.arraybuffer.type)); - return _r; - } else if (CMP4(name[4],'O','f','f','s') && CMP3(name[8],'e','t','\0')) { - // ArrayBufferView.byteOffset (src/jswrap_arraybuffer.c) - jspParseVariableName(); - JsVar *_r = jsvNewFromInteger(parent->varData.arraybuffer.byteOffset); - return _r; - } - } else if (CMP4(name[1],'u','f','f','e') && CMP2(name[5],'r','\0')) { - // ArrayBufferView.buffer (src/jswrap_arraybuffer.c) - jspParseVariableName(); - JsVar *_r = jsvLock(jsvGetFirstChild(parent)); - return _r; - } - } - } - if (jsvIsPin(parent)) { - if (CMP4(name[0],'s','e','t','\0')) { - // Pin.set (src/jswrap_pin.c) - jspParseEmptyFunction(); - jswrap_pin_set(parent); - return 0; - } else if (CMP2(name[0],'r','e')) { - if (CMP3(name[2],'a','d','\0')) { - // Pin.read (src/jswrap_pin.c) - jspParseEmptyFunction(); - JsVar *_r = jsvNewFromBool(jswrap_pin_read(parent)); - return _r; - } else if (CMP4(name[2],'s','e','t','\0')) { - // Pin.reset (src/jswrap_pin.c) - jspParseEmptyFunction(); - jswrap_pin_reset(parent); - return 0; - } - } else if (CMP4(name[0],'w','r','i','t') && name[4]=='e') { - if (CMP4(name[5],'A','t','T','i') && CMP3(name[9],'m','e','\0')) { - // Pin.writeAtTime (src/jswrap_pin.c) - JsVar *value, *time; - jspParseFunction(0, &value, &time, 0, 0); - jswrap_pin_writeAtTime(parent, jsvGetBoolAndUnLock(value), jsvGetFloatAndUnLock(time)); - return 0; - } else if (name[5]==0) { - // Pin.write (src/jswrap_pin.c) - JsVar *value = jspParseSingleFunction(); - jswrap_pin_write(parent, jsvGetBoolAndUnLock(value)); - return 0; - } - } - } - // ------------------------------------------ INSTANCE METHODS WE MUST CHECK CONSTRUCTOR FOR - JsVar *constructorName = jsvIsObject(parent)?jsvSkipOneNameAndUnLock(jsvFindChildFromString(parent, JSPARSE_CONSTRUCTOR_VAR, false)):0; - if (constructorName && jsvIsName(constructorName)) { - if (CMP4(constructorName->varData.str[0],'S','e','r','i') && CMP3(constructorName->varData.str[4],'a','l','\0')) { - jsvUnLock(constructorName);constructorName=0; - if (CMP4(name[0],'p','r','i','n') && name[4]=='t') { - if (CMP3(name[5],'l','n','\0')) { - // Serial.println (src/jswrap_serial.c) - JsVar *string = jspParseSingleFunction(); - jswrap_serial_println(parent, string); - jsvUnLock(string); - return 0; - } else if (name[5]==0) { - // Serial.print (src/jswrap_serial.c) - JsVar *string = jspParseSingleFunction(); - jswrap_serial_print(parent, string); - jsvUnLock(string); - return 0; - } - } else if (CMP3(name[0],'s','e','t')) { - if (CMP4(name[3],'C','o','n','s') && CMP4(name[7],'o','l','e','\0')) { - // Serial.setConsole (src/jswrap_serial.c) - jspParseEmptyFunction(); - jsiSetConsoleDevice(jsiGetDeviceFromClass(parent)); - return 0; - } else if (CMP3(name[3],'u','p','\0')) { - // Serial.setup (src/jswrap_serial.c) - JsVar *baudrate, *options; - jspParseFunction(0, &baudrate, &options, 0, 0); - jswrap_serial_setup(parent, jsvGetIntegerAndUnLock(baudrate), options); - jsvUnLock(options); - return 0; - } - } else if (CMP4(name[0],'o','n','D','a') && CMP3(name[4],'t','a','\0')) { - // Serial.onData (src/jswrap_serial.c) - JsVar *function; - jspParseFunction(0|JSP_NOSKIP_A, &function, 0, 0, 0); - jswrap_serial_onData(parent, function); - jsvUnLock(function); - return 0; - } else if (CMP4(name[0],'w','r','i','t') && CMP2(name[4],'e','\0')) { - // Serial.write (src/jswrap_serial.c) - JsVar *data = jspParseSingleFunction(); - jswrap_serial_write(parent, data); - jsvUnLock(data); - return 0; - } - } else if (CMP4(constructorName->varData.str[0],'O','n','e','W') && CMP4(constructorName->varData.str[4],'i','r','e','\0')) { - jsvUnLock(constructorName);constructorName=0; - if (name[0]=='s') { - if (CMP4(name[1],'k','i','p','\0')) { - // OneWire.skip (src/jswrap_onewire.c) - jspParseEmptyFunction(); - jswrap_onewire_skip(parent); - return 0; - } else if (name[1]=='e') { - if (CMP4(name[2],'a','r','c','h') && name[6]=='\0') { - // OneWire.search (src/jswrap_onewire.c) - jspParseEmptyFunction(); - JsVar *_r = jswrap_onewire_search(parent); - return _r; - } else if (CMP4(name[2],'l','e','c','t') && name[6]=='\0') { - // OneWire.select (src/jswrap_onewire.c) - JsVar *rom = jspParseSingleFunction(); - jswrap_onewire_select(parent, jsvGetIntegerAndUnLock(rom)); - return 0; - } - } - } else if (CMP2(name[0],'r','e')) { - if (CMP3(name[2],'a','d','\0')) { - // OneWire.read (src/jswrap_onewire.c) - jspParseEmptyFunction(); - JsVar *_r = jsvNewFromInteger(jswrap_onewire_read(parent)); - return _r; - } else if (CMP4(name[2],'s','e','t','\0')) { - // OneWire.reset (src/jswrap_onewire.c) - jspParseEmptyFunction(); - JsVar *_r = jsvNewFromBool(jswrap_onewire_reset(parent)); - return _r; - } - } else if (CMP4(name[0],'w','r','i','t') && CMP2(name[4],'e','\0')) { - // OneWire.write (src/jswrap_onewire.c) - JsVar *data, *power; - jspParseFunction(0, &data, &power, 0, 0); - jswrap_onewire_write(parent, jsvGetIntegerAndUnLock(data), jsvGetBoolAndUnLock(power)); - return 0; - } - } else if (CMP4(constructorName->varData.str[0],'I','2','C','\0')) { - jsvUnLock(constructorName);constructorName=0; - if (CMP4(name[0],'s','e','t','u') && CMP2(name[4],'p','\0')) { - // I2C.setup (src/jswrap_spi_i2c.c) - JsVar *options = jspParseSingleFunction(); - jswrap_i2c_setup(parent, options); - jsvUnLock(options); - return 0; - } else if (CMP4(name[0],'r','e','a','d') && CMP4(name[4],'F','r','o','m') && name[8]=='\0') { - // I2C.readFrom (src/jswrap_spi_i2c.c) - JsVar *address, *quantity; - jspParseFunction(0, &address, &quantity, 0, 0); - JsVar *_r = jswrap_i2c_readFrom(parent, jsvGetIntegerAndUnLock(address), jsvGetIntegerAndUnLock(quantity)); - return _r; - } else if (CMP4(name[0],'w','r','i','t') && CMP4(name[4],'e','T','o','\0')) { - // I2C.writeTo (src/jswrap_spi_i2c.c) - JsVar *address, *data; - jspParseFunction(0, &address, &data, 0, 0); - jswrap_i2c_writeTo(parent, jsvGetIntegerAndUnLock(address), data); - jsvUnLock(data); - return 0; - } - } else - jsvUnLock(constructorName); - } - } else { /* if (!parent) */ - // ------------------------------------------ FUNCTIONS - // Handle pin names - eg LED1 or D5 (this is hardcoded in build_jsfunctions.py) - int pin = jshGetPinFromString(name); - if (pin>=0) { - jspParseVariableName(); - return jsvNewFromPin(pin); - } - if (CMP4(name[0],'A','r','r','a') && CMP4(name[4],'y','B','u','f') && CMP4(name[8],'f','e','r','\0')) { - // ArrayBuffer.ArrayBuffer (src/jswrap_arraybuffer.c) - JsVar *byteLength = jspParseSingleFunction(); - JsVar *_r = jswrap_arraybuffer_constructor(jsvGetIntegerAndUnLock(byteLength)); - return _r; - } else if (CMP4(name[0],'a','n','a','l') && CMP2(name[4],'o','g')) { - if (CMP4(name[6],'R','e','a','d') && name[10]=='\0') { - // analogRead (src/jswrap_io.c) - JsVar *pin = jspParseSingleFunction(); - JsVar *_r = jsvNewFromFloat(jshPinAnalog(jshGetPinFromVarAndUnLock(pin))); - return _r; - } else if (CMP4(name[6],'W','r','i','t') && CMP2(name[10],'e','\0')) { - // analogWrite (src/jswrap_io.c) - JsVar *pin, *value, *options; - jspParseFunction(0, &pin, &value, &options, 0); - jswrap_io_analogWrite(jshGetPinFromVarAndUnLock(pin), jsvGetFloatAndUnLock(value), options); - jsvUnLock(options); - return 0; - } - } else if (name[0]=='c') { - if (CMP4(name[1],'h','a','n','g') && CMP4(name[5],'e','I','n','t') && CMP4(name[9],'e','r','v','a') && CMP2(name[13],'l','\0')) { - // changeInterval (src/jswrap_io.c) - JsVar *id, *time; - jspParseFunction(0, &id, &time, 0, 0); - jswrap_interface_changeInterval(id, jsvGetFloatAndUnLock(time)); - jsvUnLock(id); - return 0; - } else if (CMP4(name[1],'l','e','a','r')) { - if (CMP4(name[5],'I','n','t','e') && CMP4(name[9],'r','v','a','l') && name[13]=='\0') { - // clearInterval (src/jswrap_io.c) - JsVar *id = jspParseSingleFunction(); - jswrap_interface_clearInterval(id); - jsvUnLock(id); - return 0; - } else if (CMP4(name[5],'T','i','m','e') && CMP4(name[9],'o','u','t','\0')) { - // clearTimeout (src/jswrap_io.c) - JsVar *id = jspParseSingleFunction(); - jswrap_interface_clearTimeout(id); - jsvUnLock(id); - return 0; - } else if (CMP4(name[5],'W','a','t','c') && CMP2(name[9],'h','\0')) { - // clearWatch (src/jswrap_io.c) - JsVar *id = jspParseSingleFunction(); - jswrap_interface_clearWatch(id); - jsvUnLock(id); - return 0; - } - } - } else if (CMP3(name[0],'b','i','t')) { - if (CMP4(name[3],'S','e','t','\0')) { - // bitSet (src/jswrap_interactive.c) - JsVar *value, *bit; - jspParseFunction(0, &value, &bit, 0, 0); - jswrap_interface_bitSet(value, jsvGetIntegerAndUnLock(bit)); - jsvUnLock(value); - return 0; - } else if (CMP4(name[3],'R','e','a','d') && name[7]=='\0') { - // bitRead (src/jswrap_interactive.c) - JsVar *value, *bit; - jspParseFunction(0, &value, &bit, 0, 0); - JsVar *_r = jsvNewFromInteger(jswrap_interface_bitRead(jsvGetIntegerAndUnLock(value), jsvGetIntegerAndUnLock(bit))); - return _r; - } else if (CMP4(name[3],'C','l','e','a') && CMP2(name[7],'r','\0')) { - // bitClear (src/jswrap_interactive.c) - JsVar *value, *bit; - jspParseFunction(0, &value, &bit, 0, 0); - jswrap_interface_bitClear(value, jsvGetIntegerAndUnLock(bit)); - jsvUnLock(value); - return 0; - } else if (CMP4(name[3],'W','r','i','t') && CMP2(name[7],'e','\0')) { - // bitWrite (src/jswrap_interactive.c) - JsVar *value, *bit, *data; - jspParseFunction(0, &value, &bit, &data, 0); - jswrap_interface_bitWrite(value, jsvGetIntegerAndUnLock(bit), jsvGetIntegerAndUnLock(data)); - jsvUnLock(value); - return 0; - } else if (name[3]==0) { - // bit (src/jswrap_interactive.c) - JsVar *bit = jspParseSingleFunction(); - JsVar *_r = jsvNewFromInteger(jswrap_interface_bit(jsvGetIntegerAndUnLock(bit))); - return _r; - } - } else if (name[0]=='e') { - if (CMP4(name[1],'c','h','o','\0')) { - // echo (src/jswrap_interactive.c) - JsVar *echoOn = jspParseSingleFunction(); - jswrap_interface_echo(jsvGetBoolAndUnLock(echoOn)); - return 0; - } else if (CMP4(name[1],'d','i','t','\0')) { - // edit (src/jswrap_interactive.c) - JsVar *funcName; - jspParseFunction(0|JSP_NOSKIP_A, &funcName, 0, 0, 0); - jswrap_interface_edit(funcName); - jsvUnLock(funcName); - return 0; - } else if (CMP4(name[1],'v','a','l','\0')) { - // eval (src/jswrap_functions.c) - JsVar *code = jspParseSingleFunction(); - JsVar *_r = jswrap_eval(code); - jsvUnLock(code); - return _r; - } - } else if (name[0]=='d') { - if (CMP4(name[1],'i','g','i','t') && CMP2(name[5],'a','l')) { - if (CMP4(name[7],'P','u','l','s') && CMP2(name[11],'e','\0')) { - // digitalPulse (src/jswrap_io.c) - JsVar *pin, *value, *time; - jspParseFunction(0, &pin, &value, &time, 0); - jswrap_io_digitalPulse(jshGetPinFromVarAndUnLock(pin), jsvGetBoolAndUnLock(value), jsvGetFloatAndUnLock(time)); - return 0; - } else if (CMP4(name[7],'R','e','a','d') && name[11]=='\0') { - // digitalRead (src/jswrap_io.c) - JsVar *pin = jspParseSingleFunction(); - JsVar *_r = jsvNewFromInteger(jswrap_io_digitalRead(pin)); - jsvUnLock(pin); - return _r; - } else if (CMP4(name[7],'W','r','i','t') && CMP2(name[11],'e','\0')) { - // digitalWrite (src/jswrap_io.c) - JsVar *pin, *value; - jspParseFunction(0, &pin, &value, 0, 0); - jswrap_io_digitalWrite(pin, jsvGetIntegerAndUnLock(value)); - jsvUnLock(pin); - return 0; - } - } else if (CMP4(name[1],'u','m','p','\0')) { - // dump (src/jswrap_interactive.c) - jspParseEmptyFunction(); - jsiDumpState(); - return 0; - } - } else if (CMP4(name[0],'g','e','t','T') && CMP4(name[4],'i','m','e','\0')) { - // getTime (src/jswrap_interactive.c) - jspParseEmptyFunction(); - JsVar *_r = jsvNewFromFloat((JsVarFloat)jshGetSystemTime() / (JsVarFloat)jshGetTimeFromMilliseconds(1000)); - return _r; - } else if (CMP4(name[0],'F','l','o','a') && name[4]=='t') { - if (CMP4(name[5],'3','2','A','r') && CMP4(name[9],'r','a','y','\0')) { - // Float32Array.Float32Array (src/jswrap_arraybuffer.c) - JsVar *arr, *byteOffset, *length; - jspParseFunction(0, &arr, &byteOffset, &length, 0); - JsVar *_r = jswrap_typedarray_constructor(ARRAYBUFFERVIEW_FLOAT32, arr, jsvGetInteger(byteOffset), jsvGetInteger(length)); - jsvUnLock(arr); - jsvUnLock(byteOffset); - jsvUnLock(length); - return _r; - } else if (CMP4(name[5],'6','4','A','r') && CMP4(name[9],'r','a','y','\0')) { - // Float64Array.Float64Array (src/jswrap_arraybuffer.c) - JsVar *arr, *byteOffset, *length; - jspParseFunction(0, &arr, &byteOffset, &length, 0); - JsVar *_r = jswrap_typedarray_constructor(ARRAYBUFFERVIEW_FLOAT64, arr, jsvGetInteger(byteOffset), jsvGetInteger(length)); - jsvUnLock(arr); - jsvUnLock(byteOffset); - jsvUnLock(length); - return _r; - } - } else if (name[0]=='I') { - if (CMP2(name[1],'2','C')) { - if (CMP2(name[3],'1','\0')) { - // Object I2C1 (src/jswrap_spi_i2c.c) - #if I2CS>=1 - jspParseVariableName(); - return jspNewObject("I2C1", "I2C"); - #endif //I2CS>=1 - } else if (CMP2(name[3],'3','\0')) { - // Object I2C3 (src/jswrap_spi_i2c.c) - #if I2CS>=3 - jspParseVariableName(); - return jspNewObject("I2C3", "I2C"); - #endif //I2CS>=3 - } else if (CMP2(name[3],'2','\0')) { - // Object I2C2 (src/jswrap_spi_i2c.c) - #if I2CS>=2 - jspParseVariableName(); - return jspNewObject("I2C2", "I2C"); - #endif //I2CS>=2 - } - } else if (CMP2(name[1],'n','t')) { - if (CMP4(name[3],'1','6','A','r') && CMP4(name[7],'r','a','y','\0')) { - // Int16Array.Int16Array (src/jswrap_arraybuffer.c) - JsVar *arr, *byteOffset, *length; - jspParseFunction(0, &arr, &byteOffset, &length, 0); - JsVar *_r = jswrap_typedarray_constructor(ARRAYBUFFERVIEW_INT16, arr, jsvGetInteger(byteOffset), jsvGetInteger(length)); - jsvUnLock(arr); - jsvUnLock(byteOffset); - jsvUnLock(length); - return _r; - } else if (CMP4(name[3],'8','A','r','r') && CMP3(name[7],'a','y','\0')) { - // Int8Array.Int8Array (src/jswrap_arraybuffer.c) - JsVar *arr, *byteOffset, *length; - jspParseFunction(0, &arr, &byteOffset, &length, 0); - JsVar *_r = jswrap_typedarray_constructor(ARRAYBUFFERVIEW_INT8, arr, jsvGetInteger(byteOffset), jsvGetInteger(length)); - jsvUnLock(arr); - jsvUnLock(byteOffset); - jsvUnLock(length); - return _r; - } else if (CMP4(name[3],'3','2','A','r') && CMP4(name[7],'r','a','y','\0')) { - // Int32Array.Int32Array (src/jswrap_arraybuffer.c) - JsVar *arr, *byteOffset, *length; - jspParseFunction(0, &arr, &byteOffset, &length, 0); - JsVar *_r = jswrap_typedarray_constructor(ARRAYBUFFERVIEW_INT32, arr, jsvGetInteger(byteOffset), jsvGetInteger(length)); - jsvUnLock(arr); - jsvUnLock(byteOffset); - jsvUnLock(length); - return _r; - } - } - } else if (CMP4(name[0],'h','i','g','h') && CMP4(name[4],'B','y','t','e') && name[8]=='\0') { - // highByte (src/jswrap_interactive.c) - JsVar *value = jspParseSingleFunction(); - JsVar *_r = jsvNewFromInteger(jswrap_interface_highByte(jsvGetIntegerAndUnLock(value))); - return _r; - } else if (CMP4(name[0],'m','e','m','o') && CMP3(name[4],'r','y','\0')) { - // memory (src/jswrap_interactive.c) - jspParseEmptyFunction(); - JsVar *_r = jswrap_interface_memory(); - return _r; - } else if (CMP2(name[0],'l','o')) { - if (CMP3(name[2],'a','d','\0')) { - // load (src/jswrap_interactive.c) - jspParseEmptyFunction(); - jsiSetTodo(TODO_FLASH_LOAD); - return 0; - } else if (CMP4(name[2],'w','B','y','t') && CMP2(name[6],'e','\0')) { - // lowByte (src/jswrap_interactive.c) - JsVar *value = jspParseSingleFunction(); - JsVar *_r = jsvNewFromInteger(jswrap_interface_lowByte(jsvGetIntegerAndUnLock(value))); - return _r; - } - } else if (CMP4(name[0],'O','n','e','W') && CMP4(name[4],'i','r','e','\0')) { - // OneWire.OneWire (src/jswrap_onewire.c) - JsVar *pin = jspParseSingleFunction(); - JsVar *_r = jswrap_onewire_constructor(jshGetPinFromVarAndUnLock(pin)); - return _r; - } else if (name[0]=='p') { - if (CMP4(name[1],'a','r','s','e')) { - if (CMP4(name[5],'I','n','t','\0')) { - // parseInt (src/jswrap_functions.c) - JsVar *string, *radix; - jspParseFunction(0, &string, &radix, 0, 0); - JsVar *_r = jsvNewFromInteger(jswrap_parseInt(string, jsvGetIntegerAndUnLock(radix))); - jsvUnLock(string); - return _r; - } else if (CMP4(name[5],'F','l','o','a') && CMP2(name[9],'t','\0')) { - // parseFloat (src/jswrap_functions.c) - JsVar *string = jspParseSingleFunction(); - JsVar *_r = jsvNewFromFloat(jswrap_parseFloat(string)); - jsvUnLock(string); - return _r; - } - } else if (CMP4(name[1],'r','i','n','t') && name[5]=='\0') { - // print (src/jswrap_interactive.c) - JsVar *text = jspParseSingleFunction(); - jswrap_interface_print(text); - jsvUnLock(text); - return 0; - } else if (CMP3(name[1],'e','e','k')) { - if (CMP3(name[4],'1','6','\0')) { - // peek16 (src/jswrap_io.c) - JsVar *addr = jspParseSingleFunction(); - JsVar *_r = jsvNewFromInteger((JsVarInt)*(unsigned short*)jsvGetInteger(addr)); - jsvUnLock(addr); - return _r; - } else if (CMP2(name[4],'8','\0')) { - // peek8 (src/jswrap_io.c) - JsVar *addr = jspParseSingleFunction(); - JsVar *_r = jsvNewFromInteger((JsVarInt)*(unsigned char*)jsvGetInteger(addr)); - jsvUnLock(addr); - return _r; - } else if (CMP3(name[4],'3','2','\0')) { - // peek32 (src/jswrap_io.c) - JsVar *addr = jspParseSingleFunction(); - JsVar *_r = jsvNewFromInteger((JsVarInt)*(unsigned int*)jsvGetInteger(addr)); - jsvUnLock(addr); - return _r; - } - } else if (CMP3(name[1],'o','k','e')) { - if (CMP3(name[4],'1','6','\0')) { - // poke16 (src/jswrap_io.c) - JsVar *addr, *value; - jspParseFunction(0, &addr, &value, 0, 0); - (*(unsigned short*)jsvGetInteger(addr)) = (unsigned short)jsvGetInteger(value); - jsvUnLock(addr); - jsvUnLock(value); - return 0; - } else if (CMP2(name[4],'8','\0')) { - // poke8 (src/jswrap_io.c) - JsVar *addr, *value; - jspParseFunction(0, &addr, &value, 0, 0); - (*(unsigned char*)jsvGetInteger(addr)) = (unsigned char)jsvGetInteger(value); - jsvUnLock(addr); - jsvUnLock(value); - return 0; - } else if (CMP3(name[4],'3','2','\0')) { - // poke32 (src/jswrap_io.c) - JsVar *addr, *value; - jspParseFunction(0, &addr, &value, 0, 0); - (*(unsigned int*)jsvGetInteger(addr)) = (unsigned int)jsvGetInteger(value); - jsvUnLock(addr); - jsvUnLock(value); - return 0; - } - } - } else if (name[0]=='s') { - if (CMP4(name[1],'a','v','e','\0')) { - // save (src/jswrap_interactive.c) - jspParseEmptyFunction(); - jsiSetTodo(TODO_FLASH_SAVE); - return 0; - } else if (CMP2(name[1],'e','t')) { - if (CMP4(name[3],'I','n','t','e') && CMP4(name[7],'r','v','a','l') && name[11]=='\0') { - // setInterval (src/jswrap_io.c) - JsVar *function, *timeout; - jspParseFunction(0|JSP_NOSKIP_A, &function, &timeout, 0, 0); - JsVar *_r = jswrap_interface_setInterval(function, jsvGetFloatAndUnLock(timeout)); - jsvUnLock(function); - return _r; - } else if (CMP4(name[3],'S','l','e','e') && CMP4(name[7],'p','I','n','d') && CMP4(name[11],'i','c','a','t') && CMP3(name[15],'o','r','\0')) { - // setSleepIndicator (src/jswrap_interactive.c) - JsVar *pin = jspParseSingleFunction(); - jswrap_interface_setSleepIndicator(pin); - jsvUnLock(pin); - return 0; - } else if (CMP4(name[3],'B','u','s','y') && CMP4(name[7],'I','n','d','i') && CMP4(name[11],'c','a','t','o') && CMP2(name[15],'r','\0')) { - // setBusyIndicator (src/jswrap_interactive.c) - JsVar *pin = jspParseSingleFunction(); - jswrap_interface_setBusyIndicator(pin); - jsvUnLock(pin); - return 0; - } else if (CMP4(name[3],'T','i','m','e') && CMP4(name[7],'o','u','t','\0')) { - // setTimeout (src/jswrap_io.c) - JsVar *function, *timeout; - jspParseFunction(0|JSP_NOSKIP_A, &function, &timeout, 0, 0); - JsVar *_r = jswrap_interface_setTimeout(function, jsvGetFloatAndUnLock(timeout)); - jsvUnLock(function); - return _r; - } else if (CMP4(name[3],'W','a','t','c') && CMP2(name[7],'h','\0')) { - // setWatch (src/jswrap_io.c) - JsVar *function, *pin, *options; - jspParseFunction(0|JSP_NOSKIP_A, &function, &pin, &options, 0); - JsVar *_r = jswrap_interface_setWatch(function, jshGetPinFromVarAndUnLock(pin), options); - jsvUnLock(function); - jsvUnLock(options); - return _r; - } - } - } else if (CMP2(name[0],'r','e')) { - if (CMP4(name[2],'s','e','t','\0')) { - // reset (src/jswrap_interactive.c) - jspParseEmptyFunction(); - jsiSetTodo(TODO_RESET); - return 0; - } else if (CMP4(name[2],'g','i','s','t') && CMP3(name[6],'e','r','\0')) { - // register (src/jswrap_interactive.c) - JsVar *code = jspParseSingleFunction(); - jswrap_interface_register(code); - jsvUnLock(code); - return 0; - } - } else if (name[0]=='U') { - if (CMP3(name[1],'i','n','t')) { - if (CMP4(name[4],'1','6','A','r') && CMP4(name[8],'r','a','y','\0')) { - // Uint16Array.Uint16Array (src/jswrap_arraybuffer.c) - JsVar *arr, *byteOffset, *length; - jspParseFunction(0, &arr, &byteOffset, &length, 0); - JsVar *_r = jswrap_typedarray_constructor(ARRAYBUFFERVIEW_UINT16, arr, jsvGetInteger(byteOffset), jsvGetInteger(length)); - jsvUnLock(arr); - jsvUnLock(byteOffset); - jsvUnLock(length); - return _r; - } else if (CMP4(name[4],'8','A','r','r') && CMP3(name[8],'a','y','\0')) { - // Uint8Array.Uint8Array (src/jswrap_arraybuffer.c) - JsVar *arr, *byteOffset, *length; - jspParseFunction(0, &arr, &byteOffset, &length, 0); - JsVar *_r = jswrap_typedarray_constructor(ARRAYBUFFERVIEW_UINT8, arr, jsvGetInteger(byteOffset), jsvGetInteger(length)); - jsvUnLock(arr); - jsvUnLock(byteOffset); - jsvUnLock(length); - return _r; - } else if (CMP4(name[4],'3','2','A','r') && CMP4(name[8],'r','a','y','\0')) { - // Uint32Array.Uint32Array (src/jswrap_arraybuffer.c) - JsVar *arr, *byteOffset, *length; - jspParseFunction(0, &arr, &byteOffset, &length, 0); - JsVar *_r = jswrap_typedarray_constructor(ARRAYBUFFERVIEW_UINT32, arr, jsvGetInteger(byteOffset), jsvGetInteger(length)); - jsvUnLock(arr); - jsvUnLock(byteOffset); - jsvUnLock(length); - return _r; - } - } else if (CMP3(name[1],'S','B','\0')) { - // Object USB (src/jswrap_serial.c) - #if defined(USB) - jspParseVariableName(); - return jspNewObject("USB", "Serial"); - #endif //defined(USB) - } - } else if (CMP4(name[0],'t','r','a','c') && CMP2(name[4],'e','\0')) { - // trace (src/jswrap_interactive.c) - JsVar *root; - jspParseFunction(0|JSP_NOSKIP_A, &root, 0, 0, 0); - jswrap_interface_trace(root); - jsvUnLock(root); - return 0; - } else if (name[0]=='S') { - if (CMP2(name[1],'P','I')) { - if (CMP2(name[3],'1','\0')) { - // Object SPI1 (src/jswrap_spi_i2c.c) - #if SPIS>=1 - jspParseVariableName(); - return jspNewObject("SPI1", "SPI"); - #endif //SPIS>=1 - } else if (CMP2(name[3],'3','\0')) { - // Object SPI3 (src/jswrap_spi_i2c.c) - #if SPIS>=3 - jspParseVariableName(); - return jspNewObject("SPI3", "SPI"); - #endif //SPIS>=3 - } else if (CMP2(name[3],'2','\0')) { - // Object SPI2 (src/jswrap_spi_i2c.c) - #if SPIS>=2 - jspParseVariableName(); - return jspNewObject("SPI2", "SPI"); - #endif //SPIS>=2 - } - } else if (CMP4(name[1],'e','r','i','a') && name[5]=='l') { - if (CMP2(name[6],'1','\0')) { - // Object Serial1 (src/jswrap_serial.c) - #if USARTS>=1 - jspParseVariableName(); - return jspNewObject("Serial1", "Serial"); - #endif //USARTS>=1 - } else if (CMP2(name[6],'3','\0')) { - // Object Serial3 (src/jswrap_serial.c) - #if USARTS>=3 - jspParseVariableName(); - return jspNewObject("Serial3", "Serial"); - #endif //USARTS>=3 - } else if (CMP2(name[6],'2','\0')) { - // Object Serial2 (src/jswrap_serial.c) - #if USARTS>=2 - jspParseVariableName(); - return jspNewObject("Serial2", "Serial"); - #endif //USARTS>=2 - } else if (CMP2(name[6],'5','\0')) { - // Object Serial5 (src/jswrap_serial.c) - #if USARTS>=5 - jspParseVariableName(); - return jspNewObject("Serial5", "Serial"); - #endif //USARTS>=5 - } else if (CMP2(name[6],'4','\0')) { - // Object Serial4 (src/jswrap_serial.c) - #if USARTS>=4 - jspParseVariableName(); - return jspNewObject("Serial4", "Serial"); - #endif //USARTS>=4 - } else if (CMP2(name[6],'6','\0')) { - // Object Serial6 (src/jswrap_serial.c) - #if USARTS>=6 - jspParseVariableName(); - return jspNewObject("Serial6", "Serial"); - #endif //USARTS>=6 - } - } - } - } - return JSW_HANDLEFUNCTIONCALL_UNHANDLED; -} - - -bool jswIsBuiltInObject(const char *name) { - return -strcmp(name, "Pin")==0 || - strcmp(name, "console")==0 || - strcmp(name, "JSON")==0 || - strcmp(name, "Object")==0 || - strcmp(name, "Function")==0 || - strcmp(name, "Integer")==0 || - strcmp(name, "Double")==0 || - strcmp(name, "String")==0 || - strcmp(name, "Array")==0 || - strcmp(name, "ArrayBuffer")==0 || - strcmp(name, "ArrayBufferView")==0 || - strcmp(name, "Uint8Array")==0 || - strcmp(name, "Int8Array")==0 || - strcmp(name, "Uint16Array")==0 || - strcmp(name, "Int16Array")==0 || - strcmp(name, "Uint32Array")==0 || - strcmp(name, "Int32Array")==0 || - strcmp(name, "Float32Array")==0 || - strcmp(name, "Float64Array")==0 || - strcmp(name, "Serial")==0 || - strcmp(name, "SPI")==0 || - strcmp(name, "I2C")==0 || - strcmp(name, "OneWire")==0 || - strcmp(name, "Math")==0 || - strcmp(name, "url")==0; -} - - -/** Given a variable, return the basic object name of it */ -const char *jswGetBasicObjectName(JsVar *var) { - if (jsvIsFunction(var)) return "Function"; - if (jsvIsArrayBuffer(var) && var->varData.arraybuffer.type==ARRAYBUFFERVIEW_INT32) return "Int32Array"; - if (jsvIsString(var)) return "String"; - if (jsvIsPin(var)) return "Pin"; - if (jsvIsFloat(var)) return "Double"; - if (jsvIsArrayBuffer(var) && var->varData.arraybuffer.type==ARRAYBUFFERVIEW_ARRAYBUFFER) return "ArrayBuffer"; - if (jsvIsObject(var)) return "Object"; - if (jsvIsArrayBuffer(var) && var->varData.arraybuffer.type==ARRAYBUFFERVIEW_UINT8) return "Uint8Array"; - if (jsvIsArrayBuffer(var) && var->varData.arraybuffer.type==ARRAYBUFFERVIEW_UINT16) return "Uint16Array"; - if (jsvIsArrayBuffer(var) && var->varData.arraybuffer.type==ARRAYBUFFERVIEW_FLOAT64) return "Float64Array"; - if (jsvIsArrayBuffer(var) && var->varData.arraybuffer.type==ARRAYBUFFERVIEW_INT8) return "Int8Array"; - if (jsvIsInt(var)) return "Integer"; - if (jsvIsArray(var)) return "Array"; - if (jsvIsArrayBuffer(var) && var->varData.arraybuffer.type==ARRAYBUFFERVIEW_INT16) return "Int16Array"; - if (jsvIsArrayBuffer(var) && var->varData.arraybuffer.type==ARRAYBUFFERVIEW_FLOAT32) return "Float32Array"; - if (jsvIsArrayBuffer(var) && var->varData.arraybuffer.type==ARRAYBUFFERVIEW_UINT32) return "Uint32Array"; - return 0; -} - - -/** Given the name of a Basic Object, eg, Uint8Array, String, etc. Return the prototype object's name - or 0. */ -const char *jswGetBasicObjectPrototypeName(const char *objectName) { - if (!strcmp(objectName, "Uint8Array")) return "ArrayBufferView"; - if (!strcmp(objectName, "Int8Array")) return "ArrayBufferView"; - if (!strcmp(objectName, "Uint16Array")) return "ArrayBufferView"; - if (!strcmp(objectName, "Int16Array")) return "ArrayBufferView"; - if (!strcmp(objectName, "Uint32Array")) return "ArrayBufferView"; - if (!strcmp(objectName, "Int32Array")) return "ArrayBufferView"; - if (!strcmp(objectName, "Float32Array")) return "ArrayBufferView"; - if (!strcmp(objectName, "Float64Array")) return "ArrayBufferView"; - return strcmp(objectName,"Object") ? "Object" : 0; -} - - diff --git a/targets/arduino/keywords.txt b/targets/arduino/keywords.txt deleted file mode 100644 index 7aa81c9ca..000000000 --- a/targets/arduino/keywords.txt +++ /dev/null @@ -1,24 +0,0 @@ -####################################### -# Syntax Coloring Map For Test -####################################### - -####################################### -# Datatypes (KEYWORD1) -####################################### - -Test KEYWORD1 - -####################################### -# Methods and Functions (KEYWORD2) -####################################### - -doSomething KEYWORD2 - -####################################### -# Instances (KEYWORD2) -####################################### - -####################################### -# Constants (LITERAL1) -####################################### - diff --git a/targets/arduino/platform_config.h b/targets/arduino/platform_config.h deleted file mode 100644 index 7ba4c2ba3..000000000 --- a/targets/arduino/platform_config.h +++ /dev/null @@ -1,28 +0,0 @@ -#define ARDUINO -#define HAS_STDLIB - - -// SYSTICK is the counter that counts up and that we use as the real-time clock -// The smaller this is, the longer we spend in interrupts, but also the more we can sleep! -#define SYSTICK_RANGE 0x1000000 // the Maximum (it is a 24 bit counter) - on Olimexino this is about 0.6 sec -#define SYSTICKS_BEFORE_USB_DISCONNECT 2 - -#define DEFAULT_BUSY_PIN_INDICATOR (Pin)-1 // no indicator -#define DEFAULT_SLEEP_PIN_INDICATOR (Pin)-1 // no indicator - -// When to send the message that the IO buffer is getting full -#define IOBUFFER_XOFF ((TXBUFFERMASK)*6/8) -// When to send the message that we can start receiving again -#define IOBUFFER_XON ((TXBUFFERMASK)*3/8) - - #define RAM_TOTAL 8*1024 - #define IOBUFFERMASK 31 // (max 255) - #define TXBUFFERMASK 31 - #define DEFAULT_CONSOLE_DEVICE EV_SERIAL1 - #define USARTS 1 - #define SPIS 1 - #define ADCS 1 - - #define BTN_PININDEX 0 - #define BTN_ONSTATE 1 - diff --git a/targets/linux/jshardware.c b/targets/linux/jshardware.c index f075dbdea..a3b8b22d2 100644 --- a/targets/linux/jshardware.c +++ b/targets/linux/jshardware.c @@ -57,7 +57,7 @@ void sysfs_write(const char *path, const char *data) { void sysfs_write_int(const char *path, JsVarInt val) { char buf[20]; - itoa(val, buf, 10); + itostr(val, buf, 10); sysfs_write(path, buf); } @@ -291,7 +291,7 @@ void jshPinSetState(Pin pin, JshPinState state) { if (gpioState[pin] == JSHPINSTATE_UNDEFINED) sysfs_write_int(SYSFS_GPIO_DIR"/export", pin); char path[64] = SYSFS_GPIO_DIR"/gpio"; - itoa(pin, &path[strlen(path)], 10); + itostr(pin, &path[strlen(path)], 10); strcat(&path[strlen(path)], "/direction"); sysfs_write(path, JSHPINSTATE_IS_OUTPUT(state)?"out":"in"); gpioState[pin] = state; @@ -309,7 +309,7 @@ JshPinState jshPinGetState(Pin pin) { void jshPinSetValue(Pin pin, bool value) { #ifdef SYSFS_GPIO_DIR char path[64] = SYSFS_GPIO_DIR"/gpio"; - itoa(pin, &path[strlen(path)], 10); + itostr(pin, &path[strlen(path)], 10); strcat(&path[strlen(path)], "/value"); sysfs_write_int(path, value?1:0); #endif @@ -318,7 +318,7 @@ void jshPinSetValue(Pin pin, bool value) { bool jshPinGetValue(Pin pin) { #ifdef SYSFS_GPIO_DIR char path[64] = SYSFS_GPIO_DIR"/gpio"; - itoa(pin, &path[strlen(path)], 10); + itostr(pin, &path[strlen(path)], 10); strcat(&path[strlen(path)], "/value"); return sysfs_read_int(path); #else