Commit Graph

1126 Commits

Author SHA1 Message Date
Emdioh bf15299cea
Correct negative results in DHT driver (#3210)
* DHT module: fix the handling of negative temps.

The macro handling the conversion from the 2 bytes buffer to a double
was handling negative values by checking the sign bit and taking the
negative value of the number minus the sign bit.
Unfortunately this does not work as the negative values are represented
in 1's complement, so for instance -1 was becoming -32767
  * +1 = b0000_0000_0000_ 0001
  * -1 = 1111_1111_1111_1111

This replace the spacial code with a signed 16 bits value.

* Refactoring: removes some code duplication.

* Fixed the conversion of the 8/16 bits values

Co-authored-by: Marco Dondero <marco@dondero.eu>
2020-08-03 19:58:19 +01:00
Lukáš Voborský 2fa63a1303
Fix of string.format("%.0f") (#3199)
Co-authored-by: vsky <blue205@centrum.cz>
2020-07-07 14:35:37 +01:00
Datong Sun 95f5191cd3 Fixed an regression that MQTT client timer is disarmed prematurely when
connecting to server.

Inside af426d0315, the `mqtt_socket_timer`
function was modified so that instead of checking the presense of
allocated `mud->pesp_conn` structure, `mud->connected` field was used
on determining if the timer need to be disarmed.

However, this is not entirely correct. If the TCP socket is actively
connecting and haven't timed out yet, then `mud->connected` is also
`false` and the timer will think the connection is broken and
disarms itself. This has two consequences:

* The connection timeout counter is no longer decremented and checked
* After connection succeeds, keepalive heartbeat is no longer being
  sent (#3166). This is particularly noticeable in MQTT over TLS
  connections, because those usually takes longer than 1 second
  to finish and the timer would had chance to execute before connection
  is established

This commit checks the presense of `pesp_conn->proto.tcp` pointer
instead, which was allocated in the same place as the (old) `pesp_conn`
struct, and according to my test indeed fixes the above issue.
2020-06-30 13:20:17 +01:00
Nathaniel Wesley Filardo 90beedfaba
rtctime: try harder to speak in integers (#3161)
Otherwise we might truncate precision with small floats and that's
unlikely to work out well for anyone.
2020-06-20 22:06:32 +02:00
vsky 17504b6e7a ads1115 minor cleanup 2020-06-17 23:50:31 +01:00
Terry Ellison 1f2e5bba4a
Implement panic call handling for all modules (#3163) 2020-06-16 08:19:55 +01:00
Nathaniel Wesley Filardo 4e689e9839
Finish removing sqlite3 (#3162)
This file seems to have been missed by 35a266e2c2
2020-06-13 13:22:25 +02:00
Firenox89 0555a4c689 fix a memory leak in ws2812_buffer_shift by freeing the same amount of bytes we allocated before 2020-06-12 18:23:36 +01: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
Terry Ellison 544ee81210 Updated lua.c to fix #3118 telnet issue 2020-06-09 22:26:52 +02:00
Nathaniel Wesley Filardo a04b085d71 ws2812_effects deprecation warning 2020-06-09 22:26:52 +02:00
Terry Ellison 98e428f12e Update wifi..c to fix #3106 2020-06-09 22:26:52 +02:00
Javier Peletier 75f1c64cbc fix compilation error when disabling startup banner (#3103) 2020-06-09 22:26:52 +02:00
Gregor Hartmann 93c82f1f9e Fix binary and chunked HTTP downloads (#2985)
Original sources by @anod221
2020-06-09 22:26:52 +02:00
galjonsfigur 7140894f2f Update hook after updating GPIO bits (#3091)
Fixes #3089
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
ecrips a0864c4382 u8g2: Fix name of updateDisplay export (#3093)
Correct typo in Lua export from updateDispla() to updateDisplay()
2020-06-09 22:26:52 +02:00
Gregor cad576a23b fix build 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
firenox89 fd26dea949 fix #2565 by inverting the grb2hsv argcheck condition (#3076) 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
Andreas Müller 95fc8b14b3 Correct integer types in BMP085 driver (#3070)
* BMP085 pressure sensor: fix temperature value data type

the data type for t (U_T) should be long according to the BMP085
datasheet (rev. 1.2, section 3.5). values over 32767 can indeed occur,
and in my case lead to a wrong value for the temperature (and
consequently also pressure).

note: this problem only occurs above a certain temperature (exact
value depends on the calibration, but I assume somewhere around 26°C).

* BMP085 pressure sensor: adapt data types and calculation

this adapts the data types and calculation to be consistent with the
datasheet (rev. 1.2, section 3.5). while I did not notice any issues,
using the wrong data types could trigger edge cases.
2020-06-09 22:26:52 +02:00
Nathaniel Wesley Filardo c8c90fe4e1 app/modules: prune some unnecessary metamethods 2020-06-09 22:26:52 +02:00
Nathaniel Wesley Filardo d480003a40 tls: fix new verification API
Because the old API was inactive, we were setting
MBEDTLS_SSL_VERIFY_NONE even after we'd parsed the certificate.

tls tests now include a deliberate certificate mismatch; this was
discovered by moving the mqtt tests over to the new API.
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 fd68000c12 net: drop LUA_GCSTOP/GCRESTART dance 2020-06-09 22:26:52 +02:00
Nathaniel Wesley Filardo bf478e0cc4 mqtt: drop LUA_GCSTOP/GCRESTART dance 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 e1a81aa114 net: annotate deliberate case fallthrough 2020-06-09 22:26:52 +02:00
Nathaniel Wesley Filardo 9f8c2aea6f mqtt: remove dead store 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
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
galjonsfigur 1cacd9334a Fix timing of softuart module RX (#3029) 2020-06-09 22:26:52 +02:00
sergio fd3f0ddad4 Add flag to disable start-up banner (#3026) 2020-06-09 22:26:52 +02:00
Gregor Hartmann 115d0f88b9 Document tls.cert.auth (#3010) 2020-06-09 22:26:52 +02:00
M.K 3aba085f82 Clarify LFS build info is its size (#3022) 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
galjonsfigur 50d88f7731 Fix compile warning and set correct order in module LROT (#2996) 2020-06-09 22:26:52 +02:00
M.K 27e127e7ea Minor typo and wording fixes (#2991) 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
Gregor Hartmann d4b5b0cbaf Fixes for `ws2812` and `ws2812_effects` (#2953)
* clean effects library
* Fix several issues in ws2812 and effects
* Implement working way of calling shift from callback
2020-06-09 22:26:06 +02:00
Lukáš Voborský e7be7644c0 Update sensor driver for BME680 to 3.5.9 (#2969) 2020-06-09 22:26:06 +02:00
Matsievskiy S.V 1759ebb360 fix lfs upload issue 2020-06-09 22:26:06 +02:00