|
@@ -1,104 +1,77 @@
|
|
|
-#include <signal.h>
|
|
|
-
|
|
|
-#include "sdkconfig.h"
|
|
|
-#include "esp_system.h"
|
|
|
-#include "squeezelite.h"
|
|
|
-#include <signal.h>
|
|
|
+#include <stdio.h>
|
|
|
+#include <string.h>
|
|
|
+#include <ctype.h>
|
|
|
+#include "esp_log.h"
|
|
|
+#include "esp_system.h"
|
|
|
#include <stdio.h>
|
|
|
#include <stdlib.h>
|
|
|
#include <unistd.h>
|
|
|
#include <string.h>
|
|
|
-
|
|
|
-#include "freertos/FreeRTOS.h"
|
|
|
-#include "freertos/task.h"
|
|
|
-#include "freertos/timers.h"
|
|
|
-#include "nvs.h"
|
|
|
-#include "nvs_flash.h"
|
|
|
-#include "esp_system.h"
|
|
|
-#include "esp_log.h"
|
|
|
-#include "perf_trace.h"
|
|
|
-
|
|
|
#include "esp_bt.h"
|
|
|
-#include "bt_app_core.h"
|
|
|
-#include "esp_bt_main.h"
|
|
|
#include "esp_bt_device.h"
|
|
|
+#include "esp_bt_main.h"
|
|
|
#include "esp_gap_bt_api.h"
|
|
|
#include "esp_a2dp_api.h"
|
|
|
#include "esp_avrc_api.h"
|
|
|
+#include "esp_console.h"
|
|
|
#include "esp_pthread.h"
|
|
|
+#include "esp_system.h"
|
|
|
+#include "esp_wifi.h"
|
|
|
+#include "freertos/FreeRTOS.h"
|
|
|
+#include "freertos/event_groups.h"
|
|
|
+#include "freertos/task.h"
|
|
|
+#include "freertos/timers.h"
|
|
|
+#include "nvs.h"
|
|
|
+#include "nvs_flash.h"
|
|
|
+#include "nvs_utilities.h"
|
|
|
#include "pthread.h"
|
|
|
+#include "string.h"
|
|
|
+//#include "esp_event.h"
|
|
|
+#include "sys/socket.h"
|
|
|
+#include <signal.h>
|
|
|
|
|
|
-const char * art_a2dp_connected[]={"\n\n",
|
|
|
- " ___ _____ _____ _____ _ _ _ \n",
|
|
|
- " /\\ |__ \\| __ \\| __ \\ / ____| | | | | |\n",
|
|
|
- " / \\ ) | | | | |__) | | | ___ _ __ _ __ ___ ___| |_ ___ __| | |\n",
|
|
|
- " / /\\ \\ / /| | | | ___/ | | / _ \\| '_ \\| '_ \\ / _ \\/ __| __/ _ \\/ _` | |\n",
|
|
|
- " / ____ \\ / /_| |__| | | | |___| (_) | | | | | | | __/ (__| || __/ (_| |_|\n",
|
|
|
- " /_/ \\_\\____|_____/|_| \\_____\\___/|_| |_|_| |_|\\___|\\___|\\__\\___|\\__,_(_)\n\n",
|
|
|
- "\0"};
|
|
|
-const char * art_a2dp_connecting[]= {"\n\n",
|
|
|
- " ___ _____ _____ _____ _ _ \n",
|
|
|
- " /\\ |__ \\| __ \\| __ \\ / ____| | | (_) \n",
|
|
|
- " / \\ ) | | | | |__) | | | ___ _ __ _ __ ___ ___| |_ _ _ __ __ _ \n",
|
|
|
- " / /\\ \\ / /| | | | ___/ | | / _ \\| '_ \\| '_ \\ / _ \\/ __| __| | '_ \\ / _` | \n",
|
|
|
- " / ____ \\ / /_| |__| | | | |___| (_) | | | | | | | __/ (__| |_| | | | | (_| |_ _ _ \n",
|
|
|
- " /_/ \\_\\____|_____/|_| \\_____\\___/|_| |_|_| |_|\\___|\\___|\\__|_|_| |_|\\__, (_|_|_)\n",
|
|
|
- " __/ | \n",
|
|
|
- " |___/ \n\n",
|
|
|
- "\0"};
|
|
|
+#include <signal.h>
|
|
|
+#include "platform_esp32.h"
|
|
|
+#include "../../main/squeezelite.h"
|
|
|
+#include "argtable3/argtable3.h"
|
|
|
+
|
|
|
+#define STATS_REPORT_DELAY_MS 15000
|
|
|
+static const char * TAG = "platform_esp32";
|
|
|
+extern char * get_output_state_desc(output_state state);
|
|
|
|
|
|
-char * get_output_state_desc(output_state state){
|
|
|
- switch (state) {
|
|
|
- case OUTPUT_OFF:
|
|
|
- return STR(OUTPUT_OFF);
|
|
|
- case OUTPUT_STOPPED:
|
|
|
- return STR(OUTPUT_STOPPED);
|
|
|
- case OUTPUT_BUFFER:
|
|
|
- return STR(OUTPUT_BUFFER);
|
|
|
- case OUTPUT_RUNNING:
|
|
|
- return STR(OUTPUT_RUNNING);
|
|
|
- case OUTPUT_PAUSE_FRAMES:
|
|
|
- return STR(OUTPUT_PAUSE_FRAMES);
|
|
|
- case OUTPUT_SKIP_FRAMES:
|
|
|
- return STR(OUTPUT_SKIP_FRAMES);
|
|
|
- case OUTPUT_START_AT:
|
|
|
- return STR(OUTPUT_START_AT);
|
|
|
- default:
|
|
|
- return "OUTPUT_UNKNOWN_STATE";
|
|
|
- }
|
|
|
- return "";
|
|
|
-}
|
|
|
-#define BT_AV_TAG "BT_AV"
|
|
|
-extern log_level loglevel;
|
|
|
extern struct outputstate output;
|
|
|
extern struct buffer *outputbuf;
|
|
|
-#ifdef USE_BT_RING_BUFFER
|
|
|
-#define LOCK_BT mutex_lock(btbuf->mutex)
|
|
|
-#define UNLOCK_BT mutex_unlock(btbuf->mutex)
|
|
|
-extern struct buffer *btbuf;
|
|
|
-#else
|
|
|
+extern struct buffer *streambuf;
|
|
|
extern uint8_t * btout;
|
|
|
-#endif
|
|
|
time_t disconnect_time=0;
|
|
|
-#define LOCK mutex_lock(outputbuf->mutex)
|
|
|
-#define UNLOCK mutex_unlock(outputbuf->mutex)
|
|
|
-int64_t connecting_timeout = 0;
|
|
|
+#define LOCK_S pthread_mutex_lock(&(streambuf->mutex))
|
|
|
+#define UNLOCK_S pthread_mutex_unlock(&(streambuf->mutex))
|
|
|
|
|
|
-#ifndef CONFIG_A2DP_SINK_NAME
|
|
|
-#define CONFIG_A2DP_SINK_NAME "btspeaker" // fix some compile errors when BT is not chosen
|
|
|
-#endif
|
|
|
-#ifndef CONFIG_A2DP_CONNECT_TIMEOUT_MS
|
|
|
-#define CONFIG_A2DP_CONNECT_TIMEOUT_MS 2000
|
|
|
-#endif
|
|
|
-#ifndef CONFIG_A2DP_DEV_NAME
|
|
|
-#define CONFIG_A2DP_DEV_NAME "espsqueezelite"
|
|
|
-#endif
|
|
|
-#ifndef CONFIG_A2DP_CONTROL_DELAY_MS
|
|
|
-#define CONFIG_A2DP_CONTROL_DELAY_MS 1000
|
|
|
-#endif
|
|
|
+#define LOCK pthread_mutex_lock(&(outputbuf->mutex))
|
|
|
+#define UNLOCK pthread_mutex_unlock(&(outputbuf->mutex))
|
|
|
+int64_t connecting_timeout = 0;
|
|
|
+static const char * art_a2dp_connected[]={"\n",
|
|
|
+ " ___ _____ _____ _____ _ _ _ ",
|
|
|
+ " /\\ |__ \\| __ \\| __ \\ / ____| | | | | |",
|
|
|
+ " / \\ ) | | | | |__) | | | ___ _ __ _ __ ___ ___| |_ ___ __| | |",
|
|
|
+ " / /\\ \\ / /| | | | ___/ | | / _ \\| '_ \\| '_ \\ / _ \\/ __| __/ _ \\/ _` | |",
|
|
|
+ " / ____ \\ / /_| |__| | | | |___| (_) | | | | | | | __/ (__| || __/ (_| |_|",
|
|
|
+ " /_/ \\_\\____|_____/|_| \\_____\\___/|_| |_|_| |_|\\___|\\___|\\__\\___|\\__,_(_)\n",
|
|
|
+ "\0"};
|
|
|
+static const char * art_a2dp_connecting[]= {"\n",
|
|
|
+ " ___ _____ _____ _____ _ _ ",
|
|
|
+ " /\\ |__ \\| __ \\| __ \\ / ____| | | (_) ",
|
|
|
+ " / \\ ) | | | | |__) | | | ___ _ __ _ __ ___ ___| |_ _ _ __ __ _ ",
|
|
|
+ " / /\\ \\ / /| | | | ___/ | | / _ \\| '_ \\| '_ \\ / _ \\/ __| __| | '_ \\ / _` | ",
|
|
|
+ " / ____ \\ / /_| |__| | | | |___| (_) | | | | | | | __/ (__| |_| | | | | (_| |_ _ _ ",
|
|
|
+ " /_/ \\_\\____|_____/|_| \\_____\\___/|_| |_|_| |_|\\___|\\___|\\__|_|_| |_|\\__, (_|_|_)",
|
|
|
+ " __/ | ",
|
|
|
+ " |___/ \n",
|
|
|
+ "\0"};
|
|
|
|
|
|
static void bt_app_av_state_connecting(uint16_t event, void *param);
|
|
|
|
|
|
+
|
|
|
#define A2DP_TIMER_INIT connecting_timeout = esp_timer_get_time() +(CONFIG_A2DP_CONNECT_TIMEOUT_MS * 1000)
|
|
|
#define IS_A2DP_TIMER_OVER esp_timer_get_time() >= connecting_timeout
|
|
|
|
|
@@ -106,12 +79,12 @@ static void bt_app_av_state_connecting(uint16_t event, void *param);
|
|
|
#define BYTES_TO_FRAME(b) b/BYTES_PER_FRAME
|
|
|
|
|
|
|
|
|
-#define RESET_ALL_MIN_MAX RESET_MIN_MAX(req); RESET_MIN_MAX(rec); RESET_MIN_MAX(bt);RESET_MIN_MAX_DURATION(lock_bt_time);RESET_MIN_MAX(under); RESET_MIN_MAX_DURATION(lock_out_time)
|
|
|
+#define RESET_ALL_MIN_MAX RESET_MIN_MAX(req); RESET_MIN_MAX(rec); RESET_MIN_MAX(bt);RESET_MIN_MAX(under); RESET_MIN_MAX_DURATION(stream_buf); RESET_MIN_MAX_DURATION(lock_out_time)
|
|
|
|
|
|
+DECLARE_MIN_MAX(stream_buf);
|
|
|
DECLARE_MIN_MAX(req);
|
|
|
DECLARE_MIN_MAX(rec);
|
|
|
DECLARE_MIN_MAX(bt);
|
|
|
-DECLARE_MIN_MAX_DURATION(lock_bt_time);
|
|
|
DECLARE_MIN_MAX(under);
|
|
|
DECLARE_MIN_MAX_DURATION(lock_out_time);
|
|
|
|
|
@@ -129,48 +102,6 @@ void *audio_calloc(size_t nmemb, size_t size) {
|
|
|
return calloc(nmemb, size);
|
|
|
}
|
|
|
|
|
|
-struct codec *register_mpg(void) {
|
|
|
- LOG_INFO("mpg unavailable");
|
|
|
- return NULL;
|
|
|
-}
|
|
|
-
|
|
|
-#if !CONFIG_INCLUDE_FAAD
|
|
|
-struct codec *register_faad(void) {
|
|
|
- LOG_INFO("aac unavailable");
|
|
|
- return NULL;
|
|
|
-}
|
|
|
-#endif
|
|
|
-
|
|
|
-#if !CONFIG_INCLUDE_MAD
|
|
|
-struct codec *register_mad(void) {
|
|
|
- LOG_INFO("mad unavailable");
|
|
|
- return NULL;
|
|
|
-}
|
|
|
-#endif
|
|
|
-
|
|
|
-#if !CONFIG_INCLUDE_FLAC
|
|
|
-struct codec *register_flac(void) {
|
|
|
- LOG_INFO("flac unavailable");
|
|
|
- return NULL;
|
|
|
-}
|
|
|
-#endif
|
|
|
-
|
|
|
-#if !CONFIG_INCLUDE_VORBIS
|
|
|
-struct codec *register_vorbis(void) {
|
|
|
- LOG_INFO("vorbis unavailable");
|
|
|
- return NULL;
|
|
|
-}
|
|
|
-#endif
|
|
|
-
|
|
|
-#if !CONFIG_INCLUDE_ALAC
|
|
|
-struct codec *register_alac(void) {
|
|
|
- LOG_INFO("alac unavailable");
|
|
|
- return NULL;
|
|
|
-}
|
|
|
-#endif
|
|
|
-
|
|
|
-#define LOG_DEBUG_EVENT(e) LOG_DEBUG("evt: " STR(e))
|
|
|
-#define LOG_SDEBUG_EVENT(e) LOG_SDEBUG("evt: " STR(e))
|
|
|
|
|
|
/* event for handler "bt_av_hdl_stack_up */
|
|
|
enum {
|
|
@@ -239,36 +170,91 @@ static uint32_t s_pkt_cnt = 0;
|
|
|
|
|
|
static TimerHandle_t s_tmr;
|
|
|
|
|
|
-void hal_bluetooth_init(log_level level)
|
|
|
+static struct {
|
|
|
+ struct arg_str *sink_name;
|
|
|
+ struct arg_int *control_delay;
|
|
|
+ struct arg_int *connect_timeout_delay;
|
|
|
+ struct arg_end *end;
|
|
|
+} squeezelite_args;
|
|
|
+
|
|
|
+void hal_bluetooth_init(const char * options)
|
|
|
{
|
|
|
+ ESP_LOGD(TAG,"Initializing Bluetooth HAL");
|
|
|
+ //CONFIG_A2DP_SINK_NAME
|
|
|
+ //CONFIG_A2DP_CONTROL_DELAY_MS
|
|
|
+ //CONFIG_A2DP_CONNECT_TIMEOUT_MS
|
|
|
+
|
|
|
+ squeezelite_args.sink_name = arg_str1("n", "name", "<sink name>", "the name of the bluetooth to connect to");
|
|
|
+ squeezelite_args.control_delay = arg_int0("d", "delay", "<control delay>", "the delay between each pass at the A2DP control loop");
|
|
|
+ squeezelite_args.connect_timeout_delay = arg_int0("t","timeout", "<timeout>", "the timeout duration for connecting to the A2DP sink");
|
|
|
+ squeezelite_args.end = arg_end(2);
|
|
|
+
|
|
|
+
|
|
|
+ ESP_LOGD(TAG,"Copying parameters");
|
|
|
+ char * opts = strdup(options);
|
|
|
+ char **argv = malloc(sizeof(char**)*15);
|
|
|
+
|
|
|
+ size_t argv_size=15;
|
|
|
+
|
|
|
+ // change parms so ' appear as " for parsing the options
|
|
|
+ for (char* p = opts; (p = strchr(p, '\'')); ++p) *p = '"';
|
|
|
+ ESP_LOGD(TAG,"Splitting arg line: %s", opts);
|
|
|
+
|
|
|
+ argv_size = esp_console_split_argv(opts, argv, argv_size);
|
|
|
+ ESP_LOGD(TAG,"Parsing parameters");
|
|
|
+ int nerrors = arg_parse(argv_size , argv, (void **) &squeezelite_args);
|
|
|
+ if (nerrors != 0) {
|
|
|
+ ESP_LOGD(TAG,"Parsing Errors");
|
|
|
+ arg_print_errors(stdout, squeezelite_args.end, "BT");
|
|
|
+ arg_print_glossary_gnu(stdout, (void **) &squeezelite_args);
|
|
|
+ free(opts);
|
|
|
+ free(argv);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ if(squeezelite_args.sink_name->count == 0)
|
|
|
+ {
|
|
|
+ ESP_LOGD(TAG,"Using default sink name : %s",CONFIG_A2DP_SINK_NAME);
|
|
|
+ squeezelite_args.sink_name->sval[0] = CONFIG_A2DP_SINK_NAME;
|
|
|
+ }
|
|
|
+ if(squeezelite_args.connect_timeout_delay->count == 0)
|
|
|
+ {
|
|
|
+ ESP_LOGD(TAG,"Using default connect timeout");
|
|
|
+ squeezelite_args.connect_timeout_delay->ival[0]=CONFIG_A2DP_CONNECT_TIMEOUT_MS;
|
|
|
+ }
|
|
|
+ if(squeezelite_args.control_delay->count == 0)
|
|
|
+ {
|
|
|
+ ESP_LOGD(TAG,"Using default control delay");
|
|
|
+ squeezelite_args.control_delay->ival[0]=CONFIG_A2DP_CONTROL_DELAY_MS;
|
|
|
+ }
|
|
|
+ ESP_LOGD(TAG,"Freeing options");
|
|
|
+ free(argv);
|
|
|
+ free(opts);
|
|
|
|
|
|
/*
|
|
|
* Bluetooth audio source init Start
|
|
|
*/
|
|
|
- loglevel = level;
|
|
|
- bt_set_log_level(level);
|
|
|
//running_test = false;
|
|
|
ESP_ERROR_CHECK(esp_bt_controller_mem_release(ESP_BT_MODE_BLE));
|
|
|
|
|
|
esp_bt_controller_config_t bt_cfg = BT_CONTROLLER_INIT_CONFIG_DEFAULT();
|
|
|
|
|
|
if (esp_bt_controller_init(&bt_cfg) != ESP_OK) {
|
|
|
- LOG_ERROR("%s initialize controller failed\n", __func__);
|
|
|
+ ESP_LOGE(TAG,"%s initialize controller failed\n", __func__);
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
if (esp_bt_controller_enable(ESP_BT_MODE_CLASSIC_BT) != ESP_OK) {
|
|
|
- LOG_ERROR("%s enable controller failed\n", __func__);
|
|
|
+ ESP_LOGE(TAG,"%s enable controller failed\n", __func__);
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
if (esp_bluedroid_init() != ESP_OK) {
|
|
|
- LOG_ERROR("%s initialize bluedroid failed\n", __func__);
|
|
|
+ ESP_LOGE(TAG,"%s initialize bluedroid failed\n", __func__);
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
if (esp_bluedroid_enable() != ESP_OK) {
|
|
|
- LOG_ERROR("%s enable bluedroid failed\n", __func__);
|
|
|
+ ESP_LOGE(TAG,"%s enable bluedroid failed\n", __func__);
|
|
|
return;
|
|
|
}
|
|
|
/* create application task */
|
|
@@ -295,46 +281,6 @@ void hal_bluetooth_init(log_level level)
|
|
|
}
|
|
|
static int32_t bt_app_a2d_data_cb(uint8_t *data, int32_t len)
|
|
|
{
|
|
|
-#ifdef USE_BT_RING_BUFFER
|
|
|
- int32_t avail_data=0,wanted_len=0, start_timer=0;
|
|
|
-
|
|
|
- if (len < 0 || data == NULL ) {
|
|
|
- return 0;
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- // This is how the BTC layer calculates the number of bytes to
|
|
|
- // for us to send. (BTC_SBC_DEC_PCM_DATA_LEN * sizeof(OI_INT16) - availPcmBytes
|
|
|
- wanted_len=len;
|
|
|
- TIME_MEASUREMENT_START(start_timer);
|
|
|
- SET_MIN_MAX(len,req);
|
|
|
- LOCK_BT;
|
|
|
- SET_MIN_MAX_SIZED(_buf_used(btbuf),bt,btbuf->size);
|
|
|
- do {
|
|
|
-
|
|
|
- avail_data=min(_buf_cont_read(btbuf),wanted_len);
|
|
|
- if(avail_data>0){
|
|
|
- memcpy(data,btbuf->readp,avail_data);
|
|
|
- _buf_inc_readp(btbuf,avail_data);
|
|
|
- wanted_len-=avail_data;
|
|
|
- data+=avail_data;
|
|
|
- }
|
|
|
- else {
|
|
|
- assert(wanted_len>0);
|
|
|
- assert(avail_data==0);
|
|
|
- SET_MIN_MAX(wanted_len, under);
|
|
|
- }
|
|
|
- } while (wanted_len > 0 && avail_data != 0);
|
|
|
-
|
|
|
- UNLOCK_BT;
|
|
|
- SET_MIN_MAX(TIME_MEASUREMENT_GET(start_timer),lock_bt_time);
|
|
|
- SET_MIN_MAX((len-wanted_len), rec);
|
|
|
- TIME_MEASUREMENT_START(start_timer);
|
|
|
- output_bt_check_buffer();
|
|
|
- SET_MIN_MAX(TIME_MEASUREMENT_GET(start_timer),lock_out_time);
|
|
|
- return len-wanted_len;
|
|
|
-
|
|
|
-#else
|
|
|
int32_t avail_data=0,wanted_len=0, start_timer=0;
|
|
|
|
|
|
if (len < 0 || data == NULL ) {
|
|
@@ -350,7 +296,6 @@ static int32_t bt_app_a2d_data_cb(uint8_t *data, int32_t len)
|
|
|
LOCK;
|
|
|
SET_MIN_MAX_SIZED(_buf_used(outputbuf),bt,outputbuf->size);
|
|
|
do {
|
|
|
-
|
|
|
avail_data = _output_frames( wanted_len/BYTES_PER_FRAME )*BYTES_PER_FRAME; // Keep the transfer buffer full
|
|
|
wanted_len-=avail_data;
|
|
|
} while (wanted_len > 0 && avail_data != 0);
|
|
@@ -368,8 +313,6 @@ static int32_t bt_app_a2d_data_cb(uint8_t *data, int32_t len)
|
|
|
output_bt_check_buffer();
|
|
|
|
|
|
return len-wanted_len;
|
|
|
-
|
|
|
-#endif
|
|
|
}
|
|
|
static void bt_app_a2d_cb(esp_a2d_cb_event_t event, esp_a2d_cb_param_t *param)
|
|
|
{
|
|
@@ -389,48 +332,48 @@ void bt_app_gap_cb(esp_bt_gap_cb_event_t event, esp_bt_gap_cb_param_t *param)
|
|
|
{
|
|
|
if (s_a2d_state == APP_AV_STATE_DISCOVERED)
|
|
|
{
|
|
|
- LOG_INFO("Discovery completed. Ready to start connecting to %s. ",s_peer_bdname);
|
|
|
+ ESP_LOGI(TAG,"Discovery completed. Ready to start connecting to %s. ",s_peer_bdname);
|
|
|
s_a2d_state = APP_AV_STATE_UNCONNECTED;
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
// not discovered, continue to discover
|
|
|
- LOG_INFO("Device discovery failed, continue to discover...");
|
|
|
+ ESP_LOGI(TAG,"Device discovery failed, continue to discover...");
|
|
|
esp_bt_gap_start_discovery(ESP_BT_INQ_MODE_GENERAL_INQUIRY, 10, 0);
|
|
|
}
|
|
|
}
|
|
|
else if (param->disc_st_chg.state == ESP_BT_GAP_DISCOVERY_STARTED) {
|
|
|
- LOG_INFO("Discovery started.");
|
|
|
+ ESP_LOGI(TAG,"Discovery started.");
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- LOG_DEBUG("This shouldn't happen. Discovery has only 2 states (for now).");
|
|
|
+ ESP_LOGD(TAG,"This shouldn't happen. Discovery has only 2 states (for now).");
|
|
|
}
|
|
|
break;
|
|
|
}
|
|
|
case ESP_BT_GAP_RMT_SRVCS_EVT:
|
|
|
- LOG_DEBUG_EVENT(ESP_BT_GAP_RMT_SRVCS_EVT);
|
|
|
+ ESP_LOG_DEBUG_EVENT(TAG,ESP_BT_GAP_RMT_SRVCS_EVT);
|
|
|
break;
|
|
|
case ESP_BT_GAP_RMT_SRVC_REC_EVT:
|
|
|
- LOG_DEBUG_EVENT(ESP_BT_GAP_RMT_SRVC_REC_EVT);
|
|
|
+ ESP_LOG_DEBUG_EVENT(TAG,ESP_BT_GAP_RMT_SRVC_REC_EVT);
|
|
|
break;
|
|
|
case ESP_BT_GAP_AUTH_CMPL_EVT: {
|
|
|
if (param->auth_cmpl.stat == ESP_BT_STATUS_SUCCESS) {
|
|
|
- LOG_INFO("authentication success: %s", param->auth_cmpl.device_name);
|
|
|
+ ESP_LOGI(TAG,"authentication success: %s", param->auth_cmpl.device_name);
|
|
|
//esp_log_buffer_hex(param->auth_cmpl.bda, ESP_BD_ADDR_LEN);
|
|
|
} else {
|
|
|
- LOG_ERROR("authentication failed, status:%d", param->auth_cmpl.stat);
|
|
|
+ ESP_LOGE(TAG,"authentication failed, status:%d", param->auth_cmpl.stat);
|
|
|
}
|
|
|
break;
|
|
|
}
|
|
|
case ESP_BT_GAP_PIN_REQ_EVT: {
|
|
|
- LOG_INFO("ESP_BT_GAP_PIN_REQ_EVT min_16_digit:%d", param->pin_req.min_16_digit);
|
|
|
+ ESP_LOGI(TAG,"ESP_BT_GAP_PIN_REQ_EVT min_16_digit:%d", param->pin_req.min_16_digit);
|
|
|
if (param->pin_req.min_16_digit) {
|
|
|
- LOG_INFO("Input pin code: 0000 0000 0000 0000");
|
|
|
+ ESP_LOGI(TAG,"Input pin code: 0000 0000 0000 0000");
|
|
|
esp_bt_pin_code_t pin_code = {0};
|
|
|
esp_bt_gap_pin_reply(param->pin_req.bda, true, 16, pin_code);
|
|
|
} else {
|
|
|
- LOG_INFO("Input pin code: 1234");
|
|
|
+ ESP_LOGI(TAG,"Input pin code: 1234");
|
|
|
esp_bt_pin_code_t pin_code;
|
|
|
pin_code[0] = '1';
|
|
|
pin_code[1] = '2';
|
|
@@ -443,18 +386,18 @@ void bt_app_gap_cb(esp_bt_gap_cb_event_t event, esp_bt_gap_cb_param_t *param)
|
|
|
|
|
|
#if (CONFIG_BT_SSP_ENABLED == true)
|
|
|
case ESP_BT_GAP_CFM_REQ_EVT:
|
|
|
- LOG_INFO("ESP_BT_GAP_CFM_REQ_EVT Please compare the numeric value: %d", param->cfm_req.num_val);
|
|
|
+ ESP_LOGI(TAG,"ESP_BT_GAP_CFM_REQ_EVT Please compare the numeric value: %d", param->cfm_req.num_val);
|
|
|
esp_bt_gap_ssp_confirm_reply(param->cfm_req.bda, true);
|
|
|
break;
|
|
|
case ESP_BT_GAP_KEY_NOTIF_EVT:
|
|
|
- LOG_INFO("ESP_BT_GAP_KEY_NOTIF_EVT passkey:%d", param->key_notif.passkey);
|
|
|
+ ESP_LOGI(TAG,"ESP_BT_GAP_KEY_NOTIF_EVT passkey:%d", param->key_notif.passkey);
|
|
|
break;
|
|
|
- LOG_INFO("ESP_BT_GAP_KEY_REQ_EVT Please enter passkey!");
|
|
|
+ ESP_LOGI(TAG,"ESP_BT_GAP_KEY_REQ_EVT Please enter passkey!");
|
|
|
break;
|
|
|
#endif
|
|
|
|
|
|
default: {
|
|
|
- LOG_INFO("event: %d", event);
|
|
|
+ ESP_LOGI(TAG,"event: %d", event);
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
@@ -468,13 +411,13 @@ static void a2d_app_heart_beat(void *arg)
|
|
|
|
|
|
static void bt_app_av_sm_hdlr(uint16_t event, void *param)
|
|
|
{
|
|
|
- //LOG_DEBUG("%s state %s, evt 0x%x, output state: %d", __func__, APP_AV_STATE_DESC[s_a2d_state], event, output.state);
|
|
|
+ //ESP_LOGD(TAG,"%s state %s, evt 0x%x, output state: %d", __func__, APP_AV_STATE_DESC[s_a2d_state], event, output.state);
|
|
|
switch (s_a2d_state) {
|
|
|
case APP_AV_STATE_DISCOVERING:
|
|
|
- LOG_SDEBUG("state %s, evt 0x%x, output state: %s", APP_AV_STATE_DESC[s_a2d_state], event, get_output_state_desc(output.state));
|
|
|
+ ESP_LOGV(TAG,"state %s, evt 0x%x, output state: %s", APP_AV_STATE_DESC[s_a2d_state], event, get_output_state_desc(output.state));
|
|
|
break;
|
|
|
case APP_AV_STATE_DISCOVERED:
|
|
|
- LOG_SDEBUG("state %s, evt 0x%x, output state: %s", APP_AV_STATE_DESC[s_a2d_state], event, get_output_state_desc(output.state));
|
|
|
+ ESP_LOGV(TAG,"state %s, evt 0x%x, output state: %s", APP_AV_STATE_DESC[s_a2d_state], event, get_output_state_desc(output.state));
|
|
|
break;
|
|
|
case APP_AV_STATE_UNCONNECTED:
|
|
|
bt_app_av_state_unconnected(event, param);
|
|
@@ -489,7 +432,7 @@ static void bt_app_av_sm_hdlr(uint16_t event, void *param)
|
|
|
bt_app_av_state_disconnecting(event, param);
|
|
|
break;
|
|
|
default:
|
|
|
- LOG_ERROR("%s invalid state %d", __func__, s_a2d_state);
|
|
|
+ ESP_LOGE(TAG,"%s invalid state %d", __func__, s_a2d_state);
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
@@ -536,7 +479,7 @@ static bool get_name_from_eir(uint8_t *eir, uint8_t *bdname, uint8_t *bdname_len
|
|
|
|
|
|
return false;
|
|
|
}
|
|
|
-#define LOG_INFO_NO_LF(fmt, ...) if (loglevel >= lINFO) logprint(fmt, ##__VA_ARGS__)
|
|
|
+
|
|
|
static void filter_inquiry_scan_result(esp_bt_gap_cb_param_t *param)
|
|
|
{
|
|
|
char bda_str[18];
|
|
@@ -547,27 +490,27 @@ static void filter_inquiry_scan_result(esp_bt_gap_cb_param_t *param)
|
|
|
esp_bt_gap_dev_prop_t *p;
|
|
|
memset(s_peer_bdname, 0x00,sizeof(s_peer_bdname));
|
|
|
|
|
|
- LOG_INFO("\n=======================\nScanned device: %s", bda2str(param->disc_res.bda, bda_str, 18));
|
|
|
+ ESP_LOGI(TAG,"\n=======================\nScanned device: %s", bda2str(param->disc_res.bda, bda_str, 18));
|
|
|
for (int i = 0; i < param->disc_res.num_prop; i++) {
|
|
|
p = param->disc_res.prop + i;
|
|
|
switch (p->type) {
|
|
|
case ESP_BT_GAP_DEV_PROP_COD:
|
|
|
cod = *(uint32_t *)(p->val);
|
|
|
- LOG_INFO_NO_LF("\n-- Class of Device: 0x%x", cod);
|
|
|
+ ESP_LOGI(TAG,"-- Class of Device: 0x%x", cod);
|
|
|
break;
|
|
|
case ESP_BT_GAP_DEV_PROP_RSSI:
|
|
|
rssi = *(int8_t *)(p->val);
|
|
|
- LOG_INFO_NO_LF("\n-- RSSI: %d", rssi);
|
|
|
+ ESP_LOGI(TAG,"-- RSSI: %d", rssi);
|
|
|
break;
|
|
|
case ESP_BT_GAP_DEV_PROP_EIR:
|
|
|
eir = (uint8_t *)(p->val);
|
|
|
- LOG_INFO_NO_LF("\n-- EIR: %d", eir);
|
|
|
+ ESP_LOGI(TAG,"-- EIR: %u", *eir);
|
|
|
break;
|
|
|
case ESP_BT_GAP_DEV_PROP_BDNAME:
|
|
|
nameLen = (p->len > ESP_BT_GAP_MAX_BDNAME_LEN) ? ESP_BT_GAP_MAX_BDNAME_LEN : (uint8_t)p->len;
|
|
|
memcpy(s_peer_bdname, (uint8_t *)(p->val), nameLen);
|
|
|
s_peer_bdname[nameLen] = '\0';
|
|
|
- LOG_INFO_NO_LF("\n-- Name: %s", s_peer_bdname);
|
|
|
+ ESP_LOGI(TAG,"-- Name: %s", s_peer_bdname);
|
|
|
break;
|
|
|
default:
|
|
|
break;
|
|
@@ -575,40 +518,40 @@ static void filter_inquiry_scan_result(esp_bt_gap_cb_param_t *param)
|
|
|
}
|
|
|
if (!esp_bt_gap_is_valid_cod(cod)){
|
|
|
/* search for device with MAJOR service class as "rendering" in COD */
|
|
|
- LOG_INFO_NO_LF("\n--Invalid class of device. Skipping.\n");
|
|
|
+ ESP_LOGI(TAG,"--Invalid class of device. Skipping.\n");
|
|
|
return;
|
|
|
}
|
|
|
else if (!(esp_bt_gap_get_cod_srvc(cod) & ESP_BT_COD_SRVC_RENDERING))
|
|
|
{
|
|
|
- LOG_INFO_NO_LF("\n--Not a rendering device. Skipping.\n");
|
|
|
+ ESP_LOGI(TAG,"--Not a rendering device. Skipping.\n");
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
|
|
|
/* search for device named "ESP_SPEAKER" in its extended inqury response */
|
|
|
if (eir) {
|
|
|
- LOG_INFO_NO_LF("\n--Getting details from eir.\n");
|
|
|
+ ESP_LOGI(TAG,"--Getting details from eir.\n");
|
|
|
get_name_from_eir(eir, s_peer_bdname, NULL);
|
|
|
- LOG_INFO_NO_LF("\n--Device name is %s\n",s_peer_bdname);
|
|
|
+ ESP_LOGI(TAG,"--Device name is %s\n",s_peer_bdname);
|
|
|
}
|
|
|
|
|
|
if (strcmp((char *)s_peer_bdname, CONFIG_A2DP_SINK_NAME) == 0) {
|
|
|
- LOG_INFO_NO_LF("Found a target device! address %s, name %s", bda_str, s_peer_bdname);
|
|
|
- LOG_INFO_NO_LF("\n=======================\n");
|
|
|
+ ESP_LOGI(TAG,"Found a target device! address %s, name %s", bda_str, s_peer_bdname);
|
|
|
+ ESP_LOGI(TAG,"=======================\n");
|
|
|
if(esp_bt_gap_cancel_discovery()!=ESP_ERR_INVALID_STATE)
|
|
|
{
|
|
|
- LOG_INFO("Cancel device discovery ...");
|
|
|
+ ESP_LOGI(TAG,"Cancel device discovery ...");
|
|
|
memcpy(s_peer_bda, param->disc_res.bda, ESP_BD_ADDR_LEN);
|
|
|
s_a2d_state = APP_AV_STATE_DISCOVERED;
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- LOG_ERROR("Cancel device discovery failed...");
|
|
|
+ ESP_LOGE(TAG,"Cancel device discovery failed...");
|
|
|
}
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- LOG_INFO("Not the device we are looking for. Continuing scan.");
|
|
|
+ ESP_LOGI(TAG,"Not the device we are looking for. Continuing scan.");
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -618,11 +561,11 @@ static void bt_av_hdl_stack_evt(uint16_t event, void *p_param)
|
|
|
|
|
|
switch (event) {
|
|
|
case BT_APP_EVT_STACK_UP: {
|
|
|
- LOG_INFO("BT Stack going up.");
|
|
|
+ ESP_LOGI(TAG,"BT Stack going up.");
|
|
|
/* set up device name */
|
|
|
char *dev_name = CONFIG_A2DP_DEV_NAME;
|
|
|
esp_bt_dev_set_device_name(dev_name);
|
|
|
- LOG_INFO("Preparing to connect to device: %s",CONFIG_A2DP_SINK_NAME);
|
|
|
+ ESP_LOGI(TAG,"Preparing to connect to device: %s",CONFIG_A2DP_SINK_NAME);
|
|
|
|
|
|
/* register GAP callback function */
|
|
|
esp_bt_gap_register_callback(bt_app_gap_cb);
|
|
@@ -636,7 +579,7 @@ static void bt_av_hdl_stack_evt(uint16_t event, void *p_param)
|
|
|
esp_bt_gap_set_scan_mode(ESP_BT_CONNECTABLE, ESP_BT_GENERAL_DISCOVERABLE);
|
|
|
|
|
|
/* start device discovery */
|
|
|
- LOG_INFO("Starting device discovery...");
|
|
|
+ ESP_LOGI(TAG,"Starting device discovery...");
|
|
|
s_a2d_state = APP_AV_STATE_DISCOVERING;
|
|
|
esp_bt_gap_start_discovery(ESP_BT_INQ_MODE_GENERAL_INQUIRY, 10, 0);
|
|
|
|
|
@@ -650,7 +593,7 @@ static void bt_av_hdl_stack_evt(uint16_t event, void *p_param)
|
|
|
break;
|
|
|
}
|
|
|
default:
|
|
|
- LOG_ERROR("%s unhandled evt %d", __func__, event);
|
|
|
+ ESP_LOGE(TAG,"%s unhandled evt %d", __func__, event);
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
@@ -681,19 +624,13 @@ static void bt_app_av_media_proc(uint16_t event, void *param)
|
|
|
esp_a2d_cb_param_t *a2d = NULL;
|
|
|
LOCK;
|
|
|
output_state out_state=output.state;
|
|
|
- unsigned start_frames = output.start_frames;
|
|
|
UNLOCK;
|
|
|
-#ifdef USE_BT_RING_BUFFER
|
|
|
- LOCK_BT;
|
|
|
- unsigned bt_buffer_used=_buf_used(btbuf);
|
|
|
- UNLOCK_BT;
|
|
|
-#endif
|
|
|
switch (s_media_state) {
|
|
|
case APP_AV_MEDIA_STATE_IDLE: {
|
|
|
if (event == BT_APP_HEART_BEAT_EVT) {
|
|
|
- if(out_state > OUTPUT_OFF)
|
|
|
+ if(out_state > OUTPUT_STOPPED)
|
|
|
{
|
|
|
- LOG_INFO("Output state is %s, a2dp media ready and connected. Checking if A2DP is ready.", get_output_state_desc(out_state));
|
|
|
+ ESP_LOGI(TAG,"Output state is %s, a2dp media ready and connected. Checking if A2DP is ready.", get_output_state_desc(out_state));
|
|
|
esp_a2d_media_ctrl(ESP_A2D_MEDIA_CTRL_CHECK_SRC_RDY);
|
|
|
}
|
|
|
|
|
@@ -702,7 +639,7 @@ static void bt_app_av_media_proc(uint16_t event, void *param)
|
|
|
if (a2d->media_ctrl_stat.cmd == ESP_A2D_MEDIA_CTRL_CHECK_SRC_RDY &&
|
|
|
a2d->media_ctrl_stat.status == ESP_A2D_MEDIA_CTRL_ACK_SUCCESS
|
|
|
) {
|
|
|
- LOG_INFO("a2dp media ready, waiting for media buffering ...");
|
|
|
+ ESP_LOGI(TAG,"a2dp media ready, waiting for media buffering ...");
|
|
|
s_media_state = APP_AV_MEDIA_STATE_BUFFERING;
|
|
|
}
|
|
|
}
|
|
@@ -715,37 +652,25 @@ static void bt_app_av_media_proc(uint16_t event, void *param)
|
|
|
case OUTPUT_PAUSE_FRAMES :
|
|
|
case OUTPUT_SKIP_FRAMES:
|
|
|
case OUTPUT_START_AT:
|
|
|
-#ifndef USE_BT_RING_BUFFER
|
|
|
case OUTPUT_BUFFER:
|
|
|
-#endif
|
|
|
// Buffer is ready, local buffer has some data, start playback!
|
|
|
- LOG_INFO("Buffering complete, out state is %s, a2dp media ready and connected. Starting playback! ", get_output_state_desc(out_state));
|
|
|
+ ESP_LOGI(TAG,"Out state is %s, a2dp media ready and connected. Starting playback! ", get_output_state_desc(out_state));
|
|
|
s_media_state = APP_AV_MEDIA_STATE_STARTING;
|
|
|
esp_a2d_media_ctrl(ESP_A2D_MEDIA_CTRL_START);
|
|
|
-#ifdef USE_BT_RING_BUFFER
|
|
|
- break;
|
|
|
-
|
|
|
- case OUTPUT_BUFFER:
|
|
|
-
|
|
|
- LOG_DEBUG("Buffering... BT Buffer: %d bytes. Start threshold: %u, ",bt_buffer_used, start_frames*BYTES_PER_FRAME);
|
|
|
-#endif
|
|
|
break;
|
|
|
case OUTPUT_STOPPED:
|
|
|
case OUTPUT_OFF:
|
|
|
- LOG_DEBUG("Output state is %s. Changing app status to ",get_output_state_desc(out_state));
|
|
|
+ ESP_LOGD(TAG,"Output state is %s. Changing app status to ",get_output_state_desc(out_state));
|
|
|
s_media_state = APP_AV_MEDIA_STATE_STOPPING;
|
|
|
esp_a2d_media_ctrl(ESP_A2D_MEDIA_CTRL_STOP);
|
|
|
-#ifdef USE_BT_RING_BUFFER
|
|
|
- output_bt_check_buffer();
|
|
|
-#endif
|
|
|
break;
|
|
|
default:
|
|
|
- LOG_ERROR("Unknown output status while waiting for buffering to complete %d",out_state);
|
|
|
+ ESP_LOGE(TAG,"Unknown output status while waiting for buffering to complete %d",out_state);
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
else{
|
|
|
- LOG_WARN("Received unknown event while in state APP_AV_MEDIA_STATE_BUFFERING");
|
|
|
+ ESP_LOGW(TAG,"Received unknown event while in state APP_AV_MEDIA_STATE_BUFFERING");
|
|
|
}
|
|
|
|
|
|
break;
|
|
@@ -757,11 +682,11 @@ static void bt_app_av_media_proc(uint16_t event, void *param)
|
|
|
a2d = (esp_a2d_cb_param_t *)(param);
|
|
|
if (a2d->media_ctrl_stat.cmd == ESP_A2D_MEDIA_CTRL_START &&
|
|
|
a2d->media_ctrl_stat.status == ESP_A2D_MEDIA_CTRL_ACK_SUCCESS) {
|
|
|
- LOG_INFO("a2dp media started successfully.");
|
|
|
+ ESP_LOGI(TAG,"a2dp media started successfully.");
|
|
|
s_media_state = APP_AV_MEDIA_STATE_STARTED;
|
|
|
} else {
|
|
|
// not started succesfully, transfer to idle state
|
|
|
- LOG_INFO("a2dp media start failed.");
|
|
|
+ ESP_LOGI(TAG,"a2dp media start failed.");
|
|
|
s_media_state = APP_AV_MEDIA_STATE_IDLE;
|
|
|
}
|
|
|
}
|
|
@@ -770,35 +695,36 @@ static void bt_app_av_media_proc(uint16_t event, void *param)
|
|
|
case APP_AV_MEDIA_STATE_STARTED: {
|
|
|
if (event == BT_APP_HEART_BEAT_EVT) {
|
|
|
if(out_state <= OUTPUT_STOPPED) {
|
|
|
- LOG_INFO("Output state is stopped. Stopping a2dp media ...");
|
|
|
+ ESP_LOGI(TAG,"Output state is stopped. Stopping a2dp media ...");
|
|
|
s_media_state = APP_AV_MEDIA_STATE_STOPPING;
|
|
|
esp_a2d_media_ctrl(ESP_A2D_MEDIA_CTRL_STOP);
|
|
|
-#ifdef USE_BT_RING_BUFFER
|
|
|
- output_bt_check_buffer();
|
|
|
-#endif
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
+ LOCK_S;
|
|
|
+ SET_MIN_MAX_SIZED(_buf_used(streambuf),stream_buf,streambuf->size);
|
|
|
+ UNLOCK_S;
|
|
|
static time_t lastTime=0;
|
|
|
if (lastTime <= gettime_ms() )
|
|
|
{
|
|
|
lastTime = gettime_ms() + 15000;
|
|
|
- LOG_DEBUG( " +==========+==========+================+=====+================+");
|
|
|
- LOG_DEBUG( " | max | min | average | avg | count |");
|
|
|
- LOG_DEBUG( " | (bytes) | (bytes) | (bytes) | pct | |");
|
|
|
- LOG_DEBUG( " +==========+==========+================+=====+================+");
|
|
|
- LOG_DEBUG(LINE_MIN_MAX_FORMAT,LINE_MIN_MAX("available",bt));
|
|
|
- LOG_DEBUG(LINE_MIN_MAX_FORMAT,LINE_MIN_MAX("requested",req));
|
|
|
- LOG_DEBUG(LINE_MIN_MAX_FORMAT,LINE_MIN_MAX("received",rec));
|
|
|
- LOG_DEBUG(LINE_MIN_MAX_FORMAT,LINE_MIN_MAX("underrun",under));
|
|
|
- LOG_DEBUG( " +==========+==========+================+=====+================+");
|
|
|
- LOG_DEBUG("\n");
|
|
|
- LOG_DEBUG(" ==========+==========+===========+===========+ ");
|
|
|
- LOG_DEBUG(" max (us) | min (us) | avg(us) | count | ");
|
|
|
- LOG_DEBUG(" ==========+==========+===========+===========+ ");
|
|
|
- LOG_DEBUG(LINE_MIN_MAX_DURATION_FORMAT,LINE_MIN_MAX_DURATION("BT Buf Lock",lock_bt_time));
|
|
|
- LOG_DEBUG(LINE_MIN_MAX_DURATION_FORMAT,LINE_MIN_MAX_DURATION("Out Buf Lock",lock_out_time));
|
|
|
- LOG_DEBUG(" ==========+==========+===========+===========+");
|
|
|
+ ESP_LOGD(TAG, "Statistics over %u secs. " , STATS_REPORT_DELAY_MS/1000);
|
|
|
+ ESP_LOGD(TAG, " +==========+==========+================+=====+================+");
|
|
|
+ ESP_LOGD(TAG, " | max | min | average | avg | count |");
|
|
|
+ ESP_LOGD(TAG, " | (bytes) | (bytes) | (bytes) | pct | |");
|
|
|
+ ESP_LOGD(TAG, " +==========+==========+================+=====+================+");
|
|
|
+ ESP_LOGD(TAG,LINE_MIN_MAX_FORMAT,LINE_MIN_MAX("stream avl",stream_buf));
|
|
|
+ ESP_LOGD(TAG,LINE_MIN_MAX_FORMAT,LINE_MIN_MAX("output avl",bt));
|
|
|
+ ESP_LOGD(TAG,LINE_MIN_MAX_FORMAT,LINE_MIN_MAX("requested",req));
|
|
|
+ ESP_LOGD(TAG,LINE_MIN_MAX_FORMAT,LINE_MIN_MAX("received",rec));
|
|
|
+ ESP_LOGD(TAG,LINE_MIN_MAX_FORMAT,LINE_MIN_MAX("underrun",under));
|
|
|
+ ESP_LOGD(TAG, " +==========+==========+================+=====+================+");
|
|
|
+ ESP_LOGD(TAG,"\n");
|
|
|
+ ESP_LOGD(TAG," ==========+==========+===========+===========+ ");
|
|
|
+ ESP_LOGD(TAG," max (us) | min (us) | avg(us) | count | ");
|
|
|
+ ESP_LOGD(TAG," ==========+==========+===========+===========+ ");
|
|
|
+ ESP_LOGD(TAG,LINE_MIN_MAX_DURATION_FORMAT,LINE_MIN_MAX_DURATION("Out Buf Lock",lock_out_time));
|
|
|
+ ESP_LOGD(TAG," ==========+==========+===========+===========+");
|
|
|
RESET_ALL_MIN_MAX;
|
|
|
}
|
|
|
|
|
@@ -807,12 +733,12 @@ static void bt_app_av_media_proc(uint16_t event, void *param)
|
|
|
break;
|
|
|
}
|
|
|
case APP_AV_MEDIA_STATE_STOPPING: {
|
|
|
- LOG_DEBUG_EVENT(APP_AV_MEDIA_STATE_STOPPING);
|
|
|
+ ESP_LOG_DEBUG_EVENT(TAG,APP_AV_MEDIA_STATE_STOPPING);
|
|
|
if (event == ESP_A2D_MEDIA_CTRL_ACK_EVT) {
|
|
|
a2d = (esp_a2d_cb_param_t *)(param);
|
|
|
if (a2d->media_ctrl_stat.cmd == ESP_A2D_MEDIA_CTRL_STOP &&
|
|
|
a2d->media_ctrl_stat.status == ESP_A2D_MEDIA_CTRL_ACK_SUCCESS) {
|
|
|
- LOG_INFO("a2dp media stopped successfully...");
|
|
|
+ ESP_LOGI(TAG,"a2dp media stopped successfully...");
|
|
|
//s_media_state = APP_AV_MEDIA_STATE_WAIT_DISCONNECT;
|
|
|
// if(CONFIG_A2DP_DISCONNECT_MS==0){
|
|
|
// we're not going to disconnect.
|
|
@@ -824,7 +750,7 @@ static void bt_app_av_media_proc(uint16_t event, void *param)
|
|
|
// s_media_state = APP_AV_MEDIA_STATE_WAIT_DISCONNECT;
|
|
|
// }
|
|
|
} else {
|
|
|
- LOG_INFO("a2dp media stopping...");
|
|
|
+ ESP_LOGI(TAG,"a2dp media stopping...");
|
|
|
esp_a2d_media_ctrl(ESP_A2D_MEDIA_CTRL_STOP);
|
|
|
}
|
|
|
}
|
|
@@ -848,7 +774,7 @@ static void bt_app_av_state_unconnected(uint16_t event, void *param)
|
|
|
// UNLOCK;
|
|
|
switch (event) {
|
|
|
case ESP_A2D_CONNECTION_STATE_EVT:
|
|
|
- LOG_DEBUG_EVENT(ESP_A2D_CONNECTION_STATE_EVT);
|
|
|
+ ESP_LOG_DEBUG_EVENT(TAG,ESP_A2D_CONNECTION_STATE_EVT);
|
|
|
// this could happen if connection was established
|
|
|
// right after we timed out. Pass the call down to the connecting
|
|
|
// handler.
|
|
@@ -859,27 +785,27 @@ static void bt_app_av_state_unconnected(uint16_t event, void *param)
|
|
|
|
|
|
break;
|
|
|
case ESP_A2D_AUDIO_STATE_EVT:
|
|
|
- LOG_DEBUG_EVENT(ESP_A2D_AUDIO_STATE_EVT);
|
|
|
+ ESP_LOG_DEBUG_EVENT(TAG,ESP_A2D_AUDIO_STATE_EVT);
|
|
|
|
|
|
break;
|
|
|
case ESP_A2D_AUDIO_CFG_EVT:
|
|
|
- LOG_DEBUG_EVENT(ESP_A2D_AUDIO_CFG_EVT);
|
|
|
+ ESP_LOG_DEBUG_EVENT(TAG,ESP_A2D_AUDIO_CFG_EVT);
|
|
|
break;
|
|
|
case ESP_A2D_MEDIA_CTRL_ACK_EVT:
|
|
|
- LOG_DEBUG_EVENT(ESP_A2D_MEDIA_CTRL_ACK_EVT);
|
|
|
+ ESP_LOG_DEBUG_EVENT(TAG,ESP_A2D_MEDIA_CTRL_ACK_EVT);
|
|
|
break;
|
|
|
case BT_APP_HEART_BEAT_EVT: {
|
|
|
// uint8_t *p = s_peer_bda;
|
|
|
- // LOG_INFO("BT_APP_HEART_BEAT_EVT a2dp connecting to peer: %02x:%02x:%02x:%02x:%02x:%02x",p[0], p[1], p[2], p[3], p[4], p[5]);
|
|
|
+ // ESP_LOGI(TAG,"BT_APP_HEART_BEAT_EVT a2dp connecting to peer: %02x:%02x:%02x:%02x:%02x:%02x",p[0], p[1], p[2], p[3], p[4], p[5]);
|
|
|
switch (esp_bluedroid_get_status()) {
|
|
|
case ESP_BLUEDROID_STATUS_UNINITIALIZED:
|
|
|
- LOG_SDEBUG("BlueDroid Status is ESP_BLUEDROID_STATUS_UNINITIALIZED.");
|
|
|
+ ESP_LOGV(TAG,"BlueDroid Status is ESP_BLUEDROID_STATUS_UNINITIALIZED.");
|
|
|
break;
|
|
|
case ESP_BLUEDROID_STATUS_INITIALIZED:
|
|
|
- LOG_SDEBUG("BlueDroid Status is ESP_BLUEDROID_STATUS_INITIALIZED.");
|
|
|
+ ESP_LOGV(TAG,"BlueDroid Status is ESP_BLUEDROID_STATUS_INITIALIZED.");
|
|
|
break;
|
|
|
case ESP_BLUEDROID_STATUS_ENABLED:
|
|
|
- LOG_SDEBUG("BlueDroid Status is ESP_BLUEDROID_STATUS_ENABLED.");
|
|
|
+ ESP_LOGV(TAG,"BlueDroid Status is ESP_BLUEDROID_STATUS_ENABLED.");
|
|
|
break;
|
|
|
default:
|
|
|
break;
|
|
@@ -889,21 +815,21 @@ static void bt_app_av_state_unconnected(uint16_t event, void *param)
|
|
|
if(esp_a2d_source_connect(s_peer_bda)==ESP_OK) {
|
|
|
s_a2d_state = APP_AV_STATE_CONNECTING;
|
|
|
for(uint8_t l=0;art_a2dp_connecting[l][0]!='\0';l++){
|
|
|
- LOG_INFO_NO_LF("%s",art_a2dp_connecting[l]);
|
|
|
+ ESP_LOGI(TAG,"%s",art_a2dp_connecting[l]);
|
|
|
}
|
|
|
- LOG_INFO("********** A2DP CONNECTING TO %s", s_peer_bdname);
|
|
|
+ ESP_LOGI(TAG,"********** A2DP CONNECTING TO %s", s_peer_bdname);
|
|
|
A2DP_TIMER_INIT;
|
|
|
}
|
|
|
else {
|
|
|
// there was an issue connecting... continue to discover
|
|
|
- LOG_ERROR("Attempt at connecting failed, restart at discover...");
|
|
|
+ ESP_LOGE(TAG,"Attempt at connecting failed, restart at discover...");
|
|
|
esp_bt_gap_start_discovery(ESP_BT_INQ_MODE_GENERAL_INQUIRY, 10, 0);
|
|
|
// }
|
|
|
}
|
|
|
break;
|
|
|
}
|
|
|
default:
|
|
|
- LOG_ERROR("%s unhandled evt %d", __func__, event);
|
|
|
+ ESP_LOGE(TAG,"%s unhandled evt %d", __func__, event);
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
@@ -919,36 +845,36 @@ static void bt_app_av_state_connecting(uint16_t event, void *param)
|
|
|
s_a2d_state = APP_AV_STATE_CONNECTED;
|
|
|
s_media_state = APP_AV_MEDIA_STATE_IDLE;
|
|
|
for(uint8_t l=0;art_a2dp_connected[l][0]!='\0';l++){
|
|
|
- LOG_INFO_NO_LF("%s",art_a2dp_connected[l]);
|
|
|
+ ESP_LOGI(TAG,"%s",art_a2dp_connected[l]);
|
|
|
}
|
|
|
- LOG_DEBUG("Setting scan mode to ESP_BT_NON_CONNECTABLE, ESP_BT_NON_DISCOVERABLE");
|
|
|
+ ESP_LOGD(TAG,"Setting scan mode to ESP_BT_NON_CONNECTABLE, ESP_BT_NON_DISCOVERABLE");
|
|
|
esp_bt_gap_set_scan_mode(ESP_BT_NON_CONNECTABLE, ESP_BT_NON_DISCOVERABLE);
|
|
|
- LOG_DEBUG("Done setting scan mode. App state is now CONNECTED and media state IDLE.");
|
|
|
+ ESP_LOGD(TAG,"Done setting scan mode. App state is now CONNECTED and media state IDLE.");
|
|
|
} else if (a2d->conn_stat.state == ESP_A2D_CONNECTION_STATE_DISCONNECTED) {
|
|
|
s_a2d_state = APP_AV_STATE_UNCONNECTED;
|
|
|
}
|
|
|
break;
|
|
|
}
|
|
|
case ESP_A2D_AUDIO_STATE_EVT:
|
|
|
- LOG_DEBUG_EVENT(ESP_A2D_AUDIO_STATE_EVT);
|
|
|
+ ESP_LOG_DEBUG_EVENT(TAG,ESP_A2D_AUDIO_STATE_EVT);
|
|
|
break;
|
|
|
case ESP_A2D_AUDIO_CFG_EVT:
|
|
|
- LOG_DEBUG_EVENT(ESP_A2D_AUDIO_CFG_EVT);
|
|
|
+ ESP_LOG_DEBUG_EVENT(TAG,ESP_A2D_AUDIO_CFG_EVT);
|
|
|
break;
|
|
|
case ESP_A2D_MEDIA_CTRL_ACK_EVT:
|
|
|
- LOG_DEBUG_EVENT(ESP_A2D_MEDIA_CTRL_ACK_EVT);
|
|
|
+ ESP_LOG_DEBUG_EVENT(TAG,ESP_A2D_MEDIA_CTRL_ACK_EVT);
|
|
|
break;
|
|
|
case BT_APP_HEART_BEAT_EVT:
|
|
|
if (IS_A2DP_TIMER_OVER)
|
|
|
{
|
|
|
s_a2d_state = APP_AV_STATE_UNCONNECTED;
|
|
|
- LOG_ERROR("A2DP Connect time out! Setting state to Unconnected. ");
|
|
|
+ ESP_LOGE(TAG,"A2DP Connect time out! Setting state to Unconnected. ");
|
|
|
A2DP_TIMER_INIT;
|
|
|
}
|
|
|
- LOG_SDEBUG("BT_APP_HEART_BEAT_EVT");
|
|
|
+ ESP_LOGV(TAG,"BT_APP_HEART_BEAT_EVT");
|
|
|
break;
|
|
|
default:
|
|
|
- LOG_ERROR("%s unhandled evt %d", __func__, event);
|
|
|
+ ESP_LOGE(TAG,"%s unhandled evt %d", __func__, event);
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
@@ -961,14 +887,14 @@ static void bt_app_av_state_connected(uint16_t event, void *param)
|
|
|
case ESP_A2D_CONNECTION_STATE_EVT: {
|
|
|
a2d = (esp_a2d_cb_param_t *)(param);
|
|
|
if (a2d->conn_stat.state == ESP_A2D_CONNECTION_STATE_DISCONNECTED) {
|
|
|
- LOG_INFO("a2dp disconnected");
|
|
|
+ ESP_LOGI(TAG,"a2dp disconnected");
|
|
|
s_a2d_state = APP_AV_STATE_UNCONNECTED;
|
|
|
esp_bt_gap_set_scan_mode(ESP_BT_CONNECTABLE, ESP_BT_GENERAL_DISCOVERABLE);
|
|
|
}
|
|
|
break;
|
|
|
}
|
|
|
case ESP_A2D_AUDIO_STATE_EVT: {
|
|
|
- LOG_DEBUG_EVENT(ESP_A2D_AUDIO_STATE_EVT);
|
|
|
+ ESP_LOG_DEBUG_EVENT(TAG,ESP_A2D_AUDIO_STATE_EVT);
|
|
|
a2d = (esp_a2d_cb_param_t *)(param);
|
|
|
if (ESP_A2D_AUDIO_STATE_STARTED == a2d->audio_stat.state) {
|
|
|
s_pkt_cnt = 0;
|
|
@@ -977,20 +903,20 @@ static void bt_app_av_state_connected(uint16_t event, void *param)
|
|
|
}
|
|
|
case ESP_A2D_AUDIO_CFG_EVT:
|
|
|
// not suppposed to occur for A2DP source
|
|
|
- LOG_DEBUG_EVENT(ESP_A2D_AUDIO_CFG_EVT);
|
|
|
+ ESP_LOG_DEBUG_EVENT(TAG,ESP_A2D_AUDIO_CFG_EVT);
|
|
|
break;
|
|
|
case ESP_A2D_MEDIA_CTRL_ACK_EVT:{
|
|
|
- LOG_SDEBUG_EVENT(ESP_A2D_MEDIA_CTRL_ACK_EVT);
|
|
|
+ ESP_LOG_DEBUG_EVENT(TAG,ESP_A2D_MEDIA_CTRL_ACK_EVT);
|
|
|
bt_app_av_media_proc(event, param);
|
|
|
break;
|
|
|
}
|
|
|
case BT_APP_HEART_BEAT_EVT: {
|
|
|
- LOG_SDEBUG_EVENT(BT_APP_HEART_BEAT_EVT);
|
|
|
+ ESP_LOG_DEBUG_EVENT(TAG,BT_APP_HEART_BEAT_EVT);
|
|
|
bt_app_av_media_proc(event, param);
|
|
|
break;
|
|
|
}
|
|
|
default:
|
|
|
- LOG_ERROR("%s unhandled evt %d", __func__, event);
|
|
|
+ ESP_LOGE(TAG,"%s unhandled evt %d", __func__, event);
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
@@ -1000,29 +926,29 @@ static void bt_app_av_state_disconnecting(uint16_t event, void *param)
|
|
|
esp_a2d_cb_param_t *a2d = NULL;
|
|
|
switch (event) {
|
|
|
case ESP_A2D_CONNECTION_STATE_EVT: {
|
|
|
- LOG_DEBUG_EVENT(ESP_A2D_CONNECTION_STATE_EVT);
|
|
|
+ ESP_LOG_DEBUG_EVENT(TAG,ESP_A2D_CONNECTION_STATE_EVT);
|
|
|
a2d = (esp_a2d_cb_param_t *)(param);
|
|
|
if (a2d->conn_stat.state == ESP_A2D_CONNECTION_STATE_DISCONNECTED) {
|
|
|
- LOG_INFO("a2dp disconnected");
|
|
|
+ ESP_LOGI(TAG,"a2dp disconnected");
|
|
|
s_a2d_state = APP_AV_STATE_UNCONNECTED;
|
|
|
esp_bt_gap_set_scan_mode(ESP_BT_CONNECTABLE, ESP_BT_GENERAL_DISCOVERABLE);
|
|
|
}
|
|
|
break;
|
|
|
}
|
|
|
case ESP_A2D_AUDIO_STATE_EVT:
|
|
|
- LOG_DEBUG_EVENT(ESP_A2D_AUDIO_STATE_EVT);
|
|
|
+ ESP_LOG_DEBUG_EVENT(TAG,ESP_A2D_AUDIO_STATE_EVT);
|
|
|
break;
|
|
|
case ESP_A2D_AUDIO_CFG_EVT:
|
|
|
- LOG_DEBUG_EVENT(ESP_A2D_AUDIO_CFG_EVT);
|
|
|
+ ESP_LOG_DEBUG_EVENT(TAG,ESP_A2D_AUDIO_CFG_EVT);
|
|
|
break;
|
|
|
case ESP_A2D_MEDIA_CTRL_ACK_EVT:
|
|
|
- LOG_DEBUG_EVENT(ESP_A2D_MEDIA_CTRL_ACK_EVT);
|
|
|
+ ESP_LOG_DEBUG_EVENT(TAG,ESP_A2D_MEDIA_CTRL_ACK_EVT);
|
|
|
break;
|
|
|
case BT_APP_HEART_BEAT_EVT:
|
|
|
- LOG_DEBUG_EVENT(BT_APP_HEART_BEAT_EVT);
|
|
|
+ ESP_LOG_DEBUG_EVENT(TAG,BT_APP_HEART_BEAT_EVT);
|
|
|
break;
|
|
|
default:
|
|
|
- LOG_ERROR("%s unhandled evt %d", __func__, event);
|
|
|
+ ESP_LOGE(TAG,"%s unhandled evt %d", __func__, event);
|
|
|
break;
|
|
|
}
|
|
|
}
|