Commit Graph
455 Commits
Author SHA1 Message Date
peri4 95375993ca version 6.0.1 2026-09-22 20:38:15 +03:00
peri4 04a588eb45 version 6.0.0
change CMAKE_CXX_STANDARD to 17
add PIByteArray(PIMemoryBlock)
PIJSON print functions now correctly handle top-level node, print name only for non-top-level
2026-09-15 10:53:21 +03:00
peri4 8e41461c08 version 6.0.0_beta
PIThread:
- remove old  V singleton V, migrate to modern STATIC_INITIALIZER and common singleton
- add PowerPolicy - now implemented only for Windows, if SetThreadInformation available, then use, else try to use SetThreadIdealProcessor. Mixed cores not supported for SetThreadIdealProcessor case.

PIThreadPoolLoop: add setPriority() and setPowerPolicy()
2026-09-08 15:40:44 +03:00
andrey a22b508952 Merge branch 'master' into pico_sdk 2026-09-06 13:21:00 +03:00
andrey 6f9885f0b7 remove duplicate INTROSPECTION option 2026-09-06 13:20:27 +03:00
peri4 3da94abb2a PIInit refactoring, iteration 2
add to PISystemInfo processorsCount<P|E> fields, now counts only for Windows
Introspection public API works without PIP_HAS_THREADS
2026-09-06 10:41:53 +03:00
peri4 b36e9a9bfb version 6.0.0_alpha
try to release with features
2026-09-05 23:12:57 +03:00
peri4 4df907ef10 CMake - add all flags to pip_defs.h
Introspection - revert *_p files, because they are external API for introspection, not internal
2026-09-05 23:09:38 +03:00
andrey 369e15ea5f cmake: make pip_feature_flag take DESCRIPTION and DEFAULT, describe all feature flags 2026-09-01 17:46:22 +03:00
andrey b6b7a27dcc cmake: make PIP_HAS_DYNLIB depend on PIP_HAS_FILESYSTEM, drop redundant guards in piplugin 2026-08-31 19:02:48 +03:00
andrey 09144acf4d cmake: simplify feature-flag dependency resolution
Replace scattered option() calls, PIP_HAS_DEPS_* variables, and while-loop
resolver with pip_feature_flag() function and pip_resolve_feature_flags()
macro. Dependencies are declared inline and resolved in a single pass.
2026-08-31 18:51:08 +03:00
andrey d16f4bdaf7 feat: decouple PISerial from PIP_HAS_THREADS, gate termios/stty code by PIP_HAS_TTY
- CMake: drop PIP_HAS_SERIAL -> PIP_HAS_THREADS dependency and the forced
  PIP_HAS_SERIAL=OFF for PICO_BOARD, so serial can be built on Pico
- piserial.cpp: guard termios/stty code (tcgetattr/tcsetattr/tcflush/tcdrain,
  TIOCSBRK/TIOCCBRK, TIOCMBIS/TIOCMBIC/TIOCMGET, termios members, sys/ioctl.h
  and termios.h includes) with PIP_HAS_TTY; O_NOCTTY replaced by
  PISERIAL_NOCTTY (0 on no-TTY targets)
- add missing #ifndef fallbacks for B110..B115200 used by convertSpeed()
  when termios.h is absent
- guard thread-only PIIODevice API calls (isThreadedRead/stopThreadedRead)
  with PIP_HAS_THREADS in closeDevice/readDevice
- gate the availableDevicesInfo() test loop with PIP_HAS_FILESYSTEM||WINDOWS
  (device enumeration is a filesystem feature)
