- 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:
Karl Osterseher
2022-12-28 15:49:00 +01:00
Unverified
parent 04e18212d6
commit b4d4215630
5 changed files with 57 additions and 61 deletions

View File

@@ -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 {

View File

@@ -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;

View File

@@ -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;

View File

@@ -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

View File

@@ -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