Commit Graph

219 Commits

Author SHA1 Message Date
hayodea acb684ad35 livoxGen1🐛 Call stop() on all producers before deleting in _exit 2026-06-14 15:34:07 -04:00
hayodea e261787cfe Add env-gated lcameraBuff configure HIL tests on baked USB profile.
HIL attaches Y/U/V channels, verifies shared producer state, and detaches
using an alternate selector string for the U channel quale.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-14 11:05:17 -04:00
hayodea 63532a6ee2 Resolve device selector on detach and add YuvStimProducer state tests.
Detach finds the shared producer via lcameraDev_resolveDeviceSelectorCReq
then removes buffers by attach identity; unit tests cover quale guards.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-14 11:04:22 -04:00
hayodea e7b7a311f7 Add lcameraBuff Stage 2 plugin with YUV attach and unit tests.
Introduce params parsing, pixel/format decisions, capture layout, shared
YuvStimProducer per camera, and channel stimulus buffers with attach flow.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-14 11:03:19 -04:00
hayodea 5f3d5c7818 Refactor LivoxGen1 provider param parsing to shared DAP helpers.
Replace local param parsing with DeviceAttachmentSpec primitives for
consistency with lcameraBuff and intrin threshold modules.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-14 11:01:04 -04:00
hayodea a31a21be65 IoUringAssmEngn: fix Io_uring CQE cancel path 2026-06-09 20:40:39 -04:00
hayodea 4a4c76b5ec Production: log durations and results for debugging 2026-06-09 19:53:48 -04:00
hayodea ad88a5e1c8 CMake: Fix unnecessary build steps 2026-06-09 19:51:51 -04:00
hayodea 87a8de9a2b StimProd,DevReattacher: use CDaemon nonviral nursery coro
We ported these two daemons over to the new nursery mechanism and
they work nicely.
2026-06-09 19:47:44 -04:00
hayodea 91fc655b25 Nursery: Initial integration
StimulusProducer: syncAwaitAllSettlements should pump caller io_context
2026-06-09 16:03:25 -04:00
hayodea d1c74a027c Use DynamicViralPostingInvoker in at/detachStimBuffDeviceCReq 2026-05-31 07:13:53 -04:00
hayodea 35eb466a60 OClCollMeshEngn,PcloudStimProd: port to sscl::co coros
We've now ported the OpenClCollMeshEngn and PcloudStimProd::produceFrameReq
portions of the Livox pipeline to coros.
2026-05-30 19:32:19 -04:00
hayodea acf62e61da Remove boostAsioLinkageFix 2026-05-30 12:12:59 -04:00
hayodea 4266af545a Boost.ASIO: upgrade io_service=>io_context, finally 2026-05-30 12:01:00 -04:00
hayodea f100764bd8 Async: Drop-in SyncCancelerForAsyncWork without execUncancelableSegment*
We're doing this to prep for the coro port
2026-05-30 10:52:15 -04:00
hayodea 322a8137b2 Revert "LivoxGen1: Use syncCancelerForAsyncWork in producer pipeline"
This reverts commit d788810a05.

We're doing this because it's not necessary. We will be porting to
coros soon and we can just use brace-scopes.
2026-05-30 07:18:29 -04:00
hayodea d788810a05 LivoxGen1: Use syncCancelerForAsyncWork in producer pipeline 2026-05-29 14:10:45 -04:00
hayodea 25efccf6c5 LivoxProto1: port to sscl::co framework
Code now actually looks a lot cleaner, tbh.
2026-05-28 20:13:12 -04:00
hayodea 958c57b3ff livoxGen1: Disable pcloudData IFF stimbuff is last being removed 2026-05-28 15:55:23 -04:00
hayodea fc5ebb72b9 LivoxGen1: Port to coros
No longer uses CPS. We also found and documented a potential bug in
the way we deal with disablePcloudData during detachDeviceReq.
2026-05-28 15:17:50 -04:00
hayodea 3e19d39853 SenseApiDesc,xcbWindow: port to sscl coro framework
SenseApiDesc's exported API now uses coro pointers instead of
CPS fn pointers.
* Do not build this version of SMO with the Livox drivers enabled,
  because SMO has been changed at the smocore level to use coros
  when calling into stimbuffAPI libs. But the Livox drivers
  haven't yet been ported from CPS to coros.

xcbWindow has been ported to expose coros to SMO in its
senseApiDesc exported iface.
2026-05-25 08:58:36 -04:00
hayodea f9ac41c56e Update libspinscale, add debug printing for pcloudStimProd 2026-05-24 23:26:18 -04:00
hayodea cde2737876 Libspinscale: Initial top-level SMO port to coroutine framework
We haven't ported everything. Just the top-level methods. We'll
dig in to the leaf stuff later. Surprisingly, this all went without
any real difficulties.

