Commit Graph
100 Commits
Author SHA1 Message Date
Guido Günther c659f0adb5 lfb-event: Fix typo
It's LfbEvent
2022-10-12 10:13:08 +02:00
Guido Günther 2e081602f6 data: Drop outdated comment
We use the hints since some time, see lfb_event_set_feedback_profile().
2022-07-20 18:32:47 +00:00
Guido Günther 17c1c2aa24 Document changes and release 0.0.0+git20220209 2022-05-20 10:57:37 +02:00
Guido Günther 5a3e501344 udev: Use more generic comment
Make it more obvious that this isn't device specific
2022-03-18 11:08:28 +01:00
Guido Günther 9851d3727f udev: Drop pre L5 pre 5.9 workaround
Not neeed in 2022.
2022-03-18 10:55:15 +01:00
Guido Günther 74b178a363 Document changes and release 0.0.0+git20220208 2022-02-08 11:30:40 +01:00
Guido Günther 16bf78b5a4 manager: Don't sync DBus profile property
This will happen in on_feedbackd_setting_changed() once the
profile was adjusted.
2022-02-04 19:03:00 +01:00
Guido Günther 5c8cbfca39 manager: Sync profile with setting on startup
On startup the GSetting is the relevant input for selecting the profle.

Closes: #52
2022-02-04 19:03:00 +01:00
Guido Günther 2be41ec0ef manager: Set initial profile to unknown
This makes sure we sync the profile with the DBus property after
fetching it from GSettings.
2022-02-04 19:03:00 +01:00
Guido Günther a7a123a0b7 tests: Remove unused variables 2022-02-04 19:03:00 +01:00
Guido Günther ff055cdb35 libfeedback: Remove unused variables 2022-02-04 19:03:00 +01:00
Guido Günther 753fff3e7a d/changelog: Bump changes line to a recent date too
It was still stuck at 2021-10-07. Fixup version too while at that.
2021-10-19 13:15:28 +02:00
Guido Günther d11ea0c555 Document changes and release 0.0.0+git20211018 2021-10-18 17:17:12 +02:00
Guido Günther 3a6b573d9b gitlab-ci: Switch to bullseye
Drop support for buster, this can be handled in downstream builds.
2021-10-18 17:16:12 +02:00
Guido Günther c88c6cfff5 fbd-dev-sound: Delay sending ended signal
Remove the feedback and the associated callback data before invoking the
callback (which then triggers FbdFeebackBased:ended) since we otherwise
remove the data from the currently playing sound from the hash table
instead of removing the data from the sound that just finished playing.

Call flow for a repeating sound before:

  on_sound_play_finished_callback()
    data->callback()
      fbd_feedback_get_ended()
        on_fb_ended()
          fbd_feedback_run()
            g_hash_table_insert(..., feedback, data)
            fbd_dev_sound_play()
              gsound_context_play_full() [async]
    g_hash_table_remove (..., data->feedback) <- removes wrong feedback

So (since the feedback is still the same but only the callback data
changes) we end up removing the data from the currently playing sound
from the hash table and any calls to fbd_dev_sound_stop() would fail
to find data and hence not cancel the playing sound.

Call flow for a repeating sound now:

  on_sound_play_finished_callback()
    g_hash_table_remove (..., data->feedback)
    data->callback()
      fbd_feedback_get_ended()
        on_fb_ended()
          fbd_feedback_run()
            g_hash_table_insert(..., feedback, data)
            fbd_dev_sound_play()
              gsound_context_play_full() [async]

So we remove the data of the currently playing sound before adding
the feedback to the hash table again. No ownership is transfered to
the hash table so no cleanusp need to be changed.

