mirror of
https://github.com/espruino/Espruino.git
synced 2025-12-08 19:06:15 +00:00
3269 lines
249 KiB
Plaintext
3269 lines
249 KiB
Plaintext
: Array.sort: fix issue where *some* sorts of 10+ items could cause the array not to be GC'd
|
|
Bangle.js: Updated built-in Layout.js with some minor fixes
|
|
STM32: Ensure setDeepSleep(1) will only sleep if there are no active PWM outputs
|
|
Pin.getInfo().negated now set if pin negated in firmware
|
|
Timers now have unique IDs (#1444)
|
|
Added `require("timer")` to access timers, removed `E.dumpTimers` and `Pin.writeAtTime` (fix #2586)
|
|
Added ability to execute JS from an a timer with `require("timer").add({type:"EXEC",...)`
|
|
Bangle.js: Add Bangle.setOptions({stepCounterDisabled:bool}) to disable the step counter
|
|
Date: fix parsing of ISO8601 timezones (+HHMM worked, but +HH:MM and +HH added) (fix #2669)
|
|
Bangle.js1: dump() now doesn't write out interpreter state as JS (saves 1.5kB Flash)
|
|
Espruino Pico: Removed 'tv' library by default to free up flash storage
|
|
Fix jshPopIOEventOfType when the event to be popped is right at the start
|
|
STM32: Tidy up WAKEUP timer handling to ensure the Wakeup is always the first item in the queue
|
|
E.defrag now defrags with interrupts enabled (also fix potential crash with 2 flat strings end to end)
|
|
Swap to using locks for watch&timer arrays (uses 4b more RAM, but faster and no defrag issues)
|
|
Bangle.js2: Remove buzz when going back in a menu using the button (not the widget)
|
|
|
|
2v28 : Add `E.internal` as a way to access the 'hidden root' containing Espruino internal variables that previously needed `global["\xff"]`
|
|
Bangle.js: Fix back handler not removed when using E.setUI with a back button but without widgets (#2636)
|
|
nRF52: Add 'slaveLatency' option to BluetoothRemoteGATTServer.connect, default changed from 2 to 4
|
|
nRF52: Add 'phy' and 'mtu' events to NRF/BluetoothDevice when these change on a connection
|
|
MDBT42Q: Remove SHA512 from the build (needs 2.5k flash, rarely used)
|
|
Bangle.js2: Adjust accelerometer axes for HRM algorithm to more closely match the datasheet
|
|
nRF52: Add NRF/BluetoothRemoteGATTServer.updateConnection for setting the phy
|
|
Bangle.js2: Add Bangle.setOptions({hrmStaticSampleTime})
|
|
Bangle.js2: Fix issue using touch handler with Bangle.setUI({mode:"updown",...}) (fix #2648)
|
|
Bangle.js2: Menus now buzz when back button pressed or icon tapped (fix #2642)
|
|
JIT: When referencing a built-in member function of a built-in (Math.*, E.*, PIN_NAME.*, etc) include address rather than looking up (#2398)
|
|
nRF52 Central: Lower min connection interval from 20->7.5ms, max 200->1000ms (allows some extra devices to be connected to)
|
|
Bangle.js2: Add optional long press button actions to `showPrompt` (#2656)
|
|
nRF52: Fix gatt.setRSSIHandler on the first active connection
|
|
Added i2cRead/WriteReg for simplified internal I2C code
|
|
Bangle.js2: Support for new Bangles with MMC36X0 magnetometer (Bangle.dbg() now shows info)
|
|
nRF5x: Add process.env.SOFTDEVICE for detecting which softdevice version is installed
|
|
Graphics.wrapString fix issue of line length of the line after a string with multiple dashes in
|
|
Updated test screen to work better when watch has been idle for a while
|
|
nRF5x: Fix assertion failure caused by receiving manufacturer data with 0 length
|
|
Bluetooth: Increase size of max advertising received (now ~120b on high MTU builds)
|
|
nRF52840: Fix crash if receiving >32b of advertisement data
|
|
Jolt.js: Fix memory leak in Q0/1/2/3.setPower
|
|
I2C: Fix readReg to ensure it sends I2C STOP after the read
|
|
Puck.js: E.getTemperature(true) will now use the uC's internal temp sensor (previously only external was possible)
|
|
Add fast path to xIntArray.indexOf
|
|
Add median-of-3 for Array.sort (1/3 of the compares for pre-sorted data)
|
|
Fix escape characters in strings inside templates inside templated strings `${"\n"}`
|
|
JIT: Fix floating point constants
|
|
Linux SDL: Use SDL2, more keys forwarded, allow resizing of gfx window
|
|
Fix Linux ARM64 build
|
|
Graphics: fix cropping of images in strings when gfx instance is rotated by 90 degrees
|
|
|
|
2v27 : nRF5x: Ensure Bluetooth notifications work correctly when two separate connections use the same handle for their characteristics
|
|
nRF5x: Remove handlers from our handlers array when a device is disconnected
|
|
Bangle.js: Fix wrapString when wrapping a non-UTF8 string containing UTF8 characters (fix #2633)
|
|
Ensure jshPushIOCharEvent is more stable when the FIFO is full
|
|
Bangle.js: g.findFont now attempts to use Intl:2 if there's room. Also fix memory leak
|
|
nRF52840: Add E.getVDDH() method to get VDDH voltage
|
|
Fix issue handling multi-line tempated strings pasted to REPL (2v26 regression)
|
|
Add a backtrace command to debugger, add console.trace command, set Error.stack in constructor (fix #2490)
|
|
Error.stack/stack dump now uses more standard file:line:col format
|
|
Out of memory errors now show a backtrace (previously it was very hard to track these down)
|
|
Increase chars shown in strings in console to 60
|
|
If debugging via bluetooth and we disconnect, quit debugging (locks Bluetooth otherwise)
|
|
Remove Line Number handling code (most code will be run out of Storage now, where we know the line number)
|
|
Debugger now uses jslPrintPosition to print file+line+col, is aware of Modules.addCached that IDE adds and discounts it
|
|
Fix Math.sin on negative numbers on extremely constrained builds (Bangle.js 1/Microbit) where we have to use a very small sin implementation (#2637)
|
|
Bangle.js2: Calling Bangle.getPressure() while a conversion is in progress now returns the same promise (so it will complete as soon as pressure data is ready) rather than erroring
|
|
Bangle.js2: Fix 2v22 regression where `E.showMenu({test:{}})` would display 'test:undefined'
|
|
Fat FS: Added `r+` file open mode (and allow w+ to read)
|
|
Fat FS: If can't allocate file, attempt defragmentation and try again
|
|
E.defrag() now defrags everything, including Flat Strings (fix #1740)
|
|
ESP32: Fix 2v26 regression which stopped many pins from being watched
|
|
Puck.js: Revert second timer accuracy tweak that broke Puck.IR in 2v26
|
|
E.setFlags({onErrorSave:true}) now saves any uncaught errors to a file in Storage called ERROR (#2583)
|
|
E.setFlags({onErrorFlash:true}) now flashes the red LED for 200ms on any uncaught errors
|
|
Puck.js: Fix Puck.magTemp() for hardware 2.1
|
|
|
|
2v26 : nRF5x: ensure TIMER1_IRQHandler doesn't always wake idle loop up (fix #1900)
|
|
Puck.js: On v2.1 ensure Puck.mag behaves like other variants - just returning the last reading (avoids glitches when used with Puck.magOn)
|
|
Fix escaping of `\r` in built-in modules, fixed regression that stopped Espruino WiFi 2v25 from connecting to Wifi
|
|
BLE: always return privacy info from NRF.getSecurityStatus(), regardless of connection state
|
|
Linux SDL build: mouse events now create `E.on("touch"` events like on CYD
|
|
nRF52: Bootloader now doesn't reset RESETREAS
|
|
nRF52: If we reboot because of LOCKUP, don't enable DCDC converter
|
|
Bangle.js2: Test screen now fails if no DCDC enabled
|
|
Bangle.js: Ensure fake LED1/LED2 remember state
|
|
Ensure E.setComparator is added to the build for nRF52
|
|
Bangle.js2: Update test to use accelerometer to test vibration motor
|
|
Build: Allow creating UF2 images
|
|
XiaoBLE: Add board: Seeed XIAO BLE
|
|
nRF5x: Allow entering UF2 bootloader mode by calling E.rebootToDFU() (on boards that have such a bootloader)
|
|
Graphics: Graphics.asImage() can now take x/y/w/h options to make only part of the graphics into an image
|
|
STM32: Revert hasSystemSlept=true before _WFI that caused jsTimer to get corrupted
|
|
Pipboy: allow audio files to be played at the same time as (silent) video. add audioStopped/videoStopped events and audioStop method
|
|
Pipboy: Pip.audioStartVar(wav,{overlap:true}) can now play sounds over the top of other sounds. audioRead now doesn't stop audio playback
|
|
STM32: Ensure proper distribution of analogRead values (now `0<=analogRead()<1` as on other boards) and add docs (fix #2612)
|
|
Change ioBuffer FIFO from 4 byte blocks to variable length blocks. Far more efficient for USB/BLE/other block data
|
|
STM32: Fix spi.write usage on same port that SD card is used with (fix #2613)
|
|
Bangle.js2: Added new Renaissance fonts and g.findFont function for selecting the best font
|
|
Bangle.js2: Fix issue when an onchange callback from E.showMenu submenu changes the menu immediately
|
|
Bangle.js: Added 'bpmMin/bpmMax' and 'activity' to 'health' event and 'Bangle.getHealthStatus'
|
|
Fix potential overflow of locks - favour small memory leak over accidental free if this ever happens (fix #2616)
|
|
micro:bit2: Ensure we don't initialise the I2C1 peripheral (we use software I2C internally)
|
|
Unlock functionCode early in function execution to reduce locks needed during recursion (#2616)
|
|
nRF52: Improve software timer accuracy by keeping timer running while executing jstUtilTimerInterruptHandler (fix #2620)
|
|
Bangle.js: setUI/etc now don't draw a 'back' icon if there is no widget bar (or it's hidden)
|
|
ESP32: Remove FlashFS, adjust partitions to increase available Storage from 256kB to 896kB
|
|
Storage: Don't attempt to compact if it's obvious that we don't have space for the file even when compacted
|
|
Increase Packet timeout from 1 to 5 sec (increase reliability over slow Bluetooth LE connections)
|
|
Bangle.js: fix .setUI back button stopped being drawn in the leftmost position after recent changes.
|
|
Fix 2v25 regression where `(new Date() instanceof Date) == false` (instanceof on objects that contain a `valueOf` method)
|
|
Storage: Ensure compaction removes any files with invalid file types
|
|
Puck.js: v2.2 compatibility
|
|
Graphics: stringMetrics (and so findFont) now doesn't set unrenderableChars for strings with a '\n' character
|
|
Bangle.js2: showPrompt better alignment of text if no title, and add buttonHeight option
|
|
nRF52: Move SDK15 builds from 6.0.0 to binary-compatible 6.1.1 softdevice (Jolt.js/Bangle.js 2)
|
|
Templated strings without Templates now treated as normal strings (fix #2577)
|
|
Add pretokenisation of 8/16 bit ints (fix #2563)
|
|
nRF5x: Fix BLE connection timeout (was 40ms, not 4s) for more reliable outgoing connections
|
|
Bangle.js2/Jolt.js: Increase GAP_EVENT_LENGTH to allow coded phy connections (1.2k more RAM used)
|
|
nRF52840: Ensure scannable is disabled (and warn) when advertising on coded phy
|
|
nRF52840: Allow scan parameters to be passed to `connect` (enabling coded phy connection)
|
|
nRF52840: Allow 1mbps,coded/coded,1mbps and up to double-length advertising in 'extended' advertising mode
|
|
BLE: Ensure all Espruino devices advertise the Espruino 0x0590 manufacturer ID by default
|
|
- The default Nordic UART scan response will be removed in future to reduce power usage
|
|
nRF52: Ensure that if enabled the HID service gets added to the main advertising packet (#2631)
|
|
nRF52: Fix unreliable internal flash writes when writing >2k (big issue for compaction) (fix #2509)
|
|
nRF52: Don't break out of flash erase/writes if interrupted (Ctrl-C) - these shouldn't take too long and can corrupt data if interruptable
|
|
Bangle.js2_iflash: If we can't write a JS file to internal flash, attempt to write to external instead
|
|
Bangle.js2_iflash: require("Storage").getStats() now sums both Storage pools by default
|
|
|
|
2v25 : ESP32C3: Get analogRead working correctly
|
|
Graphics: Adjust image alignment when rotating images to avoid cropping (fix #2535)
|
|
Bangle.js1: Switch to space-optimised sin/atan/atan2 to save enough space to continue building
|
|
ESP32C3: don't allow AP *AND* STA mode at the same time - solves issues when just calling 'wifi.connect' at boot
|
|
Emulator: ensure we include CallFunction stubs for Promises (fix regression after Promise refactor)
|
|
Pin.getInfo() now returns 'output' and 'mode' values, allowing the state of the output register to be queried
|
|
E.sendUSBHID now returns false if USB disconnected
|
|
(new Array(3)).includes(undefined) fix
|
|
USB: Disable software flow control as USB itself handles flow control
|
|
Graphics.createArrayBuffer can now be given an ArrayBuffer on initialisation (so it doesn't always try and allocate one)
|
|
Added packet transfer protocol for reliable code/file uploads - see README_Protocol.md
|
|
STM32F4: shorter timeout used for I2C/etc
|
|
STM32: add E.getClock() for retrieving more info on system clocks
|
|
Graphics: g.setColor(-1) now sets color to 0xFFFF (previously it would break antialiasing)
|
|
Added I2C.unsetup function
|
|
STM32: Stay away when USB is connected, even if no app is reading
|
|
Remove Ctrl-A/D/E/U/W code handling to free up flash space (the IDE/or VT100 terminals all use escape codes)
|
|
Ensure that 1%0.0===NaN (fix #2556)
|
|
Ensure Number("1A")==NaN, previously we just parsed the digits we could (fix #2555)
|
|
First argument of operators is now dereferenced before parsing second argument (fix #2547)
|
|
Ensure x%Infinity===x (fix #2542)
|
|
Bangle.js: Remove meridian from default locale.time function (to match 'Languages' app)
|
|
nRF5x: When finding the CCCD for a Bluetooth Characteristic, now check at +2 as well as +1 (fix Bluefruit NUS TX)
|
|
Jolt.js: Increase Storage area from 40kb to 400kb
|
|
nRF5x: Don't add BLE UART write events into the input buffer
|
|
ESP32: Timers are now turned off when requested - digitalPulse/soft pwm/writeAtTime more accurate
|
|
Bangle.js2: Remove debug log messages from E.showScroller
|
|
STM32F4: Update stm32f4xx_ll_usb to fix over-buffered USB CDC tx after being woken from deep sleep
|
|
Waveform: Add 'npin' option to allow +/- output on two pins
|
|
Waveform: Add ability to play directly from Storage
|
|
Puck.js: Remove networking support from default build, add PUCKJS_NETWORK -> espruino_2vxx_puckjs_network.zip builds for those that need it
|
|
Bangle.js: Added fastpaths for 2 and 4 bit arraybuffers, and massively improve 1 bit fills
|
|
Graphic.createArrayBuffer msb now defaults to true as it's rare to ever need msb:false
|
|
Ensure Math.random() can never be `1` as per spec (was unlikely before, but possible)
|
|
Add Math.randInt: not in spec, but very useful for embedded
|
|
Fix debugging of switch statements (fix #2562)
|
|
Network: enable parsing of 'https' URL and TLS flag even even TLS not built in (#2410)
|
|
removeListener while executing events no longer stops subsequent listeners from executing (#2151)
|
|
jsvObjectIterator is now safe even if not called on something iterable
|
|
X.on now always allocates an array - tidies up code (fix #2559)
|
|
Bangle.js: E.showMenu no longer sends the internal `l` menu object as argument when running the callback function.
|
|
Bangle.js2: GPS request RMC packet automatically (so GPS speed/time work even without AGPS) (fix #2354)
|
|
Bangle.js2: GPS now detects binary CASIC packets and splits them into their own GPS-raw event
|
|
Bangle.js2: Pass the modified touch event on through both E.showScroller and E.showMenu (to enable more complex interaction with menus).
|
|
Bangle.js: Add Bangle.setOptions({manualWatchdog:true}) to enable users to supply their own JS watchdog
|
|
Bangle.js2: DFU update from flash now retries if CRC doesn't match
|
|
Bangle.js2: Bootloader now shows 'Hold button to turn on' to avoid users assuming it is dead when it's not
|
|
Bangle.js2: Bootloader now 'Hold BTN to reboot' not 'BTN1 = REBOOT'/etc
|
|
ESP32C3: don't kick connected BLE devices off if reset() is called
|
|
ESP32C3: disable warnings about "BT_BTM: BTM_GetSecurityFlags false"
|
|
Handle semicolons between field declarations in classes
|
|
Ensure that pretokenised Strings are loaded as Flat Strings when executed from a String in RAM
|
|
E.nativeCall also checks to see if getting data as a flat string failed (could have caused segfault)
|
|
Fix for regression after #2547 fix (left hand operand of maths with a valueOf method)
|
|
X.on now allocates a new array for each new handler added, stops new handlers being called for the event that's currently being handled (#2559)
|
|
RegExp: add optimisation for RegExp that is simply checking if a string ends with something
|
|
Bangle.js: .setUI now only clears back widget if it hasn't been hidden by widget_utils
|
|
Fix UtilTimer timings when new task added infront of existing tasks (fix #2575)
|
|
Graphics: Fix issue where drawLine for 2px horizontal lines only drew a 1px dot
|
|
nRF52: Add E.setComparator to enable interrupts from LPCOMP
|
|
Add Serial.isConnected to check if Bluetooth/USB/etc actually connected
|
|
Pixl.js: Remove Wiznet W5100 support from default build (there's now a espruino_#v##_pixljs_wiznet.zip without JIT enabled) to ensure we have enough flash to continue builds
|
|
Enable nostartfiles optimisation for Pixl,MDBT42 and nRF52DK
|
|
STM32F4: Add SDIO support
|
|
STM32: Ensure we kick the WDT if auto kicking is enabled and in deep sleep (avoids having to to it manually and wait 30ms for USB to wake up/shut down)
|
|
Allow a 'file receive' packet which can request Espruino sends a file as binary packets (also fix files not being closed if transmission fails)
|
|
Fix parsing of semicolons in DO with a statement: `do print(a);while(a--);`
|
|
In SAVE_ON_FLASH builds (Microbit 1) remove getSerial, Math.LN*/LOG*SQRT* constants, passwords, Serial/I2C/SPI.find, Date.toUTCString
|
|
ESP32: add setIP and setAPIP
|
|
Graphics.wrapString fix issue with missing final char if immediately after a '.' or other char we can split after (#2572)
|
|
Graphics: g.dump/asBMP can now output 16 bit images
|
|
Crypto: Add support for AES CCM (enabled on Bangle.js 2)
|
|
Add Serial over SWD vis RTT (enabled on Bangle.js 2)
|
|
|
|
2v24 : Bangle.js2: Add 'Bangle.touchRd()', 'Bangle.touchWr()'
|
|
Bangle.js2: After Bangle.showTestScreen, put Bangle.js into a hard off state (not soft off)
|
|
Fix for unexpected power draw on newest batch of Bangle.js devices
|
|
Puck.js: skip CRT startup code to save ~300b
|
|
Fix memory leak when using Pin.getInfo on a pin with ADCs (and non-reporting of analogs)
|
|
Puck.js/Jolt.js: Ensure that firmware update ZIPs *do not* perform a self test at boot until they pass (only hex files that are used at the factory do)
|
|
Bangle.js2: If tapping at the bottom of the screen on a menu that is <12px onscreen, choose the menu item above (#3476)
|
|
Bangle.js: Ensure that the first button press event after a reboot is propagated to setWatch
|
|
Fix lexing of regex at the start of a if/loop (#2529)
|
|
ESP32: remove interrupt on/off code as it just causes a crash
|
|
ESP32: jshPinWatch now returns correct value (event ID vs pin number)
|
|
JS in the binary now uses jspExecuteJSFunctionCode which helps to skip a parsing step
|
|
JS modules that are included are now pretokenised
|
|
Bangle.js2: Now using pre-minified showRecoveryMenu and showTestScreen
|
|
Bangle.js2: Including Layout module in internal flash
|
|
|
|
2v23 : Fix XON/OFF thresholds to be based off the correct buffer size
|
|
Bangle.js2: Added BANGLE2_IFLASH target for firmware using internal flash for js files (currently only partially working)
|
|
Storage: If using internal+external, automatically put .bootcde and any libs in internal (as well as .js and .boot0)
|
|
Bangle.js2: Allow configuring device privacy to use random BLE addresses
|
|
Fix STM32 Nucleo regression from ESPR_PACKED_SYMPTR
|
|
Fixed issue with static fields in classes if defined before the constructor (fix #2517)
|
|
Jolt.js: ensure GPIO attached to outputs always default to input at startup
|
|
Graphics: Fix drawString centered multi-line alignment with UTF8 (fix #2519)
|
|
Bangle.js2: Fix 2v22 regression of overlays starting at nonzero offsets (#2520)
|
|
nRF52: Fix 2v22 regression that caused timekeeping to be off by ~500ppm
|
|
|
|
2v22 : Graphics: Ensure floodFill sets modified area correctly
|
|
nRF52: Lower expected BLE XTAL accuracy to 50ppm (can improve BLE stability on some Bangle.js 2)
|
|
Emulator: force stack alignment of 'data' variable when accessing ArrayBuffers (fix #2463)
|
|
Swapped GCC version from 8.2.1 to 13.2.1 (fix #2455)
|
|
nRF52: Write flash in 2k blocks (not 4k) as SD 6.1.1 can crash (probably good for earlier SD too)
|
|
g.wrapString fix issues wrapping long words in UTF8 strings over multiple lines
|
|
Bangle.js2: Fix parsing of UTF8 strings containing char codes 0xF5..0xFF (which are not valid UTF8)
|
|
nRF52: Added window/interval arguments to NRF.setScan (default was 100ms)
|
|
nRF52840: setScan({... phy:"both"}) now means coded+1mbps (ref #2465)
|
|
Added 'globalThis' var as it's the ECMAScript version of Node.js's 'global'
|
|
Bangle.js: Bangle.setUI's back widget now uses stopEventPropagation to stop other touch handlers getting called
|
|
Improvements to Stepper module (default to absolute movement)
|
|
Throw error if there's an attempt to use Tagged Templates (fix #2475)
|
|
For built-in symbols, pack string offset inside function pointer, saving 2 bytes/symbol if ESPR_PACKED_SYMPTR set (fix #2405)
|
|
Graphics: font metrics for PBF now account for scale, setFontPBF takes a scale argument, 'PBF' no longer appears in getFonts
|
|
Ensure require("Storage").writeJSON("test.json", new Date()) writes `Date.toISOString()` as in JSON.stringify and 2v19+earlier
|
|
E.toJSON now uses `.toJSON` function if available on object
|
|
Puck.js/Jolt.js: ensure self-test keeps re-running at boot unless it has passed
|
|
Bangle.js: Locale currency deprecated, 'number' updated to BangleApps version with thousands separator, date now doesn't sometimes have trailing spaces
|
|
Bangle.js: 6x15 font tweaks for ISO8859-1
|
|
Bangle.js2: Fix 'UNFINISHED STRING' error if non-UTF8 char within UTF8 start char range is at end of string
|
|
Bangle.js2: Add Bangle.setOptions({lcdDoubleRefresh:true}) to pulse EXTCOMIN for LCD twice, avoiding contrast 'toggle' effect when viewing LCD off axis
|
|
Graphics: Fix wrapString when attempting to wrap text containing an image that's too large for the wrappable area (fix #2481)
|
|
Add String.replaceAll to allow all occurrances of a string to be replaced (previously .replace(/substr/g, "") had to be used)
|
|
Jolt.js: Jolt.Q0/1/2/3 now available as global vars (Q0/1/2/3)
|
|
Storage.readJSON will now read numeric field names like "{1:1}" which can be produced by writeJSON (fix #2484)
|
|
Ensure `Bangle.load(".bootcde")` just calls `load()` if no uiRemove - fix error loading clock without widgets
|
|
Forward errors encountered while loading modules back into Espruino (fix #2485)
|
|
JIT: Fix issue where the 'jit' keyword got included in compiled code
|
|
JIT: If using a builtin global function (eg digitalWrite), use it directly rather than searching by name
|
|
JIT: Store type in 'vars' list so we're not having to jsvSkipName if we know it's not a name
|
|
JIT: Fix passing function parameters to object constructors (also arrays) (fix #2480)
|
|
Change 'hidden root' timers/watches callback->cb and interval->intr to save 2 vars per interval and make processing faster
|
|
Jolt.js: Add an 'auto' motor driver mode, and make it the default
|
|
digitalWrite: ensure `digitalWrite(pins, true)` sets *all* pins to `true`, not just the first
|
|
ESP32: Fix setServices with 128bit UUIDs, fix NRF.setServices' onWrite and notify/indicate
|
|
Add E.getPowerUsage() to get estimated power usage of a device based on what internal hardware is powered on and CPU use
|
|
Use shorter Puck.selfTest messages to save a bit of flash storage space
|
|
Bangle.js2: Bangle.showTestScreen now shows firmware and battery
|
|
Bangle.js1: After updating compiler, we need to add NOPs into display code to slow it down
|
|
Graphics: Fix g.setFontPBF(font) if no second argument for scale is provided
|
|
Add support for static+nonstatic fields in Classes
|
|
Graphics: fix endianness of palette when used with `g.asImage`
|
|
Fix issue using String.replace on flash-based (read only) strings
|
|
Bangle.js2: Stop Bangle.setLCDBrightness turning the LCD backlight on
|
|
Graphics.drawImages: add 'compose' and 'palette' operators to allow one image to be composed on another (for instance XOR on background)
|
|
Bangle.js2: Bangle.setOptions({lowResistanceFix:1}) now provides a workaround for Bangle.js owners that have a Bangle with a button that appears stuck on
|
|
Bangle.js: Remove calls to require('locale').translate in menus as it's been deprecated and replaced with /*LANG*/
|
|
Fix potential MEMORY_BUSY caused by Date requesting an integer from a var
|
|
- also speed up ObjectGetInteger by not requiring a new var to be allocated to unpack a NAME_INT
|
|
jsvSkipName speed improvements by avoiding repeated masking of flags
|
|
No longer call jsvKill/Init when resetting, but just jsvReset (this avoids free+malloc on ESP32)
|
|
Bangle.js2: Bangle.setLCDOverlay can now take an object with {id:str, remove:fn} to deal with multiple users of overlays better
|
|
Bangle.js1: Fix issue where going out of and back into a menu would cause 'Back' to be added twice (fix #2470)
|
|
Bangle.js2: Added Graphics.filter (to allow gaussian/etc filters to be applied to graphics instances for borders/blur)
|
|
Graphics.drawImages layer x/y can now be non-integer (smoother movement on scaled/rotated images)
|
|
Puck.js: Fix Puck.selfTest() regression
|
|
|
|
2v21 : nRF52: free up 800b more flash by removing vector table padding
|
|
Throw Exception when a Promise tries to resolve with another Promise (#2450)
|
|
Add 'lcdBufferPtr' to Bangle.getOptions
|
|
Allow E.nativeCall to take 32 bit floats (eg for Inline C)
|
|
Add built-in Stepper motor handling with the `Stepper` class (if enabled in build)
|
|
Fix issue requesting constructor of builtin before the class itself has been accessed (fix #2451)
|
|
Allow pretokenisation to store raw, unencoded Strings for speed/efficiency
|
|
Automatic decoding and pretokenisation of 'atob(".....")' strings
|
|
Pull out pretokenisation on SAVE_ON_FLASH boards (pretokenised code can be executed, it's just not tokenised in Espruino - saves 1kb)
|
|
Bangle.js: Fix out of bounds coordinates in LCD code that caused screen corruption on newer GCC builds (#2455)
|
|
Bangle.js2: In flash bootloader, don't store flash write code in RAM (no need) (fix #2458)
|
|
Remove 65535-char max native string length restriction introduced in 2v20 on devices that could support more like Bangle.js 2
|
|
E.memoryArea(0, ...) now returns `undefined`
|
|
Fix issue using Flat/Flash/Native Strings to create fields in objects
|
|
Optimise pretokenised Strings so we load very short strings direct to RAM
|
|
Add jsvGet...Child functions to replace common call patterns - saves 280 bytes on Pico
|
|
Fix issue with g.wrapString when running on flash-based strings
|
|
Fix lock leak when using flat/flash/native strings as object indices
|
|
Fix g.wrapString lockup if wrap width is less than the character width
|
|
Fix potential for crash after ReferenceError during function declaration (fix #2457)
|
|
STM32: (Original/Pico/WiFi) if USB connected but PC not receiving data, throw away USB data rather than blocking (fix #2446)
|
|
Move commonly used sequences of function calls into functions (eg jsvRemoveChild,jsvUnLock -> jsvRemoveChildAndUnLock) - saves ~200b
|
|
|
|
2v20 : Ensure String.charCodeAt returns NaN for out of bounds chars
|
|
Bangle.js2: When rendering overlays, *do not* use the current FG/BG color for 1 bit overlays
|
|
nRF52 SDK15: Fix UART when >1 central link enabled
|
|
Bangle.js2: Allow 2 central links at once
|
|
Fix `if (0);"test"||fail()` 2v19 regression - strings after if(0) didn't get interpreted
|
|
Ensure eval("1;;;")==1 - eval("1;")==1 before, but not eval("1;;")
|
|
Ensure AssignmentExpr returns the value of LHS, not the LHS. `(a=2)=3` now fails (as per spec)
|
|
Ensure default args for arrow functions fail with error `(a,b=3)=>a+b` now fails (until default args get added)
|
|
nRF52: bootloader asks for connection interval 7.5->30ms now, not just 15ms. Should improve DFU on iOS 16 which doesn't honour 15ms request
|
|
Fix unicode in object keys when UTF8 support enabled, eg. {'\u00e4':1}
|
|
Bangle.js: Change order of items in the Recovery Menu (hold BTN at boot) to put more common options first
|
|
Tidying up error messages (no trailing '.' or '\n'), making almost-similar error messages the same
|
|
Fix issue using `String.concat` with flash strings (fix #2268)
|
|
jsvFindChildFromString enhancement - adds 10% performance on minified code
|
|
Remove createChild argument from jsvFindChildFromString, add jsvFindOrAddChildFromString instead
|
|
Add ES9 optional catch binding (`try {} catch {}`)
|
|
Bangle.js: Fix terminal's repeated call to '.flip' that broke double buffering on Bangle.js 1
|
|
JIT: Ensure ternary block skips 'named' variables (and references them correctly)
|
|
Fix for UNFINISHED REGEX syntax error when parsing `true / false` (fix #2424)
|
|
Allow `throw undefined` to still show an exception in the REPL (fix #2423)
|
|
When parsing function declarations, don't interpret the strings inside them
|
|
Bangle.js2: Fix spurious tap events when HRM enabled by changing threshold
|
|
Reinstate `if (0);"test"` fix after f87a53c accidentally reverted it
|
|
Bangle.js2: Do a soft reset every time we start the SPL06 pressure sensor (stops occasional sensor lockup)
|
|
Graphics: wrapString will now wrap lines on comma, dot, dash, and between images
|
|
Graphics: Improve PBF font loading to handle v3, plus Espruino extension to handle >10k glyphs in one file
|
|
Fix unicode in object accesses, eg c["\u00FC"]=42 (fix #2429)
|
|
Storage: Storage.writeJSON now escapes with a more compact `\x##`/`\#` character escape notation (still valid JSON)
|
|
This allows Espruino to save non-unicode strings with characters in the unicode range, and to also re-load them as non-unicode
|
|
Graphics: Graphics.stringMetrics now returns 'unrenderableChars/imageCount/maxImageHeight' for much more info about rendering strings
|
|
Graphics: wrapString now also wraps on slashes (to allow wrapping of URLs)
|
|
nRF5x: when connecting to other devices, allow a slave latency of 2 (might increase reliability)
|
|
Fix `Got [ERASED] expecting X` when storage compacts while executing a function *in* storage on non-Bangle devices (fix #2431)
|
|
JIT: Fix crashes when code got too big for simple 2-byte jump instructions (fix #2433)
|
|
JIT: Fixed/re-added while loops (and DO for huge loops)
|
|
Storage: Storage.writeJSON now skips quotes on alphanumeric field names to speed up settings read/write
|
|
Graphics: fix drawing image in string inside cliprect when rotated (fix #2435)
|
|
Bangle.js: Add wakeOnDoubleTap to Bangle.setOptions, "lock" event now has second argument giving a reason (if known)
|
|
nRF5x: On SDK15 ensure nonconnectable+nonscannable advertisements are not sent as extended
|
|
nRF52840: jsvReadVRef now reads VDDH value (not VDD, which is almost always internally regulated)
|
|
Ensure we error if an unsupported byteOffset is supplied to types array constructor (fix #2439)
|
|
I2C: Add I2C.readReg to combine I2C.writeTo+readFrom in an easy/fast way
|
|
Microbit2: Set up SCK/LRCK to unused pins for neopixel to ensure neopixel will work ok
|
|
ESP8266/others: Fix ArrayBuffers with 12 bit JsVars (previously they overflowed)
|
|
Ensure E.setDST disables E.setTimeZone, and vice-versa.
|
|
Added console.debug/info/warn/error as aliases of console.log
|
|
nRF5x: Fix INVALID_PARAM error when connecting to other BLE device when maxInterval or NRF.setLowPowerConnection specified
|
|
Bangle.js2: Add 'Test' option to factory reset menu, and Bangle.showTestScreen()
|
|
Added Pin.pulse/pwm/analog as aliases of digitalPulse,analogWrite,analogRead
|
|
|
|
2v19 : Fix Object.values/entries for numeric keys after 2v18 regression (fix #2375)
|
|
nRF52: for SD>5 use static buffers for advertising and scan response data (#2367)
|
|
Bangle.js: Add Bangle.showRecoveryMenu, and if storage is corrupt then show it rather than automatically doing factory reset
|
|
Fix Graphics.createImage if the last character is a newline
|
|
Graphics: Fix issue if drawImage given a non-image
|
|
Added optional Unicode support (Linux/Bangle.js only currently)
|
|
Added optional PBF font loading support (Linux/Bangle.js only currently)
|
|
Fix recent regression in switch handling caused by Strings only being interpreted when executing
|
|
Ensure [].length is a constant (we don't support assignment)
|
|
Bangle.js: showMenu now won't redraw menu items if the onchange handler changed the menu
|
|
Graphics: Add Espruino-specific extension to PBF font loader to handle 2bpp
|
|
Graphics: Improve blendColor when outputting to 2/4/8bpp Graphics
|
|
Graphics: Allow setFont(...) to work with >1bpp and PBF fonts
|
|
Add Object.addListener(same as '.on') and prependListener to allow a handler to be added first
|
|
Fix regression with g.wrapString and long UTF8 strings (fix #2385)
|
|
Bangle.js2: Fix reusing touch coordinates under high load (fix #2374)
|
|
Bangle.js: setUI now has a 'redraw' argument to allow apps to provide a way to redraw themselves
|
|
Now executes ".bootPowerOn" from Storage on first boot after power restored
|
|
Bangle.js: Add Bangle.setBacklight(), Bangle.backlight event, Bangle.isBacklightOn() and allow input when lcd off if lockTimeout is 0 (fix #2383)
|
|
Added NRF.eraseBonds() to allow peer manager info to be removed (other than by holding all buttons down)
|
|
nRF52840: Fix potential 'SPI Send Error 17' SPI lockup
|
|
Bangle.js2: Fix number selector first draw in menu after 'redraw' argument added
|
|
Bangle.js2: number selector now supports tapping at top/bottom to increment/decrement value
|
|
Storage: StorageFiles don't store addr/len any more, they look up the file for each write (safer, and fast now we have a filename cache)
|
|
Graphics: g.dump() will now work without allocating huge buffers
|
|
nRF52: Added CTS (Current Time Service) support to ANCS/AMS code
|
|
nRF52: Add NRF.on('error') event to provide an easy way to check for Softdevice errors
|
|
If a jshardware op is interrupted, report "Interrupted in X" and not "Timeout on X"
|
|
Ensure Ctrl-C/holding button cannot break out of compaction
|
|
Bangle.js: don't compact storage if less than 10% battery
|
|
Support for Overlays when SPILCD driver used
|
|
Bangle.js2: Show a message on screen when compacting storage (fix #2391)
|
|
Storage: Compaction now starts from the last uncompacted page - faster if only partly compacted (#2391)
|
|
Graphics: drawImage now avoids getting pixels top/bottom of an image that might be cropped/offscreen
|
|
Bangle.js: Handle pushing events via the event queue (allows events to be queued rather than lost)
|
|
Bangle.js2: Allow HRM environment sensor data to be pushed, also add flags for disabling auto exposure and wear detect
|
|
Fix failure to run JIT caused by String interpreting optimisation
|
|
JIT: JIT failures now don't stop execution of subsequent commands - function is just executed as normal JS
|
|
JIT: Fix scoping of JITed functions (they can now access vars in the scope they were defined in)
|
|
Improve execution speed by not parsing strings when skipping blocks
|
|
Graphics: drawImage(...,{filter:1}) added to allow smooth downscaling of images
|
|
Graphics: fix for images in drawString when completely offscreen (regression after drawImage optimisation)
|
|
Storage: Output progress on FactoryReset and Compact
|
|
nRF5x: Ensure we don't start advertising immediately after softdevice restart if NRF.sleep() was used
|
|
Bangle.js2: Ensure `HRM-raw.raw` is set correctly after we moved to binary hrm algorithm
|
|
nRF5x: Add `NRF.on("passkey", ...)` to allow passkey pairing with `NRF.setSecurity({mitm:1, display:1});`
|
|
nrf52: Allow disabling pairing with `NRF.setSecurity({pair:0})`
|
|
Allow E.pipe to pipe from Strings, remove pipe's internal `position` counter (fix #2352)
|
|
Bangle.js 1: remove OneWire,I2C,SPI as it uses too much flash space to exist alongside UTF8+Tensorflow+JIT on nRF52
|
|
ARM: Apply -fmerge-all-constants to the build (saves ~1kb)
|
|
Bangle.js: If screen is rotated, also rotate accelerometer and magnetometer values
|
|
Microbit1: don't include text versions of Bluetooth error messages (just the error number) to save some memory
|
|
|
|
2v18 : Fix drawString with setClipRect with 90/270-degree rotation (fix #2343)
|
|
Pico/Wifi: Enabled JIT compiler
|
|
Ensure that if JIT fails, we correctly remove just the "jit" tag and treat the function as normal JS
|
|
nRF52: Add NRF.setAdvertising({},{whenConnected:true}) to allow advertisements to be sent while a connection is active
|
|
nRF52: Fix NRF.getSecurityStatus's 'advertising' field (only appeared when connected previously)
|
|
Fix 'ghosting' issue on Welcome screen (forcing timeout/lcdPower/etc at boot could disable the EXTCOMIN toggle)
|
|
nRF52: OneWire accesses are now scheduled with the Timeslot API to avoid the softdevice interfering (fix #1831)
|
|
nRF52: Add NRF.on('bond'/'advertising') events to keep track of BLE status more easily
|
|
Pixl.js: Switch to slower ROM-saving sin/cos/atan/atan2 (running out of free space after JIT enabled)
|
|
Graphics: Ensure fillPoly clips out of range (+/-2048) coordinates
|
|
nRF52: Fix regression after whenConnected:true addition. NRF.wake() will now not start advertising when connected unless whenConnected:true is set.
|
|
STM32: neopixel: Fix small glitches in the output pin just before writes that could throw off APA10x LEDs
|
|
Bangle.js2: Ensure that changing a menu item when half-scrolled off screen doesn't overwrite widgets
|
|
Puck.js: Ensure acc/gyro doesn't cause watch events to be added to the input queue (more efficient)
|
|
Waveform: Fix waveform input/output when not done at system start - Since 2v13 start time was set in the past
|
|
Fix ordering of Pin check in wrapper (so autocomplete and Pin prototype works)
|
|
Bangle.js2: Switched to proprietary heart rate algorithm (from our Open Source version). It just works better.
|
|
JIT: Implemented do { a } while (b)
|
|
Ensure that for(in), Object.keys and Object.getOwnPropertyNames return array indices as strings (not numbers)
|
|
Fix memory leak when an error happens while parsing function arguments - eg `print(1,2,3,JSON.parse("!%^$^"),123)`
|
|
Bangle.js2: Added Bangle.setOptions({hrmSportMode})
|
|
ESP32: Fix reset() causing meditation error (ref #1777)
|
|
ESP32: Ensure XON/XOFF flow control is enabled
|
|
ESP32: Advertising name is now 'Espruino abcd'
|
|
ESP32: BLUETOOTH UART IS ENABLED BY DEFAULT - disable with `NRF.setServices({},{uart:false})`
|
|
Bangle.js: GPS event now works even if only GGA NMEA events are enabled (which you might do for speed)
|
|
Add Serial.flush() to allow us to wait for transmission on a device to finish
|
|
Fix for var link corruption when replacing a native function with a normal one (fix #2361)
|
|
Fix memory leak (and assert in debug mode) when iterating over an object with proto with for...of (fix #2360)
|
|
Fix debug assert when reversing an array with non-integer elements (fix #2362)
|
|
Fix debug assert when using instanceof if __proto__ was set to non-object (fix #2363)
|
|
Fix debug assert when creating a function with code that isn't a string (fix #2364)
|
|
Fix debug assert parsing {}=>{} when not executing (fix #2365)
|
|
Fix issue with Graphics.createImage if more than the first line was empty (fix #2296)
|
|
Bangle.js: Now auto-reset compass if it was on while the watch was charging (fix https://github.com/espruino/BangleApps/issues/2648)
|
|
Graphics: Added .floodFill method to allow flood fill
|
|
Added E.stopEventPropagation() to allow event propagation to be stopped with multiple X.on('...', ...)
|
|
Graphics: g.drawImage(gfx) now reads palette+transparent fields if they exist in a Graphics object
|
|
Graphics: g.asImage() now reads palette+transparent fields (if they exist) in a Graphics object
|
|
Ensure Graphics uses jswrap_math_sin/jswrap_math_cos (saves ~5k on SAVE_ON_FLASH_MATH builds)
|
|
Modified E.toString to always return a String (not necessarily flat) - fixes occasion errors in Bangle.js clocks that use it when setting up fonts
|
|
Added E.toFlatString (using old E.toString behaviour)
|
|
Ensure Promise.all completes even if empty or containing pre-resolved promises (fix #2371)
|
|
Allow Graphics.createImage to use '.' as a placeholder for an empty area
|
|
Bangle.js: If a Storage file called '.loading' exists, use that instead of the loading screen
|
|
Bangle.js: E.showPrompt now resets background color before clearing the screen
|
|
Bangle.js2: Ensure overlays are flipped when screen is flipped 180 degrees (eg. left-handed mode)
|
|
Bangle.js2: Automatically switch the heart rate algorithm into sport mode when a certain amount of movement is detected
|
|
|
|
2v17 : Bangle.js: When reading file info from a filename table, do it in blocks of 8 (20% faster file search)
|
|
Bangle.js2: Increase flash buffer size from 16->32 bytes (5% performance increase)
|
|
ESP32: update esp-idf to v3.3.6
|
|
Bangle.js2: Fix issue where Bangle.getPressure could leave the barometer on
|
|
Bangle.js2: Bootloader update - triple-check CRC after writing firmware and retry if it fails
|
|
Bangle.js2: setUI(updown/leftright) now responds to button on falling (not rising) edge
|
|
If we get an unhandled exception, ensure we keep the stack trace intact
|
|
Array.sort() with undefined elements now puts them at the end of the array (as per spec - #2300)
|
|
Bangle.js1/2: Fix showMenu/showScroller spacing with back if no widgets loaded (ref #2286)
|
|
Bangle.js1: Bangle.setUI({back}) now responds to BTN3 if there were no other watches on buttons
|
|
ESP32: Allow up to 16k vars (if enough memory), allow non-active scan, and remove 30s BLE scan limit
|
|
Graphics: Ensure a scroll inside a cliprect can't go out of bounds (previously it was bounded to screen)
|
|
Puck.js: Fix regression in 2v15/2v16 that stopped Puck.js v1 using magnetometer
|
|
Bangle.js2: Fix scroller overlap with widget bar when scrolled more than the screen's height in one step
|
|
Bangle.js2: Improve touchscreen handling to handle out of range data from the controller on some devices
|
|
Bangle.js: Improve ANCS stability - cancel ongoing tasks if an error is reported
|
|
ESP32: setScan/findDevices/requestDevice now fill in `id` with the mac address followed by private/random/etc as NRF52 does
|
|
ESP32: disconnect event now gives 'reason' (as NRF52)
|
|
ESP32: Bluetooth scanning now uses event queue (fixes MEMORY_BUSY)
|
|
ESP32: Implement E.enableWatchdog
|
|
Speed up tab complete on large ArrayBuffers
|
|
Support for ArrayBuffers over 64k in size
|
|
Fix issue that could cause some variables not to be freed as soon as they weren't needed (requiring GC more often)
|
|
Fix lock leak if out of memory error occurs during 'var' initial assignment
|
|
Graphics: Add color mappings when rendering 3->4bpp and 3->8bpp
|
|
Bangle.js2: make the 4bpp mac palette more saturated to account for the LCD
|
|
ESP32: partition table updated in EspruinoBuildTools to ensure bootloader doesn't mistake js_code/storage for an otadata partition
|
|
ESP32: Add ESP32.setOTAValid(false) to allow the current partition to be marked as invalid (causing 'factory' to be booted into)
|
|
JIT: Arrays can now be defined in JIT code (`[1,2,3]`/etc)
|
|
JIT: Objects can now be defined in JIT code (`{a:2,b:3}`/etc)
|
|
JIT: 'this' can be used in JIT code
|
|
JIT: Support for short-circuit operators && and || (#2313)
|
|
JIT: Increased compile speed ~5x using iterators for string append
|
|
ESP32: Fix build with asserts enabled
|
|
ESP32: Add BTN1 (D0/BOOT) and LED1 (D2) as these appear to be reasonably common in boards
|
|
Add ability to add custom boot code inside the build with JSMODULESOURCES+=_:bootfile.js
|
|
Pixl.js: Don't load the splash screen if BTN1 and BTN4 held down (for recovery purposes)
|
|
Fix potential lock leaks during out of memory errors
|
|
Graphics: Added g.getVectorFontPolys to allow the underlying polygons behind a vector font to be retrieved
|
|
nRF5x: ensure we only clear pairing data if ALL buttons are pressed at boot to avoid accidental deletion
|
|
Graphics: Fix font clipping on rotated non-square graphics instances (fix #2326)
|
|
Fix jsvDumpLockedVars when flat strings are in memory (https://github.com/espruino/Espruino/issues/2323#issuecomment-1426107603)
|
|
Fix bool return values when building for 64 bit (fix #2323)
|
|
nRF52: Add support for 7 bit UART tx/rx (and parity) and error if a UART setting can't be honoured (fix #2324)
|
|
Bangle.js2: Fix regression in E.showMenu so you can use menu items with ':undefined' (as in the example in the reference)
|
|
Graphics: Ensure that an error is thrown if a palette is used in >8 bit images. It was previously possible to ask for a palette on a 32 bit image, which caused an overflow
|
|
Fix issue extending a class from a class from a class (fix #1529)
|
|
Added Object.getOwnPropertyDescriptors
|
|
Added Object.fromEntries (fix #2327)
|
|
Ignore whitespace after ':' in HTTP headers (fix #2331)
|
|
Don't allocate RegEx if just scanning over code
|
|
Don't store String/RegEx data in variables if we're just scanning over code
|
|
Ensure that if possible we create a JsVar Name direct from the underlying string, rather than creating and then converting (#2329)
|
|
Bangle.js2: Fix Compass Z heading (fix #2332)
|
|
Micro:bit 1: remove support for paletted images to free up flash
|
|
Bangle.js: Fix for Bangle.is* functions after #2323 fix
|
|
MakeIntoVariableName now shifts oversize strings around rather than re-allocating, which reduces fragmentation (#2329)
|
|
Fix scopes in `eval` (now uses the current function's scope) - fixes `(function(){eval("var x=42;print(x);")})()`
|
|
Ensure new StorageFiles have 'len' set to 0
|
|
try...finally block now executes even if we do a 'return/break/continue' inside it (fix #2338)
|
|
Bluetooth: getSecurityStatus now returns 'advertising' field showing if we're advertising or not
|
|
Fix continue when used inside switch statement (fix #2339)
|
|
Storage: Fix issue locating js/.boot0 files on external storage when running with 2 Storage banks (doesn't affect Bangle.js 1/2)
|
|
|
|
2v16 : JIT functions now execute in their own function scope (allows arguments)
|
|
Move older 'HY' boards to use `g` for the built-in graphics, not `LCD` (and change docs)
|
|
Fix print(()=>{}) printing 'function (undefined) {}' - saves 1 var for arrow fn without args (fix #2265)
|
|
Bangle.js: Add support for `Bangle.setUI({remove:...})` to allow apps to be unloaded without a full reboot.
|
|
Bangle.js2: Fixed `Bangle.setLCDOverlay(img,x,y)` with negative offsets
|
|
Allow `atob` to accept base64 with whitespace inside it
|
|
Puck.js Lite: remove NFC from build (no NFC on board the Lite version)
|
|
Storage: When using Filename Table, be absolutely sure it's correct before using it (stops hang at startup if storage corrupt)
|
|
Bangle.js: Add Bangle.setOptions({btnLoadTimeout:...}) to allow home button timeout to be configurable
|
|
Bangle.js: A forced interrupt after button held now occurs 0.5s (not 0.1s) after the reboot request
|
|
Bangle.js: Holding the button during storage compact now won't try and break out of it
|
|
Bangle.js: Use 4k/64k/all flash clear commands to make erasing (and hence compact) external flash faster
|
|
Bangle.js2: Add built-in touchscreen calibration
|
|
Bangle.js2: Add fast-path for all-white or all-black full-width graphics fill/clear (24ms -> 2ms)
|
|
Bangle.js2: LCD background flip (send to LCD while returning to execute other code)
|
|
Bangle.js2: Swipe direction is now modified based on g.setRotation
|
|
ESP32: Bluetooth LE tweaks - central mode connects, scans, reads, writes and notifies
|
|
Bluetooth: fix for incorrect Bluetooth task strings shown in some errors
|
|
Bangle.js: showLauncher's 'fast load' now updates __FILE__
|
|
Improve jsvIs* functions (because v->flags is volatile). >5% speed improvement
|
|
Lexer speed improvements
|
|
Bangle.js: Compass 'heading' now provides correct value (without 360-heading) required
|
|
Bangle.js: Remove F_BEEPSET feature flag (now 3 years old)
|
|
Espruino: Ensure flash/native strings really can't be appended to (fix #2282)
|
|
Bangle.js2: Improved 3 bit LCD fill (20% faster)
|
|
process.memory() reports `stackFree` which allows us to easily check if we're ok for recursion
|
|
E.HSBtoRGB can now be called with `E.HSBtoRGB(h,s,b,16)` to return a 16 bit value suitable for Bangle.js/etc
|
|
Bangle.js2: Flip LCD SPI bit order so operations in Espruino can be faster (45% faster fillRect)
|
|
Bangle.js2: Use 8x3bpp block fill with masking (now at least 6x faster than 2v15)
|
|
Fix JIT when overwriting a pre-existing function, JIT now allows `var/let/const`, fix lock leak in function call, fix FOR postinc issue
|
|
JIT compiler now included in MDBT42Q/Pixl.js/Puck.js/Bangle.js 1
|
|
Bangle.js2: Bangle.setUI remove unused 'touch' mode, ensure 'back' button doesn't overlap if button is already used (fix #2287)
|
|
Bangle.js: Do not clear widget area if only zero width wigets are using it
|
|
Bangle.js: Allow setting remove methods for E.show*
|
|
Bangle.js: Add Bangle.load() and Bangle.showClock() methods
|
|
Graphics: Ensure g.reset() after a custom font was set de-allocates the custom font (fix #2290)
|
|
Bangle.js: setUI now calls g.reset(), and also protects against recursion in uiRemove
|
|
Bangle.js2: Touched item coordinates in E.showScroller's select callback
|
|
|
|
2v15 : Fix issue where `E.toJS("\0"+"0") == '"\00"'` which is just `"\0"`
|
|
Fix issue accessing `arguments` after/inside 'let/const' keyword (fix #2224)
|
|
let/const now don't add a scope if executed in a function outside a block (fix #2225)
|
|
When executing a function, ensure the scope doesn't include a `return` var
|
|
Rename internal return var to fit it inside one JsVar on embedded systems
|
|
nRF52: Added support for 2 concurrent Bluetooth Central connections to Puck.js, Pixl.js, MDBT42Q (fix #1360)
|
|
Bangle.js2: JIT now built in (only enabled for functions prefixed '"jit"')
|
|
E.dumpVariables now outputs more info for variable values
|
|
Puck.js Lite support
|
|
Puck.js: Immediately after flashing new firmware, Puck.js now does a self-test and sets its BLE to PASS or FAIL
|
|
nRF52: Fix recent regression which stopped reconnection after a bluetooth disconnect (fix #2226)
|
|
Bangle.js: Include the 'sched' library in installed apps (needed for alarm) (fix #2229)
|
|
Bangle.js2: Fix text size on buttons when they are tapped in E.showPrompt
|
|
nRF5x: Add 'onWriteDesc' in NRF.setServices - allowing you to know when something subscribed for notifications
|
|
nRF5x: Move advertising_start and restart_softdevice outside of IRQs (MEMORY_BUSY warnings less likely now)
|
|
Bangle.js: Ensure E.showMessage background color comes from theme
|
|
Bangle.js: Add "filename table" support to Bangle.js - avoids slow file read/list when there are many deleted/updated files in Storage (fix #2152)
|
|
Storage: Don't align files <512 bytes to page boundaries - all files now stored in order (ref #2232)
|
|
nRF5x: Call sd_ble_gattc_hv_confirm in response to BLE indications
|
|
Bangle.js2: Make Bangle.setBarometerPower retry twice if it has an I2C error
|
|
Bangle.js2: Fix `NRF.setAdvertising({},{scannable:false})`
|
|
Bangle.js2: Initial long range functionality (via `phy:"coded"` in `NRF.setAdvertising/setScan/requestDevice/findDevices`)
|
|
nRF52: Change from hard -> softfp calling convention (saves a few bytes, more compatible with compiled code)
|
|
Fix 'console.log([1,2,3].splice(0, 1.0))' (fix #2245)
|
|
Bangle.js2: Added `Bangle.setLCDOverlay(img,x,y)` to allow an image to be overlaid on top of screen contents (eg for notifications)
|
|
Fix issue parsing constant decls when not executing (fix #2255)
|
|
Puck.js: Fix Puck.mag() in newest batch of Puck.js 2.1a sometimes returning -32768
|
|
Correctly handle parsing of template literals inside template literals
|
|
Don't store command history if echo=off (eg for Web IDE/App Loader uploads)
|
|
E.defrag now kicks the watchdog (on Bangle.js 2 it can take long enough that the watchdog fires)
|
|
|
|
2v14 : Bangle.js2: Fix issue with E.showMenu creating a global `s` variable
|
|
Bangle.js2: Recheck string wrapping after font change inside E.showMenu
|
|
Bangle.js2: Double input buffer size from 1kb to 2kb
|
|
Bangle.js2: Fix E.showMenu title changing color after scroll down+up *if* a non-standard theme was used
|
|
Bangle.js2: Fix wear detection on latest Bangle.js 2 (VC31B variant) (fix #2141)
|
|
Bangle.js2: Allow variable HRM poll rates on Bangle.js 2 VC31B variant
|
|
Bangle.js2: VC31 HRM variant now polls at 25hz (not 50)
|
|
Bangle.js1: E.showMenu now displays boolean values with no `format` as a checkbox
|
|
Bangle.js1: E.showMenu now displays a submenu for multiple choice menu items (#2184)
|
|
Bangle.js: built-in locale now doesn't depend on argument being an instance of Date (#2187)
|
|
Bangle.js: Add ".noList" property to prevent E.showScroller inside E.showMenu
|
|
Bangle.js2: Add "Back"-Button on submenus inside E_showMenu
|
|
Graphics: g.setClipRect now uses rotated coordinates
|
|
Graphics: g.draw/fillCircle now works with rotated coordinates
|
|
Bangle.js2: Touch/drag coordinates now obey g.setRotation
|
|
Graphics: Fix drawString with combination of g.setClipRect and g.setRotation
|
|
nRF5x: Allow 'high speed' watches via 'hispeed' argument to setWatch. Higher power consumption but detects fast (<25us) pulses.
|
|
Bangle.js2: E.showMenu now returns 'scroller', `format` is called with a second argument, font in popup is scaled to fit (fix #2190)
|
|
Fix recent class method regression (24247e4ec9) (fix #2197)
|
|
Bangle.js2: 6x15 font tweaks for better ISO8859-1 support
|
|
Bangle.js: Add clock property to "custom" mode in setUI
|
|
Allow method declarations in objects - ES6 'Enhanced Object Literals' (#2202 / #1302)
|
|
Added Object.values/Object.entries (#1302)
|
|
Added block scoping for let and const (#971)
|
|
Honour non-writable const vars (fix #971)
|
|
Remove Line Numbers from 'save on flash' builds
|
|
Added Object shorthand, eg. x={a}
|
|
Added numeric separator support eg. 12_34
|
|
Add Nullish coalescing operator
|
|
Enable releases and cutting edge builds for Puck.js minimal releases (with 98kB of free Storage)
|
|
nRF5x: Fix memory leak (of address) when using NRF.setScan/requestDevice/findDevice (regression in 2v13)
|
|
Fix issue with const in a module when called from a scope with const already in (fix #2215, fix #2207)
|
|
Add `seaLevelPressure` to Bangle.setOptions (fix #2213)
|
|
Bangle.js: speed up HRM average adjustment (specifically when sample rate is 25Hz, eg. for Bangle.js 2)
|
|
Bangle.js: Change default distance units to m,km (from m,miles) (fix #2209, fix #2210)
|
|
Bangle.js: Rename default locale to 'system' (from 'en_GB')
|
|
Ctrl-C will now *not* break out of short-running intervals/watches, only long-running ones
|
|
Bangle.js: Allow E.showMenu to be given an array and title option (fix #2175)
|
|
nRF5x: We now clear the console's input line when connecting or disconnecting Bluetooth (fix #2219)
|
|
Graphics: Add g.blendColor to expose the ability to figure out what color is between two others (fix #2150)
|
|
Fix stack overflow if deallocating a massive linked list (fix #2136)
|
|
String substr/substring/slice now work on native/flash strings by changing pointers rather than doing an actual copy (fix #2066)
|
|
Fix over-iteration if breaking out of the very first iteration of FOR loop (fix #2012)
|
|
JSON.stringify(pin) now returns valid JSON (Pin name as a string). E.toJS still leaves it as an ID (fix #271)
|
|
Bangle.js2: Fix exception when using 'back' and physical button with Bangle.setUI
|
|
|
|
2v13 : Memory usage improvement: Function scopes no longer stored as an array if they only contain one scope
|
|
Memory usage improvement: The root scope is never stored in the scope list (it's searched by default)
|
|
E.dumpVariables now dumps variable flags
|
|
Tidying up Native Function handling (now JSV_NATIVE_FUNCTION not JSV_NATIVE|JSV_FUNCTION)
|
|
NRF.getSecurityStatus now returns 'connected_addr' for the address of the currently-connected device
|
|
NRF.setAdvertising converts arrays of arrays to arrays of ArrayBuffers. Also don't update advertising when connected.
|
|
Memory usage improvement: Arrow functions only store value of 'this' if 'this' is used by code inside them (fix #2139)
|
|
Add String.prototype.concat (fix #2140)
|
|
Much-improved whitespace lexing code using single jumptable - 3% speed increase
|
|
Allow `process.memory(false)` to get memory info but skip GC
|
|
Graphics: fix height calculation bug in fillRect/clearRect when given an object with w/h as an argument
|
|
Fix potential corruption issue caused by `delete [].__proto__` (fix #2142)
|
|
Bangle.setUI is now minified, also calls Bangle.uiRemove if it was set (to clean up custom UI additions)
|
|
E.showScroller tweaks to allow redraw requests, get/set initial scroll amount, negative scroll (for titles)
|
|
NRF.setScanResponse now works on SDK15
|
|
Fix g.wrapString if string ends with a bitmap
|
|
g.wrapString now splits long words if they are too long for a line
|
|
Add Storage.getStats to get more fine-grained info about Storage
|
|
Add Bangle.midnight event that can be used for housekeeping tasks
|
|
Graphics: You can now do `g.fillRect({x,y,x2,y2,r})` for rounded rectangles
|
|
Bangle.js2: include new touchscreen E.showMenu system
|
|
String.toUpperCase() and .toLowerCase() now work for accented ISO8859-1 characters (fix #1866)
|
|
Report errors created during execution of `E.on('kill',...)`
|
|
Bangle.js: ANCS/AMS now advertises 16 bit time service (doesn't crop the name, and good enough for iOS pairing)
|
|
Number.toFixed(...) now doesn't exponentiate when the number is very small (fix #2157)
|
|
Add E.showMenu({"":{back:function}, ...}) for easy specification of 'back' menu item
|
|
Bangle.js2: Add 'back' option to E.showScroller and Bangle.setUI
|
|
Bangle.js2: Ensure that if Bangle.getPressure errors, the next call doesn't say 'Conversion in progress'
|
|
Bangle.js2: Update E.showPrompt with a bigger touchable area around buttons
|
|
Bangle.js2: 'touch' event coordinates are now clipped to screen coordinates (drag stay unclipped to allow touchscreen use for scrolling)
|
|
Bangle.js1: Fix regression that caused setLCDMode not to work in 2v12 (fix #2155)
|
|
Bangle.js1: Improved 'E.showScroller' menus
|
|
Bangle.js1: Add 'back' option to E.showScroller and Bangle.setUI
|
|
Bangle.js1: setUI button handlers now work on falling edge
|
|
Bangle.js: Add setUI custom 'swipe' handler
|
|
Util Timer now runs independently of system time. More accurate on nRF52 (fix #2125)
|
|
Bangle.js2: Battery discharge curve is now scaled better, and setting.json:batFullVoltage can be used to account for differences in sense voltage between devices
|
|
Bangle.js2: Ensure NRF.setTxPower works for all connections and advertising
|
|
If a process.on("uncaughtException" handler creates an exception, make sure we report it as Uncaught
|
|
Bangle.js: If home button held and JS is still executing, force a break (like Ctrl-C)
|
|
Graphics: Fix text bounding box calculation when just the top line of a character would be visible
|
|
Bangle.js2: setUI now doesn't forward touch events if tapping over the back button
|
|
Bangle.js2: New E.showMenu now allows menu items of type 'string' - fixes 'Passkey' settings menu
|
|
Bangle.js2: Add visual feedback when showPrompt button is pressed
|
|
Storage: Fix erase-after-compact bug if Storage completely full (fix #2174)
|
|
Fix out of bounds jsvGetAddressOf in jsvNewFlatStringOfLength (wasn't a cause of instability)
|
|
Storage: Now put all .js files into internal storage (if 2 storage areas). Fix corruption issue when reading using file with explicit drive letter
|
|
Bangle.js: default 'locale' now supports second 'dp' argument for decimal places in distance/speed/temp
|
|
Graphics: Restrict setClipRect coordinates (Except on ST7789_8BIT (Bangle.js 1) where we need it for notifications. This stops potential out of bounds writes is setClipRect is wrong.
|
|
Fix issues accessing object/array fields when the field itself has a null character in it (fix #2176)
|
|
nRF5x: Fix merging of packers for `NRF.findDevice` - previously name fields in subsequent packets may have been left as 'undefined'
|
|
nRF5x: NRF.findDevice now aggregates multiple packets even if only one packet matches the filter (fix #2178)
|
|
nRF5x: Allow NRF.setAdvertising to set advertised service UUIDs (vs service data) easily with `NRF.setAdvertising({'180D':undefined})`
|
|
Ensure JSON.stringify([undefined])=="[null]" as per the spec
|
|
Bangle.js2: Unistroke recognition accuracy improvements
|
|
|
|
2v12 : nRF52840: Flow control XOFF is now sent at only 3/8th full - delays in BLE mean we can sometimes fill our 1k input buffer otherwise
|
|
__FILE__ is now set correctly for apps (fixes 2v11 regression)
|
|
Bangle.js: Ensure Bangle.getHealthStatus("day") resets at midnight (fix https://github.com/espruino/BangleApps/issues/1216)
|
|
Bangle.js: Attempt to fix Bangle.buzz that occasionally doesn't stop
|
|
Bangle.js2: Lower bootloader LCD SPI bitrate (was out of spec, not all LCDs worked with it)
|
|
Bangle.js: Attempt to fix occasional issue where vibration gets stuck on (fix https://github.com/espruino/BangleApps/issues/1249)
|
|
Bangle.js: Ensure Bangle.setLCDPower only fires lcdPower event if state has changed (fix https://github.com/espruino/BangleApps/issues/1138)
|
|
Bangle.js2: Holding BTN at boot skips bootloader storage check, bootloader now times out if too many files
|
|
Bangle.js: Move position of filesystem checks to before first code is run
|
|
Storage.write is now explicit about not allowing zero length files, also creates exception if it fails because it can't get a data pointer
|
|
Bangle.js2: Only handle UBX protocol from GPS on Bangle.js 1 as it interferes with CASIC on Bangle.js 2 (fix #2124)
|
|
Bangle.js: GPS-raw no longer sets the FIFO_FULL message if data is lost - just passes a bool as the second argument
|
|
Fix for buffer overflow + segv found via fuzzing (#2121, #2122)
|
|
new Date(str) no longer interprets ISO 8601 UTC timestamps as local time (fix #2116)
|
|
Graphics: Fix clipRect checks for >1x bitmap fonts
|
|
Allow __proto__ to be set to a function as well as object
|
|
Bangle.js: Support for v2.1 barometer hardware (SPL06 vs BMP280)
|
|
Bangle.js: Increase step counting noise threshold 14->17 to work around pedometer fake steps (http://forum.espruino.com/conversations/371740)
|
|
Bangle.js: Support for v2.1 HRM hardware (VC31 vs VC31B)
|
|
Bangle.js: Better HRM detection (higher res filtering, better peak detection, lower median filter size, better confidence)
|
|
Fix E.decodeUTF8 when decoding UTF8 codes that contain all decimal digits
|
|
Fix for potential buffer overrun if JSON.stringify used with strangely crafted whitespace arg (fix #2114)
|
|
Add `NRF.setSecurity({encryptUart:true})` to force encrypted comms on BLE UART
|
|
Bangle.js2: Increase wait after power-on for BMP280 to fix getPressure on some devices (fix #2120)
|
|
Storage: Fix compaction error if a page starts with 0xff and the first write fits within that (fix #2009)
|
|
Add NRF.startBonding to force bonding on peripheral connection
|
|
nRF5x: Disable name change over BLE via 0x2A00
|
|
Bangle.js1/2 : Fix inconsitent scroll indicator in menus (fix #2104)
|
|
Bangle.js2: E.showScroller to respect widgets on bottom row (using appRect)
|
|
Bangle.js: Step counter - Remove hard-coded gravity value and subtract DC offset with a filter
|
|
Ensure jsfIsStorageValid kicks watchdog so we can't get stuck in a reboot loop if all of Storage is empty
|
|
Bangle.js: Add 'graphicsInternal' to make Graphics independent of JS vars. Terminal is now useful earlier, and can display softdevice errors
|
|
Bangle.js2: If errors do happen during Bangle.getPressure, reject the promise (fix #2137)
|
|
|
|
2v11 : Bangle.js: Enable the Bangle.on('tap') event from the accelerometer by default
|
|
Bangle.js: revert to (better) Kionix default thresholds for tap detect
|
|
Bangle.js2: When wake on touch is enabled, use a single tap on the front of the device for wakeup
|
|
Bangle.js: Display 'checking storage' message on first boot to alert users to slight delay
|
|
Bangle.js: Tweaked step count algorithm (low pass filter, 4 steps in 90s)
|
|
Graphics: asBMP/asURL/dump now support more bit depths
|
|
Graphics: Allow .setFont/.getFont to use font size in a colon after the font name
|
|
Graphics: .getFonts now lists 'setFont' functions however they were added (to `g`, built in, or to the prototype)
|
|
Graphics: When rendering fonts with a solid background, ensure the gap between is filled too
|
|
Flat Strings are now always aligned on a 4 byte boundary (fix #2040)
|
|
Graphics: add setTheme on supported devices
|
|
RAK5010: switch to 1.8v internal voltage (was 3.3v) to make GSM comms reliable, upgrade BG96 module
|
|
RAK5010: Compile in TLS/HTTPS support
|
|
Bangle.js: Fix issue where if non-fullscreen notification was visible and Bangle.js reset, screen was off-center
|
|
Fix for issue with pretokenised code not creating correct text string for reserved words, eg {undefined:1}
|
|
Bangle.js: Turn vibrate off every time a new app loads
|
|
Fix issue where ({a:0}).a in the console would create a ReferenceError (works in code)
|
|
Graphics: Allow setFont("FontName:1x2") for scaling in 2 directions (fix #2044)
|
|
Graphics: Fix .asBMP for 4 bit images
|
|
Graphics: switch RGB order for palette in asBMP for 4/8 bit images
|
|
Bangle.js2: Idle power consumption down from 1.3mA to 0.9mA (pullups on HRM disabled when off)
|
|
Bangle.js2: Increase reported bit depth from 3->16 and perform bayer dithering when rendering
|
|
Makes icons/old apps way more usable (plus provides an easy way to get >3bpp)
|
|
Bangle.js: Fix color palette when rendering 3bpp -> 16bpp
|
|
nRF52840: Fix 900uA UART power draw when shut down
|
|
nRF52: Send XON/XOFF when buffer is less full - reduce likelihood of FIFO_FULL with big MTUs
|
|
Bangle.js: Fix powerSave regression (should default to 'on', but didn't since 2v10)
|
|
Storage test on boot only tests storage fully if the first record is empty
|
|
Graphics: drawString now accepts images in-line (fix #2063)
|
|
Graphics: added stringMetrics to get height as well as width
|
|
Graphics: drawString now correctly middle-aligns multi-line strings
|
|
Graphics: add imageMetrics to allow image width/height to be read
|
|
Graphics: drawImage(...,{frame:x}) can be used to draw animations
|
|
Graphics: fix rotated/scaled rendering of 3 bit bitmaps (fix #2049)
|
|
Bangle.js: fix Bangle.getLogo memory leak
|
|
Bangle.js2: Graphics.getBPP now returns 3
|
|
Bangle.js: attempt to unlock SPI flash multiple times (some devices don't unlock on the first attempt)
|
|
Bangle.js: Fix Bangle.tap event regression (now works again)
|
|
Graphics: add wrapString to wrap messages to the correct length
|
|
Bangle.js: update showMessage and showPrompt with correct wrapping
|
|
Bangle.js2: Add Bangle.compassRd, fix setCompassPower
|
|
Bangle.js: Add Bangle.on('health',..) event and Bangle.getHealthStatus
|
|
Graphics: drawImage now honours arraybuffer offsets
|
|
Graphics: drawImage now supports up to 4bpp palettes rendered direct from flash
|
|
Bangle.js2: Larger font for E.showMenu
|
|
Graphics: drawString(..., true) for vector fonts now clears the background
|
|
nRF52: swap getSerial bytes around so device ID string matches nrfjprog
|
|
Bangle.js2: bootloader can now flash firmware from a file in Storage
|
|
Bangle.js2: Add second Storage area in internal flash for fast access, memory-mapped files
|
|
Fix unhandled reject of a previously resolved promise (fix #1433)
|
|
Bangle.js: E.showMessage/showPrompt can now display images via optional img argument
|
|
E.showMessage/showPrompt handle padding correctly if no widgets are displayed
|
|
Bangle.js2: Fix setUI clockupdown handling of 'up'
|
|
Bangle.js: Ensure builtin E.show* (and fake LEDs) wake the LCD up
|
|
Storage check now *only* happens on first boot
|
|
Ensure __FILE__ is set by the time bootcode runs
|
|
If executing from storage, work out line numbers and print filename for Errors
|
|
Bangle.js: Don't store line numbers in functions - no need when execing from flash
|
|
Bangle.js: Add E.showScroller for scrollable lists
|
|
Fix issue where invalid JSON stopped execution after Storage.readJSON
|
|
Bangle.js: Add Storage.hash for boot0 cache change checking
|
|
Bangle.js: A single widget load failure will now not remove all widgets
|
|
Bangle.js: widgets are now sorted by .sortorder
|
|
While and for loop conditions now use Expression, not AssignmentExpression (eg. while(0,0) is fine) (fix #2068)
|
|
Bangle.js2: Fix 'stuck' bottom row of pixels if scrolling downwards with g.scroll(0,1)
|
|
Bangle.js: Fix issue where minified E.showMenu was creating a global var called 'c'
|
|
Fix string formatting for "Field or method X does not already exist" error
|
|
Graphics: drawRect,fillRect,clearRect are now able to take an object as the first argument
|
|
Bangle.js: Add Bangle.appRect to allow apps to see how much space is available for them
|
|
Bangle.js: Add `Bangle.setOptions({hrmPollInterval:...});`
|
|
Bangle.js2: Bangle.dragHandler is now cleared by setUI (fix #2078)
|
|
Bangle.js2: Adjust full battery voltage
|
|
Avoid Watchdog reboot during compact if compacting a lot of data (fix #2075)
|
|
Storage: Fix issue where compacting empty storage could cause out of bounds erase (fix #2081)
|
|
Fix issue where pretokenised '1 - - 1' would turn to '1--1' (fix #2086)
|
|
Fix break scoping error in nested for loops (fix #2084)
|
|
Fix memory leak when rejecting pre-resolved promise (test_promise11.js)
|
|
Fix parser errors in arrow functions (fix #2067)
|
|
Bangle.js2: Add Unistroke object, and 'Bangle.stroke' event
|
|
Fix pretokenised '1 / /.../' and ensure jslSeek resets the previous token (ref #2086)
|
|
nRF52: Move neopixel LRCK pin which can't be disabled due to hardware errata, and restore state after (fix #2071)
|
|
Bangle.js2: Disable unboard flash bank for now (issues with erase on reboot)
|
|
Bangle.js1: Fix E.showScroller implementation
|
|
Bangle.js2: Ensure tap and twist turn LCD backlight on as well as unlocking
|
|
Bangle.js1: Bangle.setUI now deletes touchHandler (fix #2095)
|
|
Bangle.js2: Tweak battery high mark again
|
|
Bangle.js2: Fix E.showScroller when there are less than 3 menu items
|
|
Bangle.js2: Bangle.off and .softOff now turn off touchscreen if it was on
|
|
Bangle.js2: Ensure antialiased line routines are built in
|
|
Bangle.js2: Add HRM wear detection (LED no longer turns on if HRM not on skin)
|
|
Bangle.js2: Add a 32 entry cache to speed up finding common files - improves app load times
|
|
Bangle.js: Ensure locale honours 12 hour setting (https://github.com/espruino/BangleApps/issues/892)
|
|
Bangle.js2: Ensure EXTCOMIN time for LCD is nearer 2us (from datasheet) (ref #2097)
|
|
Bangle.js2: New default JS firmware
|
|
Bangle.js2: Minify Bangle.drawWidgets
|
|
Bangle.js: Bangle.appRect now copes with widgets at the bottom
|
|
Bangle.js2: Fix >128 ASCII codes for 12x20 font (fix #2105)
|
|
Bangle.js: Add SPI flash read-after-write to verify write succeeded (fix #2109)
|
|
Bangle.js: Fix E.showMenu clear if background color is set (https://github.com/espruino/BangleApps/issues/1024)
|
|
Bangle.js: Re-add E.showMenu predraw callback (fix #2108)
|
|
Bangle.js2: Add hrmRd/hrmWr that allow you to poke the HRM directly
|
|
Bangle.js: Fix for previous SPI flash write verify when <4 bytes written
|
|
Bangle.js2: Add write protection for bootloader and softdevice to avoid accidental bricking
|
|
Bangle.js2: Bootloader now attempts multiple times to initialise ext flash, and waits longer (fix fw update app issues)
|
|
Bangle.js: Add Bangle.getHealthStatus("day") to allow automatic step counts for the current day
|
|
Remove for(of/in) for extremely constrained devices (Micro:bit 1 only)
|
|
Bangle.js: bootloader now doesn't start immediately after power off (can help with 100% flat battery)
|
|
|
|
2v10 : Bangle.js: Improved HRM calculations - swapped autocorrelation for bandpass filter
|
|
Bangle.js: Significantly improved step counting algorithm using bandpass filter (fix #1846)
|
|
Bangle.js: Ignore touch and swipe events when the LCD is off
|
|
Graphics: Fix 1bpp custom fonts on 2/4/8 bpp graphics Canvas not being the right colour
|
|
Bangle.js: Don't reset all peripherals when loading a new app, and only
|
|
turn peripherals off if unused 500ms after starting new app
|
|
Increase max arguments for Function.apply from 64 to 256
|
|
NRF52840: Create new NRF_GPIO_PIN_X_FAST as Nordic's gpio functions will no longer inline!
|
|
Graphics: Add .blit() to allow fast blits within a single Graphics instance
|
|
nRF52840: workaround for SDK15 bug that stops softdevice restart when WDT enabled
|
|
Disallow template strings in object decls like {`hello`:1} (fix #2006)
|
|
Bangle.js: Add support for global colour themes which affect g.clear/g.reset (fix #499)
|
|
Bangle.js: Switch beep/buzz to IRQs (keeps time correct even when JS is busy)
|
|
Add E.decodeUTF8 to allow UTF8 to be decoded into standard 8 bit characters
|
|
Util timer: account for 'drift' in timer when adding new tasks if running it continuously
|
|
Graphics: Allow 'scroll' method to only scroll inside clipRect
|
|
Bangle.js: if we restart with home button held down, ignore the 'button up' event
|
|
Remove Graphics.drawImages from non-Bangle.js builds to free up space
|
|
Pico: Remove SHA512 from build to free up space
|
|
Storage: fix issue where functions referencing flash weren't correctly relocated during compact (#2009)
|
|
Add support for rendering 3 bit images to 12/16 bit destinations
|
|
Ensure Serial1.unsetup can be called even if it doesn't appear to have been enabled
|
|
Puck.js: ensure self test only happens after hardware reset (fix #2001)
|
|
Bangle.js: Fix issue where long-press BTN3 while holding BTN1 would reload the app but wouldn't load configuration (eg not setting timezone)
|
|
Graphics: add .getBPP, and allow color blending (rather than copy) when drawing 2 bit images on any BPP Graphics instance
|
|
nRF52: If getPrimaryServices fails with NRF_BUSY, keep retrying after a delay (fix #2008)
|
|
Bangle.js 2: Fix getPressure memory leak
|
|
Graphics: Theme now only applies for LCD, not for JS/ArrayBuffer graphics
|
|
Graphics: Add dark boolean to themes to allow apps to update depending on bg color
|
|
Bangle.js: setUI now has 'clock' modes
|
|
Rename SMAQ3 board to BANGLEJS2
|
|
nRF52840: Remove ifdef around PHY_UPDATE_REQUEST - fixes BLE5 connections
|
|
Graphics: Allow g.drawImage to use ArrayBuffer Graphics as an argument
|
|
Bangle.js: Display small 'Loading...' screen to show something is happening when loading apps
|
|
Promise: Fix issue with .then().then(...) on an already-resolved promise (fix #2019)
|
|
Bangle.js: g.flip no longer keeps the screen awake, flipTimer renamed to inactivityTimer
|
|
Bangle.js 2: 'factory default' set of JS now included inside firmware
|
|
Bangle.js: Build in ANCS support (disabled by default)
|
|
Bangle.js 2: Working VC31 heart rate monitoring
|
|
Bangle.js: Push GPS events immediately after GPGSV (more portable/resilient to config changes)
|
|
At first boot, fully check Storage for validity (if not full, ensure remaining pages are 0xFF)
|
|
Storage: Ensure jsfIsStorageValid returns true when storage is valid, but full
|
|
Bangle.js: Add Bangle.getGPSFix to get last GPS fix without waiting for a listener
|
|
Merge experimental_compact_vars branch to reduce var sixe from 16 to 13 bytes in most cases.
|
|
Add JSVAR_FORCE_16_BYTE to allow experimental_compact_vars changes to be removed
|
|
Add JSVAR_FORCE_INLINE, and don't force lock/unlock/getters to be inlined.
|
|
Compiler has improved enough we save 10% code space and get marginally faster
|
|
Add ArrayBufferView.subarray for easily making subarrays (eg a.set(a.subarray(-1)))
|
|
Solve case where an ArrayBuffer set using the same array could duplicate entries (`a.set(a.subarray(),1)`)
|
|
nRF52: Fix 2v09 regression where clearWatch reset pin state, removing pullups
|
|
nRF52: BLE stack errors now reports a line number
|
|
nRF52: 'BLE task in progress' messages now give a readable name, not task number
|
|
MICROBIT1: Remove hardware SPI to save space. Software SPI still works
|
|
|
|
2v09 : Bangle.js: increase default advertising interval from 375 to 200ms to ease connections
|
|
Fix Math.acos for negative values (fix #1950)
|
|
nRF5x: Add callback param to 'NRF.restart', allowing code to be called with softdevice disabled
|
|
Bangle.js: fix require("locale").time(new Date()) for default locale
|
|
Now use exponents when printing doubles >= 1E21 or < 1E-6 (fix #1489)
|
|
Fix Regexp handling of unescaped '.' in character group: /[.]/ (fix #1948)
|
|
Now error if using (unsupported) RegExp backreferences
|
|
nRF52: Ensure SPI 1 byte DMA errata workaround isn't applied to non-52832 parts
|
|
nRF52: When outputting assertions, if we have an terminal device (eg LCD) use that
|
|
When load(filename) is used, set global variable __FILE__ to the filename
|
|
Util Timer no longer uses RTC - works based on estimated time from the hardware timer itself (fix #1749, ref #1444)
|
|
Pull in fixed SHT3C.min.js for RAK5010
|
|
Add support for relaying full touchscreen events in devices that support it
|
|
Fix flip-on-idle behaviour for non-Bangle.js smartwatch ports
|
|
Add support for buttonless bootloader (first boot only, times out after 5 seconds)
|
|
Fix emulator crash if Graphics.drawPoly used with odd number of points
|
|
Graphics.fillPoly now errors if >64 points (prev was 63)
|
|
Graphics: Support for palettes supplied in image strings
|
|
nRF52840: Ensure internal voltage regulator is set to 3.3v (not 1.8v default) at boot
|
|
Fix Array.forEach when deleting the item you're currently iterating over (fix #1962)
|
|
Bangle.js: StorageFile now uses 10x bigger chunks which reduces stress on Storage.list()
|
|
Storage.list now allows you to specifically request StorageFile, only ever reports first StorageFile chunk
|
|
Graphics: Allow colors to be specified as '#rgb' strings
|
|
Graphics: Antialiased lines now read the background color so overlap nicely
|
|
Graphics: Add fillPolyAA and use antialiased vector fonts (on platforms where AA is enabled)
|
|
Puck.js: Fix regression where IR LED was left on after transmission (fix #1969)
|
|
Graphics: Fix overdraw when drawing ellipses/circles
|
|
NRF52840: Use SPI3 by default as it's more capable/faster than SPI0
|
|
SMAQ3: Add support for unknown compass IC
|
|
Bangle.js: Make the 'home' button more configurable in code
|
|
Bangle.js: Add Bangle.softOff to allow the RTC to keep running
|
|
nRF52: Allow devices to remember the time between reboots (even if RTC is reset)
|
|
Microbit 2: Increase RAM from 64k to 128k
|
|
Bangle.js: Don't enter accelerometer power save mode if compass/barometer is in use
|
|
Watches: Allow streaming pressure data from Barometer
|
|
Graphics: Add antialias/colour blending for 24 bit buffers
|
|
NRF52840: Create new NRF_GPIO_PIN_X_FAST as Nordic's gpio functions will no longer inline!
|
|
nRF5x: reset BLE advertising after `load()/reset()` (fix #1975)
|
|
Bangle.js: Add accelerometer recovery for rare cases when accelerometer boots with corrupted address (fix #1972)
|
|
Bangle.js: Add app ID option to setXYZPower to allow apps to share devices (power is on as long as one app wants the device) (fix #1971)
|
|
Bangle.js: Add isXYZOn() functions
|
|
BLE: Allow 128-bit service data to be decoded (fix #1976)
|
|
Graphics: Fix 8 bit ArrayBuffer scroll not working correctly in some directions
|
|
Storage: Fix corruption issue with StorageFile write after a Storage compact (fix #1970)
|
|
Fixed dimmable backlight on non-Bangle.js watches
|
|
SMAQ3: Touchscreen is now powered off with Bangle.setLCDPower(0), auto-powers off after 30s
|
|
nRF52: Upon rebooting, reset time to 1970 if time looks corrupt
|
|
nRF52840: Don't use SPI3 unless ESPR_USE_SPI3 is defined (errata 195 means it draws an extra 1mA unless disabled!)
|
|
Bangle.js: apply g.drawImage fast path even if image goes to the edge of the screen
|
|
Graphics: Improve fillPolyAA for horizontalish lines, remove antialiased vector fonts (as won't work well on platforms without readback)
|
|
Fix invalid free caused by error inside a while loop condition (fix #1983)
|
|
Fix SIGFPE if using modulo with -1 (fix #1983)
|
|
Fix memory leak on Array.forEach/map/filter/etc caused by #1962 fix
|
|
Fix Espruino not sleeping when very low on free memory (fix #1986)
|
|
nRF52: Use 'low accuracy' GPIOTE for watches as we can shut down the high speed oscillator
|
|
E.getSizeOf() and trace() now don't recurse into references back to the global scope (makes sizes and traces far more useful)
|
|
nRF5x: Move from separate sdk_config.h to a single targets/nrf5x/app_config.h file
|
|
Original board: Remove Graphics.*Ellipse and StorageFile when networking enabled to allow builds
|
|
Update S132 Softdevice from 3.0.0 to 3.1.0 (fix #1999)
|
|
nRF5x: Allow Espruino builds with a configurable MTU - move Espruino boards to 53 byte (from 23) (#1998)
|
|
Fix issue parsing `r=>print((e=>{})(r))` (fix #1992)
|
|
Add DHE RSA key exchange for TLS/HTTPS (fix #1994)
|
|
|
|
2v08 : nRF52: Added option to build in I2C slave support
|
|
Fix Tensorflow aiGesture regression from 2v07 (re-add opcodes) (fix #1936)
|
|
Add support for > 1bpp custom bitmap fonts
|
|
Bangle.js: add drawLineAA and drawPolyAA for antialiased lines
|
|
Removed custom fonts for SAVE_ON_FLASH devices
|
|
Fixed BBC micro:bit show() regression from 2v07
|
|
Ensure Storage library is exposed on SAVE_ON_FLASH devices (fix micro:bit flash write)
|
|
nRF52: Fix issue where analogRead would stop E.getBattery from working
|
|
Fix setWatch debounce lastTime regression from 2v07 (fix #1902)
|
|
nRF52: CPU now sleeps when while UART/BLE data is waiting to be sent (fix #1938)
|
|
JSON.stringify now checks for potential stack overflow when stringifying (fix #1940)
|
|
Check for Stack overflow when Garbage Collecting giant linked list (fix #1765)
|
|
Added String.padStart/padEnd
|
|
Fix issue where JSON.stringify({ something: bool }) would output 'something' as a bool too
|
|
Bangle.js/Pixl.js: Ensure terminal is always the same color regardless of g.setColor()
|
|
Original Espruino Board: remove E.FFT in network-enabled builds (freeing up flash memory)
|
|
Storage compact now updates pointers stored in RAM so they still point to the correct address in Flash (fix #1881)
|
|
Bangle.js: Add debounce to the button used to wake Bangle.js up from sleep
|
|
Fix regex match with '-' that isn't a range: "1-2_A3".split(/[0-]/) (fix #1736)
|
|
Crypto: modified mbedtls SHA1 to reduce size from 3.5k to under 1k
|
|
Graphics: Fix for out of bounds ArrayBuffer scroll issue (fix #1946, #1947)
|
|
|
|
2v07 : Graphics.asImage() now contains buffer when bpp != 8 (fix #1863)
|
|
nRF52 SDK15: Fix NRF.setScan/findDevices/etc
|
|
nRF52: reduce input buffer space taken by advertising packets
|
|
Pretokenisation: reserved words can now be used as function names (fix #1868)
|
|
jslGetNextToken now avoids iterator clone for each token (fix #1857)
|
|
nRF52: fix instability when accessing ADC from IRQs and event loop at the same time (fix #1861)
|
|
Fix 0.0==null comparison (fix #1865)
|
|
WIZNet: add setHostname(), geHostname(), getStatus()
|
|
Fix XON not sent after reset() (fix #1872)
|
|
Remove USBSERIAL enum for non-USB devices
|
|
Shrink new vector font sizes to allow multi-line use (fix #1873)
|
|
Stop Object.setPrototypeOf overwriting Object.prototype sometimes (fix #1875)
|
|
Arrow functions now always overwrite `this` (fix #1878)
|
|
Implement Streaming Storage compaction to allow compact with less RAM (fix #1598,#1707,#1828)
|
|
jslTokenAsString now works for 'of'
|
|
Speed up Array.prototype.join (fix #1660)
|
|
Allow 'in' to be used with typed arrays (fix #1534)
|
|
Fix global regex issues when match may be 0 chars (fix #1888) (fix #1889)
|
|
Improve String.replace performance using iterator rather than repeated copy
|
|
Pixl.js: SDA/SCL constants should point to A4/A5, not D4/D5
|
|
Fix Graphics.fill/drawCircle lock leak
|
|
Fix issue when do..while loop condition has side effects
|
|
Bangle.js: Ensure SPI flash CS is disabled when sleeping/off
|
|
nRF5x: clear FPU interrupt before sleeping
|
|
micro:bit: Add support for LSM303 accelerometer/magnetometer
|
|
micro:bit: Add delays at first boot to wait for USB UART to init and connect vis USB
|
|
micro:bit: Re-added tab complete (enough space now)
|
|
micro:bit: Added a fake pin for LED/LED1 that uses the LED matrix
|
|
nRF52: Allow a cccd_handle of 0 for startNotifications
|
|
Bangle.js: Power down SPI flash when sleeping/off
|
|
nRF52: Use the best available hardware timer for PWM taking frequency into account
|
|
Fix delay in scheduling after initial setTimeout call (from 2v06 and later)
|
|
Align Tensorflow arena to 16 bytes - new Tensorflow requires this (fix #1914)
|
|
Fix ReferenceError when arguments[0] is used when an argument is undefined (fix #1691)
|
|
JSON conversion for console now removes quotes on key lengths bigger than 15 (63)
|
|
micro:bit: add Storage.write/etc even on space-constrained (SAVE_ON_FLASH) devices
|
|
Remove flash compaction code on SAVE_ON_FLASH devices to save some space
|
|
Fix occasional duplicate state changes when using setWatch with debounce (fix #1902)
|
|
JSON.stringify now outputs 'null' for non-finite numbers as the spec requires (fix #1919)
|
|
Update Tensorflow to latest version, fix return 0 issue on ARM release builds (fix #1918)
|
|
Bangle.js: Accelerometer poll handler now uses RTC app_timer, not TIMER1. 1mA->0.5mA standby current (ref #1920)
|
|
Bangle.js: SPI MISO is now input_pullup (shaves ~20uA)
|
|
Espruino WiFi: Fix startAP function when open and no password supplied
|
|
Bangle.js: Accelerometer now runs in low power mode (saving ~150uA)
|
|
Bangle.js: Peripheral polling now only fully wakes Bangle when an event requires JS processing (ref #1921)
|
|
Bangle.js: When not moved for 1 minute, slow down accelerometer poll interval from 80 to 800ms (fix #1921)
|
|
Ensure software SPI/I2C/Serial don't leak a variable when initialised
|
|
Fix delay in scheduling after initial setTimeout call (from 2v06 and later)
|
|
Espruino WiFi: Fix StorageFile on Espruino WiFi (use max storagefile size of 4k)
|
|
Espruino WiFi: Fix Storage compaction regression (introduced after 2v06 release)
|
|
Bangle.js: Fix backlight flicker regression if at part brightness (fix #1925)
|
|
Fix ArrayBuffer.sort with negative numbers (it's not just Array.sort!)
|
|
nRF52: Use the best available hardware timer for PWM taking frequency into account
|
|
Bangle.js: Report GPS HDOP (Horizontal Ditution of Precision => accuracy) values in 'GPS' event
|
|
Pixl.js: Remove SHA256 from build to free up a little extra code space
|
|
nRF52: Restarting softdevice no longer changes the system time by 5 mins sometimes (fix #1933)
|
|
|
|
2v06 : Allow `"ram"` keyword at the top of a function to allow it to be pretokenised and loaded to RAM
|
|
Don't store line numbers for pretokenised functions
|
|
Fix 1-byte overflow when using UDP (#1799)
|
|
Remove 1-byte padding in Graphics lib
|
|
Bangle.js: Make SPI flash memory map address configurable, and check end bounds (#1807)
|
|
Bangle.js: More SPI flash memory map address to 0x60000000 to avoid ARM/nRF52 registers
|
|
nRF52: Fix issue with fast Notifications causing Notification data to be duplicated
|
|
http://forum.espruino.com/conversations/345949
|
|
Bangle.js: allow custom splash screen with .splash file
|
|
Pixl.js: Fix E.showMessage
|
|
Puck.js v1: Fix regression that stopped Puck.IR(data) working - Puck.IR(data,D26,D25) required
|
|
Puck.js v2: Ensure FET is used for IR output, fix selfTest errors for IR and Blue LED
|
|
Bangle.js: Big speed improvements for 120x120 and 80x80 gfx modes
|
|
Enable Graphics arraybuffer optimisations on all but low-end devices
|
|
Add specific Graphics optimisations for 1 and 8 bit rendering
|
|
Bangle.js: drawImage - add fast path for non-transparent 1 or 8bpp image blit (fix #1794)
|
|
Graphics.drawImage docs improvements (fix #1812)
|
|
Fix issue where it was possible to get an address of a non-memory-mapped FlashString
|
|
Graphics.drawImage: Allow 8 bit palettes to be specified
|
|
Bangle.js: Remove dumping of hardware state - saves some flash memory
|
|
microbit: Remove dumping of hardware state - saves some flash memory
|
|
Bangle.js: fix 'short' time for built-in locale
|
|
Bangle.js: fix 'speed' units for built-in locale
|
|
Graphics.createArrayBuffer now honors `msb:true` if `bpp>8`
|
|
Graphics.asImage: handle >8bpp correctly (fix #1797)
|
|
Graphics.asImage: Allow 'string' output type, reference Graphics buffer if possible
|
|
STM32: Fix 2v05 regression in hardware SPI.write (RX timeout)
|
|
Graphics: fix lock leak in g.reset()/g.clear(1)
|
|
Graphics: added drawImages to allow layers of rotated/scaled images to be composited
|
|
Remove E.interpolate/2D (not used much, just using flash)
|
|
Bangle.js: use double math FFT to save a few bytes of flash
|
|
Storage.writeJSON (fix memory leak)
|
|
dump() is now aware of pretokenised code (fix #1821)
|
|
Merge jsvStringIteratorGetChar + jsvStringIteratorNext into jsvStringIteratorGetCharAndNext (fix #1816)
|
|
Fix 2v05 regression that stopped process.uncaughtException from working (had been moved to E.uncaughtException)
|
|
nRF52: If passkey or oob is set in setSecurity, ensure that the UART connection requires encryption (fix #1705)
|
|
Now report [ERASED] rather than ?[255] if we hit char code 255 while evaluating
|
|
Bangle.js: read `setting.json` at init and modify Bangle.beep/buzz behaviour accordingly
|
|
Tensorflow: remove some as-yet unused operators to free space
|
|
nRF52: Speed up bootloader, remove pauses on Pixl.js
|
|
Pixl.js: fix self-test/terminal print - write to screen immediately after newline unless in IRQ
|
|
Fix issue with iteration over arrays with negative entries (these should be converted to Strings)
|
|
Linux: improve command-line, allow recursive test directory and more than one test (eg wildcard + shell expansion)
|
|
Added new vector fonts supporting most of ISO8859-1
|
|
Graphics.fillPoly now uses 4 bit fixed point internally
|
|
nRF52: Fix 2v05 hardware SPI regression (chip errata when sending 1 byte)
|
|
Graphics.fillPoly now uses a more normal fill algorithm that doesn't attempt to fill to the top right (fix #1796)
|
|
Fix setTimeout/Interval accuracy when new timeouts scheduled within timeout (fix #1829)
|
|
nRF52: Fix 'BLE task 2 is already in progress' if disconnect called during connection process
|
|
Puck.js: Put accelerometer into lower power mode by default
|
|
Puck.js: Switch to IRQs for magnetometer (lower power consumption)
|
|
Improve Graphics.drawImage speed and simplify code by allowing fast path for non-rotated graphics
|
|
Tensorflow: updated to v2.2, removed un-needed ops (reduces size by 24k)
|
|
Puck.js: Fix Puck.magTemp();
|
|
Puck.js v1: Fix magnetometer reading after puck.magOn (2v05 regression) - use old software I2C implementation
|
|
I2C: Improve software I2C (now quickly forces I2C high before pullup, to help improve clock speed)
|
|
Bangle.js: Fix GPS-raw events to provde also u-blox UBX Protocol messages (fix #1838)
|
|
Bangle.js: Save RAM in GPS handling, allow arbitrary length data returned (fix #1843)
|
|
Tensorflow updated to current 'master' version
|
|
Bangle.js: Improve SPI flash speed by with specific function for reading and keeping CS asserted (fix #1849)
|
|
Bangle.js: Ensure BTN3 exits debug mode (fix #1842)
|
|
Bangle.js: Now warn if GPS data overflows (fix #1847)
|
|
Fix double unlock in load(filename)
|
|
Bangle.js: Fix occasional execution errors when executing from Flash (fix #1854)
|
|
Add Graphics.transformVertices()
|
|
Re-add Graphics.quadraticBezier for Bangle.js, move to integer math to halve fn size
|
|
Emscripten: (fake) Flash memory support
|
|
|
|
2v05 : Add Array.includes
|
|
Fix (Number.toFixed) rounding, eg (1234.505).toFixed(2)
|
|
nRF52: If a central is connected to Espruino but isn't reading from UART, don't block waiting to send data
|
|
ESP8266: reverse fix #1679
|
|
Added Graphics.getFont/setFont/getFonts
|
|
Added Graphics.getFontHeight
|
|
Added option to compile in 6x8 fixed-width fonts
|
|
Fix issue where Util Timer timers could break after a call to setTime
|
|
nRF52: Enable DMA for SPI send
|
|
Added option to build in TensorFlow Lite for AI
|
|
Documentation for modules now includes require('...') in the call type to be less confusing
|
|
ESP8266: warning: Empty loadable segment detected (fix #1690)
|
|
nRF52: Add NRF.nfcPair(...) and OOB pairing to allow tap to pair over BLE
|
|
nRF52: Add NRF.nfcAndroidApp(...) to launch an Android app on touch
|
|
Pixl.js remove SHA512 to make room for new NFC functionality
|
|
Graphics.setFont("4x6",2) will now double the size of a bitmap font
|
|
Graphics.drawImage can now take a String of data for an image (eg. direct from Storage)
|
|
nRF5x: Support connection to devices with RANDOM_PRIVATE_RESOLVABLE and RANDOM_PRIVATE_NON_RESOLVABLE addresses
|
|
Pixl.js: Move SCK pin used during Neopixel writes to ensure it doesn't interfere with BTN3
|
|
nRF52: Fix alignment issue with Nordic's SDK12 code that stopped passkey pairing from working sometimes
|
|
Storage lib now doesn't bother reading to end of flash to ensure pages are clear
|
|
Allow heatshrink compress/decompress to work even if flat buffers can't be allocated
|
|
require("Flash").write operations no longer need to be aligned
|
|
require("Storage").open added - for appendable files
|
|
Pixl.js: Removed AES functionality - unfortunately we're running low on space for it
|
|
Original Espruino Board: Removed Vector font and don't add rotated drawImage to save flash
|
|
nRF5x: Add NRF.filterDevices to allow scanned devices to be easily filtered after scanning
|
|
nRF52: Fix 'BLE task completed that wasn't scheduled' warning regression (peripheral disconnect)
|
|
Can now get a data pointer even from a single JsVar string (it doesn't have to be flat)
|
|
Add option to specify a palette when drawing images with drawImage
|
|
Add XON/XOFF flow control to Bluetooth LE UART (on by default)
|
|
Lower thresholds for XON/XOFF to give more headroom with devices that are slow to respond
|
|
Add a fast path for non-rotated non-scaled Graphics.drawImage
|
|
Add argument check for heatshrink compress/decompress
|
|
nRF5x: Ensure gatt.connect silently succeeds if we're already connected to the device
|
|
Add E.showMenu, deprecate Pixl.menu - use a common function to ease porting between devices
|
|
Added E.showPrompt, E.showAlert for Bangle.js
|
|
Pixl.js - check '.splash' file at startup and use it for splash screen if it's there
|
|
Improve free list ordering when Flat Strings are freed
|
|
Added E.defrag to perform defragmentation - still beta!
|
|
nRF52: fix issue where restarting the softdevice would reset the RTC
|
|
- fixes Bangle.js watchdog reset
|
|
nRF52: fix issue where advertising flags could get out of sync after SD restart
|
|
Bangle.js: fix units for GPS speed (was knots, now km/h)
|
|
Bangle.js: Add Bangle.setLCDBrightness
|
|
nRF52: Fix passkey pairing if setSecurity is after setServices
|
|
Bangle.js: EVents for 'swipe' and 'touch' on the touchscreen
|
|
Added ability to compile Espruino to JavaScript with Emscripten
|
|
Allow g.setColor/setBgColor to take hex Strings of the form `'#00ff00'`
|
|
Bangle.js: Added heart rate autocorrelation, setHRMPower and 'HRM' event
|
|
Bangle.js: New 120x120 and 80x80 high speed buffered modes
|
|
Fixed REPL to allow chars with char code >=128
|
|
Fixed lex tokenToString for 'break'
|
|
Bangle.js: add fake LED/LED1/LED2 as @allObjects suggested
|
|
Add Graphics.toColor, and allow 4 bit Mac palette to be mapped to 8 bit web palette
|
|
Add Graphics.setClipRect to allow draw ops to be restricted to a certain area
|
|
Bangle.js: add 'null' LCD mode to stop apps from drawing
|
|
Bangle.js: add Bangle.getLCDMode
|
|
Bangle.js: skip firmware version checks to save some bytes in bootloader
|
|
Graphics: new g.fillPoly to handle irregular polygons
|
|
Bangle.js: Bangle.setLCDMode now errors if it can't allocate a flat string (also garbage collects and defrags to try and ensure it can)
|
|
Graphics: drawEllipse/fillEllipse now work correctly for very small ellipses
|
|
Fix type compare of string and flatstring
|
|
Allow Storage.read to make partial file reads (fix #1744)
|
|
Fix SyntaxError when using pretokenise + getters (fix #1745)
|
|
Add Graphics.reset, and ensure it (and g.clear(1)) unreference custom fonts
|
|
Iterator cloners now take a reference to the iterator rather than returning it
|
|
Flash Strings: On Bangle.js allow JS code (and other Strings) to be accessed without loading them completely from Flash
|
|
Added E.CRC32 for easy testing of data validity
|
|
Add `E.on('kill'` event for executing code before load/reset/save/etc
|
|
JSON.stringify now escapes using the less efficient JSON subset of escape characters (fix #1737)
|
|
Allow optional `load("filename")` to load a JS file from Storage (was just `load()`)
|
|
Bangle.js: add Bangle.loadWidgets/drawWidgets
|
|
Bangle.js: Remove deprecated Bangle.menu
|
|
Ensure it's possible to get a solid background when using 4x6 font
|
|
Bangle.js: Add Bangle.showLauncher
|
|
Add append optimisation for string '+', and don't append to flat/native/etc strings (fix #1746)
|
|
ESP8266_4MB: add optional build flag FLASH_1MB for ESP8255 & ESP01s with 1MB flash
|
|
ESP8266: add optional build flag NO_FOTA to remove flash over the air functionality
|
|
Add Bangle.getCompass and Bangle.getAccel to get the latest compass/accelerometer readings without a callback
|
|
Fix `parseInt("0b",16)` as well as some other non-compliant behaviour (fix #1722)
|
|
Bangle.js: Disable touch buttons if screen off
|
|
Bangle.js: Don't send 'up' event for a button that was used to wake the screen
|
|
Bangle.js: GPS event.time set to undefined if GPS time is not initialised
|
|
Fix regression that removed exception reporting in console
|
|
Bangle.js: speed up bootloader progress bar
|
|
Bangle.js: fix problems turning off via bootloader sometimes
|
|
Bangle.js: improve power consumption when off, now ~0.08mA (fix #1727)
|
|
Bangle.js: add Bangle.setOptions({wakeOn*}) for when LCD should light
|
|
Bangle.js: Add 'twist' event and 'wakeOnTwist' (wakeOnTwist now default true, waveOnFaceUp default false)
|
|
Bangle.js/Pixl.js: Updated E.showMenu
|
|
Bangle.js: E.showMenu now has some colour, bigger, with next/prev indicators, and works with widgets
|
|
Pixl.js: Add E.showPrompt/Alert/Message (fix #1747)
|
|
Add .toJSON handling for JSON.stringify, and add Date.toJSON (fix #1754)
|
|
Remove broken Graphics.drawImage centerx/y (fix #1742)
|
|
Add Storage.writeJSON to avoid any confusion of writing arrays/numbers/etc
|
|
Bangle.js: Keep widget area free when using showPrompt/Alert/etc (fix #1756)
|
|
Add more info about flash memory to process.env/process.memory
|
|
Add Graphics.quadraticBezier()
|
|
Allow Graphics.setFont to be used with custom fonts (fix #1762)
|
|
Espruino WiFi: WiFi module now makes BOOT pin open circuit when sleeping - saves ~2mA
|
|
Add E.setConsole/getConsole to allow console to be moved (including to 'null')
|
|
Bangle.js: Ensure HRM is turned off in Bangle.off() (fix #1759)
|
|
Increase 'Storage' library's max filename size to 24 bytes (from 8)
|
|
Remove header.replacement in 'Storage' lib and just zero header.name
|
|
- increase filename to 28 bytes, but file search now more efficient
|
|
Bangle.js: Increase Storage area to full 4MB of flash
|
|
Bangle.js: NEEDS NEW APPS - Move away from using first char as file descriptor and use file extensions instead
|
|
Add StorageFile.getLength() to get the current length of a StorageFile
|
|
StorageFile also writes files with a 'JSFF_STORAGEFILE' flag (not currently used)
|
|
Storage.list() can now take a RegEx/string to filter returned results
|
|
MDBT42Q: Remove AES encryption libs by default to free up more flash memory
|
|
Microbit: Add SAVE_ON_FLASH_EXTREME flag to ensure builds keep working
|
|
Bangle.js: Added built-in 'locale' module to handle common conversions - this can be overwritten by a Storage File to change language
|
|
Storage.readJSON now has optional 2nd arg that stops it from creating exceptions on bad JSON
|
|
Bangle.js: Tweak LCD gamma curves to provide better gradients on new watches (fix #1758)
|
|
Bangle.js: fix BLE UART transmit bug when compiling for SDK14 (thanks @fanoush!)
|
|
Add euro symbol to 6x8 and 4x6 fonts as char code 128 (ISO10646-1)
|
|
Bangle.js: Use 'locale' library to translate E.showMenu/Prompt/Alert/etc
|
|
Bangle.js: remove graphical_menu lib and inline specialised version into E.showMenu
|
|
Bangle.js: Modify handling of widgets to allow variable width widgets (requires new widget JS)
|
|
Changed 6x8 builtin font to a modified Dina_r400-6 supporting non-ASCII characters
|
|
Bangle.js: Modify E.showMessage/Prompt/Alert to clear the entire screen and redraw widgets (fix #1771)
|
|
Bangle.js: Modify Bangle.drawWidgets to only clear the areas where widgets actually are, not the whole top&bottom bar
|
|
Kick Watchdog when erasing flash (it can take so long on 4MB external flash that it reboots)
|
|
KICKSTARTER BUILD
|
|
Bangle.js: Add 'meridian' to locale library
|
|
ESP32: add environment variable COMPORT to be used with make flash
|
|
Puck.js: v2 Support: Accelerometer/Gyro/temp
|
|
Puck.js: Self test now sets Puck.js BLE name if there's an error
|
|
Fix bitwise rshift by 0 to be unsigned (fix #1784)
|
|
Bangle.js: Don't load .boot0/1/2/3 if BTN1 is pressed
|
|
Puck.js: Allow D21(RST) to be used as normal IO pin
|
|
Fix recent E.getTemperature regression (fix #1788)
|
|
Fix pretokenise of RegExp literals (fix #1786)
|
|
Add ability to turn off software I2C clock stretching (not accessible from JS)
|
|
Puck.js: disable clock stretching for built-in sensors
|
|
Bangle.js: Now clear entire top/bottom row if there are widgets in it (fix #1790)
|
|
Add Storage check at startup and erase everything if storage looks corrupt (fix #1766)
|
|
Fix restriction on StorageFile filename length (8 to 28)
|
|
Fix array sort when compare fn returns floats <1 (fix #1798)
|
|
Fix Storage.write duplicate file issue in some rare cases (fix #1801)
|
|
Bangle.js: fix post-kickstarter issue adding widgets in bottom of screen (#1790)
|
|
Bangle.js: fix magnetometer self-calibration
|
|
Espruino Original: Removed Debugger, Tab complete, AT command networking from WIZnet networking build to free enough Flash
|
|
Espruino Pico: Added a normal build that doesn't contain CC3000 or WIZnet support
|
|
Espruino Pico: Removed Debugger and Vector font from WIZnet/CC3000 networking versions to free enough Flash
|
|
HYSTM32_28: Removed from build due to lack of interest and difficulty with increased firmware size
|
|
|
|
2v04 : Allow \1..\9 escape codes in RegExp
|
|
ESP8266: reading storage is not working for boot from user2 (fix #1507)
|
|
Fix Array.fill crash if used to fill up all available memory (fix #1668)
|
|
Fix NRF.requestDevice regression (clearInterval error) (fix #1669)
|
|
Smartibot devices now advertise on BLE as 'Smartibot abcd'
|
|
nRF5x: Leave digital input disconnected for analog read (saves power)
|
|
nRF5x: Return 'analog' as pin mode for any pin where input is disconnected
|
|
If watchdog is on and automatic, ensure that `reset()` keeps the automatic kicking going
|
|
Ensure that a console stays locked even after
|
|
Ensure interpreter flags (eg echo) are cleared after a `reset()`
|
|
nRF5x: When watchdog is on and automatic, automatically wake up often enough to service it
|
|
Fix Graphics.setFontBitmap on builds with no vector font (fix #1671)
|
|
Graphics.asBMP now takes account of bitmap rotation (fix #1672)
|
|
Raspberry pi pin numbering the same if using wiringPi or filesystem GPIO (fix #1673)
|
|
nRF52: Peer manager init errors from Nordic libs now not fatal
|
|
SDK15: Writing to flash now works
|
|
nRF52840: USB Serial works even for big sends, and device swaps to USB automatically
|
|
nRF52840: Allow Serial2 to be used
|
|
ESP8266: optimize rename-section for ESP8266_4MB board, freeHeap +2064 byte (fix #1679)
|
|
Fix corruption if Function.replaceWith called manually on something not a function (fix #1684)
|
|
Fix bug where '.clone' on a native function didn't copy arguments (fix #1685)
|
|
nRF52840: Fix input/pullup/pulldown pin modes on IO bank 2
|
|
Added `E.memoryMap` to allow on-chip registers to be mapped direct to variables (fix #1500)
|
|
|
|
2v03 : nRF5x: Fix issue when calling NRF.setAdvertising while connected via BLE (fix #1659)
|
|
nRF5x: 'dump()' not outputs `NRF.setSecurity` line if it has been called.
|
|
Ensure that converting a valid pin to a boolean always returns true
|
|
clearInterval/clearTimeout/clearWatch(undefined) now throw an error asking for just clearX()
|
|
- this stops code accidentally clearing all timers/etc if it uses a variable that is undefined
|
|
Allow NRF.setAddress to work even with services defined and a connection in progress
|
|
|
|
2v02 : Fix string index calculation when using some regexes (fix #1602)
|
|
Ensure Function.replaceWith puts scope after parameters (fix #1601)
|
|
Ensure Graphics.* return the Graphics instance, to allow call chaining (fix #1580)
|
|
Ensure DataView.byteOffset/byteLength is always set even if not specified (fix #1567)
|
|
Added HttpServerResponse.setHeader
|
|
HttpServerResponse now automatically sends `Connection:close` unless overridden (fix #1596)
|
|
Fix sign of RSSI reporting with setRSSIHandler
|
|
nRF52: Add docs for properties that weren't documented before
|
|
nRF52: Add ability to connect to device with passkey authentication
|
|
nRF52: Allow startNotifications to use Indicate if Notify doesn't exist (as per spec)
|
|
nRF52: Add option for static passkey pairing with NRF.setSecurity
|
|
ESP32: update EspruinoBuildTools to esp-idf V3.1.2 - fix Wifi connect issues (multiple ssid)
|
|
Revert PR #1459 as it broke neopixel functionality that worked previously
|
|
nRF52: Disconnect RX pin after UART test at boot (saves power when in deep sleep)
|
|
Serial.unsetup now sets pin state to STATE_UNDEFINED, which disconnects the pins internally
|
|
Removed modulo on `new Date` h/m/s/ms arguments as it seems desktop JS is fine with out of range values
|
|
Added `active` option to NRF.setScan/findDevices/requestDevices to allow scan response packets to be requested
|
|
Add I2C/SPI baud rate checks (#1619)
|
|
STM32: Add `E.setRTCPrescaler` to allow the RTC to be calibrated on Espruino Pico (fix #1607)
|
|
nRF52: Fix slow Bluetooth connection if previously disconnected while using low power connection interval (fix #1605)
|
|
Allow `Graphics.clear(true)` to reset state (font, color, etc) to default as well as clearing the screen (fix #1615)
|
|
nRF52: Fix setScanResponse regression from 2v00
|
|
nRF5x: Execute SWI1_IRQHandler when radio turns off instead of on+off. More efficient, fixed multiple advertising.
|
|
Smartibot build added
|
|
ESP8266: add CFLAGs to shrink build size (fix #1622)
|
|
ESP32: update EspruinoBuildTools to esp-idf V3.1.3
|
|
nRF52: Add FAT Filesystem support to MDBT42Q module
|
|
Now save file modification time with FAT
|
|
Fix segfault if `.clone` is called with `this==undefined` (fix #1628)
|
|
Fix issue outputting char codes <8 after outputting hex char codes
|
|
nRF52: Don't allow NRF.updateServices while a BLE restart for setServices is queued
|
|
nRF5x: Don't sleep if we received any events since last sleep (fix #1572)
|
|
Remove limit on the number of scopes that can be searched (fix #948)
|
|
String.split - improve docs, split with RegExp now inserts the text after the final match
|
|
RegExp: Add '|' operator (fix #1503)
|
|
Switch ARM toolchain to gcc-arm-none-eabi-8-2018-q4-major
|
|
Improve handling of timeouts for RAK8212 GPS
|
|
nRF52: Now create exception if advertising calls fail (but ignore when in IRQ)
|
|
nRF52: Add setAdvertising({},{scannable:false}) for disabling scan response
|
|
nRF52: Add note about connectable:false requiring >=100ms intervals
|
|
STM32: Fix issue where occasionally STM32 would be ~0.2s late waking from light sleep
|
|
ESP8266: add Wifi.connect options channel and bssid for faster AP connects (fix #1595, #1640)
|
|
Fix index in E.mapInPlace and improve docs
|
|
nRF52: Add NRF.getSecurityStatus to allow devices to detect the current state of the connection
|
|
STM32F4: Add Filesystem module
|
|
STM32F3: Fix broken build
|
|
nRF52: Fix nRF52840 advertising and remove duplicated advertising code
|
|
Fix Software Serial receive when the frame has to be decoded inside the IRQ (fix #1654)
|
|
Raise software serial receive buffer to 64 bytes (from 7)
|
|
nRF5x: Add security options to NRF.setSecurity (courtesy of @vkolotov)
|
|
nRF5x: Allow Serial1.setup(...) with only TX or RX pins
|
|
Vector font removed from Espruino Original WIZnet build due to lack of spare flash
|
|
|
|
2v01 : ESP32: update to esp-idf V3.1
|
|
Fix issues with Class Extends
|
|
Improve Tab Completions for extended classes
|
|
Fix Storage.readJSON/readArrayBuffer memory leak (fix #1532)
|
|
Fix potential out of bounds Graphics.scroll
|
|
Serial.setConsole now warns if not used on hardware Serial
|
|
ESP8266: implement hw_timer (fix #1511) to make soft serial and pwm work
|
|
Fix Storage write error when skipping pages (fix #1539)
|
|
nRF5x: When scanning, only use as much of IO queue as is needed
|
|
nRF5x: If BLE/NFC/etc data won't fit in IO queue, drop whole packet
|
|
Allow `a in b` to search 'fake' objects (#1534)
|
|
Improve fast path when iterating over Uint8Array/ArrayBuffer
|
|
Allow deletion of function properties (fix #1549)
|
|
Add `{callback:...}` option for `.write` style functions - improve docs.
|
|
ESP8266: deepSleep invalid microseconds (fix #1547)
|
|
ESP8266: ESP_FLASH_MAX for ESP8266_4MB is wrong (fix #1551, #1553)
|
|
Fix buffer overflow if bytesize/stopbits used in `Serial.setup` (fix #1510)
|
|
Ensure jsvNewFlatStringOfLength tries twice (even if GC doesn't release memory, it reorders the free list) (#1559)
|
|
ESP8266: Missing variable Flash Mode (--flash_mode, -fm) in ESP8266.make files (fix #1563)
|
|
ESP8266: Remove hack added to get around SDK 1.4 bug (fix #1568)
|
|
Reduce available hardware SPI/I2C instances to 1 on nRF52 (since this is all we implement atm)
|
|
Add E.dumpFragmentation to show memory fragmentation (only for debug builds)
|
|
Fix parsing of dates from before 1970
|
|
nRF52: Fix some regressions in requestDevice (flagged up by asserts in debug build)
|
|
Allow built-in objects to be created with `new X()`
|
|
nRF52: Ensure Bluetooth stack doesn't do a reboot for non-fatal errors (just report them to console)
|
|
BluetoothRemoteGATTServer.disconnect now returns a Promise
|
|
nRF52: Jump out of low power mode after less BLE activity (2 reads/writes in 10 radio packets) (#1546)
|
|
nRF5x: Fix NRF.setConnectionInterval when there's no connection (fix #1546)
|
|
Explicitly mention Espruino not supporting CASE after DEFAULT in error (fix #1570)
|
|
Ensure scope is saved for Class constructors (fix #1576)
|
|
Add setNBCellOn for RAK8211-NB (fix #1581)
|
|
Now escape chars <8 as octal, and add escape of vertical tab
|
|
Add Graphics.createArrayBuffer(... {interleavex:true}) to allow faster support for P3 LED panels
|
|
Add Graphics.fill/drawEllipse and move fill/drawCircle to use the same code
|
|
CC3000-specific build removed on Original Espruino board (lack of space)
|
|
|
|
2v00 : Allow changeInterval with large (>32 bit) intervals (fix #1438)
|
|
changeInterval now changes the interval immediately when it's called inside the interval it is changing (fix #1440)
|
|
Fix parsing of try..catch when not executing (fix #1439)
|
|
Add extra ReferenceError checks, even if variable is not used
|
|
Allow Ctrl-C out of while...continue loop (fix #1441)
|
|
Fix bug if using an undefined member of an object for for..in (fix #1437)
|
|
Allow for..in to iterate over prototype chains down from Array and Object
|
|
Add for(var i of array) to iterate over elements
|
|
Added getter and setter support
|
|
Stop parsing blocks if not executing (fix #572)
|
|
Fix stack overflow if interpreting a file full of '{' (fix #1448)
|
|
Fix exception when performing record access on object from getter (fix #1454)
|
|
Switch to non-recursive StringExt copy (fix #1451)
|
|
Fix rounding errors in fillPoly -> improve vector font rendering
|
|
Fix issue that caused 'dump()' not to report variables/functions on Pixl.js
|
|
Add E.lookupNoCase to allow searching case-insensitively for Object keys
|
|
Fix HTTP Chunked transfers when the server uses lowercase headers (fix #1458)
|
|
Fix TypedArray.indexOf (fix #1468)
|
|
Allow require('Storage').write('a','',0,15) (zero length data) (fix #1465)
|
|
edit() now chooses the shortest way to describe the function
|
|
Fixed bug when RegExp.match/test called on non-strings
|
|
Added Global isFinite
|
|
Add missing ArrayBufferView.filter
|
|
Added Array.find and findIndex (also for ArrayBufferViews)
|
|
Fix unreliable ArrayBufferView.indexOf (#1468)
|
|
Added String.startsWith/endsWith/includes (#1302)
|
|
parseFloat(".s") now returns NaN
|
|
Fixed /\S+/.test(" ")
|
|
Added Storage.getFree() to return available space
|
|
Enable E.setTimeZone on boards with very little flash memory
|
|
Lower saved code area to 2k on micro:bit (from 3)
|
|
Remove RGB colour handling in setColor on devices with low flash
|
|
Reduce available variable count on STM32VL - we were too low on RAM
|
|
Added Graphics.asBMP/asURL/dump - allowing easy debugging of Graphics via IDE
|
|
Allow '.then' on already-resolved promise (fix #1476)
|
|
Stop atob adding trailing 0s when strings are not a multiple of 3 long
|
|
Reconstruct start and end newlines when dumping multi-line functions
|
|
Fix regression parsing methods in classes on embedded (fix #1479)
|
|
nRF5x: Add options argument to NRF.connect and BluetoothDevice.gatt.connect, allowing a connection interval to be specified
|
|
nRF5x: Start renegotiating speed after 0.1ms, not 5s. Massively improves connect speed.
|
|
nRF5x: Now queue up to 5 UART TX packets per transmit interval (was 1 previously)
|
|
nRF52: Add Dynamic Interval Adjustment - default to 2x connection speed, but idle at 10x slower if not used for 2 minutes
|
|
nRF5x: Add NRF.setConnectionInterval() to allow connection speed to be set manually
|
|
RuuviTag: invert LED1, LED2 & BTN in software so LED.set() does what you'd expect
|
|
Console now doesn't print quotes around object keys if it's not needed
|
|
Added `E.toJS` to allow very compact JS data stringification (similar to `JSON.stringify`)
|
|
Output the current timer number as a comment in `dump()`
|
|
Don't print `=undefined` to console if line is empty
|
|
Added RAK8212 (and include SMS/GPRS code in RAK8211/2 builds)
|
|
Graphics.stringWidth now takes account of newlines
|
|
nRF52: NRF.requestDevice now resolves as soon as a device is found. Faster and better in congested areas
|
|
Replace use of obsolete 'usleep' function in Linux builds (fix #1455)
|
|
Add Ethernet.getIP/setIP callbacks for Wiznet to bring them in line with WiFi (fix #1482)
|
|
Fix Math.round for numbers > 32 bit (fix #1485)
|
|
Pixl.js menu now resets font alignment, and down arrow icon is fixed
|
|
Now check for ReferenceErrors in global scope
|
|
Fix Array.shift (returned a NAME, rather than the value)
|
|
Add sanity check for names returned from Functions and fix Array.pop
|
|
Stop characters getting dropped when pasting large amounts of data into Linux build
|
|
nRF5x increase JsSysTime accuracy to 2^-20 from 2^-16 - drastically improves Util Timer accuracy
|
|
Added support for Software Serial ports (for low baud rates, eg. 9600)
|
|
Fix JS state restoration issue (eg. Pixl.menu inside switch would cause errors)
|
|
Added Graphics.drawPoly
|
|
Add Graphics.asImage to turn a Graphics instance into an Image that can be used with drawImage
|
|
Add Graphics.createImage to allow creation of a 1 bit image direct from a string
|
|
Use 32 bit floats for E.FFT, not 64 (fix #1443)
|
|
Automatically shut down UART if both pin states are changed
|
|
Fix `setDeviceClockCmd: Unknown Device` when using `LoopbackB.setConsole()` on WiFi board
|
|
Fix non-UART serial regressions (after software serial additions)
|
|
Pixl.js: Add Pixl.setLCDPower to allow the LCD to be powered off, more than halving power consumption
|
|
nRF5x: Allow NRF.setScan and NRF.findDevices to take the same search filters NRF.requestDevice does (fix #1496)
|
|
Fix buffer overrun if we have to reallocate a pointer to argument lists when calling a function (fix #1491)
|
|
Fix stack overflow if executing regex full of hundreds of open brackets (fix #1487)
|
|
Fix issue where STM32F4 USB could lock up if TX during heavy RX
|
|
Improve `E.mapInPlace` docs, and allow it to work with no map (eg pass straight through)
|
|
Added non-standard Uint24Array, because it's very useful for RGB
|
|
ESP8266: add CFLAGs to shrink binaray files (fix #1499)
|
|
ESP8266: fully integration of analog pin A0 (fix #1495)
|
|
ESP32: update sdk to esp-idf 3.0.1, set Espruino build tools back to master branch
|
|
Allow btoa to work for arrays as well as Strings (fix #1509)
|
|
Allow E.mapInPlace to merge bits from multiple source elements, also add option for msb/lsb first
|
|
Remove Graphics.scroll/drawCircle/fillCircle on devices with low flash to allow builds to fit again
|
|
Remove BluetoothRemoteGATTCharacteristic.writeValue on NRF51 (accidental inclusion - it's not required)
|
|
Double IO buffer size to 256 (1k bytes) on boards with 96k of RAM or more (or NRF52)
|
|
nRF5x: allow arbirtary baud rates to be specified for UART
|
|
On devices with low flash, ensure atan2 uses the slower/smaller atan implementation
|
|
Move FFT back to 64 bit if low flash (it uses less memory!) and optimise for flash space
|
|
Remove new Graphics.createImage/asBML/asURL/dump on Original Espruino Board (not enough space)
|
|
Remove Olimexino from build (too difficult to slim down build and very low usage)
|
|
Remove Software Serial from boards where we're low on flash
|
|
Increase size of saved code area from 3*4k to 10*4k on RAK821x boards
|
|
Fix 'Can't extend undefined' when using Object.setPrototypeOf on a function
|
|
nRF52: Added NRF.HID event for two-way BLE HID communications
|
|
nRF5x: Remove multiple writes per connection interval (more trouble than the speed improvement is worth)
|
|
Fixed hang if trying to allocate Storage greater than total storage size in a fully erased Storage area.
|
|
Pixl.js: Fix 30s pause when closing sockets on WIZnet W5100 (fix #1306)
|
|
Remove HASH/hashlib from all builds as it was confusingly in some and not others. Now use 'crypto'
|
|
require('crypto').SHA1 is now JS in Espruino Original to cut down on the flash required
|
|
Added 'heatshrink' library to expose built-in heatshrink compression to users
|
|
Fix assert fail when calling Function.apply with an Object with non-numeric keys
|
|
Fix issue when AT lib has to process multiple custom line handers in one packet
|
|
Espruino WiFi: Fix unreliable send when receiving lots of data on another socket
|
|
Espruino WiFi: Only rename `EspruinoWiFi` to `WiFi` if not found (allows easier debug)
|
|
Check Flash Storage for modules when using `require`
|
|
Add 'bits' option for Software SPI
|
|
STM32 reset pin IRQs before storing the state - makes lost setWatches far less likely
|
|
Ensure that setBusyIndicator updates output state after the very first initialisation.
|
|
MDBT42Q: Add LED2 var in the Espruino interpreter, but don't use it for the bootloader
|
|
ESP8266: release heap used by logDebug(true) (fix #1508)
|
|
ESP8266: remove SHA256 SHA512 (fix #1517)
|
|
Ensure `Date.getTimezoneOffset()` returns the correct timezone offset (fix #1515)
|
|
Search for and execute files '.boot0'/1/2/3 in Storage at boot time if they exist
|
|
Pixl.js: reduce saved code area to 9 x 4kb to allow for extra features
|
|
ESP8266: switch to SDK 2.2.1 (fix #1207)
|
|
Fix Serial port path regression on Linux, and add docs
|
|
microbit: remove line-by-line debug capability to free up some space
|
|
Added ES6 String.prototype.repeat
|
|
|
|
1v99 : Increase jslMatch error buffer size to handle "UNFINISHED TEMPLATE LITERAL" string (#1426)
|
|
nRF5x: Make FlashWrite cope with flash writes > 4k
|
|
Increase max size of native strings on platforms that support it - 16 bit to 32 bit (#1432)
|
|
Fix stack size detection on Linux (fix #1427)
|
|
Fix strncat/cpy bounding issues (fix #1425)
|
|
Promises now ignore a second resolve/reject (fix #1433)
|
|
Fix stack overflow if void void void... is repeated many times (fix #1434)
|
|
Fix font rendering issue caused by signed bit field handling by GCC on non-x86 platforms (fix #1436)
|
|
Added E.reboot() to allow hard reboots from software (fix #1429)
|
|
Added 'Graphics.getInstance()' for more platform independent graphics
|
|
Added VT100 'erase in Display' to Terminal
|
|
In REPL, use x.toString() for objects if we know their name and it is available
|
|
Pixl.js add BLE aerial test to self-test, now also start immediately on BTN4 at boot
|
|
|
|
1v98 : Allow Crypto SHA1 without SHA256/512 (for ESP8266 where flash is scarce)
|
|
Add better docs for the form of Wifi callback functions
|
|
Modify ESP8266/ESP32 callbacks to match the node.js style used elsewhere
|
|
nRF52: fix pin.toggle() on software-negated pins
|
|
Pixl.js: Reorder pins so 0..13 are also D0..13 for better Arduino compatibility
|
|
Fix dump() when used with code written using E.setBootCode(..), (fix #1398)
|
|
Allow parseInt/parseFloat to be used on very large strings if the number doesn't extend right to the end (fix #1397)
|
|
nRF5x: Fix memory leak on NRF.connect
|
|
Fix memory leak if an exception is thrown within a rejected promise
|
|
ESP8266: rewrite wifi.save and restore to use the storage lib (imp #1380)
|
|
ESP8266: Add missing option ssid_hidden for Wifi.startAP() (imp #1358)
|
|
Fixed double-connect issue for TCP sockets
|
|
Pixl.js: Ensure Pixl.menu changes to bitmap fonts
|
|
Pixl.js: tweaked bias/contrast to improve display quality
|
|
ESP32: update esp-idf to v3.0. BLE support - thanks to @jumjum. Erase flash before flashing. vars now 2500
|
|
ESP8266: rearange rf_cal_sector (fix #1294)
|
|
ESP8266: Wifi.scan() now return authmode as text
|
|
ESP32: Fix accidental initialisation of UART3 when switching to Telnet (fix #1362)
|
|
nRF52: Added `NRF.setAddress` to allow the MAC address to be changed
|
|
Added Graphics.setFontAlign for font alignment and rotation
|
|
Make software I2C bitrate and waveform more accurate
|
|
Move default I2C bitrate to 100kbit/sec
|
|
Linux: don't create a espruino.flash file if we're not writing to flash
|
|
Add height check for Graphics.createArrayBuffer(...vertical_byte:true) (fix #1421)
|
|
Add sanity check for debug trace print statement (fix #1420)
|
|
Fix handling of exceptions in switch statements (fix #1352)
|
|
Fix 'return when not in function' regression when returning inside a catch block (fix #1422)
|
|
Don't load saved firmware images from different firmware versions - saved JS code still loaded (fix #1174)
|
|
Remove Graphics.setFontAlign and Graphics.getModified on devices with low flash memory
|
|
|
|
1v97 : nRF52: fix NRF.on('connect',...) issue
|
|
STM32: Fix setDeviceClockCmd error for USB.setConsole()
|
|
nRF5x: Fix getPinMode, which fixes SW I2C after save()
|
|
Thingy52: Don't report contents of 'Thingy' in 'dump()'
|
|
Thingy52: Allow multiple sounds to play at once
|
|
nRF5x: Ensure Waveform triggers a finished event
|
|
Thingy52: Enable simple bootloader, add travis build for DFU
|
|
Add Serial.inject to allow data to be added as if it was received from that device
|
|
Fix UDP handling so that it copes with packets not all being received in one go
|
|
STM32L496: increase variables - use full 320kB of RAM as it is contiguous
|
|
Add a maximum time for setTimeout/setInterval (100 years)
|
|
Fix Storage.write when writing partial file of the same length and initial contents
|
|
Fix corrupted timer channels returned by Pin.getInfo
|
|
Add command history to debugger
|
|
Remove process.env.EXPORTS (EXPTR does the same but takes less space)
|
|
Thingy52: Add 9 axis MPU support
|
|
Errors now store message in 'message', not 'msg' (fix #1366)
|
|
Ensure 'in' operator checks the prototype chain (fix #1365)
|
|
Promise.resolve now handles promises/thenables as arguments (fix #1363)
|
|
try..catch now creates exception in its own scope (fix #1367)
|
|
Thingy52,Pixl.js: add default NFC URL of the Espruino IDE
|
|
Add ArrayBuffer.byteLength property (fix #1374)
|
|
setWatch(..., {edge:"rising",debounce:25}) is now default for built-in buttons
|
|
Pixl.js: add Pixl.menu function for easy menus, build in graphical_menu.js
|
|
Fix regression in MDBT42Q advertised name
|
|
nRF52: Add E.getBattery as a more global battery percentage function, deprecate `Puck.getBatteryPercentage`
|
|
Fix '.buffer' regression in 'JSON.stringify(new Uint8Array([1,2,3,4]).buffer)'
|
|
Allow `typeof 123 .testing` without an exception (fix #1351)
|
|
Add crypto.AES to Puck.js and other nRF52 Espruino devices
|
|
|
|
1v96 : ESP8266: no callback if SSID is not available (fix #1297)
|
|
ESP8266: esp8266 wifi getStatus doesn't show savedMode (fix #752)
|
|
ESP8266: cleanup defines WIFI_DBG and NET_DBG for RELEASE
|
|
ESP8266: switch to single ld file eagle.app.v6.new.2048.ld for ESP8266_4MB board
|
|
Allow JS modules to be built-in by adding files to JSMODULESOURCES
|
|
Fix slow/hacky handling of 7 bit serial data for STM32
|
|
Add more stack checks so invalid code `typeof typeof typeof x100` can't break stack (fix #1310)
|
|
nRF5x: Fix PWM output via Waveform class
|
|
Fix free stack checking on ARM
|
|
nRF52: Make slightly more space available for stack
|
|
nRF5x: Move to SDK 12.3
|
|
Stop stack traces from being gathered in functions for Ctrl-C (fix #1313)
|
|
nRF5x: Fix crash if I2C is used before being initialised (fix #1301)
|
|
Internal printf can now pad with spaces
|
|
Add `E.dumpFreeList` in non-release builds to help with debugging
|
|
Fix mild memory leak in jsvMakeIntoVariableName that caused GC to run more often than normal
|
|
E.toString now tries harder to allocate a Flat String, and works with no-alloc for Uint8Array/FlatStrings
|
|
WIO_LTE fix SD card initialisation
|
|
Improve SD card reliability on all boards by trying to initialise multiple times before failing
|
|
Remove forced inlining in variable inspection functions (reduces flash usage by ~10k)
|
|
Remove un-needed DNS lookup for localhost
|
|
Add WIZnet UDP support
|
|
Tidying up build to avoid making un-needed bin, hex or lst files
|
|
Simplify flash save (and help debugging) by using the 'fake flash' implementation on Linux builds
|
|
Added Graphics.scroll command to scroll graphics contents
|
|
Added 'Terminal' class with built-in VT100 terminal
|
|
Tweak Espruino logo to be exactly 32 chars wide
|
|
Improved code for returning console device to the most useful place
|
|
Fix pinToString for devices with port A but no port B
|
|
Speed improvements for ArrayBuffer Graphics
|
|
Tidied up bootloader - devices with one LED now flash LED when button pressed
|
|
Simplify data returned by process.env
|
|
Add process.env.MODULES - to contain a list of the libraries provided in the firmware by require
|
|
Include WiFi and AT libraries inside Espruino WiFi builds
|
|
Add 'E.asm' placeholder to detect E.asm calls that haven't been replaced by the IDE
|
|
Add process.env.EXPTR to link to table of functions - will work better for compiled code over BLE
|
|
Added SAVE_ON_FLASH_EXTREME for HYSTM32_28, where we're now cutting out some Math.X functionality to keep builds going
|
|
Added `jshFlashGetMemMapAddress` to allow remapping of addresses for ESP8266/ESP32 without loads of code duplication
|
|
Remap peek8/16/32 addresses on ESP32/ESP8266 so it can be used on flash memory
|
|
Swapped save/load/E.setBootCode to use the flash library
|
|
Allow STM32LL port to write 32 bits to flash at a time to bring it in line with other ports
|
|
Allow flash writes *from* unaligned addresses on nRF52 and ESP8266 (previously this crashed the ESP8266)
|
|
Update process.ENV.EXPORTS to bring it in line with what the compiler uses
|
|
Now set 'this' correctly for Arrow Functions
|
|
Add ES6 classes and 'super'
|
|
nRF5x: Move all bluetooth events to event queue (removing MEMORY_BUSY issues)
|
|
Fix potential issue where EV_TYPE_MASK enum could be set incorrectly
|
|
setWatch's edge argument can also be an integer now
|
|
Add 'data' option to setWatch to allow clocked data to be decoded easily
|
|
nRF52: Increase flash available for stored code from 12kB for 40kB
|
|
Now store/display appreviated commit in process.env, remove build date
|
|
|
|
1v95 : nRF5x: Swap to UART fifo to avoid overrun errors at high baud rates
|
|
Ensure Exceptions/errors are reported on a blank line
|
|
Internal: Added initialiser argument to jsvNewStringOfLength
|
|
Internal: Added jsvObjectSetChildVar/jsvObjectSetChildVar/jsvObjectSetChildVar
|
|
Internal: Fix jsvCopy if given a NAME_INT/etc
|
|
Added ES6's Object.assign
|
|
nRF5x: NRF.setScan now reads service data automatically
|
|
nRF5x: NRF.findDevices aggregates data from multiple advertising packets
|
|
nRF5x: Remove app_uart and use nrf_drv_uart with double buffering - fix uart overflow errors (fix #1238)
|
|
nRF5x: Fix issue with findDevices/setScan servicedata when all digits of service are numbers (eg "1809")
|
|
Fix memory leak in tab completion code
|
|
Add `E.errorFlag` event to allow JS to respond to internal errors
|
|
Use Esc[J VT100 code when cycling through command history (much faster REPL on low bandwidth connections)
|
|
ESP8266: Remove debugger again as it will never work on 8266
|
|
ESP8266: Enable unaligned reads for ESP8266_4MB (fix #1240,#837)
|
|
ESP8266: move code save section to fist partition for memory mapping for ESP8266_4MB (fix #1240)
|
|
ESP8266: Add GPIO16 as D16 without watch (#1206) but soft PWM/I2C/SPI/etc
|
|
ESP8266: Remove osprintf for RELEASE=1
|
|
Internal: Networkjs now forwards `socketType` - laying groundwork for UDP over AT command (#1232)
|
|
Added simple RegExp implemention (partial fix #256)
|
|
Speed up JSON.stringify for Arrays, and output non-numeric array elements in REPL (fix #64)
|
|
nRF5x: Bump nRF52-based boards variable count from 2000 to 2500 (fix #1215)
|
|
Ensure Ctrl-C doesn't redraw the input line if it's already empty
|
|
Added String.replace(regex, function) (fix #1256)
|
|
With E.setFlags({pretokenise:1}), ensure stack traces are not tokenised (fix #1258)
|
|
Allow digitalWrite/Read to take an object as an argument (calling .write and .read on it)
|
|
Add `E.getAddressOf` to allow embedded targets to get memory addresses for DMA/etc
|
|
nRF5x: Fix issue where doing a soft reset in the middle of some BLE ops could cause an assert in debug builds
|
|
nRF5x: Manufacturer Data is now decoded in advertising packets
|
|
Fix memory leak when allocating DataViews
|
|
nRF5x: Fix memory leak on BLE notifications
|
|
Ensure net/http .listen return the server instance (fix #1276)
|
|
nRF5x: Allow Manufacturer Data to be specified with setAdvertising
|
|
Internal: Fix memory leak in jsvArrayPushAll
|
|
nRF5x: jsvArrayPushAll memory leak fixes NRF.findDevices memory leak when services present
|
|
Internal: jsvNewIterator now has an option to iterate over sparse arrays as if they weren't sparse
|
|
Fixed some built-in functions that misbehaved when given sparse arrays
|
|
Puck.js: Allow flash memory protection to be overwridden with E.setFlags
|
|
Fix lexing of '/*/' as a complete block comment
|
|
nRF5x: Add support for negating pins in software (eg. buttons/LEDs)
|
|
Add `E.setFlags({unsyncFiles:1}` which doesn't sync the file to the SD card after each write - it's *much* faster
|
|
Filesystem API now uses flat strings (avoiding the 512 byte copy for each call)
|
|
Increase default internal SD card bitrate to 4MHz (from 100k)
|
|
nRF5x: Handle promise completions and advertising using IO queue, to avoid MEMORY_BUSY messages (#1277)
|
|
Allow E.HSBtoRGB to wrap 'hue' value, and allow it to return an array of [r,g,b] (fix #1283)
|
|
Remove spikes when changing pin state (fix #1274)
|
|
Changes to reduce code duplication in jswrapper.c
|
|
Fix `E.setBootCode` when no argument is supplied
|
|
Add WIZnet W5500 support to Espruino WiFi build
|
|
|
|
1v94 : Allow Espruino boards to reset straight out of the DFU Bootloader
|
|
Improvements in handling errors in code running in IRQs
|
|
- if writing to disconnected Bluetooth device, throw data away immediately
|
|
- Drop chars if output buffer is full while waiting in an IRQ
|
|
- Handle out of memory errors in jsvCreateNewChild
|
|
- Do not garbage collect inside an IRQ
|
|
On nRF52 devices, allow button press at boot to clear out peer manager data
|
|
Work out length of typed array with offset correctly (fix #1204)
|
|
nRF5x: Add Watchdog timer handling
|
|
nRF52: start new connections on idle to ease memory allocation conflicts between code execution & IRQs
|
|
nRF52: Ignore INVALID_STATE from CONN_PARAM_UPDATE_REQUEST (it can happen if we disconnect and then SD requests an update)
|
|
Fix Date.toString for dates before 1970
|
|
STM32: Fix handling of months when setting the internal RTC
|
|
Move to a faster jsvNewFlatStringOfLength which avoids blocking memory allocation
|
|
nRF5x: If a task is in progress, report the task ID (BleTask enum)
|
|
nRF52: Report central mode promise errors correctly if returned by softdevice
|
|
Remove 'out of memory' warning messages (it's stored as a flag anyway)
|
|
nRF5x: Don't disable IRQs completely for some things - only disable Espruino ones
|
|
Fix tab complete for Pins (fix #1213)
|
|
ESP8266: Fix load() causes endless loops (fix #1037)
|
|
ESP8266: Wifi library doesn't handle {password: null} (fix #753)
|
|
ESP8266: make topstrings and topreadonly work on Mac OS X (fix #1210)
|
|
Change order of execution for init - E.on('init',...) now executed before onInit
|
|
Added Error flag to show if a UART overflow has occurred
|
|
Change more instances of jsWarn to jsException
|
|
Avoid printing error messages during execution, and report to console on idle when if errors were flagged (fix #766)
|
|
Increase HTTP server and client version from 1.0 to 1.1 (needed for Websockets on Safari)
|
|
Stop 'require' creating an undefined Module entry in the modules list (fix #1218)
|
|
Stop require dumping filesystem errors as well as 'module not found'
|
|
Now throw an exception when writing to a closed socket (fix #1220)
|
|
Set the internal 'conn' variable to false when a connection closes to avoid confusion
|
|
nRF5x: Fix typo so we wake every 4 min for RTC, not 0.25 sec!
|
|
process.memory() now reports time taken for GC and vars GC'd
|
|
Slightly more aggressive idle GC on most platforms (at 5% free)
|
|
Don't warn the user when we had to run a GC pass during execution
|
|
Fix issue drawing on right-hand side of rotated graphics where H>W (regression in 1v93)
|
|
If >1 button, set pin state correctly at boot/reset
|
|
Add an argument to `reset`. `reset(true)` will now cause all Flash memory to be cleared as well.
|
|
Puck.js: Holding down the button while booting (past the the 5 LED flashes) will now cause data saved in Flash to be cleared
|
|
STM32: Remove the 'utility timer' from the list of available PWM pins, fixing A0/1/2 PWM on F4 (fix #1229)
|
|
Disable Graphics.createCallback on devices with small amounts of flash memory - rarely used on those devices and fixes HYSTM32_28 build
|
|
|
|
1v93 : Ensure that specifying too many advertising UUIDs causes an exception, not a reboot
|
|
nRF5x: Fix for time jump caused by reentrancy in jshGetSystemTime
|
|
Fix regression causing multiple end/close callbacks when using standard TCP/IP socket client/server
|
|
Ensure NetworkJS reports receive errors back correctly
|
|
nRF5x: Fix issue where connect and immediate disconnect could in some cases trigger an error from nordic's libraries that'd cause a reboot
|
|
Fix regression that caused Original Espruino to have lost Filesystem/hashlib/neopixel support in 1v92
|
|
Re-add TV output to Original Espruino
|
|
Fix some stack overflow bugs on Linux found by fuzzing (#1147)
|
|
Remove un-needed code for parsing '.' in var statement (#1147)
|
|
Add autocomplete for pin names (fix #1124)
|
|
Add Array.indexOf fromIndex support (fix #162)
|
|
Puck.js: Add BluetoothRemoteGATTServer.startBonding to allow bonding to be initiated when Puck.js is a central
|
|
Fat FS: closedir after readdir, FS errors should be catchable (#1164), fs.statSync (#1163)
|
|
Allow hardware (CTS) flow control (fix #1165)
|
|
nRF52: Add AntiCat's patch to Nordic's NFC library to cope with malformed NFC requests
|
|
Puck.js: Fix increased battery drain after NFC usage (fix #1171)
|
|
Puck.js: Fix WS2811 output library that would output bad data after neopixel waveform (fix #1154)
|
|
nRF52: Seed random number generator at boot (fix #1166)
|
|
Stop trailing decimal point if there are no digits after it - which could cause issues in JSON
|
|
Don't enter debugger if we're in the middle of uploading (echo_off_for_line) (fix #644)
|
|
Added Date setters (fix #504)
|
|
Allow Timezone to be set for Date with E.setTimeZone(...) (fix #530)
|
|
Added RegEx lexing (part of #256)
|
|
Puck.js: fix error 8 from NRF.sleep during an active connection
|
|
nRF5x: Fix `NRF.updateServices` when a 128 bit service shares the same 16 bit UUID
|
|
Add 'errors' option when using `Serial.setup` to enable error handling (and turn it off by default as it can fill the input queue)
|
|
nRF52: Re-initialise services and HID after a `save()` (fix #1185)
|
|
nRF5x: Add NRF.getAdvertisingData
|
|
nRF5x: Allow array of objects in NRF.setAdvertising (fix #1188)
|
|
Fix internal vcbprintf JSON dumping
|
|
nRF5x: NRF.findDevices will now throw an exception if no callback is supplied
|
|
nRF52: Added BluetoothRemoteGATTServer.getSecurityStatus to check the status of the link
|
|
nRF52: Disable auto-whitelisting by default, add with `NRF.setWhitelist` (fix #1187)
|
|
nRF52: Allow secure Bluetooth LE connections
|
|
Don't draw font characters that are off the edge of the screen
|
|
Make atob and btoa use flat string for larger amounts of data (faster & more memory efficient) (fix #1192)
|
|
nRF52: Pull in Nordic SDK13 code to crash caused by writing large characteristic (fix #1181)
|
|
Puck.js: Added Puck.magTemp() function to get the magnetometer's temperature as well
|
|
nRF5x: Fix issue where 'NRF.sleep()' called while a connection was active could cause Espruino to go into a high power draw mode
|
|
Fix Object.setPrototypeOf when called on undefined (fix #1194)
|
|
Fix dumping of an ArrayBuffer containing data (new ArrayBuffer([1,2,3]) isn't valid)
|
|
Fix setAdvertising regression where name would be lost after save() (fix #1193)
|
|
Add `E.set/getFlags` to allow interpreter state to be controlled from one place
|
|
Add `E.setFlags({pretokenise:1})` to dynamically turn on pretokenisation (fix #1178)
|
|
|
|
1v92 : nRF5x: Fix issue where Espruino could crash during save() if the flash got into a strange state
|
|
Added Pin.toggle() function
|
|
Fix implicit casting to bool/number on ArrayBuffers (fix #1030)
|
|
Fix jstExecuteTaskChecker bug, and allow jstExecuteFn to take a userdata argument
|
|
Puck.js: Reduce IR LED to 10% duty cycle
|
|
Puck.js: Allow Puck.IR to take pins for external IR LED (fix #927)
|
|
nRF52: Allow arbitrary NFC data to be specified (fix #1021)
|
|
nRF5x: Allow multiple advertising packets to be set at once with NRF.setAdvertising
|
|
nRF52: Add 'properties' object to BluetoothRemoteGATTCharacteristic
|
|
nRF52: Perform write without response if that is what is required
|
|
Pico/WiFi: Allow USB HID to work on Windows (from @nailxx)
|
|
Allow Puck.js/nRF52 devices to drive Neopixel/WS281x/APA10x LEDs with require("neopixel").write (fix #1023)
|
|
Fix crash in JSON.stringify for zero-length typed arrays
|
|
Fix precedence of 'void' keyword (fix #1079)
|
|
nRF52: Add BluetoothRemoteGATTCharacteristic.startNotifications (fix #959)
|
|
nRF52: Added BluetoothDevice.gattserverdisconnected event
|
|
nRF5x: Report back reason codes for BLE disconnect
|
|
Added DataView class
|
|
nRF52: char.readValue now returns DataView to be more Web Bluetooth compliant (fix #1091)
|
|
nRF5x: Fix explicit disconnect being able to reboot Puck (fix #1088)
|
|
nRF5x: Respond to conn_params update request, fix puck-puck disconnection after ~65 sec (fix #1089)
|
|
nRF52: Change connection params for central mode so NRF.setLowPowerConnection affects connection speed
|
|
Un-inlining jsvGet*AndUnLock functions to give us a little more free flash
|
|
ESP8266: RELEASE=1 sets WIFI_DBG and NET_DBG to 0 to shrink firmware size
|
|
ESP8266: Add Wifi.setAPIP() and Wifi.setIP
|
|
ESP8266: Add i2c clock stretch (#1097)
|
|
Fix E.FFT output (enable magnitude when one array specified)
|
|
Puck.js: Correct reading if using analogWrite to red LED and *then* using Puck.light()
|
|
Improved build process for all boards
|
|
Pin.toggle now returns a boolean (fix #1111)
|
|
nRF52: Now use 'high drive' mode for GPIOs
|
|
Puck.js: tweak IR duty cycle, with high drive GPIO range is ~3x more
|
|
nRF52: switch compilation to size optimisation, not speed
|
|
nRF5x: Allow services to be advertised (fix #996)
|
|
JSON.parse now throws an exception if an incorrect value type is found (fix #1117)
|
|
Pipe close event handlers now use 'this' arg - solves auto-closing pipe when piping from HTTP
|
|
nRF5x: stop app_timer NRF_ERROR_INVALID_PARAM errors (trying to sleep for too little time)
|
|
Added flash emulation to Linux port
|
|
Increase max graphics size from 1023 to 32767
|
|
Add Fat File System to boards with large Flash (ESP32)
|
|
nRF52: Don't get stuck in 'HID Busy' state if a HID send failed
|
|
Change name of socket close internal variable so it doesn't conflict with Pipe's close call
|
|
Stop pipe from causing errors if fields of the requested names exist but aren't functions
|
|
nRF52: Fix upgrade from older firmwares if saved code is in flash, reduce virtual pages to 2
|
|
Fix segfault detected by fuzzing (#1133)
|
|
Fix File.read so that end of file triggers pipe.end event
|
|
ESP8266: Add BOARD ESP8266_4M with 1600 vars, 64K save area and GRAPHICS (#1110)
|
|
ESP8266: Add ESP8266.deepSleep(micros, option) (#1102)
|
|
|
|
1v91 : Fix recent regression if no Boot Code defined at startup
|
|
Fix handling of return of rejected promise within a promise
|
|
Fix regression where HTTPS without cert/ca or key failed
|
|
nRF52: Making NRF.getPrimaryService/etc more robust
|
|
nRF5x: Add NRF.getAddress() - fix #1001
|
|
Fix bug that caused load() not to clear memory if only E.setBootCode was used
|
|
microbit: Update Espruino with pin polarity, so saved code gets loaded without BTN1 pressed
|
|
Fix bug that caused Bluetooth/TV/USB objects to be added in devices that didn't support them (fix #832)
|
|
nRF52: Increase custom UUID count from 3 to 10
|
|
Adding Global built-in objects like SPI1/Serial1 and Bluetooth to the docs
|
|
Puck.js: Tweak battery percentage calculation to try and make it more linear
|
|
Puck.js: Adjust Puck.light() levels based on battery percentage (and add comments)
|
|
nRF5x: Fix E.hwRand() (fix #1010)
|
|
Ensure tab complete/others include the Object proto even on functions/strings
|
|
nRF5x: Add NRF.restart() to force the restart of the Bluetooth Softdevice if required
|
|
nRF5x: Add E.setLowPowerConnection(bool) to allow continuous connections to Puck.js (fix #995)
|
|
Allow implicit conversion of hexadecimal strings to numbers (fix #1016)
|
|
Allow arrow functions inside nonexecuting functions (fix #1011)
|
|
|
|
1v90 : Fixes for Promise.all (passing in non-promises, pre-resolved, and ordering) (fix #976)
|
|
Fix arrow function bug when parsing multiple arguments
|
|
Added more helpful error messages for TLS
|
|
Allow `Modules.addCached` to take a function (makes module loading more memory efficient)
|
|
Re-add Espruino's old `rand` function (so no malloc, and ~1kB RAM, ~3kB ROM saved)
|
|
nRF5x: Ensure 'NRF.sleep' works even when connected
|
|
Fix bug when using >32 bit integers as array indices (fix #984)
|
|
Fix bug when parsing '.catch' while not executing (fix #989)
|
|
Stop PWM 'glitching' when moving from a nonzero value down to 0 (partial #991)
|
|
nRF5x: Add multi-channel hardware PWM (fix #991, fix #972)
|
|
'dump()' now outputs code written with E.setBootCode as well (fix #999)
|
|
nRF5x: Remember advertising information even after softdevice reboot (fix #997)
|
|
nRF51: Remove heap placeholder on nRF51 as not needed since no malloc. Increase nRF51 var count (fix #985)
|
|
nRF5x: 'connect' event now contains address of device that has connected, and fix docs
|
|
nRF5x: Add a 'NRF.disconnect' function to disconnect a client that has connected to Puck.js
|
|
nRF5x: Fix timing accuracy problems with setWatch
|
|
|
|
1v89 : Allow entering of multi-line Templated Literals on the command-line (fix #970)
|
|
Make lexer fail when parsing non-templated strings with newlines in
|
|
Add 'let' and 'const' keywords - treat them like 'var' for now
|
|
Increased findDevices timeout to 2 seconds
|
|
Allowed 16 bit UUIDs to be specified as simply "ABCD" (no "0x")
|
|
Improved BLE error messages (especially from Promises)
|
|
Fix STM32F1 regression caused by F4 LSE fixes
|
|
Fix comma operator regression caused by recent arrow functions addition
|
|
Remove RTC changes for STM32F1
|
|
nRF5x: Make sure that updateServices(notify) on a non-notifyable service will just error, rather than reset (fix #973)
|
|
nRF5x: Ensure setWatch doesn't reset pin state
|
|
nRF5x: Reset pin states to default on 'reset()'
|
|
nRF5x: Move advertising back to 375ms (more reliable connections)
|
|
Puck: allow Puck.mag to work while magnetometer is on
|
|
|
|
1v88 : jshSetEventCallback callbacks now get an argument with the channel number
|
|
Tab complete now offers a much better set of completions (fix #926)
|
|
Fix emitting of events with long names (fix #906)
|
|
Ensure 'af_opendrain' pin mode gets remembered when saving (fix #890)
|
|
Add second Promise.then argument (fix #869)
|
|
Fix 'chained' promises (fix #894)
|
|
Fixed memory leak when automatically converting a simple object to a String
|
|
Added ES6 Template Literals
|
|
Initial commit of ES6 arrow functions
|
|
Add 'opendrain_pullup' pinMode (including emulation on STM32F1)
|
|
Make OneWire use opendrain_pullup (no resistor needed for short runs now)
|
|
Add Software I2C (with opendrain_pullup) (ref #549, fix #29)
|
|
Cope with new escape codes for home and end on Ubuntu 16.04 (27,91,70/72)
|
|
Tweak VGA output back porch to 2ms (so leftmost pixels always on screen)
|
|
Fix regression with 2 concurrent waveforms on different pins (fix #930)
|
|
nRF5x: add updateServices, and allow setServices to be called multiple times (partial #936)
|
|
Added Puck.getBatteryPercentage() utility function
|
|
nRF5x: setServices can now uninitialise SD in order to remove added services
|
|
Added E.lockConsole() for use with E.setPassword()
|
|
Calling jsvRemoveChild at end of array now updates the length (fix #946)
|
|
Allow padding to be specified as 3rd argument of JSON.stringify
|
|
JSON.stringify now dumps typed arrays as arrays (fix #489)
|
|
nRF52: BLE HID support and switchable Nordic UART
|
|
Fix STM32 regression where pinMode was set when it shouldn't have been
|
|
Add Third option to pinMode to allow the pin mode to be set while keeping it 'unforced'
|
|
Save and dump now keep track of whether pin mode had been forced or not
|
|
readFile (and File.read) now uses Flat Strings to allow more memory efficient reads (fix #932)
|
|
nRF5x: Add ability to get RSSI of current connection (fix #928)
|
|
More STM32 changes to LSI->LSE clock switchover to fix RTC misconfiguration on Espruino WiFi
|
|
Move LED + BTN definitions to Symbol Table (allows autocomplete)
|
|
When moving console before printing has started, move all buffer contents as well
|
|
Fix regression where replacing a function starting with 'return' with another would cause errors
|
|
Fix potential issues with Telnet server and return values from netCreateSocket/netAccept on some platforms (fix #931)
|
|
nRF5x: Add Puck.js self-test code, fix issue where analogRead reset pin state
|
|
nRF5x: Change central mode API to mirror Web Bluetooth
|
|
Fix switch fall-through to default (fix #964)
|
|
Started using jsvObjectRemoveChild to remove some internal object properties that are undefined (frees some variables)
|
|
Added E.dumpLockedVars() in non-release builds to help debug memory leaks in libraries
|
|
nRF5x: Added NRF.findDevices as a helper function to easily list BT devices in range
|
|
Console now prints the type of Objects if their constructor is in the root scope
|
|
nRF5x: setScan/findDevices now parses advertising data
|
|
nRF5x: Added Web Bluetooth style requestDevice function
|
|
Add spaces between large tab completes
|
|
Correct the handling of exceptions in promises
|
|
Ensure that exceptions have a 'stack' attribute if they can have children
|
|
nRF5x: Added list of free flash areas
|
|
Make sure Puck.js users can't overwrite bootloader/softdevice (doing so would brick the board)
|
|
Fix micro:bit/nRF51 ctrl-c behaviour (fix #905)
|
|
Simplified process.env on devices with little memory
|
|
nRF5x: fixed serial number reporting
|
|
Move button state setup to jshResetDevices
|
|
Had to remove 'dump()' and SW I2C on devices with very little flash memory (Olimexino/Micro:bit)
|
|
|
|
1v87 : Add support for compiling with float-abi=hard (even if it doesn't give us real-world benefits)
|
|
Add shortcut for quick execution of common call types
|
|
Fix BBC micro:bit save() regression from 1v86
|
|
Fix 'lock overflow' when calling methods with 'this' bound (fix #870, fix #885)
|
|
Fix jsvStringIteratorGetCharOrMinusOne for zero-length strings
|
|
Allow tab-completion straight after '.'
|
|
Make sure execution stops for native functions if there's an error when parsing arguments
|
|
NRF5x: remove setName and add functionality to setAdvertising, along with advertising interval
|
|
NRF5x: allow raw advertising data in setAdvertising
|
|
Add E.setPassword - allows Espruino console to be locked
|
|
Fix pin header numbering for BBC micro:bit (it changed for the production version) (fix #896)
|
|
Allow Magnetometer speed to be specified for Puck.js
|
|
Fix out of memory when appending a string to itself
|
|
Allow members of the same name as function arguments to be added to a function (fix #913)
|
|
Fix STM32F4 RTC stopping if reset during first 1 sec of boot, also fix Espruino WiFi board clock startup
|
|
Fix issue where native functions couldn't be replaced by non-native fns (fix #879)
|
|
If statements now return values (fix #909)
|
|
Fix >8 bit SPI when sending single elements with SPI.send (fix #897)
|
|
Sockets now fire 'end' events (fix #886)
|
|
Added Graphics.draw/fillCircle (fix #920)
|
|
|
|
1v86 : Compile Telnet server into linux by default, Add '--telnet' command-line option to enable it
|
|
Fix lock 'leak' in Telnet when Telnet is turned off
|
|
Add Telnet serial device to allow redirection
|
|
Create errors for unterminated expressions (fix #814)
|
|
Remove Espruino's built-in strcpy/etc
|
|
Remove Espruino's built-in maths
|
|
Add basic Taylor series sin and atan for when we're trying to save memory
|
|
Refactoring to use global var for lexer - save some memory and increase parse speed
|
|
Add .removeListener (fix #30)
|
|
Added better micro:bit `show()` that works well with Graphics
|
|
Add `require("Flash").getFree()` as multiplatform way to find free flash pages (fix #815)
|
|
Add the ability to set clock frequencies on STM32F4 chips (like Pico) with E.setClock (fix #52)
|
|
`jsvEvaluate` now uses memory area for execution of JS strings (fix #817)
|
|
Add `E.setBootCode` to allow JS scripts to be run without being in RAM (fix #740)
|
|
'Expecting a number or something iterable, got X' changed to exception rather than warning (gives stack trace)
|
|
Drop '.init' and '.fini' symbols, allowing GCC 5.x compilation on STM32
|
|
Ensure that pinMode/digitalWrite is re-constituted properly by dump() and save() (fix #833)
|
|
ESP8266: add stack dump on fatal exception, ./targets/esp8266/printstack can extract a backtrace
|
|
ESP8266: move JswSymPtr and JswSymList to flash to free up gobs of RAM, bump jsvars to 1600
|
|
Fix write to flash when BLE connected on nRF51/2
|
|
Fix potential variable corruption issue when copying objects/arrays containing packed ints
|
|
Fix ESP8266 printLog memory leak (fix #852)
|
|
When parsing from a Native String (E.memoryArea), use Native String for function code too.
|
|
Added built-in Promise implementation
|
|
Fix broken Object.keys/getOwnPropertyNames caused by ESP8266 RAM saving tweaks
|
|
Add Object.g/setPrototypeOf (fix #856)
|
|
Fix memory leak when executing bound function with 'this'
|
|
Fix missing PBKDF2 & AES libs on Pico + Linux caused by an untested ESP8266 commit
|
|
Fix negative Date to string code (fix #854)
|
|
Convert type warnings to exceptions (to provide stack traces for problems)
|
|
Add uncaughtException event (fix #846)
|
|
Stop eval in a switch statement from confusing parsing (Fix #845)
|
|
Fix regression in 'mode' argument of SPI.setup (allows custom CC3000 pins to work)
|
|
Fix '.on' with long event names
|
|
Enable F4Discovery button pull-down. Newer boards don't seem to have one fitted
|
|
Add 'force' to 'Serial.setConsole' - you can force the console to stay in one place
|
|
Fix micro:bit compass problems (fix #864)
|
|
Ensure that Pico can properly enter deep sleep even if USB is never used
|
|
Only inline the very basic variable iterator functions (save enough space to allow Espruino board build again)
|
|
Don't include Promises on devices where flash memory of Scarce (fix Olimexino compile)
|
|
Fix glitches in PWM output when updating Software PWM quickly (fix #865)
|
|
Added `E.kickWatchdog()` to allow you to keep your JavaScript running - not just the interpreter (fix #859)
|
|
Ensure all pins set to AIN on startup
|
|
Fix regression where setWatch would remove pulldown from button if called after reset()
|
|
Reduce amount of flash available for saved code on Original Espruino (until we can get code size down)
|
|
|
|
1v85 : Ensure HttpServerResponse.writeHead actually sends the header right away
|
|
- enables WebSocket Server support from JS
|
|
Fix issue where GC'd objects referencing non-GC'd data wouldn't unreference it
|
|
Add E.memoryArea to allow memory addresses to be treated as variables
|
|
Fix STM32F4 LSI clock frequency - should make the Pico's RTC a lot more accurate (fix #776)
|
|
Added HeatShrink compression to saved code (instead of RLE)
|
|
If saving fails, delete command history and try again.
|
|
Make sure `reset()` resets the sleep and busy indicator pins
|
|
Now escape characters >=127 as well (fix #780)
|
|
Add decodeURIComponent (fix #779)
|
|
Allow reset();save() on one line
|
|
Fix potential issue parsing HTTP headers when more data is sent after the header (fix #783)
|
|
Fix broken storage of floating point values when <255 variables
|
|
Fix regression where DACs didn't work on Original Espruino Board
|
|
Improve tab complete's memopry usage
|
|
Added Tab complete and Debug to low-end Nordic uCs
|
|
Limit the number of events processed each time around the idle loop to the number that were in it at the start
|
|
- helps to fix issues with out of memory when receiving big files over ESP8266 serial connection
|
|
Allow different types of network to have different buffer sizes - enlarge JS, Linux and WIZnet buffers
|
|
Fix bug where clearInterval() and setWatch with debounce could cause setWatch to momentarily stop working
|
|
Make HTTP server only close connection after Content-Length bytes received
|
|
Speed up jsvNewFlatStringOfLength by combining it with updating the free var list
|
|
Update the free var list when garbage collecting (makes allocation at the start of memory more likely)
|
|
Don't zero the contents of memory when freeing - speeds up deallocation
|
|
Removal of un-needed zero initialisations for variables
|
|
Only garbage collect on idle if we're low on memory (fix #767)
|
|
Improve malloc behaviour for crypto lib (try and free all command history is first alloc fails)
|
|
Improve HTTPS error messages
|
|
Add READ_FLASH_UINT8, allowing ESP8266 to read&exec strings stored in Flash with E.memoryArea
|
|
Start the RTC up running off LSI, and switch after a few seconds if the LSE has started correctly
|
|
Allow JSV_GET_AS_CHAR_ARRAY to get a pointer to memory in ArrayBuffers or memoryAreas
|
|
Reset PinStateIsManual in reset (fix #765)
|
|
|
|
1v84 : Fix device initialisation flags not working when the device number is above 32 (fix #751, #748)
|
|
- this fixes broken SPI when not on standard pins
|
|
|
|
1v83 : Moved to size optimisation for Pico (needed to get HTTPS into 384kB)
|
|
Ensure Modules.addCached doesn't reset parse state (fix #723)
|
|
dump() in Espruino Pico now ignored the pull-down for the button (fix #731)
|
|
Warn when "compiled" functions gets into Espruiono (fix #707)
|
|
Fix lost character on Espruino Startup (fix #704)
|
|
Fix duplicated characters when USB+USART IRQs fire at the same time (fix #635)
|
|
Fixed Serial.find(...)
|
|
Detect UART framing and parity errors and emit them as events on the Serial object
|
|
Fix [] instanceof Object (fix #737)
|
|
Fix regression in jsvCopyNameOnly (Object.getOwnPropertyNames when names are >8 characters long)
|
|
HTTP requests (and sockets) can now emit 'error' event (fix #706)
|
|
Add optional `ca`,`key`, and `cert` for server public key when using HTTPS or TLS (fix #736)
|
|
|
|
1v82 : Fix debugger regression (where quit/reset/etc don't exit properly)
|
|
Fix wakeup when setDeepSleep used at startup (fix #645)
|
|
Add `shiftOut` function (fix #631)
|
|
Store line numbers for functions (via `Esc [ 1234 d` escape code before decl) and use in debug + stack traces
|
|
Allow Ctrl-C to break out of tight loops with function calls in
|
|
Add tab -> autocomplete in Console (fix #677)
|
|
Fix I2C repeated start (#390)
|
|
Fix regression in Math.random() - now back between 0 and 1 (fix #656)
|
|
Fix `var a=0;typeof a -> "undefined"` (fix #683)
|
|
Don't store brackets in functions (fix #204)
|
|
Store functions as 'flat strings' if long enough (fix #467)
|
|
Move most functions out of jsvar.h header file - improves code size on devices where they're not inlined
|
|
Fix parse error for switch statements which meant that `switch (a,b)` caused an error
|
|
Fix error message when `LoopbackA.setConsole()` called
|
|
Move SPI/I2C/Serial initialisers to jsvReadConfigObject, will now error on invalid args (fix #413)
|
|
Fix issue where double-buffered waveforms would use the wrong buffer in the callback
|
|
Fix memory leak in tab autocomplete on objects
|
|
Added AES crypto library (Pico only)
|
|
Fix `typeof (new Uint8Array([1, 2, 3, 4]))`
|
|
Store `function(){return ...}` without the return (fix #700)
|
|
Increased simple string usage from 4 chars up to 8
|
|
Swap order of JsVar internals, string usage up to 10 chars
|
|
Add handling for uint32_t,uint64_t,uint32_t case for Raspberry Pi
|
|
Add startup sanity checks for jsnative.c (in non-release builds)
|
|
Added fix for returning floats on Raspberry Pi
|
|
When <1024 JsVars, `lastChild`'s top bits are stored in `flags`, and pack
|
|
is moved such that we get 1 extra character in StringExts
|
|
Allow events of >12 characters length
|
|
Fix regression in flash memory write (introduced via AES merge)
|
|
Fixed instability when resetting after using SD card on non-standard pins
|
|
HTTPS support on Pico (when compiled in)
|
|
Rename USE_HTTPS to USE_TLS, and enable by default for Pico + Linux
|
|
Add 'tls' module with 'connect' - for TLS Socket connections
|
|
|
|
1v81 : Fix regression on UART4/5 (bug #559)
|
|
Fix Serial3 on C10/C11 for F103 boards (fix #409)
|
|
Remove Graphics.setColorHSV, add E.HSBtoRGB (fix #554)
|
|
Make jsiDumpState/jsiAppendHardwareInitialisation use callbacks (fix #398)
|
|
Add `E.dumpStr()` to dump current state of interpreter as a string
|
|
Add ReferenceError, and ensure that TypeError gets converted to a string properly
|
|
Actually create ReferenceError for undefined variables
|
|
Fix Object constructor behaviour (fix #561)
|
|
Now remove intervals/watches if they occur within 0.1s of a Ctrl-C on a blank line
|
|
Fix parsing of trailing commas [,,1,,,]
|
|
Treat vertical tab as whitespace
|
|
Make sure we ReferenceError on '+='/etc
|
|
Allow reserved words in record access and structure definitions
|
|
Add Object.defineProperty/defineProperties (even if they ignore most args)
|
|
Fix value returned when redefining an existing function
|
|
Ensure Pico powers down USB in deep sleep - now down to 20uA!
|
|
Fix Exception throw within catch block (fix #566)
|
|
Fix issue where new Array(3.0) wouldn't produce a 3 element array
|
|
Keep track of modified area in Graphics (so modules with `.flip()` can be speeded up)
|
|
Fix `new Date('December 17, 1995 03:24:00')` - check only first 3 chars of month
|
|
Allow Software PWM via `analogWrite(..., {soft:true})`
|
|
Add `encodeURIComponent`
|
|
Make sure `typeof unknown` doesn't ReferenceError
|
|
Fix isNaN behaviour for 2 element array
|
|
Fix jshPopIOEventOfType when element is at the top of queue anyway
|
|
Produce more reasonable behaviour when converting very long strings to ints/floats
|
|
Added built-in JavaScript debugger! See espruino.com/Debugger for details (fix #37)
|
|
Fix crash when using E.getSizeOf() in some cases
|
|
Make sure a TCPIP connection closes even if no data sent
|
|
Make `flash.erasePage` safe if called without arguments (fix #586)
|
|
Add `Pin.getInfo` to see what a Pin can do (for #93)
|
|
Move Pin function code out of jshardware
|
|
Add `E.on('init', ...)` - like `onInit` but allows multiple handlers
|
|
Make sure `dump()` and `E.dumpStr()` dump the contents of Serial as well as events for other objects
|
|
`E.getSizeOf(.., 1)` can now recurse into objects showing the sizes of all their children (fix #579)
|
|
Fix bug when appending to a flat string (fix #614)
|
|
Add `Serial/SPI/I2C.find(pin)` - so we can figure out what device to use based on the pin
|
|
Ensure that when uploading, each command gets checked for errors (rather than right at the end)
|
|
Fix writes on HTTP requests after a timeout, and add chunked encoding if the header is set.
|
|
Added pin info for bit-banded pin addresses (and jshGetPinAddress).
|
|
|
|
1v80 : Fix SD card IO that can corrupt SD card on file append since 1v73 (fix #536)
|
|
Fix some potential pointer issues in hashlib
|
|
Make debounced setWatch output state+time information (regression fix #537)
|
|
Shorten some internal property names (faster/less mem is 4 chars or under)
|
|
Change 'internal property' prefix from '>' (fix #540)
|
|
Duplicate properties in an object defn. now cause second to be used (fix #495)
|
|
Make sure `E.unmountSD` doesn't forget custom SD card configs from `E.connectSDCard`
|
|
Added support for USB CK pin (fix #544)
|
|
ES5 parseInt behaviour - don't treat numbers beginning with 0 as octals (fix #538)
|
|
SPI.send now returns Uint8Array when passed an array. Also takes `{data:X, count:Y}` as argument (fix #485)
|
|
Fix `parseFloat(Infinity)` (fix #314)
|
|
Speed up jsvIterateCallback for arraybuffers
|
|
SPI speed improvements, esp for SPI.write (fix #547)
|
|
TV out tidyup, and VGA output can now do line doubling
|
|
Merge in USB HID support for STM32F4 (keeping old USB for the F1)
|
|
Add built-in 'Flash' module to allow Flash memory to be accessed from user code
|
|
Pulled load/save code out of jshardware into jswrap_flash.c
|
|
Remove jsiOneSecondAfterStartup from Linux builds (fix #551)
|
|
Add RLE compression when saving to flash, increase Pico RAM from 3000 to 5000 vars (fix #543)
|
|
Fix `JSON.parse` when not given strings (fix #546)
|
|
Tweak Olimexino board - 700->1k vars, but lowered code flash to 6k
|
|
Disable flash prefetch on Pico (~1% slower, but less power and way more accurate ADC readings) (fix #545)
|
|
Now throw errors when 'in' is used on an invalid datatype (fix #550)
|
|
Updated (inaccurate) docs for Serial.write/print and removed duplicated code
|
|
Changed Pico's device class to 0x02 - now works on older Mac OS 10.6.8
|
|
Change reported USB HID type to 0, from 2 (mouse)
|
|
Improve digitalWrite/etc documentation
|
|
Add `pin.mode` and `pin.getMode` functions (mirroring `pinMode`)
|
|
`Serial.setup` now remembers options if none specified (fix #557)
|
|
|
|
1v79 : Fix Mac address parsing for top nibbles
|
|
Make bind reference function internals not copy them. Fix scoped vars in bind (fix #533)
|
|
Use jsvUnlockMany to tidy up code and save some space
|
|
jsiExecuteEventCallback can now take an arbitrary number of arguments
|
|
Allow setTimeout/setInterval to take extra arguments (fix #532)
|
|
Ensure HTTP is closed even when no data handler (fix #535)
|
|
Seed random number from analog input, add W.hwRand and E.srand (fix #534)
|
|
Fix timing bug when setting timeouts from intervals in Deep Sleep
|
|
Reduce timeout for IO (eg. I2C write) on F401 and F4
|
|
Tweaks to keep code size low enough for Olimexino
|
|
|
|
1v78 : Fix regression where SPI2/3 weren't working on most pins (fix #525)
|
|
Allow MAC address to be set for WIZnet (fix #527)
|
|
Ensure res.on('close') is called for empty HTTP requests (fix #528)
|
|
Ensure that A9 is never the default pin for USART1 output (fix #526)
|
|
|
|
1v77 : Add E.mapInPlace
|
|
Allowed ArrayBuffer Graphics to store pixels MSB-first
|
|
Added faster software SPI path for simple writes
|
|
Make sure filesystem support gets compiled into Espruino Pico
|
|
Fix jsvGetFlatStringPointer to return the correct address
|
|
Fix I2C2/I2C3 on Pico
|
|
Fix issue where garbage collect of a Flat String corrupted the free variable list
|
|
Fix issue where Array.sort on big array with identical elements failed (#515)
|
|
Add 'modules' variable, and set 'this' to 'exports' when parsing a module (fix #520)
|
|
Fix instanceof implementation (and fix mem leak) (fix #523)
|
|
|
|
1v76 : Merged in NetworkJS library (for JS networking implementations)
|
|
Ensure that 'wrapped' libraries are killed before timers/watches
|
|
Made 'Field or method doesn't exist' report back the field that doesn't exist
|
|
Added quick and dirty scripts/test262.js runner script
|
|
Fix propogation of Errors and Exceptions through function calls
|
|
Allow parsing of integers > base 16
|
|
Now allow functions with >16 arguments (fix #490)
|
|
Fix assert fail for syntax error in do or while loop
|
|
Maths operations now call Object.valueOf if it's needed
|
|
Fix assert fail when jswrap_object_getOwnPropertyDescriptor called with non-string
|
|
Fix Array.indexOf when array contains non-basic values
|
|
valueOf returns a type error when called on undefined
|
|
Make sure analogRead doesn't overwrite pin state if it was set previously with pinMode
|
|
Make sure pinMode works with ADC input mode
|
|
Tweak event handling - events such as `Serial.on('data'` now set `this` to `Serial`
|
|
Add Function.bind (fix #318)
|
|
Fix SPI.setup memory leak (fix #496)
|
|
Fix assert fail on debug builds on Waveform output (fix #511)
|
|
Added more allowed types of whitespace
|
|
Added String.prototype.trim() (fix #507)
|
|
Allow argument lists in Function() (fix #505)
|
|
Propagate `this` into eval (fix #513)
|
|
|
|
1v75 : Fixed issue with Pins/Bools as Array indices
|
|
Fix crash when out of memory while creating built-in object
|
|
Fix continue statement in nested loops (fix #501)
|
|
On Linux, Exit nonzero when an error occurs (fix #499)
|
|
Ensure that pipes 'complete' if the source closes (was previously only the destination)
|
|
Make HTTP/Sockets throttle reads so internal buffers don't get full when piping
|
|
Added http statusCode, statusMessage, and httpVersion
|
|
|
|
1v74 : On Espruino Board, allow setTime to use full 64 bits so setTime(Date.parse("...")/1000) works
|
|
Fixed issues with Waveform after 1v72 update to flat strings
|
|
Added 'global' built-in value
|
|
Fix inaccuracy of 'Date.now()' on STM32
|
|
Improve jsvIteratorGetIntegerValue speed for arrays (fix #493)
|
|
Change process.env.EXPORTS to something more useful for compiler
|
|
Fix issue with graphics fill on PCD8544 LCD
|
|
Add TypedArray.slice (from ES6) to help modules that use I2C
|
|
|
|
1v73 : Add Uint8ClampedArray, remove code duplication in ArrayBuffer (fix #486)
|
|
Fix regression where accessing certain member names of an undefined variable would cause a crash (fix #488)
|
|
Fix behaviour of char code 16 at beginning of the line (it now doesn't re-add the prompt after processing the line)
|
|
Added jspGetNamedVariable for use in compiled JS
|
|
Fix glitchy time values on the Espruino Board (fix #394)
|
|
Fix getTime()==0 in onInit, which could break timeouts in onInit after a reset (fix #462)
|
|
Refactor Software SPI code into jsspi.c
|
|
Allow filesystem to work on user-defined pins (fix #427)
|
|
|
|
1v72 : Stop RTC being reset by hard reset (getTime will now be time since power first applied) (fix #412)
|
|
Allow Function.apply to take typed arrays (fix #442)
|
|
Allow arrays to be passed to digitalPulse so square waves can be created easily
|
|
Force inlining of jsvLock/UnLock on most systems - improves performance a lot
|
|
Fix issues with SPI.write, CS, and out of sync receive bytes
|
|
Fix do..while without trailing semi-colon
|
|
Ensure that &,|,^,etc all have different precedences (without extra recursion)
|
|
Used new semi-recursive parse for expressions
|
|
Fix filled column when fillpoly is off the end of the screen
|
|
Fixed reporting of Serial RX pullup in `dump()`
|
|
Add input thread on Linux, and fix idle and Ctrl+C behaviour (fix #451)
|
|
Stop huge amounts of input events blocking Espruino's timers (fix #452)
|
|
Add ability to use serial ports on Linux with Serial1.setup({path:"/dev/ttyUSB0"})
|
|
Started ability to use SPI from Linux
|
|
Added 'net' library with support for sockets
|
|
Fix JSON parse of negative numbers (fix #456)
|
|
Only keep RTC settings if the relevant oscillator is running (fix #444)
|
|
Finally fixed sporadic compilation problems with '-Os'
|
|
Fixed issues with intervals in onInit (#462)
|
|
Remove libraries from root scope (fix #463)
|
|
Fix pin namings on Nucleo boards
|
|
Fix addition of stdlib's exit on Nucleo debug
|
|
Allow setWatch to execute native functions inside the IRQ
|
|
When dumping typed arrays, use the size if all elements are 0 (fix #448)
|
|
eval() can now access local variables and function arguments (fix #460)
|
|
Added 'flat strings' for typed arrays.
|
|
- these use a continuous chunk of memory so are much faster
|
|
Ensure that we only create as many Serial/I2C/etc items in Symbol table as we need (fix #453)
|
|
Allow modules to return whatever was assigned to exports - not just the original object
|
|
Allowed E.nativeCall (assembler/compiled functions) to execute directly from a flat string
|
|
Working F401 USB VCP bootloader
|
|
Make Press-poweron-release-press boot back into Espruino (this may confuse your OS)
|
|
Assert failures (in non-release builds) now reboot the system on ARM
|
|
Fix issues with freeing of variables not clearing the lock flags (fix #474)
|
|
Make Uint32Array actually return uints (even if they're so big they have to be represented as doubles)
|
|
Allow peek/poke to read and write arrays of values
|
|
Add Boolean constructor (fix #311)
|
|
Fix difference between String() and String(undefined) (fix #312)
|
|
Fix I2C/SPI on F401/F411-based boards (fix #470, fix #473)
|
|
Improved ArrayBuffer write performance
|
|
Massively improved ArrayBuffer Graphics fill performance for bpp<8
|
|
Fix issues with floating point on devices with <1024 vars (using 12 byte JsVar)
|
|
Add ability to change I2C bit rate from I2C.setup
|
|
Added VGA TV output
|
|
Added E.toString (for converting anything into a string)
|
|
Pulled Typed Array creation into its own function
|
|
Added E.toString and E.toUint8Array
|
|
Made I2C.readFrom return a Uint8Array (fix #479)
|
|
Allow multiple byte OneWire reads and writes
|
|
Fix setWatch on F3Discovery (fix #183)
|
|
Ensure that E.getSizeOf() works for ArrayBuffers (fix #484)
|
|
Don't allocate Flat Strings if we can get away with 2 normal string blocks
|
|
- it's actually faster to allocate and uses less memory
|
|
|
|
1v71 : Allowed WIZnet + CC3000 to be instantiated on any pins
|
|
Fix break inside loop inside case inside function (fix 428)
|
|
Added fs.stat and File.seek (fix #429, fix #430)
|
|
Allow use of DLE (char 16) on an empty line to turn echo off for *just that line*
|
|
Add XON/XOFF flow control on Serial + USB. This is enabled by default for Serial (fix #20)
|
|
Fix irregular timing on Espruino boards with clock crystal (inc rev 1v4)
|
|
Sort out 'Number()' constructor not being picky enough - parseFloat now parses 'Infinity' (Fix #325, mostly fix #322)
|
|
Stop iterator in FOR loop being called once more after a break
|
|
Fix bug allObjects found with iterating over undefined
|
|
Fix ArrayBuffer.sort issue with element size >1
|
|
Fix network de-initialisation on Linux
|
|
Fix reference count issue caused by removing a timer that had already been removed
|
|
Power up SYSCFG on F2/3/4 parts, allowing watch to work on ports other than A
|
|
Wait after setting the RTC time, to allow registers to update (fix #438, fix #441)
|
|
Now using gcc-arm-none-eabi-4_8-2014q3 for compilation - CodeSourcery stopped being supported
|
|
|
|
1v70 : Make pipe remove its drain/close listeners. Stops out of memory for repeated piping.
|
|
Fix parseInt for values too large to go in an int (#406)
|
|
Fix integer maths when result is too large for an integer
|
|
Fix mod operator with NaN/Infinity (fix #315)
|
|
Fix signed array values in PACKED_BIT devices
|
|
Drop JsVar size from 20 bytes to 16, increase Espruino variable count accordingly
|
|
Fix Array.fill on sparse arrays (fix #410)
|
|
Allow I2C repeated start (fixes some odd I2C devices, fix #390)
|
|
Refactoring to use iterators wherever possible
|
|
Merge fs_kill and file_kill to ensure that files always die before the filesystem
|
|
Add `E.unmountSD()` to allow SD cards to be removed once they have been used
|
|
Stop String.split("") adding an empty elementy to the array
|
|
Tidy up linker script, allow F401 to use 3x16kB pages for storing program data
|
|
Fix regression in long timeouts (fix #416)
|
|
Use 'interval' var to specify if we're an interval or not (don't use 'recur' var)
|
|
Stop while/for/etc resetting exception state (fix #419)
|
|
Add E.getSizeOf (fix #421)
|
|
Fix jsvCountJsVarsUsed for names with values
|
|
Make hidden names smaller to save a few JsVars
|
|
If there's only one function scope, don't define an array and save 2 JsVars
|
|
Fix setInterval on non-F1 boards (fix #415)
|
|
Fix issue where large doubles (> +/- 2^31) were converted to -1 rather than truncated ints
|
|
Fix E.getSizeOf (fix #424)
|
|
Fixed JSON indentation issue
|
|
Made 'pretty' JSON output look a bit better
|
|
|
|
1v69 : Fix 1v67's regression of digitalPulse when doing lots of pulses
|
|
Add configurable OneWire search command (for finding DS18B20s with alarm set)
|
|
|
|
1v68 : Fix memory leak in String.split
|
|
Fix references to `this` - you can now write `this["LED1"]`
|
|
Fix memory leak when calling toString on a normal object
|
|
Fix memory leak in Graphics.createArrayBuffer
|
|
Fix memory leak when joining arrays containing null
|
|
Fix memory leak when syntax error while getting function arguments
|
|
Fix memory leak test when running on Linux
|
|
Fix memory leak in filesystem file open (when failure)
|
|
Fix memory leak on Syntax error
|
|
Stop multiple exceptions from being reported (eg. Syntax Errors)
|
|
Fix parsing of '!!' when not executing
|
|
Improve Error.toString, and fix bug when an exception was thrown from a function
|
|
Improve jsvObjectGetChild when out of memory
|
|
Switch native function decls from 32 bits to 16
|
|
Swap HY2.4 board to software LCD driver as well, work out pin mappings from PY file
|
|
Fix inaccuracy in setInterval, which had started since 32 bit switch in 1v65
|
|
Store JSWAT_EXECUTE_IMMEDIATELY in a way that will fit in 16 bit function decls
|
|
Allow bit-packing of refs for low memory boards (fix #145)
|
|
Now dump 'debounce' for setWatch
|
|
Make sure that dump() outputs correct JS for undefined variables
|
|
Allow pin counts per port of >31 on Linux-based systems
|
|
Fix issue with lost high-speed events when using setWatch with small debounce
|
|
Fix HTTP client regression
|
|
Fix Date constructor issue (uninitialised variable) (fix #408)
|
|
Fix invalid conversion of large ints to floats on ARM
|
|
Fix reset behaviour for non-standard default Serial ports
|
|
|
|
1v67 : Lower size of timer task array of devices with little RAM (fix #401)
|
|
Move hidden lists out of the root scope (fix #357)
|
|
Fixed exception catching
|
|
Fix Serial1 initialisation after 'reset()'
|
|
Fix parsing of try..catch when a serious error (not an exception) occurred
|
|
Stop the utility timer queue filling with WAKEUP tasks if Espruino gets woken up early
|
|
Add ability to specify default Serial TX and RX pins in BOARD.py
|
|
Reduce how many digits of floating point values are normally displayed
|
|
Fixed PWM output on B4 + B5
|
|
Fix regression when using pins as array indices
|
|
Remove negation for CHxN outputs - it seems they don't negate after all. Fixes PWM polarity on A7,B1,B13,B14,B15
|
|
Add pullup to USART RX. Reduces wakeups and random characters on Serial1.
|
|
Add error flags and E.getErrorFlags to report possible issues like buffer overflows and low memory (fix #136)
|
|
I2C timeouts now throw exceptions (fix #403)
|
|
Fix String.prototype.split with non-string args
|
|
Add fake digital pins D0..D7 under linux (helps with testing)
|
|
Rewrite ff_wtoupper and save 650 bytes \o/ (fix #368)
|
|
Update Makefile to make it easier to cross-compile RPi->Espruino board
|
|
Fix HYSTM32_32 LCD at the expense of a bit of speed (fix #137, fix #327)
|
|
|
|
1v66 : Ensure that analogWrite(pin,1) works on negated outputs
|
|
Allow multiple Waveform playback on one pin (+ wave fixes)
|
|
Improve dump() for objects and Serial.on('data') (part of #397)
|
|
Fix Date.getSeconds,Milliseconds, and documentation on getMonth (#399)
|
|
Fix memory leak on Serial receive
|
|
Fix all Serial receive characters being 0 if no bytesize is specified
|
|
|
|
1v65 : SPI.send/I2C.write/Serial.write can now take variable number of arguments (fix #370)
|
|
Don't check for token matches where we already know what it should be (fix #280)
|
|
Improve file read speed for large reads
|
|
Waveform stability improvements
|
|
Fix Float32Array.set (and improve speed for non-float arrays)
|
|
OneWire library now uses hex strings for addresses rather than 64 bit ints
|
|
Fix issue with uninitialised function arguments (fix #391)
|
|
Fix parseURL for numeric keys in query string (fix #388)
|
|
When running JS files under Linux, do two parses to ensure that Functions are 'hoisted'
|
|
Add Object.create()
|
|
Add Function constructor
|
|
Add Object.getOwnPropertyDescriptor (although it won't return spec-compliant values)
|
|
Add some Stubs for inbuilt Date and Error classes
|
|
Added throw and try..catch..finally (see #40)
|
|
Fixed overriding of builtins with other Builtins
|
|
Added Date.valueOf
|
|
Stop warning about break at the end of 'default' in switch statement
|
|
Switch to 32 bit ints (fix #324)
|
|
Added Array.prototype.reverse, and also for ArrayBuffers (fix #389)
|
|
Swap JsVar fields around so everything is aligned on the correct boundaries
|
|
Merge jsvNewWithFlags and jsvNew - making variable allocation a bit faster
|
|
Fix changeInterval regression after int32 changes
|
|
Remove JSV_NAME flag - paving the way for more efficient variable storage
|
|
Store only 32 bit time for events (work out full 64 bits in event loop)
|
|
Increase event buffer size to 128 (from 64)
|
|
Enabled Graphics + CC3k support in the F3Discovery
|
|
Make `Serial.onData` call back with >1 char (#383)
|
|
Move `Serial.onData(...)` to `Serial.on('data',...)`
|
|
Add Serial.read/available/pipe (fix #383)
|
|
Add HTTP client/server read/available/pipe
|
|
Add documentation for events (and tidy it up for constructors)
|
|
Stop HTTP server closing before all data has been read
|
|
Fixed parsing of multiple shifts
|
|
setWatch now reports the pin back (fix #275)
|
|
Fixed memory leak in g.getPixel with arraybuffers
|
|
Fixed memory leak in "".indexOf(".")
|
|
Fixed ArrayBuffer Graphics where width*height*bpp&7!=0
|
|
Converted parse errors to throw exceptions
|
|
Added Date.parse and Date.toString
|
|
Fix parsing of integers that are too big to fit in an int32 (they're stored as doubles)
|
|
Fix Linux Espruino when no tty is present
|
|
Shave a few bytes off size of jsiDumpState using printf
|
|
url.parse now unescapes the query string (fix #227)
|
|
|
|
1v64 : Fix 'a=[2,3,4];delete a[1];'
|
|
Make sure parseInt("0x01",16)==1 and parseInt("0x01")==1 but parseInt("0b01",16)==0
|
|
Fix equality check used in switch, so false !== 0
|
|
Improve Math.pow accuracy for small integer powers (fix #374)
|
|
Make Ctrl-C only interrupt code if it has been running for too long (fix Ctrl-C -> CC3000 restart issues)
|
|
Removed duplication in symbol lookup (fix #372, fix #323, fix #343)
|
|
Fix JSON.stringify with circular references (fix #378)
|
|
Fix String.indexOf when search string is bigger than the string being searched (fix #377)
|
|
Add String.prototype.slice() (fix #376)
|
|
Changed to more compact binary search symbol table (fix #278)
|
|
hasOwnProperty now doesn't check prototypes #24
|
|
Added Object.getOwnPropertyNames (fix #79, fix #158)
|
|
Move 'constructor' into the correct place, be more aware of builtins in prototypes (helps #380)
|
|
Handle __proto__ on builtin object types (eg. [].__proto__) (fix #381)
|
|
Remove indirection of __proto__ (fix #102)
|
|
Properly fix Object.getOwnPropertyNames (fix #380)
|
|
Remove jsvFindChild*Ref (fix #375)
|
|
Added LoopbackA/LoopbackB serial ports (fix #61)
|
|
Fix slowdown when lexing long strings
|
|
Remove Lock/UnLock in jslGetNextCh - should speed it up
|
|
fs.appendFile() now works even if the file doesn't exist (fix #385)
|
|
Support unicode escape sequence (\uXXXX) but crop to 8 bits (fix #386)
|
|
Stop setInterval/etc increasing index numbers (fix #382)
|
|
Clear existing digitalWrites on reset() (fix #231)
|
|
Stop setWatch getting invalid data on load/save/reset (fix #254)
|
|
|
|
1v63 : Memory leak when defining functions (fix #359)
|
|
Fix Instance properties overwrite prototype (fix #360)
|
|
Fix `edit(functionName)` without quotes (fix #356)
|
|
Fix 'Uint32Array is not unsigned' (fix #330)
|
|
Ensure Object.keys([9,,undefined,9])==[0,2,3] (partial #349)
|
|
Store array length in the array root node rather than the last element (fix #351 #361)
|
|
Object.keys on array now returns strings (fix #348)
|
|
Remove jsvArrayGetLast (fix #363)
|
|
Fix issue parsing `function() { return }`
|
|
Stop jspNewObject creating a new object name if one already exists
|
|
startup_stm32f10x_hd.s now explicitly sets the stack pointer. Allows Espruino images to use more RAM
|
|
Add BusFault hander, to allow peek and poke to unmapped addresses without HardFaulting the ARM
|
|
Fix edit(...) so that functions themselves (not just the variable) are updated (fix #366)
|
|
Crop lines in errors when > 60 chars (fix #364)
|
|
Improve when stack traces happen for error reporting
|
|
Better error messages, and more efficient handler
|
|
Improving Util Timer rescheduling to try and avoid 64 bit divisions
|
|
Fix a lot of WIZnet W5500 issues (thanks @mgg1010!)
|
|
Add E.reverseByte
|
|
Add HIGH and LOW (fix #371)
|
|
Improve docs for SPI/I2C/Serial.setup
|
|
Force reconnect on CC3000 disconnect (fix #373)
|
|
Added cephdon's streaming file API (fix #12)
|
|
More WIZnet W5500 stability fixes - try and ensure that HTTP server never goes down
|
|
Fix HTTP client Host header when accessing ports!=80
|
|
|
|
1v62 : Added ArrayBufferView functions as per ES6 spec (fix #310)
|
|
Added Graphics.setRotation (fix #321)
|
|
Added Graphics.drawImage (fix #198)
|
|
Added E.toArrayBuffer for fast string->array conversion
|
|
Accessing an undefined array/object element now doesn't create it (fix #63)
|
|
Fix fs.unlink returns true if the file does not exist (fix #331)
|
|
Try and improve timer overlays by reordering the alternate function list
|
|
Ensure that PWM output doesn't enable negated/non-negated outputs when it doesn't have to
|
|
Improve console performance when sending long strings
|
|
Initialise Graphics flags Graphics.createCallback - could have caused all kinds of issues
|
|
Now make setInterval > 5s less accurate when setDeepSleep is on (saves ~0.5 sec of non-sleep time)
|
|
Fixed problem when accessing an array with a string in a variable
|
|
Fix issues with `"0" in {0:1}` (and hasOwnProperty)
|
|
Improved interpolate function, and moved it out of ArrayBufferView into E
|
|
Fix Problem with Object.keys on a string (fix #347)
|
|
Fix assert fail when deleting a property that doesn't exist (fix #344)
|
|
Ensure that dump remembers function names if they were in the root scope (fix #338)
|
|
Fix memory leak in fs.readdir
|
|
Ensure that abbreviations in console's '=...' output appear on newline if needed
|
|
Add String.replace (fix #334)
|
|
Make Graphics.drawImage draw bottom line of pixels (fix #329)
|
|
Add Array.shift/unshift (fix #342)
|
|
Fix Defining function after return causes error (fix #326)
|
|
Fix deleting the last element in array (fix #346)
|
|
More helpful I2C error messages (fix #10)
|
|
Fix overriding built-in functions (fix #202)
|
|
Add ES6 Array.prototype.fill (fix #317)
|
|
Modified jsiQueueObjectCallbacks (and Object.emit) to support >2 args
|
|
Added support for SPI LSB-first
|
|
WIZnet improvements (specifically on HTTP server)
|
|
Added WLAN.setIP for CC3000
|
|
Fix String.split issue with last element (fix #352)
|
|
Remove order warning for SPI if no order given (fix #353)
|
|
process.env will now contain the git commit
|
|
Move setInterval/Timeout implementations into jswrap_interactive (makes more sense)
|
|
Add setWatch warning if it's not possible (fix #337)
|
|
|
|
1v61 : Fix toString crash for large numbers
|
|
Support floating-point literals without a leading 0 - eg '.5' (fix #296)
|
|
Fix array access with booleans (fix #290)
|
|
Fix "==" issues where only one argument is an array (fix #283)
|
|
Make Array.join ignore null values (fix #289)
|
|
Callback graphics now works even without a fillRect implementation (fix #295)
|
|
ArrayBuffer Graphics now supports 2 and 4 bits as well as 1,8,16,24,32 (fix #301)
|
|
Allowed array.splice to as many arguments as needed
|
|
Make Array.sort() use string compare by default (fix #291, fix #292)
|
|
Allow [,] and [1,2,,4] - (fix #287)
|
|
Stop JSON.stringify using 'undefined' (fix #286)
|
|
function.call can now have more than 4 arguments
|
|
Rewrite native function caller (fix #277)
|
|
Fix conversion of floats to booleans (fix #307)
|
|
Fix parseInt of NaN/Infinity (fix #309)
|
|
Add extra escape codes in strings (fix #304)
|
|
Ensure String.charAt returns empty string for out of range (fix #305)
|
|
Make REPL faster when receiving large amounts of data (fix #303)
|
|
Improved jspeFunctionCall speed, added Named functions (fix #77)
|
|
Allow Array.map.forEach to be applied to Strings and ArrayBuffers (for #310)
|
|
Tweaks to make more Array functions work on non-arrays
|
|
Added Array.reduce
|
|
Allow commas in expressions at end of for loop - `for (;;i++,j++)`
|
|
Fix SPI send with a single number
|
|
|
|
1v60 : Fix unary plug on variable not working (fix #268)
|
|
Added DNS with eth.setIP() for W5500
|
|
Fix lock 'leak' when creating Graphics with callbacks
|
|
Small fixes for trigger/timer
|
|
Make dump() + console aware of built-in SPI/I2C/etc
|
|
Add Pin constructor for converting numbers into a pin object
|
|
Added getPinMode
|
|
Fixed I2C saving state (fix #270)
|
|
Add JTAG to ignore list for some boards
|
|
Fix LCD FSMC formatting and report if LCD is unknown
|
|
You can now reference built-in functions. eg. [1,2,3].map(Math.sqrt)
|
|
Add Object.valueOf - help with #187
|
|
Add Object.hasOwnProperty (although it does have some false positives) - #24
|
|
Add software SPI - fix #41
|
|
Fix issue when constructing an ArrayBuffer with a floating point length
|
|
Fix Math.round regression and add checks to ensure it can't happen again
|
|
Fix DEVICE_IS_XXX defines (fix SW SPI regression)
|
|
Fix hardware SPI regression (getting out of sync after ArrayBuffer write)
|
|
Removed non-standard Integer.valueOf - use "A".charCodeAt(0)
|
|
Fix non-standard ArrayBuffer behaviour when constructing an ArrayBuffer from an ArrayBufferView
|
|
Fix `1 in [2,3,4]` behaviour - it searches keys, not values
|
|
Make parseInt(..., >36) return NaN
|
|
Make Number.toString() use lowercase chars for hex
|
|
Fix issues with NaN, negative zero, and Math.round
|
|
Fix equality checks with null
|
|
Fix comparison of integers with empty string/whitespace+number
|
|
Added nativeCall, which allows C/Assembler to be called from JavaScript
|
|
Fix custom font memory leak
|
|
|
|
1v59 : (function(){})?1:0 should == 1 (fix #261)
|
|
Fix Math.pow (Fix #260)
|
|
Fix String.split() (Fix #259)
|
|
Added Array.concat (Fix #262)
|
|
Increase RTC/getTime reliability by ensuring overflow can't happen
|
|
Added Math.min/max
|
|
Allow jswrapper to wrap objects with a name >8 characters long (fix #264)
|
|
dump() now doesn't print 'var X = undefined;' - just 'var X;'
|
|
|
|
1v58 : Fix Serial.parity
|
|
Fix glitches in jshGetSystemTime
|
|
Added Graphics.setFontCustom for custom fonts
|
|
Added String.lastIndexOf, and made String.indexOf with fromIndex work
|
|
Used non-bold vector font, improve alignment, and make curves lower quality
|
|
I2C can now write any size (as long as it fits on the stack!)
|
|
Try and enlarge fillRects caused by polygons
|
|
Fix === issues, fix #257
|
|
Add Graphics.getColor/getBgColor for Juergen
|
|
Added E.convolve for doing fast calculations with Waveforms
|
|
Allow String.fromCharCode with multiple arguments
|
|
Add builtin_modules to board's JSON
|
|
Added E.FFT for Fast Fourier Transforms
|
|
Added 16 bit read/write to Waveform (and speed up utility timer)
|
|
Fix utility timer - now interrupts just in time
|
|
|
|
1v57 : Tweak IRQ priorities to try and make SPI RX more reliable
|
|
Make http default to port 80 if no port is specified in options
|
|
Try and stop issue with System Time suddenly jumping forwards
|
|
Fix assert fail when clearing and adding timeouts from within a timeout
|
|
Fix modulo (actually remainder) operator for floating point values :/
|
|
|
|
1v56 : Added atob and btoa (for base64 encode/decode) - fix #244
|
|
Added Array.sort() - fix #220
|
|
fs.writeFile/appendFile now return false if they fail for some reason
|
|
Move Graphics init and idle functions out of jsinterface.c
|
|
Add HttpServer.close
|
|
Ensure that Linux command-line tests keep running if there's something to do
|
|
Epic networking refactor - it should now be possible to support multiple network devices in a single binary
|
|
Now only remove the interval/timeout/watch that's causing the error - not every one
|
|
Change names of functions in callback-based Graphics so they don't conflict with the real ones
|
|
More CC300 reliability - now range check the return value from send+recv, because if there's a timeout it can be wrong
|
|
Fix memory leak in setWatch with debounce
|
|
Fix 'repeat:false' in debounced setWatch
|
|
Make sure 'repeat:false' disables the hardware watch
|
|
Initialise RTC roughly 1 sec after reset, and use external 32kHz oscillator if it exists
|
|
Added E.enableWatchdog (fix #252)
|
|
Fix negative start value for String.substr()
|
|
Fix problem where the RTC's full 32 bits weren't combined properly
|
|
|
|
1v55 : Add String.toUpperCase/LowerCase
|
|
Fix E.getAnalogVRef() regression
|
|
Add Math.tan()
|
|
Ensure Double/Integer have Number as a prototype (fixes: Number.prototype.n=function();(5.0).n() )
|
|
||/&& now doesn't use booleans (fix #251)
|
|
More resilient parseInt behaviour
|
|
Allow data listener for HTTP POST (fix #226)
|
|
Stop JSON.parse using eval (fix #249, fix #208)
|
|
`.toString` is now called when a String is needed from an Object (fix #57)
|
|
Fixed reference count error when looking for functions in an Object's prototype
|
|
Fix issues with Numbers as Strings in maths (eg. '-5'|0)
|
|
Make sure NaN|0 == 0 (and not some huge number)
|
|
Ensure that [1.23]*1.0 == 1.23 (fix #91)
|
|
Don't pull in cos (use sin(x+PI/2))
|
|
Try and save flash memory on Olimexino board
|
|
|
|
1v54 : Add 4x6 font (instead of 8x8)
|
|
Fix occasional instability with Waveform read/write
|
|
Refactor JSON to improve speed and code size (using cbprintf)
|
|
Now print special 'short' JSON for console.log (and the REPL) (fix #47)
|
|
JSON.stringify now doesn't print functions (fix #207)
|
|
Refectoring jsparse.c to name functions after their JS Grammar names
|
|
IF statement now accepts commas
|
|
Ensure that undefined+0 == NaN (only worked for floats previously)
|
|
Fix assert fail (issue unlocking when executing built-in functions)
|
|
Fix setInterval regression in dump (and tidy up code)
|
|
FS lib now resets when issuing the reset() command (fix #200)
|
|
|
|
1v53 : Attempt to deal with the case where CC3000 crashes on initialization
|
|
Fix regression with setInterval/timeout and saving
|
|
Fix issue with saving Serial baud rates
|
|
Added ArrayBuffer.set
|
|
Use jswrapper.c for executing idle/init/kill events for libraries (cleans up jsinteractive.c)
|
|
Added beta 'Waveform' API to allow simple audio output
|
|
Improved non-deep-sleep power draw by allowing Espruino to wake itself on the Utility timer (rather than SysTick)
|
|
Allowed Waveform API to output on both DAC and PWM
|
|
Improve auto-generated documentation
|
|
Speed up ArrayBuffer.set and allow Strings to be used properly
|
|
Fix jsvArrayJoin if memory runs out
|
|
Added E.sum and E.variance array operations
|
|
Added Waveform Analog Input
|
|
|
|
1v52 : Fix memory leak in Array.slice
|
|
Fix broken Serial initialisation (partial fix for #241)
|
|
Add fs.unlink (for deleting files)
|
|
Fix url parsing when there are two slashes
|
|
Fix recent changeInterval regression
|
|
Making CC3000 recover properly in the case of repeated HTTP GET
|
|
Add alternate function remapping for Serial and improve Serial.setup error reporting, fix #241
|
|
Added preliminary WIZnet W5500 support (see http://www.espruino.com/WIZnet)
|
|
Alt Enter (27 + 10) now always inserts a newline: (eg. for `if (X) \n Y`)
|
|
Fix digitalPulse with not a number
|
|
Make digitalPulse(... 0) wait until the last pulse is complete
|
|
Stop Espruino sending out so many carriage return characters (fix #243)
|
|
Added 'delete' keyword (fix #39)
|
|
|
|
1v51 : Added debounce to setWatch (fix #14)
|
|
Tidy up timeout/watch code and now store an integer for interval
|
|
Fix crash in url.parse (string free)
|
|
Fix Modules.addCached bug which means that Modules.removeAllModules created a memory leak
|
|
Fix regression introducted by fix for #199
|
|
Added 'Esc,[,2,K' escape sequence for clearing lines. Much safer than Ctrl+C which tends to break out of execution.
|
|
Fix bootloader (broken by LTO in 1v49)
|
|
Added Number.toFixed
|
|
Make number.toString(base) work for floating point (fix #232)
|
|
Fix Linux jshSleep so that timeouts are handled at <10ms if required (fixes test056)
|
|
Now use jshardware's SPI for SD filesystems - more multiplatform
|
|
Now ref thisVar, which stops it being repurposed into a Name for array accesses (fix #233)
|
|
Fix Linux halting when there is one long timeout but no other activity
|
|
fs.readFile returns 'undefined' if file is not found. Also make readdir return undefined on failure (fix #229)
|
|
Remove disk_timerproc in SD card implementation
|
|
Upgrade fatfs to R0.10a
|
|
Tweak jsinteractive.c to help reduce code size
|
|
Finally added Long filename support for FatFS (fix #78)
|
|
Epic refactor to remove JsParse (fix #17)
|
|
Implement faster Graphics ArrayBuffer fill (affects vector fonts + clear)
|
|
Stop repeated analogWrite with messing up PWM waveform (fix #56)
|
|
Swap open and close brackets in bitmap font (fix #191)
|
|
Graphics arraybuffer/callback now accepts 16bpp
|
|
Added ability to specify a JS function for Graphics fillRect
|
|
Graphics setPixel(x,y,undefined) to use foreground colour (fix #215)
|
|
Make sure that interruptions are handled better while drawing to graphics
|
|
Make sure that stack overflow errors are handled more tidily (and increase limit for warning)
|
|
Increase available stack on Espruino Board
|
|
Stop FatFS using insane amounts of RAM
|
|
High res timer (now to 1/2^23) using SysTick with RTC as a base (fix #168)
|
|
Added 'Infinity' constant
|
|
Fixed type equality check between int and float (should treat them as the same)
|
|
Fix parsing of '018' - it's not Octal after all (but 017 is)
|
|
More accurate values for PI and E
|
|
Fix charCodeAt being signed (should be unsigned)
|
|
When casting Strings to booleans, so s.length!=0
|
|
Guess initial values for average SysTick time - means that getTime is more accurate for the first 1-2 seconds after startup
|
|
setWatch now reports lastTime - time of last state change #238
|
|
analogWrite now respects pinMode (fix #234)
|
|
Add Open Drain support to pinMode (fix #225)
|
|
Fix calling Number([value]) always returns undefined (fix #186)
|
|
When disconnected from the net, make sure we free all HTTP clients/servers
|
|
Completely remove IRQs from CC3k code
|
|
Speed up CC3k code, try and make it automatically power cycle it on timeouts
|
|
Fix SPI MISO on F4 board
|
|
Move CC3000 to SPI3 (same pins) so SPI1 can be used for other things
|
|
Compile CC3000 support in for the F4 (untested)
|
|
Process.env now reports board serial # and current console device (se we can throttle for Bluetooth) (fix #219)
|
|
General bugfixing for low memory situations
|
|
Make string free non-recursive
|
|
Fix issue where fs.readFile of a big file would cause Espruino to crash
|
|
Fix memory test harness
|
|
|
|
1v50 : Fix broken Web IDE caused by change to printing JSON for console.log (part of #206)
|
|
Fix bug when trying to stringify {5:5}
|
|
Allow {1:2} to be parsed (fix #199)
|
|
Added SPI RX IRQ. Caved in and used a few bytes for buffers, made SPI significantly more reliable
|
|
|
|
1v49 : Change compiler flags to allow link-time optimisation
|
|
Increase buffer sizes on Linux
|
|
Increase buffer sizes on boards with >= 20kB RAM
|
|
Made Startup banner smaller
|
|
Less printing when loading from flash
|
|
Don't display startup banner if loading from flash (an easy way to fix #213)
|
|
Fix HTTP response code of 0 (fix #212)
|
|
Add timeouts to TI's CC3000 driver
|
|
Add timeouts for SPI, and other timeouts now interrupt execution
|
|
Lower USB interrupt priority, remove pesky PriorityGroupConfig that was breaking other IRQ priorities
|
|
Until we sort out SPI RX and IRQs, lower default SPI baud rate to stop timeouts
|
|
console.log and print output JSON now (part of #206)
|
|
Added handling of query in url.parse - still not fully compatible though (fix #205)
|
|
|
|
1v48 : Fix issue where the size of command history is being reported wrong and so process.memory().free is reported wrong too
|
|
We now loop without a seek to position inside the string (much faster if loop is not near the start of a fn) (fix #53)
|
|
Faster string iteration which doesn't involve incrementing it->index
|
|
Swapped to jumptable to lexer (should be a bit faster)
|
|
Added the 'E' class, with getAnalogVRef and getTemperature (fix #60)
|
|
Deprecated Math.clip (not in spec) and introduced E.clip
|
|
Fixed bug in common.py that meant that ifndefs in JSON were sometimes not obeyed (better mem usage on small chips)
|
|
Fix deep sleep breaking ADCs
|
|
|
|
1v47 : Fix issue with dump() and input_pullup not being quoted
|
|
Fix regression that broke OneWire in Espruino Board (#197)
|
|
Fix clock speed issue on SPI1 (https://github.com/espruino/EspruinoDocs/issues/18)
|
|
Don't interrupt on USB ESOF or ERR - allows 'normal' sleep without interrupting every 1ms (fix #195)
|
|
Remove pointless KickStarter line printed on startup
|
|
Added bootloader hack to Python bootloader
|
|
|
|
1v46 : Fix parseFloat("") not returning NaN, and parseFloat(" \t 5 £$%^&(*$") returning NaN
|
|
Added isNaN() function (fix #184)
|
|
Fix parse order for 'typeof' (fix #172)
|
|
Added Number object (fix #165)
|
|
Bounded ftoa (stops crash when printing Number.MAX_VALUE) - helps with #185
|
|
Added Array.isArray() (fix #160)
|
|
Add do...while (fix #151)
|
|
Stop Espruino board from crashing if you try to create a web server without a connected CC3k (fix #182)
|
|
Remove Array.contains as it's not in the spec (use indexOf instead if you need it) (fix #161)
|
|
Fix nasty bug where adding/removing intervals/timeouts while in one could cause issues
|
|
Fix bug when printing 1.999999999 and similar (fix #190)
|
|
Remove need for pow for exponentiation. Not great but it fixes some tests that failed on FP inaccuracies
|
|
Change polarity of setSleepIndicator (fix #194)
|
|
Allow array.push with multiple arguments (fix #189)
|
|
Speed up array access by searching from the end backwards if we think the number is in the last half (fix #46)
|
|
|
|
1v45 : Fix parseFloat("foo") not returning NaN (and assert) - fix #149
|
|
Remove Integer.parseInt
|
|
Fix parseInt("bar") - fix #150
|
|
Ensure that maths ops with null do treat it as 0 rather than a string - fix #156
|
|
Fix digitalPulse length (properly!) - fix #154
|
|
Making sure that undefined gets cast to NaN
|
|
Fix Array.indexOf() returns undefined instead of -1 - fix #155
|
|
Moved memory() to process.memory() - added more info too
|
|
Try and improve handling of PWM timer speeds
|
|
Fixed varying SPI baud rates depending on device
|
|
Makefile changes for OSX compile
|
|
|
|
1v44 : Modified build system to store binary names in the python definition
|
|
Fix nasty regression involving losing code at the end of Strings
|
|
Fix segfault when pinMode is called on an invalid pin
|
|
Now disable interrupts during 4 bit SPI send - it's just too much otherwise
|
|
Detect unfinished block comments in console (fix #138)
|
|
Fix flash write on most 10XxB boards
|
|
Fix PWM output on all STM32 boards
|
|
General hardware tidy in prep for more intelligent device management
|
|
Run initialisation code before setWatch, to make sure pullup/down is set beforehand
|
|
Change 'Pin' datatype to be an unsigned char - makes tests easier
|
|
Now use the hardware RTC for keeping system time. Allows proper deep sleep on Espruino board
|
|
FINALLY - fix the USB VCP lost characters issue (#94)
|
|
|
|
1v43 : Added 'Modules' object with support for adding/removing cached modules
|
|
Allow product ID to be changed via Makefile
|
|
Fix documentation (and old-fashined Parsing style) for JSON
|
|
build_jswrapper now outputs errors to stderr (more compatible with default (silent) build process)
|
|
Fix issue when parsing quotes in strings
|
|
Added void operator for closure minification compatibility
|
|
Ensure that return takes the comma operator
|
|
Fix issue where printing Infinity would crash Espruino (fix #129)
|
|
Finally some working (extremely beta) cc3000 code
|
|
Added jsvObjectGet/SetChild to simplify some wrappers
|
|
'http' now uses JsVars for storage (so is suitable for non-linux devices)
|
|
Turned 'http' into a library
|
|
Added process.version and process.env (fix #131)
|
|
Changed handling of 2nd arg of << so that precedence is correct
|
|
Fixed handling of 'for (;;)'
|
|
Fix lock leak in Module handling
|
|
Update ST's library for the STM32F1
|
|
Update ST's VCP implementation
|
|
Added prefix operator (fix #130)
|
|
Allow espruino for linux to be run with '#!' in scripts
|
|
Fix indexOf on final element of strings (fix #133)
|
|
Remove JSV_PARENTINFO, as it turns out JS doesn't keep track of function scopes anyway (fix #109)
|
|
Make 'this' a keyword (now faster, more memory efficient)
|
|
Make 'Hardware' (root) the default value of 'this'
|
|
Add jsvArrayPushAndUnLock and modified code to use it (fix #135)
|
|
Now remember I2C state (partial fix for #13)
|
|
Replace 'pow' function with a smaller version - save ~2kb
|
|
Shaved another 1200 bytes off jslTokenAsString
|
|
Now store Pin state (fix for #13 on F1 parts, F4 still looks broken)
|
|
Added Graphics.stringWidth
|
|
Added internal Printf function
|
|
Misc speed and code size improvements
|
|
This version has gone to Seeed for use on the KickStarter boards
|
|
|
|
1v42 : [ebirger] allowing 'new' with no brackets
|
|
Allow built-in functions with variable numbers of arguments (fix #83)
|
|
Implement 'String' constructor in the normal way (fix #110)
|
|
Fix regression with parsing constructors while not executing
|
|
Allow multiple arguments to print and console.log (fix #92)
|
|
Make 'arguments' array available in functions (fix #100)
|
|
Fix an assert fail, and handle some potential memory leaks
|
|
Don't show __proto__ and constructor with for..in, keys(), or JSON.stringify
|
|
Make 'trace()' output more readable debug data for complex structures
|
|
Fix memory leak whe parsing functions iwht variable numbers of arguments - fix #115
|
|
Defined NaN
|
|
Stop 'new undefined()' crashing Espruino - fix #120
|
|
Get A13/A14 working on Espruino board (these were JTAG)
|
|
Get bootloader size direct from Python (remove hard-coding)
|
|
Fix '~' operator when acting on variables
|
|
Made bootloader a bit more error tolerate (CRC on write)
|
|
Added %=, /=, and *= operators (fix #121)
|
|
Allowed Object.toString() to take a radix argument for integers (fix #125)
|
|
Fix error message issue - broken strncat (fix #124)
|
|
Add comma operator (fix #122)
|
|
Added some basic code for STM32F429IDISCOVERY - not currently working though
|
|
This version is the one sent off on the Test Harness (so will probably appear on boards)
|
|
|
|
1v41 : Fix Olimexino compile (https://github.com/espruino/Espruino/issues/6)
|
|
[ebirger] Member constructors (eg. new a.b() )
|
|
[ebirger] Ensuring integers with radix specifiers can still be parsed if a radix is specified
|
|
Fix for tests/test_json_arraybuffer_001.js - iteration of arraybuffers of length==1
|
|
Add Object.keys(...)
|
|
More arraybuffer iteration fixes
|
|
On linux, use built-in stringToFloat to aid debugging. Handle exponentials, fix #31
|
|
'make serialflash' is now works correctly for Espruino Boards with bootloader
|
|
setWatch(..A0);setWatch(..A0);clearWatch(1) does not now kill the other watch, fix #25
|
|
One-based setTimeout/setWatch, fix #3
|
|
Added Function.call and Function.apply, fix #54
|
|
'http' and 'fs' are now libraries that need to be 'require'd, fix #8
|
|
Updated pin info for STM32F103xC/D/E chips, fix #84
|
|
Fixed linker script for STM32F4 (discovery board now works)
|
|
Object prototypes are now Objects, fix #101
|
|
Board docs now specify '3.3v' only pins fix #104
|
|
Add Array.forEach
|
|
Fix searching down >1 prototype to find functions (one more issue posted in #99)
|
|
Fix "12345"/5 type issues (fix #90)
|
|
'Consting' some string functions
|
|
Fixing arrays with string indices that are actually numbers \o/ (fix #19)
|
|
Released onto website
|
|
|
|
1v40 : Ensure that LCD.prototype.setPixel = function actually works
|
|
Refactor LCD driver code to allow lcdInit (and start of making it non-platform-specific)
|
|
Built 'LCD' support into linux/raspi/carambola
|
|
Add initial SPI.send(ArrayBuffer) support - even if NO VALUES RETURNED
|
|
Start of built-in Nokia 5110 LCD support
|
|
Remove GPIO clock removal on sleep for now (it kills setWatch)
|
|
Fix (sub)ArrayBuffer problems (test100.js)
|
|
Added setDeepSleep - still beta put power consumption drops to 1mA
|
|
Fix broken name for httpCRq.write
|
|
Changed LCD to Graphics - added ability to render to ArrayBuffer
|
|
Fix 8 char built-in class names
|
|
Adding preliminary Sony SmartWatch support
|
|
Adding preliminary support for completely bare 36 pin chip
|
|
Fixing pin defs for Espruino board rev 1v1
|
|
Added proper SDL/ArrayBuffer and JS Callback graphics support
|
|
Added "ifdef" ability in build_jswrapper
|
|
Take JSVAR_CACHE_SIZE out of jsutils and put it in the board config file
|
|
Added JSV_PARENTINFO which will allow us to do things like setTimeout(foo.bar,10)
|
|
Fixed arrays in non-executes streams - 'if (0) print([1,2,3]);'
|
|
Added 'require' function loading modules from node_modules on SD card
|
|
Added module cache to stop modules being re-loaded
|
|
Renamed internal vars to start with '>' - much easier to distinguish for 'dump'/etc
|
|
Only use parentInfo on functions
|
|
Load all tests in test dir - don't do them by number
|
|
Added 'zigzag' ordering for ArrayBuffer Graphics
|
|
Added 'vertical_byte' ordering for ArrayBuffer Graphics
|
|
toJSON now ignores 'hidden' object elements
|
|
Special-case jsvArrayBufferIteratorSetIntegerValue
|
|
Make SPI output an ArrayBuffer
|
|
Use best out of 3 for DelayMicroseconds calibration - something seems flaky right after bootup
|
|
Lines now drawn from p1 to p2 inclusive
|
|
Events now use jshPushIOWatchEvent (should cut down on code) also fixed bug with watching pin #11
|
|
Now remember if pinMode was set or not
|
|
Transform ```code``` in JSON into a code tag in the documentation
|
|
Graphics now supports FSMC for HY boards again
|
|
Drawing vector fonts is now roughly the right size and position (still not 100%)
|
|
Remove registration code
|
|
Adding MPL licence
|
|
Remove Arduino bit manipulation functions - nobody seems to use them anyway
|
|
# of flash pages/etc now comes from board info
|
|
[ebirger] Supply the correct arguments to Array.map
|
|
[ebirger] Method calls and membership evaluation should be done on all factors (ee. [1,2,3].foo())
|
|
[ebirger] When running multiple tests, only set up terminal once or it breaks the terminal window on exit
|
|
Added STM32-style USB CDC bootloader for Espruino Boards
|
|
Added scripts/create_espruino_image.sh to package up bootloader and espruino into one binary
|
|
SHIPPED on Impatient developer boards
|
|
|
|
1v39 : Added Bitwise NOT operator
|
|
Added Raspberry Pi version to ZIP (with HTTP support)
|
|
Fixed load/save on Linux Devices
|
|
Added pinMode function (to allow pull-ups/pull-downs to be turned on)
|
|
SPI.send4bit/send8bit will now not mess up the final element
|
|
changeInterval now clears up stored up callbacks (eg, setInterval(.., 0.01)...wait...changeInterval(...,20)
|
|
Ctrl-C no longer prints anything, which avoids lockups
|
|
No longer print "Execution Interrupted" if nothing was interrupted!
|
|
Added >>>= >>= and <<=
|
|
When entering text interactively, ensure that there are no trailing spaces
|
|
|
|
1v38 : Tweaks for Arduino IDE compile
|
|
Removed '(char #)' from stack trace, as a bit pointless now
|
|
Added better reporting of execution location when Ctrl-C pressed
|
|
Urgent fix for non-working Olimexino since 1v33
|
|
Fix string comparison when strings contain "\0"
|
|
Added LED1/2/OSC/SD/etc to Olimexino Board docs
|
|
|
|
1v37 : Urgent fix - power saving code made it difficult to re-flash Espruino (now only apply this to Espruino Board)
|
|
|
|
1v36 : Fix documentation for Array.pop()
|
|
Added some much better board documentation
|
|
Fixed DAC output on F3
|
|
Fixed DAC output on devices where PWM is also available and the alternate function is less than the DAC's
|
|
|
|
1v35 : Attempt to reduce power consumption when sleeping by turning off GPIO, and setting GPIOs to AIN on reset
|
|
Fix F3 issue where ADC/DAC weren't picked up properly
|
|
Tidy up register text and add KickStarter mention
|
|
var a = {}; a[LED1]=0; - not converted to String
|
|
JSON (and hence dump()) now dumps ArrayBuffer correctly
|
|
|
|
1v34 : Faster jshFromDeviceString
|
|
Preliminary support for flow control on Serial receive
|
|
Speed improvements by removing jsvGetRef from jsvUnLock
|
|
fast 4 byte pre-check in jsvFindChildFromString
|
|
Skip lock/unlock in FindChildFromString to help increase speed
|
|
When we unplug USB, only go to the default console device IF that is the device we're currently on
|
|
Support for custom Espruino board
|
|
Added ArrayBufferView.interpolate
|
|
16 bit SPI send for send4bit/sevrnd8bit (better reliability on low-end chips)
|
|
Fix JSON dump of typed array
|
|
Added Math.clip(x, min, max)
|
|
When saving on flash, don't do jslTokenAsString properly
|
|
B3/B4 move from alternate fn
|
|
Fix incorrect reporting of analog pins
|
|
Fix I2C.readFrom on STM32F1/4
|
|
Make 1/2 == 0.5 (was being sensible before, but now follow JS spec)
|
|
Ctrl-C while in timer fn clears timers (but not outside it)
|
|
Fixed broken clearInterval from within setInterval
|
|
Hopefully fixed issue on SSD1289 LCD controller
|
|
Trigger wheel handler to use interrupts
|
|
2D arraybuffer interpolation
|
|
Added Math.wrap, fixed a lot of trigger issues
|
|
Fixed SysTick priority/preempt problems
|
|
Slowed the SysTick timer back down for everything
|
|
Fix Int8Array signedness on F4 boards
|
|
Refactored source code tree
|
|
|
|
1v33 : fix character encoding issue of "\16"+"1" != "\161"
|
|
Refactoring of ArrayBuffer into iterator, and addition of a general purpose iterator
|
|
Fancier assert for debugging
|
|
jsvArrayJoin to use new iterator
|
|
for (i in ...) to use new iterator
|
|
I2C and SPI use new iterator
|
|
Serial.write() - to allow single ints to easily be written
|
|
changeInterval assert fail when given a function by accident
|
|
added peek8/poke8/peek16/poke16
|
|
memory() now takes account of command history size
|
|
memory() on ARM reports the end address of the stack - so it can be used as a scratchpad with peek and poke
|
|
Try and reduce code size by not inlining several functions
|
|
No refs for StringExts - so we get one more byte per JsVar (~5%) more storage efficiency
|
|
Move from jsvIsBuiltInFunction to computer-generated jswIsBuiltInFunction
|
|
When creating Objects, check for built-in function BEFORE creating an Object class for it
|
|
Built process now checks that flash usage is under the allowed value
|
|
Added short compare to jswHandleFunctionCall to reduce code size
|
|
Added 3 byte compare (4 byte read and AND off top byte) - faster, less code
|
|
Auto-generate jsvGetBasicObjectName from docs
|
|
No longer using refs for storing whether free or not - use flags with JSV_UNUSED and get one extra var with 8 bit refs
|
|
Switch to using STRING_0...STRING_MAX in flags, rather than specific bits in JsVarFlags - allows more that 15 chars to be used per JsVar
|
|
Make ArrayBuffers actually be ArrayBufferViews - saves on extra string-handling code at expense of one var
|
|
Make sure Uint8Array,etc inherits from ArrayBufferView
|
|
Fix issue where a '\0' coming in from serial was not put in e.data properly
|
|
Don't inline some functions when we're trying to save on flash
|
|
Re-use sin for cos, pow for sqrt to reduce code size
|
|
|
|
1v32 : Fixed embarassing issue with 0.999=="0.A"
|
|
Added and checked Pin.writeAtTime on STM32
|
|
Now don't allocate events array - just allocate directly, which saves memory and is faster (although slighty out of order)
|
|
Docs: now Alphabetically sorted, and class instances not listed by accident
|
|
Fix issue where Ctrl-C on ANY Serial port caused execution to be interrupted
|
|
Updated busy indicator to cope with recent change to not allocate events in an array
|
|
Fixed I2C on HY 2.4 board - I2C needed hard reset
|
|
Added basic ArrayBuffers/TypedArray support
|
|
Fix memory leak when error created with [] on a non-array/object
|
|
Improved hyperlinking in documentation
|
|
Fix I2C receive bug on F4
|
|
Increased VL board's input buffer size
|
|
|
|
1v31 : Fix PWM output on TIMER1/8 pins of the STM32F4
|
|
Fix PWM output for negated timers
|
|
memory() now runs a GC pass
|
|
Fixed multiple occurrence of functions in reference
|
|
|
|
1v30 : STM32F1: fixed AF issue meant peripherals would never return from AF mode
|
|
STM32F1: When given an invalid pin, now reports if pins are 'af' or not
|
|
Updated SPI.setup docs to mention that you can't mix AF and non-AF
|
|
If one SPI pin is specified but others aren't, only that pin will be set up
|
|
Added Olimexino hack so SPI1.setup works as expected
|
|
Allow using [] on a function
|
|
Fix precedence issue, so var a = function() { return 1; }(); works
|
|
Update SPI documentation
|
|
for (i in f) can now iterate over functions
|
|
Optional argument to trace() for object to start tracing from
|
|
Small steps towards ArrayBuffers
|
|
Added smart edit that checks for internal functions, and uses Function.replaceWith
|
|
Added Function.replaceWith to replace the internals of a function while keeping the scope
|
|
|
|
1v29 : Some hacky sysfs-based IO for running on Linux
|
|
HTTP Callbacks are now stored as names so they can be changed on the fly (Linux only)
|
|
Successful compile for Carambola
|
|
Filesystem support on Linux
|
|
Switch to variable size ref counter (marginally more efficient on very small devices, safe on Linux)
|
|
Linux now has unlimited memory available
|
|
Added linux/sysfs 'setWatch' (non-irq driven, so very noddy)
|
|
Checked jswrapper check from using multi-char constants to a #define
|
|
Improve pin suggestions for SPI/I2C/USART
|
|
Auto-initialise USART with default values when setConsole is used
|
|
Support for new Graphics LCD types
|
|
3.2" VCT6 board support
|
|
|
|
1v28 : Faster LCD fillrect for HY 2.8
|
|
Fix for multi-byte SPI writes on HY board at 1Mhz (touchscreen control bug)
|
|
Fix issue with delayMicrosecond calibration on HY (and hence OneWire)
|
|
Fixed digitalPulse on STM32VLDISCOVERY
|
|
|
|
1v27 : Fixed problem with OneWire constructor execution
|
|
Added |=, &= and ^=
|
|
Added Array.splice()
|
|
Faster, more ROM-efficient built-in symbol table
|
|
Fix for potential issue when using field accessor on an undefined var
|
|
|
|
1v26 : I2C Support on STM32F1 and STM32F4 boards too
|
|
Emergency cut in variables for Olimexino with bootloader (as flash usage has got too high for save to flash!)
|
|
|
|
1v25 : http.writeHead to accept an empty header
|
|
Fixed issue finding methods on built in classes (0 termination)
|
|
make sure http server with no data still sends headers...
|
|
Start of MINI-HY-2.8" support (all ok, but no SD card yet)
|
|
Reduce RAM usage by consting some arrays that are not modified
|
|
Vector fonts now use polys - 8kb less ROM, and faster rendering
|
|
Start of LCD 'driver' code
|
|
Standard way of handling events, Object.on/emit/removeAllListeners - like Node.js's EventEmitter
|
|
Self-calibrating Microsecond delay (for intermal OneWire/etc)
|
|
OneWire class
|
|
Correct handling of built-in class constructors
|
|
Fix error when parsing a zero-argument function that has been given arguments
|
|
I2C support - currently ONLY tested on STM32F3 board
|
|
|
|
1v24 : SDIO-based fat driver on the HY STM32 board
|
|
Added DAC to the HY boards (103xE-based)
|
|
Re-named the fileSystem functions to make them more compatible with node.js (readFile/writeFile/etc)
|
|
Added fs.appendFile
|
|
Removed HTTP from the reference until it is included in some boards
|
|
|
|
1v23 : Fix 'ERROR: INTERNAL: stmADCChannel' on STM32VLDISCOVERY/F1 boards when accessing PA0
|
|
Reference now mentions which Espruino version it is for
|
|
|
|
1v22 : Important fix - Events got executed in the wrong order if they got queued up
|
|
|
|
1v21 : Ensure SPI clock does not stop between bytes
|
|
Added SPI.send4bit and SPI.send8bit
|
|
Made sure the VL board's code fits into available flash
|
|
Smart += that can append to a string rather than cloning it
|
|
dump() prints functions properly, rather than 'var f = function() {}'
|
|
Pageup/down move the cursor to the beginning/end of input
|
|
LCD draw/fill with negative x and y
|
|
|
|
1v20 : Add console.log
|
|
Fix automatic usleep for Linux
|
|
Added node.js-style HTTP server for Linux version
|
|
Fixed null-pointer issue when accessing something that doesn't exist on an object
|
|
Added node.js-style HTTP client for Linux version
|
|
Start of bit bashing functionality
|
|
for (i in "ABCD") console.log(i) -> 0,1,2,3
|
|
String array access (but not for writing - doesn't work in JS anyway)
|
|
String String.fromCharCode / charCodeAt
|
|
Added SPI baud rate setting
|
|
Vector font chars 'a' and '4' now work ok
|
|
Fix numeric exception when rendering a poly that has some identical points
|
|
Better digitalPulse (uses timer + interrupts)
|
|
analogWrite can now take an object with a 'frequency' argument for PWM
|
|
|
|
1v19 : Fixed issue where var M=Math;M.random() failed
|
|
Fixed issue with var U=USB;U.print("Hello");
|
|
Remove loop iteration limit
|
|
Fix memory leak when a syntax error is in for '(i in arr)'
|
|
Save state of pin on setWatch interrupt (e.state)
|
|
Change setWatch to allow only on rise or fall as an option
|
|
clearWatch() clears all watches
|
|
|
|
1v18 : DAC support on F3/F4
|
|
Serial.setup() can also take a second parameter of an object {tx,rx}
|
|
Better support for dump() with echo/setBusyIndicator/etc
|
|
Better dumping of prototypes on built-in vars
|
|
Don't add chars<32 (Except tab) to the input line
|
|
SPI1/2/3/4.setup() to take an object {baud,sck,miso,mosi}
|
|
Better hardware initialisation code (not UARTS auto-init if they are used)
|
|
Fix issues with prototypes
|
|
Peek/poke instructions
|
|
Start of I2C support (not usable yet)
|
|
Added Math. ceil/floor/exp/log
|
|
|
|
1v17 : Support for running alongside the Maple bootloader
|
|
Fix parsing of numbers beginning with 0 when forceRadix!=8
|
|
Fixed USART1 on Maple/Olimexino devices
|
|
|
|
1v16 : Inlining of jsvLock/UnLock in jsvar.h to improve speed
|
|
Move non-hardware-dependent stuff into jsdevices
|
|
Move jshardware.c into targets/stm32/jshardware.c, create 'targets/linux' and use a single makefile
|
|
For + While loops work without reallocating lex
|
|
Fix AddNativeFunction when function already exists (and tests + saved state)
|
|
Change jsvFindChildFromX to use JsVar* from JsVarRef - saves a lot of lock/unlock
|
|
Handle new Foo() as per spec (return value + init of this+prototype) - still does not cope with non-object prototype
|
|
Beginning of SD card support (works on Olimexino, but not very flexible)
|
|
Fix for parse/eval when given non-strings
|
|
Strings can now contain '\0'
|
|
Jumptable-friendly reserved word check
|
|
Jumptable-friendly builtin functions (massive refactor)
|
|
SPI support
|
|
HY board support, and graphics LCD
|
|
Added fillPoly, and Vector fonts
|
|
Added Registration code
|
|
Fixed some undefined function/array warnings
|
|
Much better HTML function documentation
|
|
Fixed edit() function
|
|
STM32F3 support, and now peripheral stuff is done with a script
|
|
explain what pins are available if a pin is not capable of requested fn
|
|
power on ADCs only when needed
|
|
LCD fillPoly speed improvements, + drawLine
|
|
Add datatype for Pin, so pins written to console by pin name rather than integer value.
|
|
Added Pin.set/Pin.reset
|
|
Change warning about 'undefined.' into an error (foo.reset() had unexpected consequences!)
|
|
Fix parsing of '1.0/-3'!
|
|
Add typeof and instanceof operators
|
|
Ensure that Serial1/SPI1/etc are objects of type 'Serial'/'SPI' - so prototypes can be added
|
|
|
|
1v15 : Escaping JSON strings
|
|
Fix parsing of octal numbers in strings (so don't have to be 3 chars long)
|
|
Drastically improved stack usage using small stub functions (at expense of a bit of speed)
|
|
dump() also dumps out prototypes for functions
|
|
|
|
1v14 : Fix complaint about pins during setBusyIndicator()
|
|
Increase available memory on OLIMEXINO
|
|
Added function memory() to return memory usage
|
|
setWatch now links to function names (rather than just functions)
|
|
dump() also handles Serial.onData(...)
|
|
Fix issue with JSON printing functions with arguments to console
|
|
prefix builtin variables with '_'
|
|
fix ArrayIndexOf when array contains undefineds
|
|
move all devices into one git repository
|
|
USB on F4
|
|
call onInit function/string if it exists when Espruino powers on
|
|
Compile F4 with -O2 - as we have the program memory for it
|
|
Serial3/4/5/6 on F4
|
|
Serial3 on Olimexino
|
|
Make Serial.onData() clear onData handler
|
|
|
|
1v13 : Operations like + on Object/Array convert them to strings rather than error
|
|
var now doesn't error if there is no semi-colon
|
|
Allow new line or line delete in multi-line editing
|
|
add edit(functionName) - which copies function definition into inputline so it can be updated
|
|
When printing lines, delete current inputline and then put it back in idle loop (only if echo=1)
|
|
Support *,/ etc on numpad
|
|
|
|
1v12 : Issue when printing lots of data and then disconnect USB
|
|
Hide USB/Serial in Dump()
|
|
add Array.map(fn(x), thisArg)
|
|
For newline, count [] and () (as well as {}) - also knows about comments/strings/etc
|
|
Fix assert fail is setTimeout with non-function
|
|
If space at end of input line, enter still executes
|
|
Removed some hard-coded arrays in favour of JsVar strings
|
|
Fix confusion with jsvIsName/jsvIsString
|
|
Handle numpad end key
|
|
Add code to check stack and stop stack overflow if too much recursion
|
|
Ensure that setTimeout/setWatch store the link to a function, not the function
|
|
Fix nasty ref loop in ref loop GC issue
|
|
Add dotty output
|
|
Fix memory leak when error in jspParseSingleFunction
|
|
Now run Garbage collection if we're idle, and we know we have a few ms spare
|
|
Added setSleepIndicator
|
|
Fix line/col indicator in errors/warnings
|
|
Fix JSON parsing and printing when 'undefined' encountered
|
|
Rewritten object handling code to be way more standard JavaScript compliant
|
|
Array initialisation with 'new Array()', also for Strings
|
|
Added a few more built in functions
|
|
Nice error reporting with line + pointer
|
|
fixed Math.random
|
|
Binary style ops on doubles now work - they are just converted to ints
|
|
Added boolean datatype
|
|
|
|
1v11 : Add Math functions
|
|
Add command history (and dynamic history free if low memory)
|
|
Fix broken jsvArrayPop
|
|
Add tests for and fix Array.indexOf
|
|
In-line editing for commands
|
|
Fix bug in basicVarEquals for big strings
|
|
More fixes for low memory conditions
|
|
Multi-line edit for commands (but no newline or line delete yet)
|
|
Handle Home, End + reverse delete keys
|
|
Fix nested for loops not handling interrupts correctly
|
|
Fix AppendString issue when given start value greater than string
|
|
Add 'changeInterval' to allow things created with setInterval to have the frequency changed (eg. stepper motor control)
|
|
Now puts itself to sleep to save power, when it knows nothing is required and it'll be woken up by SysTick before
|
|
Change Math library to avoid putting constants in RAM
|
|
|
|
1v10 : Increase FIFO size for VL
|
|
Marginally decrease amount of F4 vars to ensure they all fit in one flash sector
|
|
Allow strings to be longer than the max token size
|
|
'"key" in obj' syntax
|
|
Detect if in FOR or WHILE loop, and if not, disallow break and continue
|
|
Change min setInterval time to 0.1ms - F4 can get close to this
|
|
Better analog pin error message
|
|
USB support on Olimexino/Maple
|
|
Start of multiple COM port support (ioEvent queue)
|
|
Ctrl-C now clears the input line
|
|
Save state of 'echo' into flash with save()
|
|
Add 'setBusyIndicator(pin)' to set pin high when Espruino is busy
|
|
Inbuilt function handling speed improvements
|
|
Allow Serial comms via other UARTS. Serial1/2.onData and print/println
|
|
now inserts elements into arrays in the correct order (GetLength can be (is) now much faster)
|
|
Faster code to work out pins from strings
|
|
Automatically convert IDs in form A#,A##,B#,B## etc into numbers.
|
|
Built-in constants for LED1/BTN/etc.
|
|
|
|
1v09 : Enabled 'abs' by default
|
|
Added flash programming to STM32F4
|
|
analogWrite now working!
|
|
|
|
1v08 : Add preliminary STM32F4 support
|
|
Allowed test cases to test timers - eg. code in jsinteractive.c
|
|
Fix memory leak for timer
|
|
Fix memory leak for digitalWrite
|
|
|
|
1v07 : Fix string charAt
|
|
Fix watch on different pin
|
|
Pass arguments to event handlers - eg. time
|
|
digitalWrite/Read to take arrays of pins, and int for value
|
|
|
|
1v06 : Add break + continue
|
|
Add switch statement
|
|
Handle /r, /r/n or just /n for newlines - phone compatible
|
|
Handle different type of delete
|
|
|
|
1v05 : Allow setWatch/setTimeout/setInterval with a string
|
|
Handle adding Open bracket then deleting it
|
|
When calling a NAMED function, zero the scopes - this stops scope table overflow
|
|
|
|
1v04 : Renamed to Espruino
|
|
Fixed issue with event add when out of memory
|
|
If out of memory happens during a timer, kill all timers
|