Fix for the loudspeaker becomes active again when a headset is unplugged
if it was on while the headset was connected to the phone.
Fix typo in Bluetooth in EventType enum.
Fix of the heap fragmentation issue that caused
phone crash when trying to play music files
while connecting USB cable in a certain order.
Audio stream buffering length was slightly
reduced, so that smaller contiguous block of
heap is required to store audio buffer.
Set of fixes for Bluetooth volume control issues:
* split OS volume from A2DP device volume;
* added translations for additional popup required
to indicate what volume is being set;
* fixed issue that on some devices setting the lowest
volume level would set the highest in reality;
* fixed Bluetooth auto-turnoff functionality;
* minor code cleanup.
Additional pair of parameters has been added
to current implementation of equalizer to
enable changing playback path gain during
audio path fine-tuning
This allows for imporing the audio profile setitngs, including
EQ settings from the json file, thus allowing modification of
those setitngs without the need of recompiling the source code.
Fixed HSP sound quality issues:
- fixed HF caused by invalid output block size during interpolation of
the bluetooth input,
- increased block size to increase time send interval to 8ms
Fixed issue with error handling when writing to overflowed stream.
Signed-off-by: Marcin Smoczyński <smoczynski.marcin@gmail.com>
Split module-utils into smaller components for better dependency
management. Fix many dependencies throughout the project.
Signed-off-by: Marcin Smoczyński <smoczynski.marcin@gmail.com>
Add voice transcoding during phone call with two basic transforms:
- sample rate downscaling by a factor of 2 with a decimator
- sample rate upscaling by a factor of 2 with an interpolator (no
low-pass filter)
Signed-off-by: Marcin Smoczyński <smoczynski.marcin@gmail.com>
This refactoring removes invalid interface dependencies of the original
AudioDevice implementation:
- move things characteristic to RT1051AudioCodec to audio::codec
- remove dead methods
- make start/stop optional and codec configuration independent
- add more convenient way to get supported formats
Signed-off-by: Marcin Smoczyński <smoczynski.marcin@gmail.com>
Replace faulty implementation which produced ambiguous results with one
which is suited for both phone calls and music playback requirements,
including A2DP and HSP Bluetooth profiles.
Signed-off-by: Marcin Smoczyński <smoczynski.marcin@gmail.com>
Add basic interpolator and decimator to change sample rates by a factor
of a prime number. Interpolator repeats samples forming a stair signal,
while decimator drops excessive samples.
Templates have been used to utilize fast integer operations contrary to
byte-by-byte operations for number of bit width vs channel count
combinations.
Signed-off-by: Marcin Smoczyński <smoczynski.marcin@gmail.com>
Add a mechanism to apply a data transform on the stream's input. An
example mono to stereo transform is provided.
Signed-off-by: Marcin Smoczyński <smoczynski.marcin@gmail.com>
Added volume control feedback during music playback over Bluetooth.
Changed volume buttons handler logic in service audio to use actions
instead of messages.
Refactored Audio settings API.
Moved phone modes logic from serivce audio to service clients level.
Removed redundant API.
Seprated API for vibration and sound enable/disable.
Fixed issues with vibrations logic.
Check if decoder's file format is supported by the sink audio device
before playing the sound. Add list of supported formats to each of audio
devices.
Signed-off-by: Marcin Smoczyński <smoczynski.marcin@gmail.com>
Due to an error in the stream's block reservation, when the stream was
full, SAI was trying to read data to an unitialized data span randomly
disabling audio channel.
Fix the problem by overwriting data after the peek position, always
returning valid data span.
Signed-off-by: Marcin Smoczyński <smoczynski.marcin@gmail.com>
Bluetooth audio device requires different handling than other
audio devices. The commit adds proxy device that does not
handle requests itself but instead sends requests too Bluetooth
service.
Refactor audio module to use only one callback for communication
with audio service. This also simplifies the logic and removes
necessity to define defaults for audio values in multiple places.
Refactor audio data path to fix several synchronization issues and
excessive copy operations on large memory blocks. Introduce
audio::Stream data structure to allow connecting audio source and sink
with a zero-copy capability.
Introduce system mechanisms:
- critical section guard lock needed for stream synchronization
- non-cacheable memory allocator to allocate memory for DMA safe
buffers
Update the Googletest CMake template to match the capabilities of the
Catch2 template.
Signed-off-by: Marcin Smoczyński <smoczynski.marcin@gmail.com>
Signed-off-by: Hubert Chrzaniuk <hubert.chrzaniuk@mudita.com>
* [EGD-4075] Use FAT fs in the emulator
Add script for genrate base phone image
* [EGD-4075] Use FreeRTOS-FAT in emulator initial commit
* [EGD-4075] Thread local storage fix
Fixing thread local storage when running on the
Linux platform in the test mode
* [EGD-4075] Improve image generation
Improve image generation script on the linux platform
* [EGD-4075] Fix all test with FAT fs image
Fix all tests with fatfs image
* [EGD-4075] Fix calculator utility test
* [EGD-4075] Image dependencies fix
* Remove uneeded comments
* Missing headers in CR
* [EGD-4075] Fixed whitespaces
Co-authored-by: Lucjan Bryndza <lucjan.bryndza@mudita.com>