Commit Graph

1132 Commits

Author SHA1 Message Date
Philip Gladstone 606f91664b
First phase of number to integer conversion (#3221) 2020-08-29 17:48:24 +01:00
Philip Gladstone 0e02c0e5f3
Change struct & sjson to use integers. This is slightly more complex (#3222)
* Change struct to use integers. This is slightly more complex as we have to deal with Unsigned 32-bit integers (that aren't lua integers)
* Use int64 in struct rather than double.
* Fix sjson to do the right things in LUA5.3 with integers and floats
2020-08-23 23:11:18 +01:00
mk-pmb 64ece47ff6 Allow custom SPIFFS location in "demons" part of user_config.h
In case a custom SPIFFS location was defined above, don't overwrite it.
2020-08-23 15:27:46 +01:00
Terry Ellison a92da3c33c
Lua 5.1 / 5.3 alignment and document (#3193) 2020-08-22 17:41:02 +01:00
Caleb Mingle e547c2a094 mqtt: fix connfail callback
I've not been able to get the mqtt `connfail` callback to work.

I'm consistently receiving `method not supported` errors:
```
application.lua:53: method not supported
stack traceback:
        [C]: in function 'on'
        application.lua:53: in main chunk
        [C]: in function 'dofile'
        init.lua:18: in function <init.lua:6>
```

Example code:
```
function on_connection_failed(client, reason)
    print("mqtt connection failed: " .. reason)
end

m:on("connfail", on_connection_failed)
```

I believed this to be caused by the incorrect length comparison for `connfail`
that is updated here.

Once I changed that, the error went away, however the callback was never called.

I believe the callback was never called because of an incorrect assignment.

However, I saw this somewhat confusing description in the docs so this
assignment may be expected?
> The second (failure) callback aliases with the "connfail" callback available through :on(). (The "offline" callback is only called after an already established connection becomes closed. If the connect() call fails to establish a connection, the callback passed to :connect() is called and nothing else.)
2020-08-11 17:20:17 +01: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
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