-
Notifications
You must be signed in to change notification settings - Fork 5
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Migrate daemon to libgpiod #48
Draft
hangeza
wants to merge
56
commits into
dev
Choose a base branch
from
migrate-daemon-to-libgpiod
base: dev
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Draft
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
…t finished yet...code will not compile.
… a defined run status of the internal thread
…rom the former callback function are not yet forwarded, but the core mechanism of event detection works. Pins may be registered/unregistered during runtime and set/get gpio functions also seem to work. Note, that the executing user must be member of gpio group.
…orward a detected event to the daemon. With this, all basic functions of the daemon seem to work. Not working yet and to be implemented in the new gpio readout scheme: - pulse rate limitation for high freq. bursts - sampling trigger signals (for triggering the ADC readout) - time and time difference measurements for the population of two histos Note: For the daemon to work with the new libgpiod based readout, several things have to be changed from the pigpiod scheme: - the user who is executing the daemon (usually muonuser) must be added to the system group 'gpio' with 'sudo usermod -a -G gpio muonuser' - the pigpiod daemon must be switched off - the libgpiod-dev package must be installed on the system prior to compilation
…tion: - implemented trigger for ADC sampling - implemented GPIO inhibit - default eventTrigger signal is now GPIO_UNDEFINED_PIN, i.e. no trigger set up. This still has to be implemented as valid selection in the GUI
…plemented for the tracking of the XOR and AND rates in the daemon.
… by an instance of this class now. RateBuffer contains a smart rate throttling which prevents lock-up of daemon and GUI at excessive rates. This branch should now privide equal or better functionality compared to the pigpiod daemon. However, the following features are not yet implemented: - Measurement of the system time deviation from GNSS (timpulse) time - Measurement of the GPIO event interval (as in the histogram under statistics tab of the GUI with the same name). This may be implemented easily with the help of the RateBuffer class.
…val"). Adjusted scaling of several histograms.
…signal is explicitly not bound to a fixed GPIO pin. Corrected some wrong assignments in the GPIO pin list for HW Ver 1.
…d for running the daemon with access to the gpio kernel subsystem.
- added measurement of time pulse to system time
… the range -0.5s...+0.5s, instead of 0...1s as before
dtreffenstaedt
requested changes
Jul 16, 2021
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Please don't comment out code but directly delete it instead.
dtreffenstaedt
requested changes
Jul 16, 2021
dtreffenstaedt
requested changes
Jul 16, 2021
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Add a more sturdy preinst script to handle older installations where just the user needs to be added to a new group
Co-authored-by: Daniel Treffenstädt <[email protected]>
Co-authored-by: Daniel Treffenstädt <[email protected]>
Co-authored-by: Daniel Treffenstädt <[email protected]>
Co-authored-by: Daniel Treffenstädt <[email protected]>
Co-authored-by: Daniel Treffenstädt <[email protected]>
Co-authored-by: Daniel Treffenstädt <[email protected]>
Co-authored-by: Daniel Treffenstädt <[email protected]>
- removed separate the samplingTrigger handling in PigpiodHandler - merged slots for gpio events in daemon into one onGpioPinEvent() slot - removed unregistering interrupts in PigpiodHandler before registering them again. This would be the cleanest procedure but somehow it doesn't work from gpiod side
…eBuffer classes to more descriptive event and filteredEvent. - Added transmission of interrupt timestamp to event and filteredEvent signals.
- moved all event handlers to separately spawned threads for each interrupt line - added map to store the last time intervals between events from different gpios in RateBuffer class - changed filling of gpioTimeIntervalShort histogram to time intervals measured between the currently selected eventTrigger and the rising edge of TIME_MEAS_OUT signal
…prior merge conflict. Added ratebuffer.cpp file which was not commited properly during the last big PR.
…ge descriptor) to make this libgpiod-development branch discernible from the mainstream packages
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
All (but one minor) functionality implemented and successfully tested so far based on libgpiod instead of pigpiod. The low-level interrupt handler now sends signals to an intermediate instance of RateBuffer, which provides protection against sustained high count rates. Following functionalities still need to be implemented or taken care of:
closes #40