Commit Graph

82 Commits

Author SHA1 Message Date
Gregor Hartmann e96078e6db
Handle impact of excluding pixbuf from build (#3398) 2021-02-14 08:41:17 +01:00
Marcel Stör 6643cb4697
Add note about GPL (#3400)
Fixes #3025
2021-02-14 08:40:16 +01:00
Marcel Stör 5e00b43000 Add missing periods 2021-02-03 22:25:56 +01:00
Marcel Stör 593a549eef Fix admonitions 2021-02-02 22:17:26 +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
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
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
Gregor Hartmann 63d82131a7
Doc fixes (#3333) 2020-11-25 12:53:46 +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 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
Lukáš Voborský b9091784ae bme280 driver in Lua+C 2020-10-05 20:41:36 +01:00
Lukáš Voborský 54e8696ac9
struct module minor documentation fix (#3306)
Thanks
2020-10-04 17:26:42 -04: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 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
Lukáš Voborský 38f13a7e9f
Fixes broken `tmr.alarm` (#3263)
Co-authored-by: vsky <blue205@centrum.cz>
2020-09-05 14:16:57 +02:00
galjonsfigur e7620b0647
SoftUART module fixes and code simplification (#3104)
* SoftUART fixes:

- Simplify code by using lua_L* functions and using userdata properly
- Fix some edge-cases
- Add more examples to documentation

* Don't de-register interrupt hook if there is more RX instances

* More bug fixes and registering simplification with luaL_reref and unref2

* Correct documentation of SoftUART module
2020-09-04 17:02:33 +02:00
Lukáš Voborský d72ea91ed0
Implementing optional parameter `restart` to tmr:start() (#3111) 2020-08-29 21:43:50 +02:00
Philip Gladstone 606f91664b
First phase of number to integer conversion (#3221) 2020-08-29 17:48:24 +01:00
Terry Ellison a92da3c33c
Lua 5.1 / 5.3 alignment and document (#3193) 2020-08-22 17:41:02 +01:00
M.K 1f386e931d
Fix method name encoder.fromBase64 in example code (#3246) 2020-08-22 10:30:29 +02:00
Philip Gladstone 995114b736
Add support to set the clock rate and have sntp use it. (#3236) 2020-08-08 13:32:14 +02:00
Nathaniel Wesley Filardo 61b540757a Remove deprecated rc module
It has long been superseded by the rfswitch module
2020-06-10 02:15:08 +01:00
Nathaniel Wesley Filardo 35a266e2c2 Remove sqlite3 module
It's not clear that this ever worked, AFAICT nobody uses it, and it's an
old version of the sqlite3 engine at this point.  Absent a maintainer,
let's just get rid of it.
2020-06-10 02:14:29 +01:00
Gregor Hartmann 7c53cc7611 Deprecate RC module (#3137) 2020-06-09 22:26:52 +02:00
Nathaniel Wesley Filardo a04b085d71 ws2812_effects deprecation warning 2020-06-09 22:26:52 +02:00
Lukáš Voborský 7a77d76438 net_info module - ping function (#2854)
* Net_info module exposing ping function initial commit
* Ping as a part of net module
* Sent callback implemented
* Add NET_PING_ENABLE macro

Authored-by: vsky <blue205@centrum.cz> with support from TerryE
2020-06-09 22:26:52 +02:00
Terry Ellison bbeb09b695 Squashed updates do get Lua51 and Lua53 working (#3075)
-  Lots of minor but nasty bugfixes to get all tests to run clean
-  core lua and test suite fixes to allow luac -F to run cleanly against test suite
-  next tranch to get LFS working
-  luac.cross -a options plus fixes from feedback
-  UART fixes and lua.c merge
-  commit of wip prior to rebaselining against current dev
-  more tweaks
2020-06-09 22:26:52 +02:00
Gregor Hartmann c50b4789c4 HTML for Apple devices to mitigate POST fragmentation (#3069) 2020-06-09 22:26:52 +02:00
Nathaniel Wesley Filardo efa786da4e net.dns: don't calloc a single int
Removes yet another unchecked allocation point in our C libraries.

While here, fix potential reference leaks on error paths

Also while here, remove some stale documentation.  There can be as many
DNS requests in flight as LwIP has room for in its table
(DNS_TABLE_SIZE, which defaults to 4).
2020-06-09 22:26:52 +02:00
Nathaniel Wesley Filardo a7f8564424 file: raise error on .on() with non-function/nil
Seems more polite than quietly accepting other types as nil.
2020-06-09 22:26:52 +02:00
Nathaniel Wesley Filardo af426d0315 Networking rampage and accumulated fixes (#3060)
* espconn: remove unused espconn code, take 1

This is the easiest part of https://github.com/nodemcu/nodemcu-firmware/issues/3004 .
It removes a bunch of functions that were never called in our tree.

* espconn: De-orbit espconn_gethostbyname

Further work on https://github.com/nodemcu/nodemcu-firmware/issues/3004

While here, remove `mqtt`'s charming DNS-retry logic (which is neither
shared with nor duplicated in other modules) and update its :connect()
return value behavior and documentation.

* espconn: remove scary global pktinfo

A write-only global!  How about that.

* net: remove deprecated methods

All the TLS stuff moved over there a long time ago, and
net_createUDPSocket should just do what it says on the tin.

* espconn_secure: remove ESPCONN_SERVER support

We can barely function as a TLS client; being a TLS server seems like a
real stretch.  This code was never called from Lua anyway.

* espconn_secure: more code removal

* espconn_secure: simplify ssl options structure

There is nothing "ssl_packet" about this structure.  Get rid of the
terrifying "pbuffer" pointer.

Squash two structure types together and eliminate an unused field.

* espconn_secure: refactor mbedtls_msg_info_load

Split out espconn_mbedtls_parse, which we can use as part of our effort
towards addressing https://github.com/nodemcu/nodemcu-firmware/issues/3032

* espconn_secure: introduce TLS cert/key callbacks

The new feature part of https://github.com/nodemcu/nodemcu-firmware/issues/3032
Subsequent work will remove the old mechanism.

* tls: add deprecation warnings

* luacheck: net.ifinfo is a thing now

* tls: remove use of espconn->reverse

* mqtt: stop using espconn->reverse

Instead, just place the espconn structure itself at the top of the user
data.  This enlarges the structure somewhat but removes one more layer
of dynamic heap usage and NULL checks.

While here, simplify the code a bit.

* mqtt: remove redundant pointer to connect_info

Everywhere we have the mqtt_state_t we also have the lmqtt_userdata.

* mqtt: doc fixes

* mqtt: note bug

* tls: allow :on(...,nil) to unregister a callback
2020-06-09 22:26:52 +02:00
Marcel Stör 8835512f30 Fix connect() params in example 2020-06-09 22:26:52 +02:00
Nathaniel Wesley Filardo 30f706fb03 WIP: MQTT fixes (#2986)
* mqtt: expose "connfail" callback via :on()

This makes it just like all the other callbacks in the module and is a
revision of behavior called out in
https://github.com/nodemcu/nodemcu-firmware/pull/2967

* mqtt: clarify when puback callback fires

* mqtt: Don't reference stack buffers from the heap

The confusingly-named "mqtt_connection_t" object is just a triple of
  - a serialized mqtt message pointer and length
  - a buffer pointer (to which the above can be written)
  - a message identifier

The last of these must be passed around the mqtt state machine, but the
first two are very local and the buffer is always sourced from the C
stack.  Unfortunately, because the entire structure is persisted in the
heap, some callers assume that they can always use the structure without
reinitialization (see mqtt_socket_close), which will trash the C stack.

Sever the pairing between message id and local state, punt the local
state entirely out of the heap, and rename things to be less confusing.
2020-06-09 22:26:52 +02:00
Nathaniel Wesley Filardo 446c058fa6 net: rename net.if.info to net.ifinfo (#3033)
Reserved words are always reserved in Lua, so let's not have people
typing net["if"]...
2020-06-09 22:26:52 +02:00
Gregor Hartmann 3e84e07d86 Update sqlite3.md (#3042) 2020-06-09 22:26:52 +02:00
Gregor Hartmann d455f8bc31 Documentation fixes for pipe (#3041) 2020-06-09 22:26:52 +02:00
Gregor Hartmann 115d0f88b9 Document tls.cert.auth (#3010) 2020-06-09 22:26:52 +02:00
Nikolay Fiykov 2ae9af58fc Expose CPU CCOUNT register as tmr function (#2906) 2020-06-09 22:26:52 +02:00
Lukáš Voborský cd9da6463c Add CRC check (#2992)
Also clean-up a nasty `ow` module example.
2020-06-09 22:26:52 +02:00
Lukáš Voborský 36df8d009f Add DCC decoder module (#2905) 2020-06-09 22:26:06 +02:00
galjonsfigur db1e4454de Initial version of software UART C module (#2673) 2020-06-09 22:26:06 +02:00
Nathaniel Wesley Filardo 863dfb59ed SSL rampage (#2938)
* Remove stale putative MD2 support

This hasn't worked in a while, presumably since one of our upstream
merges.  Don't bother making it work, since MD2 is generally considered
insecure.

* Land mbedtls 2.16.3-77-gf02988e57

* TLS: remove some dead code from espconn_mbedtls

There was some... frankly kind of scary buffer and data shuffling if
ESP8266_PLATFORM was defined.  Since we don't, in fact, define that
preprocessor symbol, just drop the code lest anyone (possibly future-me)
be scared.

* TLS: espconn_mbedtls: run through astyle

No functional changes

* TLS: espconn_mbedtls: put the file_params on the stack

There's no need to malloc a structure that's used only locally.

* TLS: Further minor tidying of mbedtls glue

What an absolute shitshow this is.  mbedtls should absolutely not
be mentioned inside sys/socket.h and app/mbedtls/app/lwIPSocket.c is not
so much glue as it as a complete copy of a random subset of lwIP; it
should go, but we aren't there yet.

Get rid of the mysterious "mbedlts_record" struct, which housed merely a
length of bytes sent solely for gating the "record sent" callback.

Remove spurious __attribute__((weak)) from symbols not otherwise
defined and rename them to emphasize that they are not actually part of
mbedtls proper.

* TLS: Rampage esp mbedtls glue and delete unused code

This at least makes the shitshow smaller

* TLS: lwip: fix some memp definitions

I presume these also need the new arguments

* TLS: Remove more non-NodeMCU code from our mbedtls

* TLS: drop support for 1.1

Depending on who you ask it's either EOL already or EOL soon, so
we may as well get rid of it now.
2020-06-09 22:26:06 +02:00
Nathaniel Wesley Filardo 948325a996 New `net.if.info` call to show LwIP information (#2862)
* Remove app/include/netif/wlan_lwip_if.h

This file appears to be unused in our tree.

* New `net.if.info` call to show LwIP information

This is a generalization of `wifi.sta`'s and `wifi.ap`'s `getip` and
`getmac` calls.  I don't propose to deprecate those, but perhaps we
should, in the documentation, point users at this function instead.

The direct motivation is to permit continued use of DHCP-provided NTP
servers in a future where
https://github.com/nodemcu/nodemcu-firmware/pull/2819 has landed, now
that https://github.com/nodemcu/nodemcu-firmware/pull/2709 is in the
tree.  But rather than exposing just that information, a more general
interface seems useful.
2020-06-09 22:26:06 +02:00
Marcel Stör 1b4b442142 Streaming support for hx711 (#2915) 2020-06-09 22:26:06 +02:00
Johan Ström e9199a5316 Improve MQTT documentation (#2967) 2020-06-09 22:26:06 +02:00
Marcel Stör 0a453caf79 Fix typos 2020-06-09 22:26:06 +02:00