mirror of
https://github.com/sle118/squeezelite-esp32.git
synced 2025-12-08 12:37:01 +03:00
Apply volume correction factor for Bluetooth sink.
This commit is contained in:
@@ -22,6 +22,7 @@
|
||||
#include "squeezelite.h"
|
||||
#include "bt_app_sink.h"
|
||||
#include "raop_sink.h"
|
||||
#include <math.h>
|
||||
|
||||
#define LOCK_O mutex_lock(outputbuf->mutex)
|
||||
#define UNLOCK_O mutex_unlock(outputbuf->mutex)
|
||||
@@ -90,6 +91,8 @@ static void sink_data_handler(const uint8_t *data, uint32_t len)
|
||||
/****************************************************************************************
|
||||
* BT sink command handler
|
||||
*/
|
||||
|
||||
extern u16_t get_adjusted_volume(u16_t volume);
|
||||
static void bt_sink_cmd_handler(bt_sink_cmd_t cmd, ...)
|
||||
{
|
||||
va_list args;
|
||||
@@ -133,7 +136,7 @@ static void bt_sink_cmd_handler(bt_sink_cmd_t cmd, ...)
|
||||
break;
|
||||
case BT_SINK_VOLUME: {
|
||||
u16_t volume = (u16_t) va_arg(args, u32_t);
|
||||
volume *= 65536 / 128;
|
||||
volume = get_adjusted_volume(volume);
|
||||
set_volume(volume, volume);
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -193,7 +193,7 @@ $(document).ready(function(){
|
||||
console.log(xhr.status);
|
||||
console.log(thrownError);
|
||||
if (thrownError != '') showMessage(thrownError, 'ERROR');
|
||||
}
|
||||
},
|
||||
complete: function(response) {
|
||||
var returnedResponse = JSON.parse(response.responseText);
|
||||
console.log(response.responseText);
|
||||
@@ -210,7 +210,7 @@ $(document).ready(function(){
|
||||
console.log(xhr.status);
|
||||
console.log(thrownError);
|
||||
if (thrownError != '') showMessage(thrownError, 'ERROR');
|
||||
}
|
||||
},
|
||||
complete: function(response) {
|
||||
console.log('reboot call completed');
|
||||
|
||||
|
||||
@@ -43,6 +43,7 @@
|
||||
#include "trace.h"
|
||||
#include "wifi_manager.h"
|
||||
#include "squeezelite-ota.h"
|
||||
#include <math.h>
|
||||
|
||||
static EventGroupHandle_t wifi_event_group;
|
||||
bool enable_bt_sink=false;
|
||||
@@ -153,6 +154,21 @@ char * process_ota_url(){
|
||||
//CONFIG_A2DP_CONTROL_DELAY_MS=500
|
||||
//CONFIG_A2DP_CONNECT_TIMEOUT_MS=1000
|
||||
//CONFIG_WIFI_MANAGER_MAX_RETRY=2
|
||||
u16_t get_adjusted_volume(u16_t volume){
|
||||
|
||||
char * str_factor = get_nvs_value_alloc_default(NVS_TYPE_STR, "volumefactor", "3", 0);
|
||||
if(str_factor != NULL ){
|
||||
|
||||
float factor = atof(str_factor);
|
||||
free(str_factor);
|
||||
return (u16_t) (65536.0f * powf( (volume/ 128.0f), factor) );
|
||||
}
|
||||
else {
|
||||
ESP_LOGW(TAG,"Error retrieving volume factor. Returning unmodified volume level. ");
|
||||
return volume;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void register_default_nvs(){
|
||||
nvs_value_set_default(NVS_TYPE_STR, "bt_sink_name", CONFIG_BT_NAME, 0);
|
||||
|
||||
Reference in New Issue
Block a user