The /cmd getters serialized into fixed stack buffers (get_stats 20480,
get_meta 2048, get_protocols 102400). When a report exceeded its buffer
the output was silently corrupted into invalid JSON, not cleanly
truncated: the abuf string builder drops an oversized chunk but keeps
appending the smaller chunks that follow, so e.g. a get_stats reply with
~230 enabled decoders ended like `...,"name":,:8256}`. Clients then fail
to parse the response and the corresponding data never updates.
Make the serializer report truncation and add data_print_jsons_dup(),
which grows a heap buffer until the whole document fits, and use it for
the three JSON-payload getters:
- abuf gains an `overflow` flag, set by abuf_cat/abuf_printf and the
hand-rolled string formatter whenever a write is dropped or truncated.
- data_print_jsons_dup() retries with a doubled buffer until no overflow
(64 MiB sanity cap), so the report is never truncated.
- get_stats/get_meta/get_protocols use it and free the buffer after
responding; out-of-memory yields an error reply instead of a partial one.
Tests:
- data-test asserts a large report serializes to a complete object via
data_print_jsons_dup() while a fixed undersized buffer does not.
- the HTTP integration test now validates that get_protocols/get_stats/
get_meta return parseable JSON, not just HTTP 200.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Add black-box integration tests for the HTTP/WS server and rtl_tcp,
plus a gcov coverage helper and supporting CI wiring.
Refs: #3541
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Add support for decoding a 2GIG-branded Tilt Sensor that uses the Honeywell protocol (as identified by signal characteristics and/or FCC documentation). The sensor broadcasts unique payloads when tilted or restored to horizontal.
Co-authored-by: Benjamin Larsson <banan@ludd.ltu.se>
currently setting device discovery model to "Mfgr-Model" from rtl_433 data and device discovery manufacturer to "rtl_433". Fix to actually set correct model and manufacturer strings.
Both scale factors were off by 1.2x versus the station's own display.
Verified with six simultaneous display/decoded pairs across both fields
during strong wind conditions (see issue #3517).
Wind average: divisor 10.0 → 8.333 (m/s equivalent: 36.0 → 30.0)
Wind gust: divisor 1.5 → 1.25 (m/s equivalent: 5.4 → 4.5)
Also correct the data layout comment for W and G which described the
wrong scale and mislabelled the gust unit as m/s.
src/devices/thermopro_tp862b.c:78:14: warning: comparison of promoted bitwise complement of an unsigned value with unsigned [-Wsign-compare]
if (b[7] == ~b[8]) {
Manufacturer: Microchip
Supported Devices: Leer OUTE_ELC (FCC ID KOBLEAR1XT), Marelli (FCC ID KBRASTU15), Jeep/Chrysler
66 bits transmitted LSB first with CRC.
Multiple device variants for PWM/VPWM modes with different baud rates.
Manufacturer: General Motors
Supported Models: ABO1502T
Rolling code message with unencrypted sequence number.
Data layout: PP xxxx cccc IIIIIIII SSSSSS EEEEEE CC
Manufacturer: Continental
Supported Models: 72147-SNA-A01 (FCC ID KR5V2X) (OEM for Honda)
Rolling code with unencrypted sequence number.
Data layout: PPPPP IIIIIIII UU bbbb U IIIII EEEEEEEE CC
Manufacturer: Compustar
Supported Models: 1WG3R-SH, 1WAMR-1900
Fixed code message with button inverse validation.
Data layout: IIII x bbbbbbbb iiiiiiii z