* Upgrade u8g2 and add updateDisplayArea bindings
* u8g2 2.25.10
* add displays for 2.24.3 and 2.25.10
* remove workaround for hal pointer and make use of u8x8's user_ptr
* fix doc
* add binding for `updateDisplay()`
* Lua string optimisation in file.c + get/put contents methods
* Doc fix: move putcontents() into correct alphabetic order slot in list of static methods
* Rebaseline firmware to non-OS SDK version 3.0
* Note that SDK version 3.0 introduces the concept of a Flash Partition Table(PT). This is located at Flash offset 0x10000 in our firmware build.
* The firmware is now PT aware with both LFS and SPIFFS taking their partition size and location from the PT
* A new tool `tools/nodemcu-partition.py` is now used to initialise these data and can also download LFS and SPIFFS images to these partitions.
* I2C driver speed-up, i2c.SLOW, i2c.FAST and user-defined speed selection
* - Multiple buses (up to 10) with different speeds on each bus
- Standard(Slow, 100kHz), Fast(400kHz) and FastPlus(1MHz) modes or an
arbitrary clock speed
- Sharing SDA line over multiple I²C buses to save available pins
- GPIO16 pin can be used as SCL pin, but it does not support clock
stretching and selected bus will be limited to FAST speed.
* Dynamic memory allocation, error checks, simplification, timing tweaks.
* Separated the code of old driver for better compatibility and simplicity
* Change of driver interface
* Add bus status check in setup(); simplify getDC(); remove unnesessary lines in ACK read/write
* Fix for moved doc file and trailing whitespaces
* DHT11 read sometimes failed with checksum error.
The code assumed DHT11 devices only ever return zero in the temperature and humidity decimal fraction bytes. The datasheet doesn't guarantee this is the case, and by observation I have noticed that indeed the DHT11 may sometimes return another number, usually close to zero. This means that the code would fail with a checksum error, as the fraction bytes were not included when the checksum was calculated. These bytes are now taken into account and also returned as part of the measurement.
This also means that the related dht.read() function is non-functional. If you have a DHT11 device that returns a non-zero decimal part, dht.read() will interpret it as a DHT22 result and return the wrong measurement. For this reason dht.read() should be retired. This patch does not address this issue.
* lua_modules/fifo: a generic queue & socket wrapper
One occasionally wants a generic fifo, so here's a plausible
implementation that's reasonably flexible in its usage.
One possible consumer of this is a variant of TerryE's two-level fifo
trick currently in the telnetd example. Factor that out to fifosock for
more general use.
* lua_examples/telnet: use factored out fifosock
* lua_modules/http: improve implementation
Switch to fifosock for in-order sending and waiting for everything to be
sent before closing.
Fix header callback by moving the invocation of the handler higher
* fifosock: optimistically cork and delay tx
If we just pushed a little bit of data into a fifosock that had idled,
wait a tick (1 ms) before transmitting. Hopefully, this means that
we let the rest of the system push more data in before we send the first
packet. But in a high-throughput situation, where we are streaming data
without idling the fifo, there won't be any additional delay and we'll
coalesce during operation as usual.
The fifosocktest mocks up enough of tmr for this to run, but assumes
an arbitrarily slow processor. ;)