Android port
Android.mk builds libsetprotocol.so from the same C99 sources used by MCU
and desktop builds. setprotocol_jni.c contains only JNI marshalling; protocol rules
remain in the core. Add the Kotlin directory as an Android source directory
and include this Android.mk from the application NDK build.
The JNI streaming parser returns fixed 15-byte records
SEQ | FLAGS | CAN_ID_LE | DLC | DATA[8]. Dynamic allocation is confined to
the Android adapter for protocol operations; the portable protocol core remains allocation free.
nativeSpectrum calls the shared host DSP module set_spectrum.c (bounded heap
workspace, up to 2×16384 doubles). trends/SpectrumAnalyzer maps timestamps and
errors but does not duplicate FFT/filter math. Run it off the UI thread.
trends/PlotViewport is a toolkit-free normalized zoom/pan model.
legacycan/LegacyCanTerminal.kt contains the two historical CAN_terminal wire
formats, the complete Projects.ini node/command catalog, and shared codecs for
register writes and command frames. Android UI code must use this module instead
of reproducing the Delphi byte rotation or CAN-ID routing rules.
kotlin/ru/setcorp/setprotocol/update/FirmwareCatalog.kt is a UI-independent
firmware release client. It reads the optional firmware.releases array from
the shared update.json, accepts only HTTPS assets, limits their size and
returns image bytes only after SHA-256 verification. Applications provide
their own UI and pass optional HTTP Basic credentials.