Commit Graph

7423 Commits

Author SHA1 Message Date
iabdalkader
7ff4418ea9 scripts/examples: Add Protocol examples.
Signed-off-by: iabdalkader <i.abdalkader@gmail.com>
2025-10-15 17:16:50 +02:00
iabdalkader
f9097acb1b tools/openmv: OpenMV Protocol V2 Implementation.
Signed-off-by: iabdalkader <i.abdalkader@gmail.com>
2025-10-15 17:16:50 +02:00
iabdalkader
caaec35e62 ports/stm32: Switch to new protocol.
Signed-off-by: iabdalkader <i.abdalkader@gmail.com>
2025-10-15 17:16:50 +02:00
iabdalkader
37a565bf41 ports/alif: Switch to new protocol.
Signed-off-by: iabdalkader <i.abdalkader@gmail.com>
2025-10-15 17:16:47 +02:00
iabdalkader
0ee4824c90 ports/mimxrt: Switch to new protocol.
Signed-off-by: iabdalkader <i.abdalkader@gmail.com>
2025-10-15 17:16:09 +02:00
iabdalkader
e9d5e3bfbf boards/all: Switch to new protocol.
Signed-off-by: iabdalkader <i.abdalkader@gmail.com>
2025-10-15 17:16:09 +02:00
iabdalkader
639250aa3f modules/omv: Switch to new protocol.
Signed-off-by: iabdalkader <i.abdalkader@gmail.com>
2025-10-15 17:16:09 +02:00
iabdalkader
47b74c0be4 lib/imlib: Send stream events.
Signed-off-by: iabdalkader <i.abdalkader@gmail.com>
2025-10-15 17:16:09 +02:00
iabdalkader
b95c0b6b0e modules: Add OpenMV protocol bindings.
Enables creating transports and data channels from Python.

Signed-off-by: iabdalkader <i.abdalkader@gmail.com>
2025-10-15 17:16:09 +02:00
iabdalkader
8364a72a83 protocol: Introduce OMV protocol V2.
Signed-off-by: iabdalkader <i.abdalkader@gmail.com>
2025-10-15 17:16:09 +02:00
iabdalkader
a806718180 common/usbdbg: Remove obsolete protocol files.
Signed-off-by: iabdalkader <i.abdalkader@gmail.com>
2025-10-15 17:16:09 +02:00
iabdalkader
8f74e0b390 common/mp_utils: Remove exec_bootscript.
Signed-off-by: iabdalkader <i.abdalkader@gmail.com>
2025-10-15 17:16:09 +02:00
iabdalkader
0b0f7fb6b4 tools/pyopenmv: Remove obsolete tools.
Signed-off-by: iabdalkader <i.abdalkader@gmail.com>
2025-10-15 17:16:09 +02:00
iabdalkader
647ab3aa87 common: Add circular buffer API for data streaming
Add a simple ring buffer implementation with claiming/committing,
consumption tracking, and automatic compaction when needed.

A better solution would be to implement Bip Buffer:
https://www.codeproject.com/Articles/3479/The-Bip-Buffer-The-Circular-Buffer-with-a-Twist

Signed-off-by: iabdalkader <i.abdalkader@gmail.com>
2025-10-15 17:16:09 +02:00
Ibrahim Abdelkader
8eca7f598a
Merge pull request #2870 from andrewleech/micropython_vfs_2
Some checks are pending
🔎 Check Code Formatting / formatting-check (push) Waiting to run
🔥 Firmware Build / build-firmware (0, ARDUINO_GIGA) (push) Waiting to run
🔥 Firmware Build / build-firmware (0, ARDUINO_NANO_33_BLE_SENSE) (push) Waiting to run
🔥 Firmware Build / build-firmware (0, ARDUINO_NANO_RP2040_CONNECT) (push) Waiting to run
🔥 Firmware Build / build-firmware (0, ARDUINO_NICLA_VISION) (push) Waiting to run
🔥 Firmware Build / build-firmware (0, ARDUINO_PORTENTA_H7) (push) Waiting to run
🔥 Firmware Build / build-firmware (0, DOCKER) (push) Waiting to run
🔥 Firmware Build / build-firmware (0, OPENMV2) (push) Waiting to run
🔥 Firmware Build / build-firmware (0, OPENMV3) (push) Waiting to run
🔥 Firmware Build / build-firmware (0, OPENMV4) (push) Waiting to run
🔥 Firmware Build / build-firmware (0, OPENMV4P) (push) Waiting to run
🔥 Firmware Build / build-firmware (0, OPENMVPT) (push) Waiting to run
🔥 Firmware Build / build-firmware (0, OPENMV_AE3) (push) Waiting to run
🔥 Firmware Build / build-firmware (0, OPENMV_N6) (push) Waiting to run
🔥 Firmware Build / build-firmware (0, OPENMV_RT1060) (push) Waiting to run
🔥 Firmware Build / build-firmware (1, OPENMV_N6) (push) Waiting to run
🔥 Firmware Build / code-size-report (push) Blocked by required conditions
🔥 Firmware Build / stable-release (push) Blocked by required conditions
🔥 Firmware Build / development-release (push) Blocked by required conditions
fs: Replace FatFS direct calls with MicroPython VFS abstraction
2025-10-15 17:55:23 +03:00
Andrew Leech
a38bc7df52 modules/py_imageio: Replace FatFS calls with VFS abstraction.
Convert py_imageio.c to use file_t and VFS file operations instead of
direct FatFS calls (FIL, f_size, f_eof, f_tell).