Closes: https://source.puri.sm/Librem5/feedbackd/-/issues/46
2021-10-15 15:12:55 +02:00
Guido Günther 05bd9ae0cb fbd-dev-sounce: Name data consistently
We name it `data` elsewhere. Don't call it `object` in one function.
2021-10-15 15:10:31 +02:00
Guido Günther 48c05be29d fbd-dev-sound: Rename cancellable to cancel
The current name is just confusing
2021-10-15 15:10:31 +02:00
Guido Günther 83ba584a53 feedback-theme: Add camera related events 2021-09-06 12:49:41 +02:00
Guido Günther 587cbf3188 cli: Fix changing global profile
For that we must not set a default event.
2021-08-09 11:49:30 +02:00
Guido Günther 3503fe0293 docs: Fix --profile short option
It's '-P', not '-p'.
2021-08-09 11:46:30 +02:00
Guido Günther 4f5d3cc253 examples: Unbreak python example
The method is `trigger_feedback` not `trigger`.
2021-07-23 15:07:13 +02:00
Guido Günther 48b4bb97d6 Document changes and release 0.0.0+git20210426 2021-04-26 12:36:05 +02:00
Guido Günther 678ae7a22d fbd-feedback-manager: Don't leak device list 2021-04-26 09:34:23 +00:00
Guido Günther 9c9f767986 fbd-feedback-manager: Don't leak config_path
It's assigned multiple times.
2021-04-26 09:34:23 +00:00
Guido Günther 437b19edd4 fbd-feedback-manager: Make sure to dispose sound device as well
Fixes another leak.
2021-04-26 09:34:23 +00:00
Guido Günther 11aa38baba fbd-dev-sound: Use correct cleanup for hash table
This went unnoticed since the manager forgot to cleanup
this at all (see follow up commit).
2021-04-26 09:34:23 +00:00
Guido Günther 4c30fafc6e fbd-dev-leds: Use automatic deep cleanup for device list
The current logic was fragile and failed e.g. when the
FEEDBACKD_UDEV_VAL_LED would not match leaking the dev since the
g_object_unref() at the end of the loop was never hit.

Prevent that with automatic cleanup and explicitly ref'ing the
devs we want to use.
2021-04-26 09:34:23 +00:00
Guido Günther 957fa1be83 fbd-dev-leds: Don't leak color
g_ascii_strdown() creates a copy already.
2021-04-26 09:34:23 +00:00
Guido Günther d8f944ed30 fbd-dev-leds: Don't leak enum_name
g_enum_to_string() is transfer full.
2021-04-26 09:34:23 +00:00
Guido Günther d7419f37a1 fbd-dev-leds: Free actual FbdDevLed as well
So far we only unref'ed the device.
2021-04-26 09:34:23 +00:00
Guido Günther 9169d8b23b fbd-feedback-theme: Don't leak JSON node 2021-04-26 09:34:23 +00:00
Guido Günther dc68afdf5f Help emacs to indent properly 2021-04-26 09:34:23 +00:00
Guido Günther 04648dcf27 feedback-manager: Track DBus clients and end feedbacks if they go away
When the client goes away we build up a list of events to end feedback
for to make sure the hash table isn't modified in place. tThe alternative
approach would be to disconnect the on_event_feedbacks_ended handler,
duplicate the DBus signal emission and use g_hash_table_foreach_remove
but that looks less robust than using the same code path.

Closes: #25
2021-04-22 14:44:30 +02:00
Guido Günther dc8c8c9594 fbd-manager: Keep DBus sender around 2021-04-22 14:43:30 +02:00
Guido Günther 66bcb31a0e fbd-event: Add sender property
This allows us to store the DBus sender
2021-04-22 14:43:30 +02:00
Guido Günther abab07a2f2 event: Remove 'g' prefix from common C types
This matchs phosh's style.
2021-04-22 14:43:30 +02:00
Guido Günther 0936b5fb09 tests: Run event tests too 2021-04-22 14:43:30 +02:00
Guido Günther da537aff1e event: Make log-domain match source file name 2021-04-22 14:43:30 +02:00
Guido Günther 53a02c719c test-lfb-integration: Test invocation error 2021-02-05 16:56:24 +01:00
Guido Günther d6e3df7ebc tests: Run lfb_event_{get,set}_timeout 2021-02-05 16:56:24 +01:00
Guido Günther 8c8382a0d2 lfb-event: Don't leak error
Don't leak the error values in the success case
2021-02-05 16:56:24 +01:00
Guido Günther 0a5dac1e53 fbd-dev-sound: Don't warn when sound was cancelled
This is not an error per se.
2021-02-05 16:56:24 +01:00
Guido Günther c95009afd1 fbd-dev-sound: Don't leak GError 2021-02-05 16:56:23 +01:00
Guido Günther aac3306ad5 Document changes and release 0.0.0+git20210125 2021-01-25 11:00:38 +01:00
Guido Günther 40d318c9aa feedback-manager: Fix formatting
It was off in several places. Now that there's no outstanding
MRs clean it up via

   uncrustify --replace -c phosh.cfg src/fbd-feedback-manager.c