- AGENTS.md: note that clang-format-18 is applied automatically on file edits
2026-08-31 18:27:09 +03:00
andrey 4115d79e88 Merge branch 'master' into pico_sdk 2026-08-28 21:12:53 +03:00
peri4 2764df8591 adopt for host Windows 2026-08-27 13:34:31 +03:00
andrey 69b22bf95a feat: complete PIP_HAS_* feature guards in code and auto-generate flag summary
Guard PIConnection, thread primitives, PICodeParser and other feature
code behind PIP_HAS_THREADS/PIP_HAS_FILESYSTEM. In CMake generate the
feature flags summary from the single PIP_HAS_FLAGS list (used by the
add_definitions loop as well), default ICU to OFF and make introspection
also require PIP_HAS_SOCKET. Build system/thread test suites only when
the corresponding feature flags are enabled.
2026-08-25 11:14:25 +03:00
andrey a8fc2911d7 refactor: declare PIP_HAS_* feature dependencies as a FindPIP-style table
Replace the ad-hoc if-blocks with a PIP_HAS_DEPS_<feature> dependency table
(analogous to __deps_* module dependencies in FindPIP.cmake) resolved to a
fixpoint. The table now also covers http_server (threads+socket) and fftw
(has_fft), and adds the hard client_server/cloud -> io_utils module
dependency. Restore client_server/cloud under the sodium_FOUND guard, put
-ftemplate-depth-32 back before the CMAKE_C_FLAGS copy, and fix the console
block indentation.
2026-08-24 21:59:33 +03:00
andrey ef1fa8077a Add GDB pretty-printers for basic types (PIString, PIVector, PIMap, PIByteArray, etc.)
Python pretty-printer script (tools/gdb/pip_pp.py) for the GDB debugger:
- PIString (UTF-16, escapes, surrogate pairs), PIByteArray (hex), PIChar
- PIVector<T>, PIDeque<T>, PIStringList, PIMap<K,V>, PISet<T>, PIPair<K,V>
- PIVariant (type + serialized size)
- pointers: (PIString *) 0x... "hello"; long containers truncated
- manual: gdb source tools/gdb/pip_pp.py
- automatic: CMake install ships share/pip/gdb/pip_pp.py and the
  libpip.so-gdb.py auto-load stub next to the library (shared builds)
- verification: tools/gdb/test/test_pp.sh <build-dir>
- docs: doc/pages/debugging.md
2026-08-23 20:24:34 +03:00
andrey c1b8e97311 Merge branch 'master' into pico_sdk 2026-08-23 17:19:34 +03:00
andrey 8fc2be8dd9 fix: complete PIP_HAS_* flag matrix and restore ESP32/FreeRTOS support
- CMake: disable thread/socket-dependent modules (http_client, mqtt_client,
  client_server) and fftw when the required feature flags are off;
  client_server/cloud no longer tied to the crypt option
- host utils gated on filesystem and the modules they need
- Pico keeps the minimal set; generic FreeRTOS (ESP32) keeps filesystem,
  sockets and serial as in master, module set limited to crypt/compress/io_utils
- PICAN, PIBroadcast, PIPackedTCP vanish without socket+threads
- PISerial: restore PISERIAL_NO_PINS (auto-enabled on PIP_EMBEDDED)
- PIFile: FREERTOS uses fopen/stat (no fopen64 in ESP-IDF newlib)
- drop invalid PICout buffer guards, guard PIObject::deleteLater,
  remove (void)destroying hack, fake PIHIDevice non-Linux stub and the
  redundant PICO_SDK guard in code_model_generator
2026-08-22 19:23:22 +03:00
andrey 8828aa3f81 fix: build PIP on Pico and arbitrary flag combinations
- guard console subsystem (PIScreen/PIScreenTile/tiles/PITerminal/
  PIKbdListener) by PIP_HAS_THREADS plus a TTY or Windows console
  (new PIP_HAS_TTY platform macro) - termios is not available on
  bare-metal newlib
- guard cloud subsystem (PICloudBase/Client/Server/TCP) by
  PIP_HAS_SOCKET and PIP_HAS_THREADS
- add PIP_BUILD_CONSOLE/PIP_BUILD_CLOUD to the auto-disable flag
  dependencies in CMake
- PIP_CAN (SocketCAN) is Linux-only, exclude other platforms
- on Pico keep sockets/MQTT off by default: pico-sdk lwip provides
  only a partial POSIX socket layer (no netinet/in.h, poll.h)
- PITranslator: inline no-op definitions when PIP_HAS_FILESYSTEM is
  off so the _tr literal links
- PIIODevice: guard read_func/write_func EVENT_HANDLERs (no-threads)
- piwaitevent_p.cpp: drop unused sys/ioctl.h include (missing on
  arm-none-eabi, broke Pico builds)