This completes the VFS conversion for the modules directory.
2025-10-14 23:10:56 +11:00
Andrew Leech
cd10451d49 common: Fix NULL pointer dereference and recursion bugs.
Addresses review feedback from PR #2870:

- Fix NULL pointer dereference when finalisers run on unopened files
- Prevent infinite recursion in error handlers during buffered I/O
- Add explicit validation for FA_READ|FA_WRITE flag combinations
- Switch to mp_vfs_open for consistency with VFS abstraction
- Add NULL checks to file_buffer_on/off public APIs

The recursion fix ensures both file_buffer_off() and file_close()
clear their state before risky operations, making re-entry safe.
2025-10-14 12:17:12 +11:00
Andrew Leech
e49e49eb36 ports/alif: Remove file_ll_touch() block.
This functionality has been moved to boot.py scripts.

Signed-off-by: Andrew Leech <andrew.leech@planetinnovation.com.au>
2025-10-14 12:17:12 +11:00
Andrew Leech
e56fa55dec ports/stm32: Replace FatFS calls with VFS abstraction.
Signed-off-by: Andrew Leech <andrew.leech@planetinnovation.com.au>
2025-10-14 12:17:12 +11:00
Andrew Leech
78ad9448dc drivers/winc1500: Replace FatFS calls with VFS abstraction.
Signed-off-by: Andrew Leech <andrew.leech@planetinnovation.com.au>
2025-10-14 12:17:12 +11:00
Andrew Leech
fa65d7af94 modules: Replace FatFS calls with VFS abstraction.
Signed-off-by: Andrew Leech <andrew.leech@planetinnovation.com.au>
2025-10-14 12:17:12 +11:00
Andrew Leech
5e9bc80a2e lib/imlib: Replace FatFS calls with VFS abstraction.
Signed-off-by: Andrew Leech <andrew.leech@planetinnovation.com.au>
2025-10-14 12:16:16 +11:00
Andrew Leech
f54fa0c0a2 common: Replace FatFS calls with VFS abstraction.
Signed-off-by: Andrew Leech <andrew.leech@planetinnovation.com.au>
2025-10-14 12:16:16 +11:00
Ibrahim Abdelkader
29ad945adb
Merge pull request #2888 from openmv/imageio_fix_mode
Some checks failed
🔎 Check Code Formatting / formatting-check (push) Has been cancelled
🔥 Firmware Build / build-firmware (0, ARDUINO_GIGA) (push) Has been cancelled
🔥 Firmware Build / build-firmware (0, ARDUINO_NANO_33_BLE_SENSE) (push) Has been cancelled
🔥 Firmware Build / build-firmware (0, ARDUINO_NANO_RP2040_CONNECT) (push) Has been cancelled
🔥 Firmware Build / build-firmware (0, ARDUINO_NICLA_VISION) (push) Has been cancelled
🔥 Firmware Build / build-firmware (0, ARDUINO_PORTENTA_H7) (push) Has been cancelled
🔥 Firmware Build / build-firmware (0, DOCKER) (push) Has been cancelled
🔥 Firmware Build / build-firmware (0, OPENMV2) (push) Has been cancelled
🔥 Firmware Build / build-firmware (0, OPENMV3) (push) Has been cancelled
🔥 Firmware Build / build-firmware (0, OPENMV4) (push) Has been cancelled
🔥 Firmware Build / build-firmware (0, OPENMV4P) (push) Has been cancelled
🔥 Firmware Build / build-firmware (0, OPENMVPT) (push) Has been cancelled
🔥 Firmware Build / build-firmware (0, OPENMV_AE3) (push) Has been cancelled
🔥 Firmware Build / build-firmware (0, OPENMV_N6) (push) Has been cancelled
🔥 Firmware Build / build-firmware (0, OPENMV_RT1060) (push) Has been cancelled
🔥 Firmware Build / build-firmware (1, OPENMV_N6) (push) Has been cancelled
🔥 Firmware Build / code-size-report (push) Has been cancelled
🔥 Firmware Build / stable-release (push) Has been cancelled
🔥 Firmware Build / development-release (push) Has been cancelled
modules/py_imageio: Fix stream file mode.
2025-10-12 19:45:39 +03:00
iabdalkader
715c4cbba6 modules/py_imageio: Fix stream file mode.
Open for write should truncate the file if exists.