2021-01-11 10:35:03 +01:00
Guido Günther ce02a0a52d Document changes and release 0.0.0+git20201114 2020-11-14 15:55:30 +01:00
Guido Günther 3b3deddb54 debian: Don't abuse the video group
Use a separate group for users that should be able to access
the LED devices.
2020-11-14 15:39:27 +01:00
Guido Günther 5ca5d50027 udev: Update led maching for the librem5
The names changed in device tree which tickles up into userspace.
2020-11-14 15:33:27 +01:00
Guido Günther 581b83cd92 gitlab-ci: Honor PKG_ONLY
This allow us to get debs quicker
2020-09-30 19:16:37 +02:00
Guido Günther 99e39fba00 sound: Set 'event' media role
This allows pa to cork, duck, etc.
2020-09-30 19:16:25 +02:00
Guido Günther 9e2c13a1fe Document changes and release 0.0.0+git20200726 2020-07-26 13:06:35 +02:00
Guido Günther 5a75f369fc fbd: Dispose manager at the very end 2020-07-24 14:45:46 +02:00
Guido Günther 665d2abc4a feedback-led: Don't try to stop led when there's no led device
This is not a critical since we prevented submitting initially
but daemon cleanup processes all entries in the theme.
2020-07-24 12:53:13 +02:00
Guido Günther d137c5895f feedback-led: Stop the correct led color 2020-07-24 12:53:13 +02:00
Guido Günther 8a631cae3e feedback-manager: Dispose leds too 2020-07-24 12:53:13 +02:00
Guido Günther e7f527bf62 feedback-manager: Don't forget to remove not found events from the hash table
This plugs a leak.
2020-07-24 12:53:13 +02:00
Guido Günther cf56999bf7 feedback-manager: Deeply free the feedback list
Instead of freeing each elemnt after each iteration and then the list
itself at the very end just fully free the list. g_autoslist does
not work well on oder glib so do that manually.

This is just cosmetics.
2020-07-24 12:53:13 +02:00
Guido Günther fb076254c9 tests: Test event not found case too 2020-07-24 11:58:26 +02:00
Guido Günther cfab476edb tests: Don't check end reason in feedback handler
This allows to reuse the feedback handler and we check the
reason in the actual test function anyway.
2020-07-24 11:58:26 +02:00
Guido Günther e8d189ebe6 feedback-theme: Avoid warning when feedback is not found
We tell the caller so debug level is enough
2020-07-24 11:58:26 +02:00
Guido Günther 05a6bd5947 feedback-sound: Implement is_available
This avoids criticals when there's sound device available. We
can also be more precise about the reason why feedback ended.
2020-07-22 10:28:42 +00:00
Guido Günther 67ebeba2b2 feedback-vibra-periodic: Implement is_available
This avoids criticals when there's no periodic vibra available.
2020-07-22 10:28:42 +00:00
Guido Günther 1af163e7ea feedback-vibra-rumble: Implement is_available
This avoids criticals when there's no rumble vibra available.
2020-07-22 10:28:42 +00:00
Guido Günther 75e28510e4 fbd-feedback-led: Implement is_available ()
This avoids criticals when there's no Leds available.
2020-07-22 10:28:42 +00:00
Guido Günther e8dfe6974a fbd-feedback-manager: Check if feedback is usable
If we don't find any usable feedbacks for an event return
FBD_EVENT_END_REASON_NOT_FOUND.
2020-07-22 10:28:42 +00:00
Guido Günther 542fe52cc2 feedback-manager: Fix indentation 2020-07-22 10:28:42 +00:00
Guido Günther 94ef60f73e fbd-feedback-base: Add fbd_feedback_is_available ()
This allows to check if a feedback type is available
at all.
2020-07-22 10:28:42 +00:00
Guido Günther f950cfc3a2 fbd-dev-sound: Be less verbose on missing sound files
This is quite common so don't fill the logs at normal debug levels
but be more specific about what is missing.
2020-07-20 16:19:17 +02:00
Guido Günther 7d22b36208 Document changes and release 0.0.0+git20200714 2020-07-14 10:31:46 +02:00
Guido Günther 3a378552af tests: Use async feedback as the test name implies 2020-07-13 16:06:44 +02:00
Guido Günther 134d60c73b tests: Don't quiet mainloop on event end
This is needed to properly test aync where we have the
finished async event handler and the signal.
2020-07-13 10:16:20 +02:00
Guido Günther 6e30957714 lfb-event: Connect done handler in async case too
Otherwise the event state is not updated properly
2020-07-13 10:16:20 +02:00
Guido Günther bb561b0dc5 lfb-event: Clarify return values of finished functions
They just inidicate that we talked to feedbackd succesfully.
2020-07-13 10:16:20 +02:00
Guido Günther 68a1e3cda0 Document changes and release 0.0.0+git20200707 2020-07-10 11:54:52 +02:00
Guido Günther 918a047ce0 debian: Bump symbol versions
This ensures we get tighter dependencies when built against
this version with new symbols.