2026-08-22 15:49:05 +03:00
andrey 54de1da27b refactor: merge embedded CMake blocks, link unix libs by feature flags, guard grabber/pipeline headers
- merge the PICO_BOARD and PIP_FREERTOS blocks (90% duplicate) into one
  embedded block; Pico+PICO_FREERTOS now adds -DPIP_FREERTOS so
  pithread.cpp takes the FreeRTOS path instead of POSIX pthreads;
  restore set(ICU OFF)/set(LOCAL ON) for FreeRTOS/embedded targets
- auto-disable dependent flags when PIP_HAS_THREADS=OFF:
  PIP_HAS_PROCESS, PIP_HAS_SERIAL (PIProcess derives from PIThread,
  PISerial/PIIODevice use PIThread) and INTROSPECTION (walks threads)
- LIBS_MAIN: link dl only with PIP_HAS_DYNLIB, pthread/util/rt only with
  PIP_HAS_THREADS (rt was never linked on APPLE), socket on QNX_HOST only
  with PIP_HAS_SOCKET; WIN32 list untouched - arm-none-eabi has no
  libdl/libpthread/librt so Pico firmware links again
- collapse repeated 'NOT DEFINED PICO_SDK_PATH' utils checks into
  _PIP_HOST_TOOLS variable
- FindPIP.cmake: check PIP_FREERTOS instead of the never-set
  PIP_EMBEDDED CMake variable (as in master)
- drop unused set(PIP_MICRO ON) from esp-pip
- wrap PIGrabberBase/PIPipelineThread in #ifdef PIP_HAS_THREADS like
  pithread.h so 'pip.h' compiles in no-threads builds
2026-08-22 14:06:05 +03:00
andrey e0133e23ec fix: remove Android feature-flag overrides and protect code from arbitrary flag combos
- drop the ANDROID_PLATFORM block forcing PROCESS/DYNLIB/FFT off:
  Android has /proc and dlopen and these features worked there in master
- __sighandler__: wrap PIProcess::currentPID() by PIP_HAS_PROCESS (0
  fallback), the dumpApplicationToFile() call itself is already guarded
  by PIP_INTROSPECTION && PIP_HAS_FILESYSTEM
- PISystemMonitor: guard /proc-related members (proc_dir/file/filem) and
  code paths (startOnProcess, run() non-Windows part, gatherThread /proc
  reader) by PIP_HAS_PROCESS/PIP_HAS_FILESYSTEM so the file compiles for
  any flag combination, e.g. -DPIP_HAS_PROCESS=OFF -DPIP_HAS_FILESYSTEM=OFF
2026-08-22 14:00:17 +03:00
peri4 b1cab18496 version 5.9.0 2026-08-17 20:36:43 +03:00
andrey e2c0445c1b remove some unused defines 2026-08-12 14:04:49 +03:00
andrey 077ac9887b refactor: rename PIP_NO_\* to PIP_HAS_\* with inverted logic
All feature flags now use positive naming (enabled by default):
- PIP_HAS_FILESYSTEM, PIP_HAS_THREADS, PIP_HAS_SOCKET
- PIP_HAS_PROCESS, PIP_HAS_DYNLIB, PIP_HAS_FFT, PIP_HAS_SERIAL

Preprocessor guards inverted:
- #ifndef PIP_NO_X → #ifdef PIP_HAS_X
- #ifdef PIP_NO_X → #ifndef PIP_HAS_X

CMake options default ON instead of OFF.
Platform blocks set flags OFF to disable features.

85 files transformed via Python script + 2 manual fixes.
2026-08-11 19:51:42 +03:00
andrey 1db0dfea43 Merge branch 'master' into pico_sdk 2026-08-11 18:21:50 +03:00
andrey 5fe03eaf96 fix ctest 2026-08-11 14:41:25 +03:00
andrey 399ae3a20c fix ctest 2026-08-11 14:40:51 +03:00
andrey 4d8b743075 refactor: migrate MICRO_PIP to fine-grained feature flags
Replace monolithic MICRO_PIP/PIP_MICRO with granular flags:

