Age | Commit message (Collapse) | Author | Files | Lines |
|
The lazy startup of the separate helper program for the RTL-SDR
backend on playback start was incorrect with respect to the expected
behavior the frequency setting verbs. This was not visible during
usage by the radio application, but was triggering failures in
several tests in the pyagl binding wrapper test suite. To facilitate
starting the helper during backend initialization, the probing part
of the backend "init" has been split into a separate "probe" function,
and all backends have been updated to reflect this change. Logic has
been added to enforce that "init" is only called after "probe" has
succeeded for a backend, and a comment has been added to radio_impl.h
to document this intended behavior.
Bug-AGL: SPEC-3717
Signed-off-by: Scott Murray <scott.murray@konsulko.com>
Change-Id: Ic37331a92bae7cc01ee448e69894fa5f49d08a74
|
|
-Add a new verb for handling alternative frequency.
-Add a new structure (station_quality_t) and use it for sharing
quality parameters.
-Make tef665x implementations compatible with new structure.
-Update README.md file to cover new verbs.
Change-Id: Id78e3b9aa8896eca9ef44222657f21246de9914f
Signed-off-by: Ehsan Takalloo <ehsan.takalloo@gmail.com>
(cherry picked from commit d4fb6eb7a4648b74f930af667f9231226e4ce208)
|
|
The frequency verb was not checking if a frequency corresponds to the
frequency band step the binding provides to users, add logic to do so
and return an error if the frequency is invalid. While this is a
change in behavior, it is believe it should not impact users, as the
binding is intended to reflect user facing radio application usage.
Additional tweaks:
- fix error invalid frequency error message in reply JSON.
- add the same band limit checks to the null implementation's
frequency setting function that the other implementations do.
- fix a couple of issues in README.md; the "rds" verb was missing,
and the value key name for the "frequency" event was incorrect.
Bug-AGL: SPEC-3620
Signed-off-by: Scott Murray <scott.murray@konsulko.com>
Change-Id: I2adfc10448546264110f6d854f02d677087f1e47
(cherry picked from commit 8958a8a3e98085c60c9cd803395be157e78e3565)
|
|
Changes:
- Add null radio implementation that acts as the fallthrough default
when the hardware implementations are not detected.
- Tweaked the probing in the tef665x implementation to not return an
error if the I2C node is not even present. This cleans up the logs
on start up on most platforms. These changes include some minor
whitespace consistency clean ups.
- Added the run-by-default widget permission now that the binding
should always work. This will ease testing, and potentially decrease
app start up time.
Bug-AGL: SPEC-3570
Signed-off-by: Scott Murray <scott.murray@konsulko.com>
Change-Id: I3c2e60ce7272d248ab87e3b79d6a334e17fe5531
|
|
Update types in radio_impl_tef665x.c and radio_impl_tef665x.h
Add rds verb to tef665x and send latest rds as response
Implement rds parser based on rds standard structure and tef-665x user-manual for rds group types 0A, 0B, 1A, 2A, 2B and 4A
Implement scan_start verb for tef-665x
Implement scan_stop verb for tef-665x
Implement get stereo_mode verb for tef-665x
Fix an issue in tef665x_set_frequency_callback
Update README.md file
Signed-off-by: Ehsan Takalloo <ehsan.takalloo@gmail.com>
Change-Id: Ife057e46c52fc420541dbad3b4f51c7d01707a3d
|
|
GCC 10 generates uninitialised warnings for the fd variable, to avoid these
initalise the variables to 0.
Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
Change-Id: Ieb718498f9d9dd1e8d2e2e79f71f060218759ec6
|
|
This is a NXP tuner AM/FM/RDS. The chip has analogue and digital sound
output and input. Chip is controlled through i2c.
I had to add a sound cart to the kernel to be able to capture the i2s
data from the chip.
Some of the verbs still to be implemented. I test it on a costum board
with imx6solo.
Bug-AGL SPEC-3071
Signed-off-by: VahidGharaee <vgharaee@gmail.com>
Change-Id: I868706e6d275aef77f77138f815b1b53d64780be
|
|
Fixes:
- Track playing state in binding code to properly ignore signal-composer
events when not playing.
- Add changing of pipeline state in response to the GstBus
GST_MESSAGE_REQUEST_STATE message to the KF code, this is required to
have the second request to switch back to PLAYING state be sent, and
hence properly keeping track of corked state. Also added required
gstreamer main loop so GstBus actually works.
- The alsasrc used in the KF code's gstreamer pipeline seems to not
handle the switch to READY state on pause (currently required to
trigger Wireplumber policy) as expected; it seems to keep feeding the
pipeline, causing long stalls on restart. For now, taking the stream
fully down to NULL state seems to work around this issue.
Bug-AGL: SPEC-3061, SPEC-3046
Change-Id: I31b2759d10087efbe4ccd885600be95b7029c598
Signed-off-by: Scott Murray <scott.murray@konsulko.com>
|
|
Add hopefully temporary workarounds for current Wireplumber policy
implementation that requires taking gstreamer state to READY or STOPPED
to trigger policy. Also add a fix for resuming playback from corked
state.
Bug-AGL: SPEC-3061, SPEC-3023
Change-Id: I1020f9de1fc7dc82c3bb58f0870880ecbf4c09ef
Signed-off-by: Scott Murray <scott.murray@konsulko.com>
|
|
Check if PipeWire is corking the audio stream and if so don't
process signal-composer events till uncorked
Bug-AGL: SPEC-3023
Change-Id: I1a4623022bbe28658bc97b5fe0cda58863f20d8c
Signed-off-by: Matt Ranostay <matt.ranostay@konsulko.com>
|
|
Add initial basic support for next/previous events from signal composer,
mapping them to seek forward/back. More work will be required to handle
the issues around both mediaplayer and radio both being running and
differentiating which should handle the events.
Additionally, complete transition to binding version 3 to clean things
up.
Bug-AGL: SPEC-3046
Change-Id: I251fa461c96dba584a3fe0069bab4fd2e54701ad
Signed-off-by: Scott Murray <scott.murray@konsulko.com>
|
|
Bug-AGL: SPEC-2745
Change-Id: I5ee9d3118a302f0edf5fe79a43590818d3d829c3
Signed-off-by: Li Xiaoming <lixm.fnst@cn.fujitsu.com>
|
|
Changes:
- Restore the previous Gstreamer pipeline code that used the Si4689
ALSA input device as a source sink, now with an appropriate PipeWire
output sink. This will be required until PipeWire adds some form
of loopback service, which could be used instead.
- Remove usage of the si_init script, as the sysfs accesses it performs
cannot obviously be enabled via SMACK labelling in a safe fashion.
Since the Si4689 on the KF will not work without the reset toggling
done in si_init, the script is now called at boot by a systemd service
added in a corresponding change in meta-agl-bsp.
Bug-AGL: SPEC-2716
Signed-off-by: Scott Murray <scott.murray@konsulko.com>
Change-Id: I5c5007d809efd4144dd5fbb25d1c07cfe1ff2b8f
|
|
This native pipewire sink has better performance and allows
1) properly selecting the role of the app
2) proper handling of the situation where another app with
higher priority has taken over the audio stream
Bug-AGL: SPEC-2634
Signed-off-by: George Kiagiadakis <george.kiagiadakis@collabora.com>
Change-Id: I9d0ea9ff475817c0944dd7c2b6d153f149abc957
|
|
Bug-AGL: SPEC-2473
Signed-off-by: George Kiagiadakis <george.kiagiadakis@collabora.com>
Change-Id: I320be57ce48a63c7e85b8daebf7b094423f580f9
|
|
The actual code does not need to change for the moment.
GStreamer alsasink will redirect the stream to pipewire.
Bug-AGL: SPEC-2473
Change-Id: Ibd791cc8fc4ec8f2c7ddaba82aac1de143856324
Signed-off-by: George Kiagiadakis <george.kiagiadakis@collabora.com>
|
|
Bug-AGL: SPEC-2473
Change-Id: I89f754bd83687159c3aecb3074cba4fcf16c7d37
Signed-off-by: George Kiagiadakis <george.kiagiadakis@collabora.com>
|
|
Bug-AGL: SPEC-2473
Change-Id: Idade62b5e0248d1a2e9e9387696a5df012f6953f
Signed-off-by: George Kiagiadakis <george.kiagiadakis@collabora.com>
|
|
The non-4A codepaths were totally broken here
Bug-AGL: SPEC-2473
Change-Id: I1c3c49688566684455bf9522f68f506eaf6aa6c3
Signed-off-by: George Kiagiadakis <george.kiagiadakis@collabora.com>
|
|
Add a status event to indicate playing versus stopped state, this
allows users to detect when the binding has been stopped by another
user.
Change-Id: I4c1256427f0113b535e12a2dbc121d45c93dc0dd
Signed-off-by: Scott Murray <scott.murray@konsulko.com>
(cherry picked from commit a2fdf6e139207e7b0e0270c8a167c6a30c8fe61d)
|
|
Rework things so that the 4A audio role is only opened while playing,
and closed when stopped. Further work will need to be done to handle
the possibility of the output device changing on subsequent opens,
both the RTL SDR and Kingfisher case have complications around doing
so:
- The RTL SDR helper application needs to be enhanced to add an
output setting command. Killing it and starting it again would
also work, but likely will add noticeable UI latency.
- On the Kingfisher, the binding currently has no control over the
output used for the loopback, as it is being set up down in the
soft-mixer based on HAL values.
Change-Id: I4aa83c937972ec5d91f7b78421a11148c7fe0afc
Signed-off-by: Scott Murray <scott.murray@konsulko.com>
(cherry picked from commit f1d5902c92eafd3aad62e29298502603a9b56d81)
|
|
The build needs libusb-1.0. Everything foes right when building
for Yocto, that already and likely has the needed things.
Issue seen when building for a linux host.
The missing check did not point out the need for libusb-1.0-devel
Change-Id: I7440e2d9ca21232d11e5cabafc79b383092e8890
Signed-off-by: Thierry Bultel <thierry.bultel@iot.bzh>
|
|
Changed the api call for getting an audio role.
Mapped the stop/start operations to mute/unmute
actions on role verb.
No longer uses a gstreamer pipeline for the sound
output, since it is 4a-softmixer that performs
the read/write loop instead.
Change-Id: I91e4f801a0da866c50b2218622e810d7350ab8a9
Signed-off-by: Thierry Bultel <thierry.bultel@iot.bzh>
|
|
Added a verb to retrieve the RDS information.
Notice that it is only supported on the kingfisher
implementation.
Change-Id: I0e2a830ff77154eb8cbb780bb599fb49f71a5b1c
Signed-off-by: Thierry Bultel <thierry.bultel@iot.bzh>
|
|
Setting AFB_BINDING_VERSION is cmake makes merges
easier between branches, since it is always defined
once at a single place instead that in each file
that need it.
Also removed the "INSTALL" section with LIBRARY_DESTINATION
since it is now treated in app-templates.
Change-Id: I7ef5f3b4d2009ab6ec296ac70bfc0a5647f9534c
Signed-off-by: Thierry Bultel <thierry.bultel@iot.bzh>
|
|
and fixes some complication warnings
Change-Id: I3e9031eb215c3331ffb2264afad5ff07fca2bb46
Signed-off-by: Thierry Bultel <thierry.bultel@iot.bzh>
|
|
Fixed all the compilation warning that appeared
with the latest version of gcc.
There are still warnings in the gstreamer headers,
that would likely be fixed by a gstreamer bump.
Change-Id: I3ae7698dbff47303be366d9755a643a013bb4e51
Signed-off-by: Thierry Bultel <thierry.bultel@iot.bzh>
|
|
When building for 4A, switch to new gstreamer-based ALSA output for
the RTL-SDR backend, and the Kingfisher backend now uses a gstreamer
pipeline for its loopback to either an ALSA or Pulse sink depending
on 4A or not. Using gstreamer instead of direct ALSA output has the
benefit of transparently handling resampling to the M3ULCB hardware's
required 48 KHz sample rate for the RTL-SDR backend.
Change-Id: I2bfbf924927bb461cce88b04aba0e626f8d71215
Signed-off-by: Scott Murray <scott.murray@konsulko.com>
|
|
To avoid the GPL licensed code in rtl_fm.c making all of the binding
GPL, rework things to wrap it with a simple standalone helper
executable that is driven via stdin/stdout. While this could
potentially be done by running the original unmodified rtl_fm utility
itself, it would be impossible to implement scanning with that
approach without some compromising of playback latency and quality.
The current helper implementation is simple enough that replacing it
with an alternate one should be relatively straightforward if that is
desired.
Change-Id: If83b834da3999f5807d1453524ae72b1c3559c90
Signed-off-by: Scott Murray <scott.murray@konsulko.com>
|
|
Make Kingfisher support unconditional to move all platform
detection to run-time. This fixes the issue of violating the
application build workflow with the SDK. Additionally, the
Kingfisher detection has been improved with an added check
for the Si4689 device-tree node to differentiate from a
regular M3ULCB, and the Kingfisher output has been fixed for
recent BSP changes.
Change-Id: I28e18a065385205aefec974079b0a9c2d31059b6
Signed-off-by: Scott Murray <scott.murray@konsulko.com>
|
|
Change-Id: Ic5130850f76db94d86fb94e904ac5f985cf0aa30
Signed-off-by: José Bollo <jose.bollo@iot.bzh>
|
|
The Si4689 radio chip I2C bus number has shifted from i2c-11 to i2c-12.
This updates I2C bus number in SI scripts accordingly.
Signed-off-by: Harunobu Kurokawa <harunobu.kurokawa.dn@renesas.com>
|
|
Add conditionally compilable support for the Si4689 radio on the
M3ULCB Kingfisher infotainment board. The codebase has been
refactored to allow multiple radio implementations, and when
Kingfisher support is enabled, the binding will first look for a
USB RTL-SDR adapter, then fallback to the Kingfisher Si4689 if
one is not found. This allows easily switching to a RTL-SDR
adapter if this initial Kingfisher support encounters issues.
The back end implementation relies on a patched version of the
"si_ctl" utility from Cogent Embedded's Kingfisher BSP changes.
The modifications to it add FM band plan selection and scanning
threshold tweaking for poor radio environments. Audio output is
achieved by looping the radio's PulseAudio source to the
appropriate sink depending on 4A or non-4A operation. For 4A
compatibility, the PulseAudio source is created if it does not
exist, which currently is the case due to PulseAudio's udev
module being disabled when 4A is enabled.
Additionally, the FM band plan for Japan has been corrected to go
to 95 MHz, and a README.md file has been added documenting the
optional configuration that can be done via /etc/xdg/AGL.conf for
band plan selection and scanning sensitivity.
Change-Id: I204906fed741d917fc3b8be962deadb4e59989db
Signed-off-by: Scott Murray <scott.murray@konsulko.com>
Signed-off-by: Harunobu Kurokawa <harunobu.kurokawa.dn@renesas.com>
|
|
Qmake is no longer used for building this service so remove
a lone .pro file
Change-Id: I984b0225d965a3163f920a2397988021bb8b4b44
Signed-off-by: Matt Ranostay <matt.ranostay@konsulko.com>
|
|
The returned value was presumed to be garbage.
Change-Id: I72997d267139cc89f5dd5d325fc0512f44859b90
Signed-off-by: José Bollo <jose.bollo@iot.bzh>
|
|
The check now return a status instead of exiting the
process.
Change-Id: I70bdeb4e4b3848a0c5e743a13aecec3ed8f98600
Signed-off-by: José Bollo <jose.bollo@iot.bzh>
|
|
Recent testing found that the verbs no longer work now with the
AFB_SESSION_CHECK flag set on them and the binding split out to be
standalone from the app. Since the radio does not really need the
concept of a session, switch to AFB_SESSION_NONE to get things
working, rather than add the extra infrastructure to enable session
support.
Change-Id: I9c022eaf7a18a1094b9afb7c6bddf1a8ebc9e875
Signed-off-by: Scott Murray <scott.murray@konsulko.com>
|
|
Update structures and function calls to afm binding framework
version 2 specs
Bug-AGL: SPEC-835
Change-Id: Ie9198c4fe035e2267a1098fac7995b60e65809ec
Signed-off-by: Matt Ranostay <matt.ranostay@konsulko.com>
|
|
Switch from qmake build system to cmake avoiding the unneeded
dependency of qt
Bug-AGL: SPEC-834
Change-Id: Ifcf43b8ebadf723ec0131beda7d96f705083a1c2
Signed-off-by: Matt Ranostay <matt.ranostay@konsulko.com>
|
|
Radio binding is now standalone so the qmake build scripts need
to be updated to reflect that
Bug-AGL: SPEC-832
Change-Id: Iab9cd5d18536e416d22d91c492ef489159a62d0d
Signed-off-by: Matt Ranostay <matt.ranostay@konsulko.com>
|