We don't bother with individual symbols yet.
2020-07-10 09:20:04 +00:00
Guido Günther 41304c36fd cli: Allow to set profile per event
We allowed set the global profile via `-P` use it as per event
profile when used with `-E`.

Ironically the manpage always said it'd be that way.
2020-07-10 09:20:04 +00:00
Guido Günther dfafe8d7c1 cli: Fix indentation 2020-07-10 09:20:04 +00:00
Guido Günther 50aeb79ec9 LfbEvent: Add feedback-profile property
This allows to specify the feedback profile to use for
this particular event.
2020-07-10 09:20:04 +00:00
Guido Günther 6692d8922b feedback-manager: Add hint to select feedback profile per event
This e.g. allows events that are meant for haptic only to avoid
emitting a sound by omitting the 'full' level and using "quiet"
instead.

Closes: #7
2020-07-10 09:20:04 +00:00
Guido Günther 421c163bdd feedback-manager: Prepare for per event hints
Move feedback profile level into a separate function for that.
2020-07-10 09:20:04 +00:00
Guido Günther 9c667bbc6c LfbEvent: Link to event naming specification 2020-07-10 09:20:04 +00:00
Guido Günther 69cbe39082 README: We set a feedback profile not a level 2020-07-10 09:20:04 +00:00
Guido Günther 76da62738c Revert "rumble: Use a default pause"
This reverts commit 551030b436.
2020-07-10 11:17:18 +02:00
Guido Günther 551030b436 rumble: Use a default pause
Without that multiple counts sound odd so let's have good defaults.
2020-07-09 12:53:15 +00:00
Guido Günther 200ec77362 Add generic missed notification
This can be used e.g. by the shell for general purpose notifictions
but also for in app notifications of the foreground app.
2020-07-05 19:25:44 +00:00
Guido Günther 75f6888334 data: Use LED feedback for missed calls, IMs and SMS 2020-07-05 19:25:44 +00:00
Guido Günther a5b4f99412 feedbackd: Support visual feedback via LEDs
Currently all LED feedbacks are infinite we can improve that
later on by using the 'repeat' attribute of the LED pattern
trigger.
2020-07-05 19:25:44 +00:00
Guido Günther 2f083ea5ae debian: Setup leds via udev
This allows feedbackd to set periodic feedback and makes usable
LED devices identifiable by feedbackd.
2020-07-05 19:25:44 +00:00
Guido Günther b561114800 feedbackd: Add helper to set up permissions for LEDs
This helper knows about the tiggers and necessary permission.
It's intended to be run via udev.
2020-07-05 19:25:44 +00:00
Guido Günther 20ba06a193 data: Drop phone-missed-call in 'quite' profile
Only want LEDs there.
2020-07-05 19:25:44 +00:00
Guido Günther 5efac28da9 debian: Ship manpages 2020-07-04 11:30:47 +00:00
Guido Günther d780dd4f57 docs: Add feedbackd manpage
Closes: #12
2020-07-04 11:30:46 +00:00
Guido Günther afcb57ab90 doc: Add fbcli manpage 2020-07-04 11:30:46 +00:00
Guido Günther e4c793f6b2 README: Fix spelling
It's `from` not `form`.
2020-06-25 08:36:06 +02:00
Guido Günther f5f6308fc4 README: Fix command line tool name
It's called fbcli (but was called fbdcli initially)
2020-06-25 08:22:38 +02:00
Guido Günther 58c370407f fbcli: Quit main loop on CTRL-C / SIGTERM
This makes sure we invoke the cleanup function correctly and allows
to test running event handling.
2020-06-02 16:36:24 +00:00
Guido Günther 49dab605c2 libfeedback: Cancel all running feedbacks on uninit
We keep track of the active ids and end them on uninit. This
make sure feedbacks don't continue to run if the application quits
and forgets to end a feedback.
2020-06-02 16:36:24 +00:00
Guido Günther ceef33c6a0 libfeedback: Unset _initted early
This make sure a client does not end up in our shutdown phase and sees a
half initted library.
2020-06-02 16:36:24 +00:00
Guido Günther 1af281d8e2 data: Clarify DBus wording 2020-06-02 16:36:24 +00:00
Guido Günther bdf251e565 feedback-manager: Only act on add
We would otherwise ignore the action when no vibra device was yet found.
Make sure we release the old device when updating.
2020-06-02 16:36:24 +00:00