Feature flags (CMake options + platform auto-detection):
- PIP_NO_FILESYSTEM, PIP_NO_THREADS, PIP_NO_SOCKET
- PIP_NO_PROCESS, PIP_NO_DYNLIB, PIP_NO_FFT, PIP_NO_SERIAL

Embedded optimization flag:
- PIP_EMBEDDED (auto-set for Pico SDK and FreeRTOS)
  Controls buffer sizes, time stubs, terminal fallback, init stubs

Platform blocks in CMakeLists.txt:
- Pico SDK: auto-disables FS, PROCESS, DYNLIB, FFT, SERIAL;
  conditionally disables THREADS (no FreeRTOS) and SOCKET (no LWIP)
- FreeRTOS: auto-disables FS, PROCESS, DYNLIB, FFT, SERIAL;
  conditionally disables SOCKET (no LWIP)
- Android: auto-disables PROCESS, DYNLIB, FFT

Updated 96 files across libs/, utils/, tests/, and CMakeLists.txt.
Builds verified for Linux (547 tests pass) and Pico SDK (100%).
Removed all MICRO_PIP and PIP_MICRO references (0 remaining).
2026-08-11 14:34:59 +03:00
andrey f2d692725a version 2026-08-11 11:15:57 +03:00
andrey 87c53d45a4 Merge branch 'master' into pico_sdk 2026-08-11 09:56:27 +03:00
andrey df93563931 version 2026-08-05 13:11:27 +03:00
peri4 1689f560d5 version 5.8.0
very important performance fix for normalizeAngleDeg...() methods, now fixed-speed (no "while")
MQTT client release
2026-05-29 17:40:09 +03:00
andrey 4e7a5d58aa Merge branch 'master' into pico_sdk 2026-03-29 12:28:36 +03:00
andrey a450235743 PIP_NO_FILESYSTEM and PIP_NO_THREADS 2026-03-29 12:22:35 +03:00
andrey 15f90d9e17 Try MICRO_PIP fixes via opencode 2026-03-29 11:21:12 +03:00
peri4 22b47799dc PIPoint: const fixes, add some methods 2026-03-28 22:23:41 +03:00
peri4 6a6cfe1efe Merge branch 'master' into mqtt_client 2026-03-26 12:57:03 +03:00
peri4 f52fd45936 version 2026-03-26 09:33:23 +03:00
peri4 dc16a0c903 CMakeLists.txt 2026-03-20 17:26:58 +03:00
peri4 fe3b30bd49 version 5.6.1
patch deploy_tool: procDpkg now prioritize "non-cross" and "non-dev" packages, then only "non-cross"
add PIP_MANUAL_TEST CMake option
2026-03-20 13:00:24 +03:00
andrey 99c99c39c2 separate cmake opts for tests 2026-03-18 13:39:01 +03:00
andrey ba57aa0144 disable exceptions on win 2026-03-18 09:40:32 +03:00
andrey ccbf86f781 disable exeptions in cmake 2026-03-18 09:30:28 +03:00
peri4 feb86b15f8 start mqtt client (based on paho.mqtt.c), basically works 2026-03-13 23:56:55 +03:00
andrey 9588b48105 PIVector2D - add funcs, optimize, tests, fixes, doxygen (#194)
Reviewed-on: #194
Co-authored-by: andrey.bychkov <andrey@signalmodelling.ru>
Co-committed-by: andrey.bychkov <andrey@signalmodelling.ru>
2026-02-27 23:58:44 +03:00
peri4 6f1660fd9e version 5.5.5
fix PIHIDevice enumeration for Windows
2026-02-13 18:47:33 +03:00
peri4 e22630b1bd version 5.5.4
add PIValueTree::merge
PIValueTreeConversions::from*File supports .override files (replace or add values)
empty JSON arrays now 0 size
2026-02-03 18:56:58 +03:00
peri4 34bc322b9b version 5.5.3
force using '.' instead of ',' in PIString::fromNumber()
2025-10-22 15:24:10 +03:00
andrey 4885623492 Add pico sdk define 2025-10-18 08:53:47 +03:00