Signed-off-by: iabdalkader <i.abdalkader@gmail.com>
2025-10-12 14:15:01 +02:00
Ibrahim Abdelkader
c03964b8af
Merge pull request #2884 from openmv/refactor_ml_packages
Some checks failed
🔥 Firmware Build / build-firmware (0, ARDUINO_GIGA) (push) Has been cancelled
🔥 Firmware Build / build-firmware (0, ARDUINO_NANO_33_BLE_SENSE) (push) Has been cancelled
🔥 Firmware Build / build-firmware (0, ARDUINO_NANO_RP2040_CONNECT) (push) Has been cancelled
🔥 Firmware Build / build-firmware (0, ARDUINO_NICLA_VISION) (push) Has been cancelled
🔥 Firmware Build / build-firmware (0, ARDUINO_PORTENTA_H7) (push) Has been cancelled
🔥 Firmware Build / build-firmware (0, DOCKER) (push) Has been cancelled
🔥 Firmware Build / build-firmware (0, OPENMV2) (push) Has been cancelled
🔥 Firmware Build / build-firmware (0, OPENMV3) (push) Has been cancelled
🔥 Firmware Build / build-firmware (0, OPENMV4) (push) Has been cancelled
🔥 Firmware Build / build-firmware (0, OPENMV4P) (push) Has been cancelled
🔥 Firmware Build / build-firmware (0, OPENMVPT) (push) Has been cancelled
🔥 Firmware Build / build-firmware (0, OPENMV_AE3) (push) Has been cancelled
🔥 Firmware Build / build-firmware (0, OPENMV_N6) (push) Has been cancelled
🔥 Firmware Build / build-firmware (0, OPENMV_RT1060) (push) Has been cancelled
🔥 Firmware Build / build-firmware (1, OPENMV_N6) (push) Has been cancelled
🔥 Firmware Build / code-size-report (push) Has been cancelled
🔥 Firmware Build / stable-release (push) Has been cancelled
🔥 Firmware Build / development-release (push) Has been cancelled
scripts/libraries/ml: Split ml module into components.
2025-10-10 21:48:55 +03:00
Ibrahim Abdelkader
1ec8c1df3b
Merge pull request #2885 from openmv/fix_n6_repr
Some checks are pending
🔥 Firmware Build / build-firmware (0, ARDUINO_GIGA) (push) Waiting to run
🔥 Firmware Build / build-firmware (0, ARDUINO_NANO_33_BLE_SENSE) (push) Waiting to run
🔥 Firmware Build / build-firmware (0, ARDUINO_NANO_RP2040_CONNECT) (push) Waiting to run
🔥 Firmware Build / build-firmware (0, ARDUINO_NICLA_VISION) (push) Waiting to run
🔥 Firmware Build / build-firmware (0, ARDUINO_PORTENTA_H7) (push) Waiting to run
🔥 Firmware Build / build-firmware (0, DOCKER) (push) Waiting to run
🔥 Firmware Build / build-firmware (0, OPENMV2) (push) Waiting to run
🔥 Firmware Build / build-firmware (0, OPENMV3) (push) Waiting to run
🔥 Firmware Build / build-firmware (0, OPENMV4) (push) Waiting to run
🔥 Firmware Build / build-firmware (0, OPENMV4P) (push) Waiting to run
🔥 Firmware Build / build-firmware (0, OPENMVPT) (push) Waiting to run
🔥 Firmware Build / build-firmware (0, OPENMV_AE3) (push) Waiting to run
🔥 Firmware Build / build-firmware (0, OPENMV_N6) (push) Waiting to run
🔥 Firmware Build / build-firmware (0, OPENMV_RT1060) (push) Waiting to run
🔥 Firmware Build / build-firmware (1, OPENMV_N6) (push) Waiting to run
🔥 Firmware Build / code-size-report (push) Blocked by required conditions
🔥 Firmware Build / stable-release (push) Blocked by required conditions
🔥 Firmware Build / development-release (push) Blocked by required conditions
lib/micropython: Update submodule.
2025-10-10 10:05:29 +03:00
iabdalkader
7641348319 lib/micropython: Update submodule.
- Switch N6 to object REPR_C.