Runs like a charm on first try.
2026-05-24 23:26:18 -04:00
hayodea 479229d0da Lg1:pcloudStimProd: Add ambience trigger debugging 2026-04-18 15:21:40 -04:00
hayodea 27a5d48451 Lg1: Implement both light|darkAmbience stimBuffs & their production
We now produce both light and dark ambience stimframes into
stimbuffs for the LivoxGen1 lidar devices.
2026-04-18 14:54:14 -04:00
hayodea 632a227985 DAPS: Add intrin specs to nontrin specs
We no longer do intrin specs as a separate stimbuff; rather now we
do them as a specifier segment within the pipeline spec of a normal
nontrin spec.
2026-04-18 12:02:27 -04:00
hayodea fc1fcae0b0 DAP: Add intrin DAPSpecs
We now specify intrins as separate DAPS lines. This syntax is much
nicer and well-grouped than the previous negtrin-*/postrin-* param
names.

Alas, we're about to replace it in the next few commits already though.
2026-04-12 04:06:47 -04:00
hayodea e8044a0d17 OClCollMeshEngn: produce ambience into stimBuff frames directly 2026-04-04 13:17:43 -04:00
hayodea 1c0f028de0 Genericized intrin parsing from Ambience 2026-04-04 00:44:48 -04:00
hayodea 7516da6aa8 Api improvements: ambience-count-[l|g]t-val and Comparator 2026-04-03 23:54:22 -04:00
hayodea 3dd627c91c Implement new intrin params; fix parseSynonyms
Previously parseSynonyms didn't properly return the last provided
synonym of the param in question, so fix it here to do that.
2026-04-03 23:14:23 -04:00
hayodea 156da322b6 Add rudimentary pcloud dumper and meshing with OFM & GP3
The OFM algo runs in fractions of a millisecond. GP3 runs in
fractions of a second. I think if we can get more input data to
the OFM or something akin to it, we will have a winner.
2026-04-03 21:23:29 -04:00
hayodea ba76bb0b00 Silence this debugging spam 2026-04-02 22:48:07 -04:00
hayodea 1d64ce0c7e StagingBuff: support both Mlock & IOUring pin; Use in IoUAssmEngn
We use io_uring_register_buffers() for IoUringAssemblyEngine instead
of using mlock(). This __appears__ to have reduced CPU utilization on
the Dell laptop. Could also be that we recently upgraded total RAM
from 8GiB to 32GiB.
2026-04-02 03:51:22 -04:00
hayodea 26dd686ebf PCloudStimBuff: call IoUringAssemEngn.finalize when setup fails 2026-04-02 03:45:18 -04:00
hayodea 3f2d7c24ee StimBuff: Move supportsQuleIfaceApi into base class 2026-04-01 23:17:10 -04:00
hayodea a1fd39eb05 Improve CPack deb generation 2026-03-06 01:12:46 -04:00
hayodea 34d76df7d9 Spinscale: create new namespace sscl 2025-12-27 16:21:22 -04:00
hayodea b6cf1c656f Dampen warning 2025-12-26 02:52:05 -04:00
hayodea 45959f9d1c Libspinscale: begin splitting it off 2025-12-26 01:18:39 -04:00
hayodea 6e89c7e72f Disable prints 2025-12-07 19:49:32 -04:00
hayodea 7167cea62c OClCollMeshEng: Use RAII for unmapBuffer() event destruction 2025-12-07 19:29:20 -04:00
hayodea 702855a27d OClCollMeshEngn: Use uniq_ptr for Cl handle RAII
We no longer use a goto slide to deal with initialization errors
in setup()/finalize(). We use RAII instead.
2025-12-07 19:12:26 -04:00
hayodea dc5587bfcc Debug: Silence excessive prints 2025-12-02 16:23:29 -04:00
hayodea 5dffbd0c91 PcloudAmbienceStimBuff: Updated to use postrin percentage 2025-12-02 16:17:46 -04:00
hayodea e06b2d7e06 PcloudAmbienceStimBuff: Parse postrinThreshold as percentage 2025-12-02 14:15:43 -04:00
hayodea 30f599cde3 Rename RangeDescriptor::bodySpot=>stimulusBufferSpot 2025-11-28 14:57:53 -04:00
hayodea 0116523a66 LG1PCloudAmbStncl: Use RangeDescriptor obj instead of StagingBuffer
We directly use an instance of RangeDescriptor to avoid incurring
the memory cost of using a StagingBuffer here. It's unnecessary
since these stencils will always be 32bits large.
2025-11-28 03:34:35 -04:00
hayodea 1f35dba2ca OClCollMeshEngn: use proper alignment for small StagingBuffer size
Aligning to uint32_t saves about 1 page of mem?
2025-11-28 03:13:55 -04:00
hayodea 280b6f7d1c OClCollMeshEngn: Produce ambience count; set postrin threshold
We modify the semantics/meaning of the ambience stim feature.
It now represents the number of frames whose average intensity
is below the ambienceLowVal.

We can now implement the postrin as the event wherein the number
of frames whose intensity <= ambienceLowVal exceeds
postrin-interest-threshold.
2025-11-28 02:55:24 -04:00