Commit Graph

1193 Commits

Author SHA1 Message Date
Nathaniel Wesley Filardo fc771cd00c
app/lua53: catch up to lua 5.3.6 (#3415)
Adapt https://www.lua.org/work/diffs-lua-5.3.5-lua-5.3.6.html to
NodeMCU.  Mostly a straight application, but some small tweaks were
required and, in lundump.c, some changes were elided and some additional
diff reduction applied, as we have heavily diverged from upstream.
2022-12-22 21:55:40 +01:00
Nathaniel Wesley Filardo 565bbbfcbb Switch GET_BYTE_FN to LUA_LOAD_BYTE_FN
This is intended to be a more portable abstraction: rather than
hard-coding offsets in the macro invocations, it relies on the existence
of __builtin_offset and its availability even within inline asm blocks.

While here, rename some of the functions involved to hopefully improve
clarity
2022-04-03 14:23:29 +01:00
Andreas Deininger ae8426729d
Fix several typos (#3491) 2022-01-12 13:22:52 +01:00
Johan Ström b91368594d
MQTT: trigger conn failure callback if DNS success but connection failed (#3477) 2021-12-06 13:38:48 +01:00
Johny Mattsson 1965a12efc
Minor Lua fixes. (#3467)
Discovered over on the dev-esp32-idf4 branch.

- Off by one error in loadLFS, leading to slight memory leak and
  potential corruption.

- Insufficient return value check in loadLFS, where uzlib may return
  one of two success conditions, one of which would result in an
  out-of-bounds access and related pain.

- One case of a side effect within a lua_assert(), leading to
  silently broken LFS image handling when compiling without asserts
  enabled, the issue showing up as module names being shuffled around.

- Incorrect encoding of TValues in LFS when 64bit numbers in use.
2021-11-19 22:50:27 +01:00
Johan Ström f7b48b9214
Fix IGMP timer (#3476)
LWIP_RAND() return type is int, value returned is sometimes negative.
This causes timer to sometimes (often) go outside of max_time, which in turn causes IGMP snoopers or IGMP routers to drop the subscription
2021-11-19 22:47:54 +01:00
Johan Ström 77e5359087
ow: add alarm scans and timing tweaking (#3461) 2021-09-08 22:34:43 +02:00
Lukáš Voborský c72d6083ef
Fix crash in sntp.sync() (#3460) 2021-08-27 12:09:43 +02:00
Lukáš Voborský d528333eee NmraDcc port to NodeMCU Lua
Merging @pjsg's ack functionalities and other fixes
2021-03-12 12:55:59 +01:00
Lukáš Voborský 3bf8db1306 NmraDcc upstream version 2021-03-12 12:55:59 +01:00
Gregor Hartmann e96078e6db
Handle impact of excluding pixbuf from build (#3398) 2021-02-14 08:41:17 +01:00
Nathaniel Wesley Filardo 109f500be7
More LED fixes (#3368)
* apa102: remove dead code

We can't store strings of hundreds of thousands of characters in RAM, so
this can't possibly have fired, historically.  Pixbufs are still RAM
objects, so that's still out.  With LFS, it would take a pathological
example to hit the required 400KB TSTRING.

* Add IRQ management functions

* ws2812: fill UART FIFOs with IRQs off

Refactor code to make the use of two fill loops less gross.
2021-01-10 17:19:10 +00:00
Gregor Hartmann 4023df7e60
fix regression in luaL_typerror and Change NTest so it can run tests on the host emulating node.task.post (#3357)
* Change NTest so it can run tests on the host emulating node.task.post
* Add executing first host test
* Regression: fix luaL_typerror
2021-01-09 22:25:22 +01:00
Nathaniel Wesley Filardo 85df6b588d
LED strip refactor (#3158)
`ws2812` buffer extracted to new `pixbuf` module.

* The new pixbuf module has more functionality than the `ws2812`-specific buffer it replaces.
* This is work in progress towards https://github.com/nodemcu/nodemcu-firmware/issues/2916
* The LED driver modules `ws2812`, `ws2801`, `apa102`, and `tm1829` have sprouted `pixbuf` support.
* `NTest` tests for `pixbuf` now exist.

While here, document the ws2812 UART-based overlapping with mainline
execution.  Fixes https://github.com/nodemcu/nodemcu-firmware/issues/3140

Co-authored-by: Gregor Hartmann <HHHartmann@users.noreply.github.com>
2021-01-06 23:35:34 +00:00
M.K 9a26e0a94b
Makefiles: Validate LUA selection or refer to the other Makefile. (#3269) 2021-01-06 03:57:50 +01:00
Nathaniel Wesley Filardo c695a451ee
First round of MQTT fixes (#3360)
* mqtt: remove concept of connection timeout

Just rely on the network stack to tell us when things have gone south.

* mqtt: remove write-only mqtt_state.port field

* mqtt: drop useless conditional

* mqtt: decouple message sent flag from timer

* mqtt: reconnect callback does not need to hang up

The network stack has certainly done that for us at this point.
Similarly, since we're about to call mqtt_socket_disconnected, don't
bother unregistering the timer here, either.

* mqtt: don't tick once per second

Set the timer for the duration of the wait and cancel it on the other side.

* mqtt: defer message queue destruction to _disconnect

We're going to want to publish a disconnect message for real, so doing
this in _close does no one any favors

* mqtt: miscellaneous cleanups

No functional change intended

* mqtt: close() should send disconnect message for real

This means waiting for _sent() to fire again before telling the network
stack to disconnect.

* mqtt: tidy connect and dns

- Push the self-ref to after all allocations and error returns

- Don't try to extract IPv4 from the domain string ourselves, let the
  resolver, since it can

- Don't try to connect to localhost.  That can't possibly work.

* mqtt: common up some callback invocations

* mqtt: don't retransmit messages on timeout

There's no point in retransmitting messages on timeout; the network
stack will be trying to do it for us anyway.

* mqtt: remove unnecessary NULL udata checks

* mqtt: hold strings in Lua, not C

Eliminates a host of C-side allocations.

While here, move the rest of the mqtt_connect_info structure out to its
own thing, and pack some flags using a bitfield.

* mqtt: mqtt_socket_on use lua_checkoption

* mqtt: slightly augment debug messages

These changes have made some debugging ever so slightly easier.
2021-01-05 12:07:09 +01:00
Nathaniel Wesley Filardo c2b3710f60
Add pipeutils example (#3354)
These have been handy within the test harness for streaming files and
LFS images across to the DUTs.

Add nrec method to pipe

Co-authored-by: Gregor Hartmann <HHHartmann@users.noreply.github.com>
2020-12-29 08:54:54 +01:00
Lukáš Voborský 0ef609d8f4
Add Somfy receiver (#3320) 2020-12-28 00:04:32 +01:00
Nathaniel Wesley Filardo b1d318de62
NFC: Backport luaL_testudata to Lua 5.1 (#3352)
And move luaL_checkudata to it, as in 5.3.
2020-12-24 08:39:08 +01:00
Lukáš Voborský 9c1f4aca5b Fix DHT module (#3334)
* DHT module negative values bug fix
* Revamp of the DHT module, DHT12 support
* Updated documentation
2020-12-16 23:20:09 +01:00
Lukáš Voborský f4ba635d3c
Fix softuart module setup function parameters (#3348) 2020-12-16 12:56:55 +01:00
Gregor Hartmann ad8f82c6e2
fix search path for lua require (#3336) 2020-11-25 19:07:17 +00:00
Gregor Hartmann 02dcc235c9
Allow turning off softwd again as documented (#3327)
* Allow turning off softwd again as documented

* fix luacheck warnings

* fix outcome of review
2020-11-13 11:11:29 +00:00
Philip Gladstone f67792e0d3
Add support for using doubles in the LUA53 build. (#3225) 2020-11-07 22:38:40 +01:00
Nathaniel Wesley Filardo 045fc80c70 pipe: comment and style fixes (NFC)
Reflow comments to 80 columns; fix some typos and other nits.
2020-10-23 04:21:51 +01:00
Nathaniel Wesley Filardo 962991ed18 pipe: fix unread buffer chunk management
unread contained two subtle bugs:

 - it created a buffer chunk at pipe[1], when that position is reserved
   for the pipe reader function.  Because it shifted pipe[i] to
   pipe[i+1], including pipe[1], this was likely to manifest as the pipe
   later attempting to dequeue a function rather than a buffer chunk
   user datum.  Solve this by adjusting the loop bounds and creation
   index.

 - when it created a new buffer chunk, it left that chunk's ->start and
   ->end fields at 0, but would then exit the loop to do the tail fill,
   which was in turn assuming the exit condition of the loop when an
   existing chunk had room, namely that data had been moved to the right
   and so ->start > l.  Solve this by making new chunks empty but with
   ->start = ->end = LUAL_BUFFERSIZE.  It may be slightly better to
   instead try to leave room at both ends if the buffer was empty prior
   to this unread.

FIXES: https://github.com/nodemcu/nodemcu-firmware/issues/3155
2020-10-23 04:21:51 +01:00
Lukáš Voborský 734b02a734 wiegand Lua 5.3 fix 2020-10-23 04:19:41 +01:00
Cody Cutrer 63e1fcda06
add wiegand module (#3203)
* add wiegand module

* minor tweaks to wiegand module

 * fix a whitespace error (tabs!!!!)
 * remove an unnecessary volatile qualifier
2020-10-19 01:05:31 +01:00
Philip Gladstone 73df18d738
Fix the initialization of the wifi default hostname. (#3303)
* It appears that the rf_pre_init is not called any more. Also cleaned up the code in
wifi_common.
* Log a message (at the right baud rate) if the hostname is invalid
* Updated the comment in the user_config.h file
2020-10-18 20:48:10 +02:00
Philip Gladstone 7185b9c603
Improved startup performance and measurement tools. (#3171)
* Don't adjust the clock until after we deal with rtctime...
* Switched to using START_OPTION_CPU_FREQ_MAX instead.
* Use setfield and add caching of the startup option
* Put the startupcounts warning into a warning box
2020-10-18 20:46:47 +02:00
Philip Gladstone 7830ae671e
Guard against freeing a ref of zero (#3308) 2020-10-13 21:43:38 +02:00
Lukáš Voborský b9091784ae bme280 driver in Lua+C 2020-10-05 20:41:36 +01:00
Lukáš Voborský ebfce4a911 Fixing bug in `file.readline` when line length exceeds 128 chars 2020-09-29 22:57:18 +01:00
Nathaniel Wesley Filardo 0a1d122cb8
crypto: remove toHex and toBase64 (#3300)
We marked these for deprecation in favor of the functions of the same
name in encoder.  Let's actually make good on that.
2020-09-28 20:42:16 +02:00
philip 274828cfd5 Remove ets_printf reference 2020-09-27 03:05:36 +01:00
philip 96a6dcc196 CLean up the PR a bit 2020-09-27 03:05:36 +01:00
philip 9bea108da7 Now use the original c99-snprintf as a submodule. 2020-09-27 03:05:36 +01:00
philip 6ba23ca267 Remove some uses of etc_*printf 2020-09-27 03:05:36 +01:00
philip 8bce7937ac Conditionalize int2float on lua 5.3 2020-09-27 03:05:36 +01:00
philip f316ebf73a Remove ESP8266 special case 2020-09-27 03:05:36 +01:00
philip 403c633b25 Make it work for the integer lua51 build 2020-09-27 03:05:36 +01:00
philip 85298b34c5 Now round trips in float firmware, and gets it roughly right in double (in lua 51) 2020-09-27 03:05:36 +01:00
philip 96d8047f71 Give it a chance of working under Lua 5.1 2020-09-27 03:05:36 +01:00
philip df9f3030e6 Add snprintf and remove our sprintf 2020-09-27 03:05:36 +01:00
philip 5b6b2f98b7 Make round tripping work for lua53 and floats 2020-09-27 03:05:36 +01:00
philip e9c4bb74d3 Make it inline 2020-09-27 03:04:52 +01:00
philip 862c727cb4 Add missing ICACHE_RAM_ATTR 2020-09-27 03:04:52 +01:00
Philip Gladstone 9d74cd5aa0
Improve the enduser setup experience by triggering captive portal detection. (#3282)
* Make captive portal detection work on macOS
* Change the default SSID prefix to be NodeMCU
2020-09-18 23:47:52 +02:00
Nathaniel Wesley Filardo dc334f87a6
uart: expose fifo depth counters (#3177) 2020-09-18 23:46:32 +02:00
Philip Gladstone 139af0cdd1
Handle tcp fragmentation and also fix XSS problem. (#3275) 2020-09-15 14:06:38 +02:00