- change task priorities
- optimize time_sync_msg_cb() regarding execution speed - add some debug messages - change wifi tx buffer to static and change size Signed-off-by: Karl Osterseher <karli_o@gmx.at>
This commit is contained in:
@@ -13,7 +13,7 @@
|
||||
// size?!
|
||||
#define CHNK_CTRL_CNT 2
|
||||
|
||||
#define LATENCY_MEDIAN_FILTER_LEN 199 // 299 //499 // 199 // 29 // 99
|
||||
#define LATENCY_MEDIAN_FILTER_LEN 199
|
||||
|
||||
// set to 0 if you do not wish to be the median an average around actual
|
||||
// median average will be (LATENCY_MEDIAN_FILTER_LEN /
|
||||
@@ -22,8 +22,8 @@
|
||||
// reality n+1 samples will be averaged
|
||||
#define LATENCY_MEDIAN_AVG_DIVISOR 0
|
||||
|
||||
#define SHORT_BUFFER_LEN 199 // 99
|
||||
#define MINI_BUFFER_LEN 39 // 19
|
||||
#define SHORT_BUFFER_LEN 99
|
||||
#define MINI_BUFFER_LEN 19
|
||||
|
||||
typedef struct pcm_chunk_fragment pcm_chunk_fragment_t;
|
||||
struct pcm_chunk_fragment {
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
|
||||
#include <math.h>
|
||||
|
||||
#define SYNC_TASK_PRIORITY (configMAX_PRIORITIES - 1)
|
||||
#define SYNC_TASK_PRIORITY (configMAX_PRIORITIES - 2)
|
||||
#define SYNC_TASK_CORE_ID 1 // tskNO_AFFINITY
|
||||
|
||||
static const char *TAG = "PLAYER";
|
||||
@@ -1305,8 +1305,8 @@ static void player_task(void *pvParameters) {
|
||||
|
||||
const bool enableControlLoop = true;
|
||||
|
||||
const int64_t shortOffset = 8; // 20; //µs, softsync
|
||||
const int64_t miniOffset = 1; //µs, softsync
|
||||
const int64_t shortOffset = 2; // 8; // 20; //µs, softsync
|
||||
const int64_t miniOffset = 1; //µs, softsync
|
||||
const int64_t hardResyncThreshold = 10000; //µs, hard sync
|
||||
|
||||
if (initialSync == 1) {
|
||||
@@ -1386,9 +1386,18 @@ static void player_task(void *pvParameters) {
|
||||
usec = usec % 1000;
|
||||
// ESP_LOGI (TAG, "%d, %lldus, %lldus %llds, %lld.%lldms", dir, age,
|
||||
// avg, sec, msec, usec);
|
||||
// ESP_LOGI(TAG, "%d, %lldus, %lldus, %lldus", dir, avg,
|
||||
// shortMedian,
|
||||
// miniMedian);
|
||||
// ESP_LOGI(TAG, "%d, %lldus, %lldus, %lldus, q:%d", dir, avg,
|
||||
// shortMedian, miniMedian, uxQueueMessagesWaiting(pcmChkQHdl));
|
||||
// ESP_LOGI( TAG, "8b f %d b %d",
|
||||
// heap_caps_get_free_size(MALLOC_CAP_8BIT | MALLOC_CAP_INTERNAL),
|
||||
// heap_caps_get_largest_free_block
|
||||
// (MALLOC_CAP_8BIT |
|
||||
// MALLOC_CAP_INTERNAL));
|
||||
// ESP_LOGI( TAG, "32b f %d b %d",
|
||||
// heap_caps_get_free_size(MALLOC_CAP_32BIT | MALLOC_CAP_EXEC),
|
||||
// heap_caps_get_largest_free_block
|
||||
// (MALLOC_CAP_32BIT |
|
||||
// MALLOC_CAP_EXEC));
|
||||
}
|
||||
|
||||
dir = 0;
|
||||
|
||||
78
main/main.c
78
main/main.c
@@ -75,14 +75,14 @@ SemaphoreHandle_t decoderWriteSemaphore = NULL;
|
||||
|
||||
const char *VERSION_STRING = "0.0.2";
|
||||
|
||||
#define HTTP_TASK_PRIORITY (configMAX_PRIORITIES - 2) // 9
|
||||
#define HTTP_TASK_PRIORITY (configMAX_PRIORITIES - 1) // 9
|
||||
#define HTTP_TASK_CORE_ID 1 // 1 // tskNO_AFFINITY
|
||||
|
||||
#define OTA_TASK_PRIORITY 6
|
||||
#define OTA_TASK_CORE_ID tskNO_AFFINITY // 1 // tskNO_AFFINITY
|
||||
|
||||
#define FLAC_DECODER_TASK_PRIORITY 7
|
||||
#define FLAC_DECODER_TASK_CORE_ID tskNO_AFFINITY // 1 // tskNO_AFFINITY
|
||||
#define FLAC_DECODER_TASK_PRIORITY HTTP_TASK_PRIORITY
|
||||
#define FLAC_DECODER_TASK_CORE_ID HTTP_TASK_CORE_ID // 1 // tskNO_AFFINITY
|
||||
|
||||
#define FLAC_TASK_PRIORITY 7
|
||||
#define FLAC_TASK_CORE_ID tskNO_AFFINITY // 1 // tskNO_AFFINITY
|
||||
@@ -153,9 +153,8 @@ void time_sync_msg_cb(void *args) {
|
||||
base_message_t base_message_tx;
|
||||
// struct timeval now;
|
||||
int64_t now;
|
||||
int result;
|
||||
time_message_t time_message_tx = {{0, 0}};
|
||||
int rc1 = ERR_OK;
|
||||
// time_message_t time_message_tx = {{0, 0}};
|
||||
int rc1;
|
||||
|
||||
// causes kernel panic, which shouldn't happen though?
|
||||
// Isn't it called from timer task instead of ISR?
|
||||
@@ -169,57 +168,45 @@ void time_sync_msg_cb(void *args) {
|
||||
//
|
||||
// return;
|
||||
// }
|
||||
now = esp_timer_get_time();
|
||||
|
||||
uint8_t *p_pkt = (uint8_t *)malloc(BASE_MESSAGE_SIZE + TIME_MESSAGE_SIZE);
|
||||
if (p_pkt == NULL) {
|
||||
ESP_LOGW(
|
||||
TAG,
|
||||
"%s: Failed to get memory for time sync message. Skipping this round.",
|
||||
__func__);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
memset(p_pkt, 0, BASE_MESSAGE_SIZE + TIME_MESSAGE_SIZE);
|
||||
|
||||
base_message_tx.type = SNAPCAST_MESSAGE_TIME;
|
||||
base_message_tx.id = id_counter++;
|
||||
base_message_tx.refersTo = 0;
|
||||
base_message_tx.received.sec = 0;
|
||||
base_message_tx.received.usec = 0;
|
||||
// base_message_tx.sent.sec = now.tv_sec;
|
||||
// base_message_tx.sent.usec = now.tv_usec;
|
||||
now = esp_timer_get_time();
|
||||
base_message_tx.sent.sec = now / 1000000;
|
||||
base_message_tx.sent.usec = now - base_message_tx.sent.sec * 1000000;
|
||||
base_message_tx.size = TIME_MESSAGE_SIZE;
|
||||
|
||||
result = base_message_serialize(&base_message_tx, base_message_serialized,
|
||||
BASE_MESSAGE_SIZE);
|
||||
if (result) {
|
||||
rc1 = base_message_serialize(&base_message_tx, (char *)&p_pkt[0],
|
||||
BASE_MESSAGE_SIZE);
|
||||
if (rc1) {
|
||||
ESP_LOGE(TAG, "Failed to serialize base message for time");
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
memset(&time_message_tx, 0, sizeof(time_message_tx));
|
||||
|
||||
result = time_message_serialize(&time_message_tx, time_message_serialized,
|
||||
TIME_MESSAGE_SIZE);
|
||||
if (result) {
|
||||
ESP_LOGI(TAG, "Failed to serialize time message");
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
#if 0
|
||||
rc1 = netconn_write(lwipNetconn, base_message_serialized, BASE_MESSAGE_SIZE,
|
||||
NETCONN_NOCOPY);
|
||||
if (rc1 != ERR_OK) {
|
||||
ESP_LOGW(TAG, "error writing timesync base msg");
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
rc1 = netconn_write(lwipNetconn, time_message_serialized, TIME_MESSAGE_SIZE,
|
||||
NETCONN_NOCOPY);
|
||||
if (rc1 != ERR_OK) {
|
||||
ESP_LOGW(TAG, "error writing timesync msg");
|
||||
|
||||
return;
|
||||
}
|
||||
#else
|
||||
uint8_t *p_pkt = (uint8_t *)malloc(BASE_MESSAGE_SIZE + TIME_MESSAGE_SIZE);
|
||||
memcpy(&p_pkt[0], base_message_serialized, BASE_MESSAGE_SIZE);
|
||||
memcpy(&p_pkt[BASE_MESSAGE_SIZE], time_message_serialized, TIME_MESSAGE_SIZE);
|
||||
// memset(&time_message_tx, 0, sizeof(time_message_tx));
|
||||
// result = time_message_serialize(&time_message_tx,
|
||||
// &p_pkt[BASE_MESSAGE_SIZE],
|
||||
// TIME_MESSAGE_SIZE);
|
||||
// if (result) {
|
||||
// ESP_LOGI(TAG, "Failed to serialize time message");
|
||||
//
|
||||
// return;
|
||||
// }
|
||||
|
||||
rc1 = netconn_write(lwipNetconn, p_pkt, BASE_MESSAGE_SIZE + TIME_MESSAGE_SIZE,
|
||||
NETCONN_NOCOPY);
|
||||
@@ -228,8 +215,8 @@ void time_sync_msg_cb(void *args) {
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
free(p_pkt);
|
||||
#endif
|
||||
|
||||
// ESP_LOGI(TAG, "%s: sent time sync message", __func__);
|
||||
|
||||
@@ -2349,8 +2336,7 @@ static void http_get_task(void *pvParameters) {
|
||||
|
||||
player_latency_insert(tmpDiffToServer);
|
||||
|
||||
// ESP_LOGI(TAG, "Current latency: %lld",
|
||||
// tmpDiffToServer);
|
||||
ESP_LOGI(TAG, "Current latency:%lld:", tmpDiffToServer);
|
||||
|
||||
// store current time
|
||||
lastTimeSync = now;
|
||||
|
||||
@@ -523,10 +523,10 @@ CONFIG_ESP_TIMER_IMPL_TG0_LAC=y
|
||||
#
|
||||
CONFIG_ESP32_WIFI_STATIC_RX_BUFFER_NUM=8
|
||||
CONFIG_ESP32_WIFI_DYNAMIC_RX_BUFFER_NUM=64
|
||||
# CONFIG_ESP32_WIFI_STATIC_TX_BUFFER is not set
|
||||
CONFIG_ESP32_WIFI_DYNAMIC_TX_BUFFER=y
|
||||
CONFIG_ESP32_WIFI_TX_BUFFER_TYPE=1
|
||||
CONFIG_ESP32_WIFI_DYNAMIC_TX_BUFFER_NUM=32
|
||||
CONFIG_ESP32_WIFI_STATIC_TX_BUFFER=y
|
||||
# CONFIG_ESP32_WIFI_DYNAMIC_TX_BUFFER is not set
|
||||
CONFIG_ESP32_WIFI_TX_BUFFER_TYPE=0
|
||||
CONFIG_ESP32_WIFI_STATIC_TX_BUFFER_NUM=8
|
||||
# CONFIG_ESP32_WIFI_CSI_ENABLED is not set
|
||||
CONFIG_ESP32_WIFI_AMPDU_TX_ENABLED=y
|
||||
CONFIG_ESP32_WIFI_TX_BA_WIN=32
|
||||
|
||||
@@ -522,7 +522,7 @@ CONFIG_ESP_TIMER_IMPL_TG0_LAC=y
|
||||
# Wi-Fi
|
||||
#
|
||||
CONFIG_ESP32_WIFI_STATIC_RX_BUFFER_NUM=8
|
||||
CONFIG_ESP32_WIFI_DYNAMIC_RX_BUFFER_NUM=0
|
||||
CONFIG_ESP32_WIFI_DYNAMIC_RX_BUFFER_NUM=64
|
||||
# CONFIG_ESP32_WIFI_STATIC_TX_BUFFER is not set
|
||||
CONFIG_ESP32_WIFI_DYNAMIC_TX_BUFFER=y
|
||||
CONFIG_ESP32_WIFI_TX_BUFFER_TYPE=1
|
||||
@@ -530,7 +530,8 @@ CONFIG_ESP32_WIFI_DYNAMIC_TX_BUFFER_NUM=32
|
||||
# CONFIG_ESP32_WIFI_CSI_ENABLED is not set
|
||||
CONFIG_ESP32_WIFI_AMPDU_TX_ENABLED=y
|
||||
CONFIG_ESP32_WIFI_TX_BA_WIN=32
|
||||
# CONFIG_ESP32_WIFI_AMPDU_RX_ENABLED is not set
|
||||
CONFIG_ESP32_WIFI_AMPDU_RX_ENABLED=y
|
||||
CONFIG_ESP32_WIFI_RX_BA_WIN=16
|
||||
CONFIG_ESP32_WIFI_NVS_ENABLED=y
|
||||
CONFIG_ESP32_WIFI_TASK_PINNED_TO_CORE_0=y
|
||||
# CONFIG_ESP32_WIFI_TASK_PINNED_TO_CORE_1 is not set
|
||||
|
||||
Reference in New Issue
Block a user