Signed-off-by: iabdalkader <i.abdalkader@gmail.com>
2025-10-10 08:48:16 +02:00
iabdalkader
f75f86aaec boards/all: Update manifest files.
Signed-off-by: iabdalkader <i.abdalkader@gmail.com>
2025-10-09 17:11:23 +02:00
iabdalkader
4944c157b0 scripts/libraries/ml: Split ml module into components.
Signed-off-by: iabdalkader <i.abdalkader@gmail.com>
2025-10-09 09:46:45 +02:00
Kwabena W. Agyeman
1e8eb2ec2f scripts/libraries: Move _NO_DETECTION into post-processors.
MicroPython doesn't import _NO_DETECTION from utils using the wildcard
operator. Importing it by name works, but, only after removing the
const() part in the call.
2025-10-08 08:36:24 +02:00
Ibrahim Abdelkader
c282c9474c
Merge pull request #2881 from openmv/refactor_ml_post_process
lib/ml: Refactor postprocessing module into vendor-specific subpackages.
2025-10-08 01:07:26 +03:00
iabdalkader
a4ee9f0a3c lib/ml: Refactor postprocessing module into vendor-specific subpackages.
This commit restructures the ml.postprocessing module for better organization:

- Moved common utility functions (logit, sigmoid, threshold, quantize,
  dequantize, mod) from postprocessing.py to utils.py to avoid duplication
- Created vendor-specific subpackages:
  - ultralytics.py: YoloV2, YoloLC, YoloV5, YoloV8 classes
  - edgeimpulse.py: Fomo class
  - mediapipe.py: BlazeFace class
- Converted postprocessing.py file to postprocessing/ package directory
- Updated all class names to follow PascalCase convention
- Maintained full backwards compatibility via aliased imports in __init__.py

New usage:
  from ml.postprocessing import ultralytics
  ultralytics.YoloV2()

Backwards compatible:
  from ml.postprocessing import yolo_v2_postprocess

