Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
switch to composition
Do not use inheritance for the different Picoscope models but
encapsulate the APIs for the different models without gnuradio
dependencies.
There are now three levels of abstraction:
PicoscopeImplementationLikePicoscopeImplementationLikeimplements a wrapper for shared functionality which does not depend on gnuradio.Add a qa_PicoscopeAPI unittest
This allows to test the Picoscope abstraction without any dependencies
on gr4 to allow fast testing and verifying API assumptions.
remove atomic and blocking IO logic
The previous logic was unsafe because it copied data outside of the
callback in which copying is safe. Additionally by spawning its own
threads in addition to the picoscope driver's own threads, it was
heavy on CPU. The actual data transfer is handled by the Picoscope
driver thread, and the picoscope's work function just polls the driver
functions. In combination with the blocking scheduler, this should
reduce CPU load (trading off against latency).
Also does not reimplement internal block functions like workInternal.
switch from
std::vector<Port<...>>tostd::array<Port<..>, N_Channels>Add simple picoscope cli application to test the low level API
independent of gr4
Support for digitial, AUX and EXTERNAL triggers
Digital is intentionally simple and only allows a single digital
input. AUX is only available on the PS600 and EXTERNAL is only
relevant for the non MSO variant of the 3000A/5000A.
Open issues:
latencies. Ideally some of it can be done in the gr4 scheduler
already.