mirror of
https://github.com/DarkFlippers/unleashed-firmware.git
synced 2024-12-22 12:51:39 +03:00
2dea6969fe
* Furi_hal_speaker: multiple resource usage * Furi_hal_speaker: fix multiple resource usage * Furi_hal_speaker: fix music_player_worker * Furi_hal_speaker: fix mutex release queue handling * SubGhz: add furi_hal_subghz_set_debug_pin * SubGhz: add sound SubGhz Read, SubGhz Read RAW * furi_hal_speaker: add __attribute__((warn_unused_result)) for furi_hal_speaker_acquire() * Furi_hal_speaker: fix review comments * SubGhz: cleanup naming and locking timings * SubGhz,FuriHal: fix speaker deinit logic and subghz speaker release sequence * FuriHal: crash on speaker acquire/release from IRQ * Furi, FuriHal: FURI_WARN_UNUSED and documentation update * Bump api symbols version: fix broken speaker Co-authored-by: Aleksandr Kutuzov <alleteam@gmail.com>
69 lines
1.3 KiB
C
69 lines
1.3 KiB
C
/**
|
|
* @file furi_hal_speaker.h
|
|
* Speaker HAL
|
|
*/
|
|
#pragma once
|
|
|
|
#include <furi.h>
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
/** Init speaker */
|
|
void furi_hal_speaker_init();
|
|
|
|
/** Deinit speaker */
|
|
void furi_hal_speaker_deinit();
|
|
|
|
/** Acquire speaker ownership
|
|
*
|
|
* @warning You must acquire speaker ownership before use
|
|
*
|
|
* @param timeout Timeout during which speaker ownership must be acquired
|
|
*
|
|
* @return bool returns true on success
|
|
*/
|
|
FURI_WARN_UNUSED bool furi_hal_speaker_acquire(uint32_t timeout);
|
|
|
|
/** Release speaker ownership
|
|
*
|
|
* @warning You must release speaker ownership after use
|
|
*/
|
|
void furi_hal_speaker_release();
|
|
|
|
/** Check current process speaker ownership
|
|
*
|
|
* @warning always returns true if called from ISR
|
|
*
|
|
* @return bool returns true if process owns speaker
|
|
*/
|
|
bool furi_hal_speaker_is_mine();
|
|
|
|
/** Play a note
|
|
*
|
|
* @warning no ownership check if called from ISR
|
|
*
|
|
* @param frequency The frequency
|
|
* @param volume The volume
|
|
*/
|
|
void furi_hal_speaker_start(float frequency, float volume);
|
|
|
|
/** Set volume
|
|
*
|
|
* @warning no ownership check if called from ISR
|
|
*
|
|
* @param volume The volume
|
|
*/
|
|
void furi_hal_speaker_set_volume(float volume);
|
|
|
|
/** Stop playback
|
|
*
|
|
* @warning no ownership check if called from ISR
|
|
*/
|
|
void furi_hal_speaker_stop();
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|