Signed-off-by: iabdalkader <i.abdalkader@gmail.com>
2025-10-08 00:00:20 +02:00
Ibrahim Abdelkader
f474657718
Merge pull request #2877 from kwagyeman/kwabena/enable_depth_lut_on_n6
Some checks failed
🔎 Check Code Formatting / formatting-check (push) Has been cancelled
🔥 Firmware Build / build-firmware (0, ARDUINO_GIGA) (push) Has been cancelled
🔥 Firmware Build / build-firmware (0, ARDUINO_NANO_33_BLE_SENSE) (push) Has been cancelled
🔥 Firmware Build / build-firmware (0, ARDUINO_NANO_RP2040_CONNECT) (push) Has been cancelled
🔥 Firmware Build / build-firmware (0, ARDUINO_NICLA_VISION) (push) Has been cancelled
🔥 Firmware Build / build-firmware (0, ARDUINO_PORTENTA_H7) (push) Has been cancelled
🔥 Firmware Build / build-firmware (0, DOCKER) (push) Has been cancelled
🔥 Firmware Build / build-firmware (0, OPENMV2) (push) Has been cancelled
🔥 Firmware Build / build-firmware (0, OPENMV3) (push) Has been cancelled
🔥 Firmware Build / build-firmware (0, OPENMV4) (push) Has been cancelled
🔥 Firmware Build / build-firmware (0, OPENMV4P) (push) Has been cancelled
🔥 Firmware Build / build-firmware (0, OPENMVPT) (push) Has been cancelled
🔥 Firmware Build / build-firmware (0, OPENMV_AE3) (push) Has been cancelled
🔥 Firmware Build / build-firmware (0, OPENMV_N6) (push) Has been cancelled
🔥 Firmware Build / build-firmware (0, OPENMV_RT1060) (push) Has been cancelled
🔥 Firmware Build / build-firmware (1, OPENMV_N6) (push) Has been cancelled
🔥 Firmware Build / code-size-report (push) Has been cancelled
🔥 Firmware Build / stable-release (push) Has been cancelled
🔥 Firmware Build / development-release (push) Has been cancelled
boards/OPENMV_N6: Enable depth palette on N6.
2025-10-07 11:12:12 +03:00
Kwabena W. Agyeman
c0dfdc7359 boards/OPENMV_N6: Enable ToF module to enable depth LUT. 2025-10-05 13:22:22 -07:00
Ibrahim Abdelkader
814dcb1b9d
Merge pull request #2879 from kwagyeman/kwabena/fix_boson_timespec
drivers/boson: Use timespec struct from header.
2025-10-05 23:18:02 +03:00
Kwabena W. Agyeman
b765b478a5 drivers/boson: Use timespec struct from header. 2025-10-05 12:26:39 -07:00
Ibrahim Abdelkader
96034db229
Merge pull request #2878 from openmv/fix_formatting
modules: Fix code formatting.
2025-10-05 14:23:16 +03:00
iabdalkader
d7e0a0fc96 misc: Fix code formatting.
Signed-off-by: iabdalkader <i.abdalkader@gmail.com>
2025-10-05 13:15:02 +02:00
Ibrahim Abdelkader
0dfaf74e6b
Merge pull request #2854 from openmv/stai_events
lib: Poll events during inference.
2025-10-02 19:31:22 +03:00
iabdalkader
5b4035e815 ports/alif: Handle pending events during inference.
Ensures pending events get serviced more often.

Signed-off-by: iabdalkader <i.abdalkader@gmail.com>
2025-10-02 18:10:35 +02:00
iabdalkader
b99a45a2a1 lib/stai: Poll events during inference.
Ensures pending events get serviced more often.

Signed-off-by: iabdalkader <i.abdalkader@gmail.com>
2025-10-02 18:10:35 +02:00
iabdalkader
518d946d2f lib/micropython: Update submodule.
- py/scheduler: Allow selective handling in mp_handle_pending.
- stm32/usbd_hid_interface: Add runtime header.

Signed-off-by: iabdalkader <i.abdalkader@gmail.com>
2025-10-02 18:10:35 +02:00
Ibrahim Abdelkader
fa625ad6cb
Merge pull request #2859 from openmv/dependabot/github_actions/actions/cache-4.3.0
build(deps): bump actions/cache from 4.2.0 to 4.3.0
2025-10-02 10:37:05 +03:00
Ibrahim Abdelkader
53c7806663
Merge pull request #2867 from openmv/update_micropython
lib/micropython: Update submodule.
2025-10-01 19:38:18 +03:00
iabdalkader
8b15aa9119 lib/micropython: Update submodule.
- stm32/adc: Get ADC working on STM32N6 MCUs.
- alif/machine_spi: Fix init() to only change requested settings.
- alif/boards/OPENMV_AE3: Fix switch name to match OpenMV RT1062 and N6.
- stm32/boards/OPENMV_N6: Define all OpenMV N6 pins.
- stm32/boards: Add PG13 AF7 (USART3_RTS) to N6 AF file.
- stm32/boards/OPENMV_N6: Define RTS pin for UART3.

Signed-off-by: iabdalkader <i.abdalkader@gmail.com>
2025-10-01 09:29:16 +02:00
Ibrahim Abdelkader
af63e4edb1
Merge pull request #2866 from openmv/fix_formatting
misc: Fix formatting.
2025-09-28 21:00:28 +03:00
iabdalkader
f8e110ca91 misc: Format code.
Signed-off-by: iabdalkader <i.abdalkader@gmail.com>
2025-09-28 19:45:07 +02:00
iabdalkader
8233e03553 github/workflows: Add ST AI backend to formatter.
Signed-off-by: iabdalkader <i.abdalkader@gmail.com>
2025-09-28 19:22:38 +02:00
Ibrahim Abdelkader
76c87956ad
Merge pull request #2865 from openmv/add_adc_rif_config
ports/stm32: Add ADC12 RIF config.
2025-09-27 12:49:31 +03:00