Merge branch 'develop'
This commit is contained in:
@@ -3,17 +3,18 @@
|
||||
### Synchronous Multiroom audio streaming client for [Snapcast](https://github.com/badaix/snapcast) ported to ESP32
|
||||
|
||||
## Feature list
|
||||
- FLAC decoding currently supported
|
||||
- FLAC, OPUS and PCM decoding currently supported
|
||||
- Wifi setup from menuconfig or through espressif Android App "SoftAP Prov"
|
||||
- Auto connect to snapcast server on network
|
||||
- Buffers up to 1000ms on Wroom modules (tested with 44100:16:2)
|
||||
- Buffers up to 758ms on Wroom modules (tested with 44100:16:2)
|
||||
- Buffers more then enough on Wrover modules
|
||||
- Multiroom sync delay controlled from Snapcast server (user has to ensure not to set this too high on the server)
|
||||
- DSP / EQ functionality configurable through menuconfig and partly controllable through HTTP server running on ESP client (work in progress)
|
||||
|
||||
## Description
|
||||
I have continued the work from @badaix, @bridadan and @jorgenkraghjakobsen towards a ESP32 Snapcast
|
||||
client. Currently it support basic features like multiroom sync, network
|
||||
controlled volume and mute. For now it only support FLAC 16bit
|
||||
controlled volume and mute. For now it supports FLAC, OPUS, PCM 16bit
|
||||
audio streams with sample rates up to 48Khz maybe more, I didn't test.
|
||||
|
||||
Please check out the task list and feel free to fill in.
|
||||
@@ -26,7 +27,7 @@ samples and therefore no precise sync could be achieved.
|
||||
|
||||
### Codebase
|
||||
|
||||
The codebase is split into components and build on ESP-IDF v4.3.1. I still
|
||||
The codebase is split into components and build on <b>ESP-IDF v4.3.1</b>. I still
|
||||
have some refactoring on the todo list as the concept has started to settle and
|
||||
allow for new features can be added in a structured manner. In the code you
|
||||
will find parts that are only partly related features and still not on the task
|
||||
|
||||
@@ -27,17 +27,20 @@ menu "Custom Audio Board"
|
||||
menu "DAC I2C control interface"
|
||||
config DAC_I2C_SDA
|
||||
int "SDA pin"
|
||||
default 21
|
||||
default 12 if DAC_ADAU1961
|
||||
default 21 if DAC_MA120 || DAC_PCM51XX || DAC_MA120 || DAC_MA120X0
|
||||
help
|
||||
I2C SDA pin of the DAC control interface
|
||||
config DAC_I2C_SCL
|
||||
int "SCL pin"
|
||||
default 22
|
||||
default 14 if DAC_ADAU1961
|
||||
default 22 if DAC_MA120 || DAC_PCM51XX || DAC_MA120 || DAC_MA120X0
|
||||
help
|
||||
I2C SCL pin of the DAC control interface
|
||||
config DAC_I2C_ADDR
|
||||
hex "I2C address"
|
||||
default 0x20
|
||||
default 0x70 if DAC_ADAU1961
|
||||
default 0x20 if DAC_MA120 || DAC_PCM51XX || DAC_MA120 || DAC_MA120X0
|
||||
help
|
||||
I2C Address of the DAC control interface
|
||||
endmenu
|
||||
|
||||
@@ -31,7 +31,8 @@
|
||||
#include "soc/rtc.h"
|
||||
|
||||
#include "esp_attr.h"
|
||||
#include "esp_efuse.h"
|
||||
#include "soc/chip_revision.h"
|
||||
#include "hal/efuse_hal.h"
|
||||
#include "esp_err.h"
|
||||
#include "esp_intr_alloc.h"
|
||||
#include "esp_log.h"
|
||||
@@ -184,12 +185,11 @@ static float i2s_apll_get_fi2s(int bits_per_sample, int sdm0, int sdm1,
|
||||
int f_xtal = (int)rtc_clk_xtal_freq_get() * 1000000;
|
||||
|
||||
#if CONFIG_IDF_TARGET_ESP32
|
||||
/* ESP32 rev0 silicon issue for APLL range/accuracy, please see ESP32 ECO
|
||||
* document for more information on this */
|
||||
if (esp_efuse_get_chip_ver() == 0) {
|
||||
sdm0 = 0;
|
||||
sdm1 = 0;
|
||||
}
|
||||
/* ESP32 rev0 silicon issue for APLL range/accuracy, please see ESP32 ECO document for more information on this */
|
||||
if (!ESP_CHIP_REV_ABOVE(efuse_hal_chip_revision(), 100)) {
|
||||
sdm0 = 0;
|
||||
sdm1 = 0;
|
||||
}
|
||||
#endif
|
||||
float fout = f_xtal * (sdm2 + sdm1 / 256.0f + sdm0 / 65536.0f + 4);
|
||||
if (fout < SOC_I2S_APLL_MIN_FREQ || fout > SOC_I2S_APLL_MAX_FREQ) {
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
#ifndef _DSP_PROCESSOR_H_
|
||||
#define _DSP_PROCESSOR_H_
|
||||
|
||||
#include "esp_err.h"
|
||||
|
||||
typedef enum dspFlows {
|
||||
dspfStereo,
|
||||
dspfBiamp,
|
||||
|
||||
@@ -72,6 +72,8 @@ static QueueHandle_t snapcastSettingQueueHandle = NULL;
|
||||
static uint32_t i2sDmaBufCnt;
|
||||
static uint32_t i2sDmaBufMaxLen;
|
||||
|
||||
static SemaphoreHandle_t playerPcmQueueMux = NULL;
|
||||
|
||||
static SemaphoreHandle_t snapcastSettingsMux = NULL;
|
||||
static snapcastSetting_t currentSnapcastSetting;
|
||||
|
||||
@@ -193,6 +195,8 @@ static int destroy_pcm_queue(QueueHandle_t *queueHandle) {
|
||||
int ret = pdPASS;
|
||||
pcm_chunk_message_t *chnk = NULL;
|
||||
|
||||
xSemaphoreTake(playerPcmQueueMux, portMAX_DELAY);
|
||||
|
||||
if (*queueHandle == NULL) {
|
||||
ESP_LOGW(TAG, "no pcm chunk queue created?");
|
||||
ret = pdFAIL;
|
||||
@@ -214,6 +218,8 @@ static int destroy_pcm_queue(QueueHandle_t *queueHandle) {
|
||||
ret = pdPASS;
|
||||
}
|
||||
|
||||
xSemaphoreGive(playerPcmQueueMux);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -237,6 +243,11 @@ int deinit_player(void) {
|
||||
|
||||
ret = destroy_pcm_queue(&pcmChkQHdl);
|
||||
|
||||
if (playerPcmQueueMux != NULL) {
|
||||
vSemaphoreDelete(playerPcmQueueMux);
|
||||
playerPcmQueueMux = NULL;
|
||||
}
|
||||
|
||||
if (latencyBufSemaphoreHandle == NULL) {
|
||||
ESP_LOGW(TAG, "no latency buffer semaphore created?");
|
||||
} else {
|
||||
@@ -271,6 +282,11 @@ int init_player(void) {
|
||||
xSemaphoreGive(snapcastSettingsMux);
|
||||
}
|
||||
|
||||
if (playerPcmQueueMux == NULL) {
|
||||
playerPcmQueueMux = xSemaphoreCreateMutex();
|
||||
xSemaphoreGive(playerPcmQueueMux);
|
||||
}
|
||||
|
||||
ret = player_setup_i2s(I2S_NUM_0, ¤tSnapcastSetting);
|
||||
if (ret < 0) {
|
||||
ESP_LOGE(TAG, "player_setup_i2s failed: %d", ret);
|
||||
@@ -919,10 +935,20 @@ int32_t allocate_pcm_chunk_memory(pcm_chunk_message_t **pcmChunk,
|
||||
"couldn't get memory to insert chunk, inserting an chunk "
|
||||
"containing just 0");
|
||||
|
||||
// xSemaphoreTake(playerPcmQueueMux, portMAX_DELAY);
|
||||
// ESP_LOGW(
|
||||
// TAG, "%d, %d, %d, %d, %d",
|
||||
// heap_caps_get_free_size(MALLOC_CAP_8BIT),
|
||||
// heap_caps_get_largest_free_block(MALLOC_CAP_8BIT),
|
||||
// uxQueueMessagesWaiting(pcmChkQHdl),
|
||||
// heap_caps_get_free_size(MALLOC_CAP_32BIT | MALLOC_CAP_EXEC),
|
||||
// heap_caps_get_largest_free_block(MALLOC_CAP_32BIT |
|
||||
// MALLOC_CAP_EXEC));
|
||||
// xSemaphoreGive(playerPcmQueueMux);
|
||||
|
||||
ESP_LOGW(
|
||||
TAG, "%d, %d, %d, %d, %d", heap_caps_get_free_size(MALLOC_CAP_8BIT),
|
||||
TAG, "%d, %d, %d, %d", heap_caps_get_free_size(MALLOC_CAP_8BIT),
|
||||
heap_caps_get_largest_free_block(MALLOC_CAP_8BIT),
|
||||
uxQueueMessagesWaiting(pcmChkQHdl),
|
||||
heap_caps_get_free_size(MALLOC_CAP_32BIT | MALLOC_CAP_EXEC),
|
||||
heap_caps_get_largest_free_block(MALLOC_CAP_32BIT | MALLOC_CAP_EXEC));
|
||||
|
||||
@@ -952,38 +978,61 @@ int32_t insert_pcm_chunk(pcm_chunk_message_t *pcmChunk) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
bool isFull = false;
|
||||
latency_buffer_full(&isFull, portMAX_DELAY);
|
||||
if (isFull == false) {
|
||||
free_pcm_chunk(pcmChunk);
|
||||
|
||||
// ESP_LOGW(TAG, "%s: wait for initial latency measurement to finish",
|
||||
// __func__);
|
||||
|
||||
return -3;
|
||||
}
|
||||
|
||||
xSemaphoreTake(playerPcmQueueMux, portMAX_DELAY);
|
||||
if (pcmChkQHdl == NULL) {
|
||||
ESP_LOGW(TAG, "pcm chunk queue not created");
|
||||
|
||||
free_pcm_chunk(pcmChunk);
|
||||
|
||||
xSemaphoreGive(playerPcmQueueMux);
|
||||
|
||||
return -2;
|
||||
}
|
||||
|
||||
if (uxQueueSpacesAvailable(pcmChkQHdl) == 0) {
|
||||
pcm_chunk_message_t *element;
|
||||
// if (uxQueueSpacesAvailable(pcmChkQHdl) == 0) {
|
||||
// pcm_chunk_message_t *element;
|
||||
//
|
||||
// xQueueReceive(pcmChkQHdl, &element, portMAX_DELAY);
|
||||
//
|
||||
// free_pcm_chunk(element);
|
||||
// }
|
||||
|
||||
xQueueReceive(pcmChkQHdl, &element, portMAX_DELAY);
|
||||
|
||||
free_pcm_chunk(element);
|
||||
}
|
||||
|
||||
if (xQueueSend(pcmChkQHdl, &pcmChunk, pdMS_TO_TICKS(10)) != pdTRUE) {
|
||||
// if (xQueueSend(pcmChkQHdl, &pcmChunk, pdMS_TO_TICKS(10)) != pdTRUE) {
|
||||
if (xQueueSend(pcmChkQHdl, &pcmChunk, pdMS_TO_TICKS(1)) != pdTRUE) {
|
||||
ESP_LOGW(TAG, "send: pcmChunkQueue full, messages waiting %d",
|
||||
uxQueueMessagesWaiting(pcmChkQHdl));
|
||||
|
||||
free_pcm_chunk(pcmChunk);
|
||||
}
|
||||
|
||||
xSemaphoreGive(playerPcmQueueMux);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int32_t pcm_chunk_queue_msg_waiting(void) {
|
||||
int ret = 0;
|
||||
|
||||
xSemaphoreTake(playerPcmQueueMux, portMAX_DELAY);
|
||||
|
||||
if (pcmChkQHdl) {
|
||||
return uxQueueMessagesWaiting(pcmChkQHdl);
|
||||
} else {
|
||||
return 0;
|
||||
ret = uxQueueMessagesWaiting(pcmChkQHdl);
|
||||
}
|
||||
|
||||
xSemaphoreGive(playerPcmQueueMux);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1077,11 +1126,11 @@ static void player_task(void *pvParameters) {
|
||||
|
||||
if ((__scSet.buf_ms != scSet.buf_ms) ||
|
||||
(__scSet.chkInFrames != scSet.chkInFrames)) {
|
||||
if (pcmChkQHdl != NULL) {
|
||||
destroy_pcm_queue(&pcmChkQHdl);
|
||||
}
|
||||
destroy_pcm_queue(&pcmChkQHdl);
|
||||
}
|
||||
|
||||
// xSemaphoreTake(playerPcmQueueMux, portMAX_DELAY);
|
||||
|
||||
if (pcmChkQHdl == NULL) {
|
||||
int entries = ceil(((float)__scSet.sr / (float)__scSet.chkInFrames) *
|
||||
((float)__scSet.buf_ms / 1000));
|
||||
@@ -1095,6 +1144,8 @@ static void player_task(void *pvParameters) {
|
||||
ESP_LOGI(TAG, "created new queue with %d", entries);
|
||||
}
|
||||
|
||||
// xSemaphoreGive(playerPcmQueueMux);
|
||||
|
||||
ESP_LOGI(TAG,
|
||||
"snapserver config changed, buffer %dms, chunk %d frames, "
|
||||
"sample rate %d, ch %d, bits %d mute %d latency %d",
|
||||
@@ -1130,11 +1181,16 @@ static void player_task(void *pvParameters) {
|
||||
}
|
||||
|
||||
if (chnk == NULL) {
|
||||
// xSemaphoreTake(playerPcmQueueMux, portMAX_DELAY);
|
||||
if (pcmChkQHdl != NULL) {
|
||||
ret = xQueueReceive(pcmChkQHdl, &chnk, pdMS_TO_TICKS(2000));
|
||||
|
||||
// xSemaphoreGive(playerPcmQueueMux);
|
||||
} else {
|
||||
// ESP_LOGE (TAG, "Couldn't get PCM chunk, pcm queue not created");
|
||||
|
||||
// xSemaphoreGive(playerPcmQueueMux);
|
||||
|
||||
vTaskDelay(pdMS_TO_TICKS(100));
|
||||
|
||||
continue;
|
||||
@@ -1154,6 +1210,10 @@ static void player_task(void *pvParameters) {
|
||||
(int64_t)chnk->timestamp.usec;
|
||||
|
||||
age = serverNow - chunkStart - buf_us + clientDacLatency_us;
|
||||
|
||||
// ESP_LOGE(TAG,"age: %lld, serverNow %lld, chunkStart %lld,
|
||||
// buf_us %lld", age, serverNow, chunkStart, buf_us);
|
||||
|
||||
if (initialSync == 1) {
|
||||
// on initialSync == 0 (hard sync) we don't have any data in i2s DMA
|
||||
// buffer so in that case we don't need to add this
|
||||
@@ -1187,12 +1247,15 @@ static void player_task(void *pvParameters) {
|
||||
|
||||
uint32_t currentDescriptor = 0, currentDescriptorOffset = 0;
|
||||
uint32_t tmpCnt = CHNK_CTRL_CNT;
|
||||
|
||||
// xSemaphoreTake(playerPcmQueueMux, portMAX_DELAY);
|
||||
while (tmpCnt) {
|
||||
if (chnk == NULL) {
|
||||
if (pcmChkQHdl != NULL) {
|
||||
ret = xQueueReceive(pcmChkQHdl, &chnk, portMAX_DELAY);
|
||||
}
|
||||
}
|
||||
// xSemaphoreGive(playerPcmQueueMux);
|
||||
|
||||
fragment = chnk->fragment;
|
||||
p_payload = fragment->payload;
|
||||
@@ -1290,7 +1353,9 @@ static void player_task(void *pvParameters) {
|
||||
uint32_t c = ceil((float)age / (float)chkDur_us); // round up
|
||||
// now clear all those chunks which are probably late too
|
||||
while (c--) {
|
||||
// xSemaphoreTake(playerPcmQueueMux, portMAX_DELAY);
|
||||
ret = xQueueReceive(pcmChkQHdl, &chnk, pdMS_TO_TICKS(1));
|
||||
// xSemaphoreGive(playerPcmQueueMux);
|
||||
if (ret == pdPASS) {
|
||||
free_pcm_chunk(chnk);
|
||||
chnk = NULL;
|
||||
@@ -1305,12 +1370,21 @@ static void player_task(void *pvParameters) {
|
||||
timer_pause(TIMER_GROUP_1, TIMER_1);
|
||||
timer_set_auto_reload(TIMER_GROUP_1, TIMER_1, TIMER_AUTORELOAD_DIS);
|
||||
|
||||
// xSemaphoreTake(playerPcmQueueMux, portMAX_DELAY);
|
||||
// ESP_LOGW(TAG,
|
||||
// "RESYNCING HARD 1: age %lldus, latency %lldus, free
|
||||
// %d, " "largest block %d, %d, rssi: %d", age,
|
||||
// diff2Server,
|
||||
// heap_caps_get_free_size(MALLOC_CAP_32BIT),
|
||||
// heap_caps_get_largest_free_block(MALLOC_CAP_32BIT),
|
||||
// uxQueueMessagesWaiting(pcmChkQHdl), ap.rssi);
|
||||
// xSemaphoreGive(playerPcmQueueMux);
|
||||
|
||||
ESP_LOGW(TAG,
|
||||
"RESYNCING HARD 1: age %lldus, latency %lldus, free %d, "
|
||||
"largest block %d, %d, rssi: %d",
|
||||
"largest block %d, rssi: %d",
|
||||
age, diff2Server, heap_caps_get_free_size(MALLOC_CAP_32BIT),
|
||||
heap_caps_get_largest_free_block(MALLOC_CAP_32BIT),
|
||||
uxQueueMessagesWaiting(pcmChkQHdl), ap.rssi);
|
||||
heap_caps_get_largest_free_block(MALLOC_CAP_32BIT), ap.rssi);
|
||||
|
||||
dir = 0;
|
||||
|
||||
@@ -1337,11 +1411,16 @@ static void player_task(void *pvParameters) {
|
||||
shortMedian = MEDIANFILTER_Insert(&shortMedianFilter, avg);
|
||||
miniMedian = MEDIANFILTER_Insert(&miniMedianFilter, avg);
|
||||
|
||||
// xSemaphoreTake(playerPcmQueueMux, portMAX_DELAY);
|
||||
int msgWaiting = uxQueueMessagesWaiting(pcmChkQHdl);
|
||||
// xSemaphoreGive(playerPcmQueueMux);
|
||||
|
||||
// resync hard if we are getting very late / early.
|
||||
// rest gets tuned in through apll speed control
|
||||
if ((uxQueueMessagesWaiting(pcmChkQHdl) == 0) ||
|
||||
((abs(avg) > hardResyncThreshold) &&
|
||||
MEDIANFILTER_isFull(&shortMedianFilter))) {
|
||||
if ((msgWaiting == 0) || (MEDIANFILTER_isFull(&shortMedianFilter) &&
|
||||
(abs(shortMedian) > hardResyncThreshold)))
|
||||
// if (msgWaiting == 0)
|
||||
{
|
||||
if (chnk != NULL) {
|
||||
free_pcm_chunk(chnk);
|
||||
chnk = NULL;
|
||||
@@ -1350,12 +1429,13 @@ static void player_task(void *pvParameters) {
|
||||
wifi_ap_record_t ap;
|
||||
esp_wifi_sta_get_ap_info(&ap);
|
||||
|
||||
// xSemaphoreTake(playerPcmQueueMux, portMAX_DELAY);
|
||||
ESP_LOGW(TAG,
|
||||
"RESYNCING HARD 2: age %lldus, latency %lldus, free "
|
||||
"%d, largest block %d, %d, rssi: %d",
|
||||
avg, diff2Server, heap_caps_get_free_size(MALLOC_CAP_32BIT),
|
||||
heap_caps_get_largest_free_block(MALLOC_CAP_32BIT),
|
||||
uxQueueMessagesWaiting(pcmChkQHdl), ap.rssi);
|
||||
msgWaiting, ap.rssi);
|
||||
|
||||
// // get count of chunks we are late for
|
||||
// uint32_t c = ceil((float)age / (float)chkDur_us); //
|
||||
@@ -1371,6 +1451,8 @@ static void player_task(void *pvParameters) {
|
||||
// }
|
||||
// }
|
||||
|
||||
// xSemaphoreGive(playerPcmQueueMux);
|
||||
|
||||
timer_pause(TIMER_GROUP_1, TIMER_1);
|
||||
timer_set_auto_reload(TIMER_GROUP_1, TIMER_1, TIMER_AUTORELOAD_DIS);
|
||||
|
||||
@@ -1421,11 +1503,17 @@ static void player_task(void *pvParameters) {
|
||||
msec = usec / 1000;
|
||||
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, q:%d", dir,
|
||||
// avg, shortMedian, miniMedian,
|
||||
// uxQueueMessagesWaiting(pcmChkQHdl));
|
||||
// xSemaphoreTake(playerPcmQueueMux, portMAX_DELAY);
|
||||
|
||||
//ESP_LOGI (TAG, "%d, %lldus, q %d", dir, avg, uxQueueMessagesWaiting(pcmChkQHdl));
|
||||
|
||||
// ESP_LOGI (TAG, "%d, %lldus, %lldus %llds,
|
||||
// %lld.%lldms", dir, age, avg, sec, msec, usec);
|
||||
|
||||
// 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),
|
||||
@@ -1434,6 +1522,8 @@ static void player_task(void *pvParameters) {
|
||||
// heap_caps_get_free_size(MALLOC_CAP_32BIT |
|
||||
// MALLOC_CAP_EXEC), heap_caps_get_largest_free_block
|
||||
// (MALLOC_CAP_32BIT | MALLOC_CAP_EXEC));
|
||||
|
||||
// xSemaphoreGive(playerPcmQueueMux);
|
||||
}
|
||||
|
||||
dir = 0;
|
||||
@@ -1518,12 +1608,14 @@ static void player_task(void *pvParameters) {
|
||||
msec = usec / 1000;
|
||||
usec = usec % 1000;
|
||||
|
||||
// xSemaphoreTake(playerPcmQueueMux, portMAX_DELAY);
|
||||
if (pcmChkQHdl != NULL) {
|
||||
ESP_LOGE(TAG,
|
||||
"Couldn't get PCM chunk, recv: messages waiting %d, "
|
||||
"diff2Server: %llds, %lld.%lldms",
|
||||
uxQueueMessagesWaiting(pcmChkQHdl), sec, msec, usec);
|
||||
}
|
||||
// xSemaphoreGive(playerPcmQueueMux);
|
||||
|
||||
dir = 0;
|
||||
|
||||
|
||||
@@ -8,29 +8,106 @@
|
||||
h1 {font-size: 2.9rem;}
|
||||
h2 {font-size: 2.1rem;}
|
||||
p {font-size: 1.9rem;}
|
||||
body {max-width: 500px; margin:0px auto; padding-bottom: 30px;}
|
||||
.slider { -webkit-appearance: none; margin: 14px; width: 400px; height: 15px; border-radius: 5px; background: #39a6de; outline: none; -webkit-transition: .2s; transition: opacity .2s;}
|
||||
.slider::-webkit-slider-thumb {-webkit-appearance: none; appearance: none; width: 25px; height: 25px; border-radius: 12px; background: #f74d4d; cursor: pointer;}
|
||||
.slider::-moz-range-thumb { width: 25px; height: 25px; border-radius: 12px; background: #F74D4D; cursor: pointer; }
|
||||
|
||||
.slider {
|
||||
writing-mode: bt-lr; /* IE */
|
||||
-webkit-appearance: slider-vertical; /* Chromium */
|
||||
margin: 14px;
|
||||
width: 15px;
|
||||
height: 200px;
|
||||
border-radius: 5px;
|
||||
background: #39a6de;
|
||||
outline: none;
|
||||
-webkit-transition: .2s;
|
||||
transition: opacity .2s;
|
||||
}
|
||||
.slider::-webkit-slider-thumb {
|
||||
-webkit-appearance: none;
|
||||
appearance: none;
|
||||
width: 25px;
|
||||
height: 25px;
|
||||
border-radius: 12px;
|
||||
background: #f74d4d;
|
||||
cursor: pointer;
|
||||
}
|
||||
.slider::-moz-range-thumb {
|
||||
width: 25px;
|
||||
height: 25px;
|
||||
border-radius: 12px;
|
||||
background: #F74D4D;
|
||||
cursor: pointer;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<h1>DSP processor filter configuration</h1>
|
||||
<!-- Displays the range of the slider from -6 to 6 in steps of 0.1 -->
|
||||
|
||||
<h2>base gain</h2>
|
||||
<div class="headline_container">
|
||||
<h1>DSP processor filter configuration</h1>
|
||||
</div>
|
||||
|
||||
<div class="body_container" style="max-width: 500px; margin:0px auto; padding-bottom: 30px;">
|
||||
<div class="range_container">
|
||||
<div class="range_1_container" style="float:left; margin:10px">
|
||||
<div class="sliders_labels">
|
||||
<label for="BaseGainSlider">Base</label>
|
||||
</div>
|
||||
|
||||
<div class="sliders_control">
|
||||
<input id="BaseGainSlider" type="range" orient="vertical" onchange="sendUpdateSlider()" oninput="updateSlider('baseSliderValue', this.value)" min="-6.00" max="6.00" value="0.00" step="0.01" class="slider">
|
||||
</div>
|
||||
|
||||
<div class="slider_value" style="width: 100px;">
|
||||
<span id="baseSliderValue">0.00</span> dB
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="range_2_container" style="float:left; margin:10px">
|
||||
<div class="sliders_labels">
|
||||
<label for="MidGainSlider"">Mids</label>
|
||||
</div>
|
||||
|
||||
<div class="sliders_control">
|
||||
<input id="MidGainSlider" type="range" orient="vertical" onchange="sendUpdateSlider()" oninput="updateSlider('midsSliderValue', this.value)" min="-6.00" max="6.00" value="0.00" step="0.01" class="slider">
|
||||
</div>
|
||||
|
||||
<div class="slider_value" style="width: 100px;">
|
||||
<span id="midsSliderValue">0.00</span> dB
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="range_3_container" style="float:left; margin:10px">
|
||||
<div class="sliders_labels">
|
||||
<label for="heightsGainSlider">Heights</label>
|
||||
</div>
|
||||
|
||||
<div class="sliders_control">
|
||||
<input id="heightsGainSlider" type="range" orient="vertical" onchange="sendUpdateSlider()" oninput="updateSlider('heightsSliderValue', this.value)" min="-6.00" max="6.00" value="0.00" step="0.01" class="slider">
|
||||
</div>
|
||||
|
||||
<div class="slider_value" style="width: 100px;">
|
||||
<span id="heightsSliderValue">0.00</span> dB
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Displays the range of the slider from 0 to 100 in steps of 1 -->
|
||||
<p><span id="textSliderValue">50</span> %</p>
|
||||
<p><input type="range" onchange="updateSlider(this)" id="BaseGainSlider" min="0" max="100" value="50" step="1" class="slider"></p>
|
||||
<script>
|
||||
function updateSlider(element) {
|
||||
var sliderValue = document.getElementById("BaseGainSlider").value;
|
||||
document.getElementById("textSliderValue").innerHTML = sliderValue;
|
||||
console.log(sliderValue);
|
||||
function sendUpdateSlider() {
|
||||
var gain_1 = document.getElementById('BaseGainSlider').value;
|
||||
var gain_2 = document.getElementById('MidGainSlider').value;
|
||||
var gain_3 = document.getElementById('heightsGainSlider').value;
|
||||
|
||||
console.log(gain_1 + ", " + gain_2 + ", " + gain_3);
|
||||
console.log("/post?gain_1=" + gain_1 + "&gain_2= " + gain_2 + "&gain_3=" + gain_3 );
|
||||
var httpRequest = new XMLHttpRequest();
|
||||
httpRequest.open("POST", "/post?value="+sliderValue, true);
|
||||
httpRequest.open("POST", "/post?gain_1=" + gain_1 + "&gain_2= " + gain_2 + "&gain_3=" + gain_3, true);
|
||||
httpRequest.send();
|
||||
}
|
||||
|
||||
function updateSlider(id, val) {
|
||||
var output = document.getElementById(id);
|
||||
output.innerHTML = val;
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -4,8 +4,11 @@
|
||||
void init_http_server_task(char *key);
|
||||
|
||||
typedef struct {
|
||||
char str_value[4];
|
||||
char str_value[8];
|
||||
long long_value;
|
||||
float gain_1;
|
||||
float gain_2;
|
||||
float gain_3;
|
||||
} URL_t;
|
||||
|
||||
#endif // __UI_HTTP_SERVER_H__
|
||||
|
||||
@@ -8,6 +8,8 @@
|
||||
CONDITIONS OF ANY KIND, either express or implied.
|
||||
*/
|
||||
|
||||
#include "ui_http_server.h"
|
||||
|
||||
#include <inttypes.h>
|
||||
#include <math.h>
|
||||
#include <mbedtls/base64.h>
|
||||
@@ -15,19 +17,16 @@
|
||||
#include <string.h>
|
||||
#include <sys/stat.h>
|
||||
|
||||
#include "freertos/FreeRTOS.h"
|
||||
#include "freertos/queue.h"
|
||||
#include "freertos/task.h"
|
||||
|
||||
#include "dsp_processor.h"
|
||||
#include "esp_err.h"
|
||||
#include "esp_http_server.h"
|
||||
#include "esp_log.h"
|
||||
#include "esp_spiffs.h"
|
||||
#include "esp_vfs.h"
|
||||
#include "esp_wifi.h"
|
||||
|
||||
#include "dsp_processor.h"
|
||||
#include "ui_http_server.h"
|
||||
#include "freertos/FreeRTOS.h"
|
||||
#include "freertos/queue.h"
|
||||
#include "freertos/task.h"
|
||||
|
||||
static const char *TAG = "HTTP";
|
||||
|
||||
@@ -198,7 +197,7 @@ static esp_err_t root_get_handler(httpd_req_t *req) {
|
||||
Text2Html(req, "/html/index.html");
|
||||
|
||||
/* Send Image */
|
||||
Image2Html(req, "/html/ESP-LOGO.txt", "png");
|
||||
// Image2Html(req, "/html/ESP-LOGO.txt", "png");
|
||||
|
||||
/* Send empty chunk to signal HTTP response completion */
|
||||
httpd_resp_sendstr_chunk(req, NULL);
|
||||
@@ -212,14 +211,48 @@ static esp_err_t root_get_handler(httpd_req_t *req) {
|
||||
static esp_err_t root_post_handler(httpd_req_t *req) {
|
||||
// ESP_LOGI(TAG, "root_post_handler req->uri=[%s]", req->uri);
|
||||
URL_t urlBuf;
|
||||
find_key_value("value=", (char *)req->uri, urlBuf.str_value);
|
||||
// ESP_LOGD(TAG, "urlBuf.str_value=[%s]", urlBuf.str_value);
|
||||
urlBuf.long_value = strtol(urlBuf.str_value, NULL, 10);
|
||||
// ESP_LOGD(TAG, "urlBuf.long_value=%ld", urlBuf.long_value);
|
||||
int ret = -1;
|
||||
|
||||
// Send to http_server_task
|
||||
if (xQueueSend(xQueueHttp, &urlBuf, portMAX_DELAY) != pdPASS) {
|
||||
ESP_LOGE(TAG, "xQueueSend Fail");
|
||||
memset(&urlBuf, 0, sizeof(URL_t));
|
||||
|
||||
if (find_key_value("gain_1=", (char *)req->uri, urlBuf.str_value)) {
|
||||
ESP_LOGD(TAG, "urlBuf.str_value=[%s]", urlBuf.str_value);
|
||||
|
||||
urlBuf.gain_1 = strtof(urlBuf.str_value, NULL);
|
||||
ESP_LOGD(TAG, "urlBuf.float_value=%f", urlBuf.gain_1);
|
||||
|
||||
ret = 0;
|
||||
} else {
|
||||
ESP_LOGD(TAG, "key 'gain_1=' not found");
|
||||
}
|
||||
|
||||
if (find_key_value("gain_2=", (char *)req->uri, urlBuf.str_value)) {
|
||||
ESP_LOGD(TAG, "urlBuf.str_value=[%s]", urlBuf.str_value);
|
||||
|
||||
urlBuf.gain_2 = strtof(urlBuf.str_value, NULL);
|
||||
ESP_LOGD(TAG, "urlBuf.float_value=%f", urlBuf.gain_2);
|
||||
|
||||
ret = 0;
|
||||
} else {
|
||||
ESP_LOGD(TAG, "key 'gain_2=' not found");
|
||||
}
|
||||
|
||||
if (find_key_value("gain_3=", (char *)req->uri, urlBuf.str_value)) {
|
||||
ESP_LOGD(TAG, "urlBuf.str_value=[%s]", urlBuf.str_value);
|
||||
|
||||
urlBuf.gain_3 = strtof(urlBuf.str_value, NULL);
|
||||
ESP_LOGD(TAG, "urlBuf.float_value=%f", urlBuf.gain_3);
|
||||
|
||||
ret = 0;
|
||||
} else {
|
||||
ESP_LOGD(TAG, "key 'gain_3=' not found");
|
||||
}
|
||||
|
||||
if (ret >= 0) {
|
||||
// Send to http_server_task
|
||||
if (xQueueSend(xQueueHttp, &urlBuf, portMAX_DELAY) != pdPASS) {
|
||||
ESP_LOGE(TAG, "xQueueSend Fail");
|
||||
}
|
||||
}
|
||||
|
||||
/* Redirect onto root to see the updated file list */
|
||||
@@ -367,18 +400,15 @@ static void http_server_task(void *pvParameters) {
|
||||
// Waiting for post
|
||||
if (xQueueReceive(xQueueHttp, &urlBuf, portMAX_DELAY) == pdTRUE) {
|
||||
filterParams_t filterParams;
|
||||
float scale, gainMax = 6.0;
|
||||
|
||||
// ESP_LOGI(TAG, "str_value=%s long_value=%ld", urlBuf.str_value,
|
||||
// urlBuf.long_value);
|
||||
|
||||
scale = ((float)(2 * urlBuf.long_value - 50) / 100.0);
|
||||
ESP_LOGI(TAG, "str_value=%s gain_1=%f, gain_2=%f, gain_3=%f",
|
||||
urlBuf.str_value, urlBuf.gain_1, urlBuf.gain_2, urlBuf.gain_3);
|
||||
|
||||
filterParams.dspFlow = dspfEQBassTreble;
|
||||
filterParams.fc_1 = 300.0;
|
||||
filterParams.gain_1 = gainMax * scale;
|
||||
filterParams.gain_1 = urlBuf.gain_1;
|
||||
filterParams.fc_3 = 4000.0;
|
||||
filterParams.gain_3 = gainMax * 0;
|
||||
filterParams.gain_3 = urlBuf.gain_3;
|
||||
|
||||
#if CONFIG_USE_DSP_PROCESSOR
|
||||
dsp_processor_update_filter_params(&filterParams);
|
||||
|
||||
459
main/main.c
459
main/main.c
@@ -74,7 +74,7 @@ static void error_callback(const FLAC__StreamDecoder *decoder,
|
||||
static FLAC__StreamDecoder *flacDecoder = NULL;
|
||||
static QueueHandle_t decoderReadQHdl = NULL;
|
||||
static QueueHandle_t decoderWriteQHdl = NULL;
|
||||
static QueueHandle_t flacTaskQHdl = NULL;
|
||||
static QueueHandle_t decoderTaskQHdl = NULL;
|
||||
SemaphoreHandle_t decoderReadSemaphore = NULL;
|
||||
SemaphoreHandle_t decoderWriteSemaphore = NULL;
|
||||
|
||||
@@ -93,12 +93,16 @@ const char *VERSION_STRING = "0.0.2";
|
||||
|
||||
#define FLAC_TASK_PRIORITY 8
|
||||
#define FLAC_TASK_CORE_ID tskNO_AFFINITY
|
||||
|
||||
#define OPUS_TASK_PRIORITY 8
|
||||
#define OPUS_TASK_CORE_ID tskNO_AFFINITY
|
||||
|
||||
// 1 // tskNO_AFFINITY
|
||||
|
||||
xTaskHandle t_ota_task = NULL;
|
||||
xTaskHandle t_http_get_task = NULL;
|
||||
xTaskHandle t_flac_decoder_task = NULL;
|
||||
xTaskHandle t_flac_task = NULL;
|
||||
xTaskHandle dec_task_handle = NULL;
|
||||
|
||||
#define FAST_SYNC_LATENCY_BUF 10000 // in µs
|
||||
#define NORMAL_SYNC_LATENCY_BUF 1000000 // in µs
|
||||
@@ -136,14 +140,14 @@ dspFlows_t dspFlow = dspfEQBassTreble;
|
||||
#endif
|
||||
#endif
|
||||
|
||||
typedef struct flacData_s {
|
||||
typedef struct decoderData_s {
|
||||
uint32_t type; // should be SNAPCAST_MESSAGE_CODEC_HEADER
|
||||
// or SNAPCAST_MESSAGE_WIRE_CHUNK
|
||||
char *inData;
|
||||
uint8_t *inData;
|
||||
tv_t timestamp;
|
||||
pcm_chunk_message_t *outData;
|
||||
uint32_t bytes;
|
||||
} flacData_t;
|
||||
} decoderData_t;
|
||||
|
||||
void time_sync_msg_cb(void *args);
|
||||
|
||||
@@ -157,6 +161,9 @@ static const esp_timer_create_args_t tSyncArgs = {
|
||||
struct netconn *lwipNetconn;
|
||||
|
||||
static int id_counter = 0;
|
||||
|
||||
static OpusDecoder *opusDecoder = NULL;
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@@ -240,7 +247,7 @@ void time_sync_msg_cb(void *args) {
|
||||
/**
|
||||
*
|
||||
*/
|
||||
void free_flac_data(flacData_t *pFlacData) {
|
||||
void free_flac_data(decoderData_t *pFlacData) {
|
||||
if (pFlacData->inData) {
|
||||
free(pFlacData->inData);
|
||||
pFlacData->inData = NULL;
|
||||
@@ -264,7 +271,7 @@ static FLAC__StreamDecoderReadStatus read_callback(
|
||||
const FLAC__StreamDecoder *decoder, FLAC__byte buffer[], size_t *bytes,
|
||||
void *client_data) {
|
||||
snapcastSetting_t *scSet = (snapcastSetting_t *)client_data;
|
||||
flacData_t *flacData;
|
||||
decoderData_t *flacData;
|
||||
|
||||
(void)scSet;
|
||||
|
||||
@@ -313,7 +320,7 @@ static FLAC__StreamDecoderWriteStatus write_callback(
|
||||
const FLAC__StreamDecoder *decoder, const FLAC__Frame *frame,
|
||||
const FLAC__int32 *const buffer[], void *client_data) {
|
||||
size_t i;
|
||||
flacData_t *flacData = NULL; // = &flacOutData;
|
||||
decoderData_t *flacData = NULL; // = &flacOutData;
|
||||
snapcastSetting_t *scSet = (snapcastSetting_t *)client_data;
|
||||
int ret = 0;
|
||||
uint32_t fragmentCnt = 0;
|
||||
@@ -350,12 +357,12 @@ static FLAC__StreamDecoderWriteStatus write_callback(
|
||||
return FLAC__STREAM_DECODER_WRITE_STATUS_ABORT;
|
||||
}
|
||||
|
||||
flacData = (flacData_t *)malloc(sizeof(flacData_t));
|
||||
flacData = (decoderData_t *)malloc(sizeof(decoderData_t));
|
||||
if (flacData == NULL) {
|
||||
return FLAC__STREAM_DECODER_WRITE_STATUS_ABORT;
|
||||
}
|
||||
|
||||
memset(flacData, 0, sizeof(flacData_t));
|
||||
memset(flacData, 0, sizeof(decoderData_t));
|
||||
|
||||
flacData->bytes = frame->header.blocksize * frame->header.channels *
|
||||
(frame->header.bits_per_sample / 8);
|
||||
@@ -420,7 +427,7 @@ static FLAC__StreamDecoderWriteStatus write_callback(
|
||||
void metadata_callback(const FLAC__StreamDecoder *decoder,
|
||||
const FLAC__StreamMetadata *metadata,
|
||||
void *client_data) {
|
||||
flacData_t *flacData; // = &flacOutData;
|
||||
decoderData_t *flacData; // = &flacOutData;
|
||||
snapcastSetting_t *scSet = (snapcastSetting_t *)client_data;
|
||||
|
||||
(void)decoder;
|
||||
@@ -430,14 +437,14 @@ void metadata_callback(const FLAC__StreamDecoder *decoder,
|
||||
if (metadata->type == FLAC__METADATA_TYPE_STREAMINFO) {
|
||||
// ESP_LOGI(TAG, "in flac meta cb");
|
||||
|
||||
flacData = (flacData_t *)malloc(sizeof(flacData_t));
|
||||
flacData = (decoderData_t *)malloc(sizeof(decoderData_t));
|
||||
if (flacData == NULL) {
|
||||
ESP_LOGE(TAG, "in flac meta cb, malloc failed");
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
memset(flacData, 0, sizeof(flacData_t));
|
||||
memset(flacData, 0, sizeof(decoderData_t));
|
||||
|
||||
// save for later
|
||||
scSet->sr = metadata->data.stream_info.sample_rate;
|
||||
@@ -471,39 +478,6 @@ static void flac_decoder_task(void *pvParameters) {
|
||||
FLAC__StreamDecoderInitStatus init_status;
|
||||
snapcastSetting_t *scSet = (snapcastSetting_t *)pvParameters;
|
||||
|
||||
if (flacTaskQHdl != NULL) {
|
||||
vQueueDelete(flacTaskQHdl);
|
||||
flacTaskQHdl = NULL;
|
||||
}
|
||||
|
||||
flacTaskQHdl = xQueueCreate(8, sizeof(flacData_t *));
|
||||
if (flacTaskQHdl == NULL) {
|
||||
ESP_LOGE(TAG, "Failed to create flac flacTaskQHdl");
|
||||
return;
|
||||
}
|
||||
|
||||
if (decoderReadQHdl != NULL) {
|
||||
vQueueDelete(decoderReadQHdl);
|
||||
decoderReadQHdl = NULL;
|
||||
}
|
||||
|
||||
decoderReadQHdl = xQueueCreate(1, sizeof(flacData_t *));
|
||||
if (decoderReadQHdl == NULL) {
|
||||
ESP_LOGE(TAG, "Failed to create flac read queue");
|
||||
return;
|
||||
}
|
||||
|
||||
if (decoderWriteQHdl != NULL) {
|
||||
vQueueDelete(decoderWriteQHdl);
|
||||
decoderWriteQHdl = NULL;
|
||||
}
|
||||
|
||||
decoderWriteQHdl = xQueueCreate(1, sizeof(flacData_t *));
|
||||
if (decoderWriteQHdl == NULL) {
|
||||
ESP_LOGE(TAG, "Failed to create flac write queue");
|
||||
return;
|
||||
}
|
||||
|
||||
if (flacDecoder != NULL) {
|
||||
FLAC__stream_decoder_finish(flacDecoder);
|
||||
FLAC__stream_decoder_delete(flacDecoder);
|
||||
@@ -538,14 +512,14 @@ static void flac_decoder_task(void *pvParameters) {
|
||||
*/
|
||||
void flac_task(void *pvParameters) {
|
||||
tv_t currentTimestamp;
|
||||
flacData_t *pFlacData = NULL;
|
||||
decoderData_t *pFlacData = NULL;
|
||||
snapcastSetting_t *scSet = (snapcastSetting_t *)pvParameters;
|
||||
#if CONFIG_USE_DSP_PROCESSOR
|
||||
int flow_drain_counter = 0;
|
||||
#endif
|
||||
|
||||
while (1) {
|
||||
xQueueReceive(flacTaskQHdl, &pFlacData,
|
||||
xQueueReceive(decoderTaskQHdl, &pFlacData,
|
||||
portMAX_DELAY); // get data from tcp task
|
||||
|
||||
if (pFlacData != NULL) {
|
||||
@@ -640,6 +614,139 @@ void flac_task(void *pvParameters) {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
void opus_decoder_task(void *pvParameters) {
|
||||
tv_t currentTimestamp;
|
||||
decoderData_t *pOpusData = NULL;
|
||||
snapcastSetting_t *scSet = (snapcastSetting_t *)pvParameters;
|
||||
#if CONFIG_USE_DSP_PROCESSOR
|
||||
int flow_drain_counter = 0;
|
||||
#endif
|
||||
|
||||
while (1) {
|
||||
// get data from tcp task
|
||||
xQueueReceive(decoderTaskQHdl, &pOpusData, portMAX_DELAY);
|
||||
|
||||
if (pOpusData) {
|
||||
currentTimestamp = pOpusData->timestamp;
|
||||
|
||||
// ESP_LOGE(TAG, "%s: Got timestamp %lld", __func__,
|
||||
// (uint64_t)currentTimestamp.sec *
|
||||
// 1000000 +
|
||||
// (uint64_t)currentTimestamp.usec);
|
||||
|
||||
if (pOpusData->inData) {
|
||||
int frame_size = 0;
|
||||
int sample_count = 0;
|
||||
int samples_per_frame = 0;
|
||||
int frame_count;
|
||||
opus_int16 *audio;
|
||||
|
||||
samples_per_frame =
|
||||
opus_packet_get_samples_per_frame(pOpusData->inData, scSet->sr);
|
||||
if (samples_per_frame < 0) {
|
||||
ESP_LOGE(TAG,
|
||||
"couldn't get samples per frame count "
|
||||
"of packet");
|
||||
}
|
||||
|
||||
scSet->chkInFrames = samples_per_frame;
|
||||
|
||||
size_t bytes = samples_per_frame * scSet->ch * scSet->bits / 8;
|
||||
|
||||
if (samples_per_frame > 480) {
|
||||
ESP_LOGE(TAG, "samples_per_frame: %d, pOpusData->bytes %d, bytes %d",
|
||||
samples_per_frame, pOpusData->bytes, bytes);
|
||||
}
|
||||
|
||||
// TODO: insert some break condition if we wait
|
||||
// too long
|
||||
while ((audio = (opus_int16 *)malloc(bytes)) == NULL) {
|
||||
ESP_LOGE(TAG, "couldn't get memory for audio");
|
||||
|
||||
vTaskDelay(pdMS_TO_TICKS(1));
|
||||
}
|
||||
|
||||
frame_size =
|
||||
opus_decode(opusDecoder, pOpusData->inData, pOpusData->bytes,
|
||||
(opus_int16 *)audio, samples_per_frame, 0);
|
||||
|
||||
free(pOpusData->inData);
|
||||
pOpusData->inData = NULL;
|
||||
|
||||
if (frame_size < 0) {
|
||||
ESP_LOGE(TAG, "Decode error : %d \n", frame_size);
|
||||
} else {
|
||||
pcm_chunk_message_t *pcmData = NULL;
|
||||
|
||||
bytes = frame_size * scSet->ch * scSet->bits / 8;
|
||||
if (allocate_pcm_chunk_memory(&pcmData, bytes) < 0) {
|
||||
pcmData = NULL;
|
||||
} else {
|
||||
pcmData->timestamp = currentTimestamp;
|
||||
|
||||
if (pcmData->fragment->payload) {
|
||||
volatile uint32_t *sample;
|
||||
uint32_t tmpData;
|
||||
uint32_t cnt = 0;
|
||||
|
||||
for (int i = 0; i < bytes; i += 4) {
|
||||
sample =
|
||||
(volatile uint32_t *)(&(pcmData->fragment->payload[i]));
|
||||
tmpData = (((uint32_t)audio[cnt] << 16) & 0xFFFF0000) |
|
||||
(((uint32_t)audio[cnt + 1] << 0) & 0x0000FFFF);
|
||||
*sample = (volatile uint32_t)tmpData;
|
||||
|
||||
cnt += 2;
|
||||
}
|
||||
}
|
||||
|
||||
free(audio);
|
||||
audio = NULL;
|
||||
}
|
||||
|
||||
if (player_send_snapcast_setting(scSet) != pdPASS) {
|
||||
ESP_LOGE(TAG,
|
||||
"Failed to notify "
|
||||
"sync task about "
|
||||
"codec. Did you "
|
||||
"init player?");
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
#if CONFIG_USE_DSP_PROCESSOR
|
||||
if (flow_drain_counter > 0) {
|
||||
flow_drain_counter--;
|
||||
double dynamic_vol =
|
||||
((double)scSet->volume / 100 / (20 - flow_drain_counter));
|
||||
if (flow_drain_counter == 0) {
|
||||
#if SNAPCAST_USE_SOFT_VOL
|
||||
dynamic_vol = 0.0;
|
||||
#else
|
||||
dynamic_vol = 1.0;
|
||||
#endif
|
||||
audio_hal_set_mute(board_handle->audio_hal, scSet->muted);
|
||||
}
|
||||
dsp_processor_set_volome(dynamic_vol);
|
||||
}
|
||||
|
||||
dsp_processor_worker(pcmData->fragment->payload,
|
||||
pcmData->fragment->size, scSet->sr);
|
||||
#endif
|
||||
|
||||
insert_pcm_chunk(pcmData);
|
||||
}
|
||||
}
|
||||
|
||||
free(pOpusData);
|
||||
pOpusData = NULL;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@@ -668,18 +775,17 @@ static void http_get_task(void *pvParameters) {
|
||||
int64_t tmpDiffToServer;
|
||||
int64_t lastTimeSync = 0;
|
||||
esp_timer_handle_t timeSyncMessageTimer = NULL;
|
||||
uint16_t channels;
|
||||
esp_err_t err = 0;
|
||||
server_settings_message_t server_settings_message;
|
||||
bool received_header = false;
|
||||
mdns_result_t *r;
|
||||
OpusDecoder *opusDecoder = NULL;
|
||||
codec_type_t codec = NONE;
|
||||
snapcastSetting_t scSet;
|
||||
// flacData_t flacData = {SNAPCAST_MESSAGE_CODEC_HEADER, NULL, {0, 0}, NULL,
|
||||
// 0};
|
||||
flacData_t *pFlacData = NULL;
|
||||
decoderData_t *pDecData = NULL;
|
||||
pcm_chunk_message_t *pcmData = NULL;
|
||||
uint8_t *opusData = NULL;
|
||||
ip_addr_t remote_ip;
|
||||
uint16_t remotePort = 0;
|
||||
int rc1 = ERR_OK, rc2 = ERR_OK;
|
||||
@@ -734,9 +840,9 @@ static void http_get_task(void *pvParameters) {
|
||||
t_flac_decoder_task = NULL;
|
||||
}
|
||||
|
||||
if (t_flac_task != NULL) {
|
||||
vTaskDelete(t_flac_task);
|
||||
t_flac_task = NULL;
|
||||
if (dec_task_handle != NULL) {
|
||||
vTaskDelete(dec_task_handle);
|
||||
dec_task_handle = NULL;
|
||||
}
|
||||
|
||||
if (flacDecoder != NULL) {
|
||||
@@ -755,9 +861,9 @@ static void http_get_task(void *pvParameters) {
|
||||
decoderReadQHdl = NULL;
|
||||
}
|
||||
|
||||
if (flacTaskQHdl != NULL) {
|
||||
vQueueDelete(flacTaskQHdl);
|
||||
flacTaskQHdl = NULL;
|
||||
if (decoderTaskQHdl != NULL) {
|
||||
vQueueDelete(decoderTaskQHdl);
|
||||
decoderTaskQHdl = NULL;
|
||||
}
|
||||
|
||||
#if SNAPCAST_SERVER_USE_MDNS
|
||||
@@ -933,6 +1039,8 @@ static void http_get_task(void *pvParameters) {
|
||||
int32_t payloadDataShift = 0;
|
||||
int flow_drain_counter = 0;
|
||||
|
||||
int16_t pcm_size = 120;
|
||||
|
||||
#define BASE_MESSAGE_STATE 0
|
||||
#define TYPED_MESSAGE_STATE 1
|
||||
|
||||
@@ -1348,42 +1456,94 @@ static void http_get_task(void *pvParameters) {
|
||||
|
||||
if (received_header == true) {
|
||||
switch (codec) {
|
||||
case OPUS: {
|
||||
if (opusData == NULL) {
|
||||
// TODO: insert some break condition if we wait
|
||||
// too long
|
||||
while ((opusData = (uint8_t *)malloc(
|
||||
wire_chnk.size)) == NULL) {
|
||||
ESP_LOGE(TAG, "couldn't memory for opusData");
|
||||
|
||||
vTaskDelay(pdMS_TO_TICKS(1));
|
||||
}
|
||||
|
||||
payloadOffset = 0;
|
||||
}
|
||||
|
||||
memcpy(&opusData[payloadOffset], start, tmp);
|
||||
payloadOffset += tmp;
|
||||
|
||||
// ESP_LOGE(TAG,"payloadOffset
|
||||
// %d, wire_chnk.size
|
||||
// %d", payloadOffset,
|
||||
// wire_chnk.size);
|
||||
|
||||
if (payloadOffset >= wire_chnk.size) {
|
||||
pDecData = NULL;
|
||||
while (!pDecData) {
|
||||
pDecData = (decoderData_t *)malloc(
|
||||
sizeof(decoderData_t));
|
||||
if (!pDecData) {
|
||||
vTaskDelay(pdMS_TO_TICKS(1));
|
||||
}
|
||||
}
|
||||
|
||||
// store timestamp for
|
||||
// later use
|
||||
pDecData->timestamp = wire_chnk.timestamp;
|
||||
pDecData->inData = opusData;
|
||||
pDecData->bytes = wire_chnk.size;
|
||||
pDecData->outData = NULL;
|
||||
pDecData->type = SNAPCAST_MESSAGE_WIRE_CHUNK;
|
||||
|
||||
// send data to separate task which will handle
|
||||
// this
|
||||
xQueueSend(decoderTaskQHdl, &pDecData,
|
||||
portMAX_DELAY);
|
||||
|
||||
opusData = NULL;
|
||||
pDecData = NULL;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case FLAC: {
|
||||
#if TEST_DECODER_TASK
|
||||
pFlacData = NULL;
|
||||
while (!pFlacData) {
|
||||
pFlacData =
|
||||
(flacData_t *)malloc(sizeof(flacData_t));
|
||||
if (!pFlacData) {
|
||||
pDecData = NULL;
|
||||
while (!pDecData) {
|
||||
pDecData = (decoderData_t *)malloc(
|
||||
sizeof(decoderData_t));
|
||||
if (!pDecData) {
|
||||
vTaskDelay(pdMS_TO_TICKS(1));
|
||||
}
|
||||
}
|
||||
|
||||
pFlacData->bytes = tmp;
|
||||
pDecData->bytes = tmp;
|
||||
|
||||
// store timestamp for
|
||||
// later use
|
||||
pFlacData->timestamp = wire_chnk.timestamp;
|
||||
pFlacData->inData = NULL;
|
||||
pDecData->timestamp = wire_chnk.timestamp;
|
||||
pDecData->inData = NULL;
|
||||
|
||||
// while ((!pFlacData->inData) && (mallocCnt < 100))
|
||||
// {
|
||||
while (!pFlacData->inData) {
|
||||
pFlacData->inData =
|
||||
(char *)malloc(pFlacData->bytes);
|
||||
if (!pFlacData->inData) {
|
||||
while (!pDecData->inData) {
|
||||
pDecData->inData =
|
||||
(uint8_t *)malloc(pDecData->bytes);
|
||||
if (!pDecData->inData) {
|
||||
vTaskDelay(pdMS_TO_TICKS(1));
|
||||
}
|
||||
}
|
||||
|
||||
if (pFlacData->inData) {
|
||||
memcpy(pFlacData->inData, start, tmp);
|
||||
pFlacData->outData = NULL;
|
||||
pFlacData->type = SNAPCAST_MESSAGE_WIRE_CHUNK;
|
||||
if (pDecData->inData) {
|
||||
memcpy(pDecData->inData, start, tmp);
|
||||
pDecData->outData = NULL;
|
||||
pDecData->type = SNAPCAST_MESSAGE_WIRE_CHUNK;
|
||||
|
||||
// send data to seperate task which will handle
|
||||
// send data to separate task which will handle
|
||||
// this
|
||||
xQueueSend(flacTaskQHdl, &pFlacData,
|
||||
xQueueSend(decoderTaskQHdl, &pDecData,
|
||||
portMAX_DELAY);
|
||||
}
|
||||
#else
|
||||
@@ -1392,14 +1552,14 @@ static void http_get_task(void *pvParameters) {
|
||||
wire_chnk.timestamp; // store timestamp for
|
||||
// later use
|
||||
flacData.inData = start;
|
||||
pFlacData = &flacData;
|
||||
pDecData = &flacData;
|
||||
|
||||
startTime = esp_timer_get_time();
|
||||
|
||||
xSemaphoreTake(decoderReadSemaphore, portMAX_DELAY);
|
||||
|
||||
// send data to flac decoder
|
||||
xQueueSend(decoderReadQHdl, &pFlacData,
|
||||
xQueueSend(decoderReadQHdl, &pDecData,
|
||||
portMAX_DELAY);
|
||||
// and wait until data was
|
||||
// processed
|
||||
@@ -1507,25 +1667,30 @@ static void http_get_task(void *pvParameters) {
|
||||
if (typedMsgCurrentPos >= base_message_rx.size) {
|
||||
if (received_header == true) {
|
||||
switch (codec) {
|
||||
case OPUS: {
|
||||
// nothing to do here
|
||||
break;
|
||||
}
|
||||
|
||||
case FLAC: {
|
||||
#if TEST_DECODER_TASK
|
||||
pFlacData = NULL; // send NULL so we know to wait
|
||||
// for decoded data in task
|
||||
pDecData = NULL; // send NULL so we know to wait
|
||||
// for decoded data in task
|
||||
|
||||
// ESP_LOGE(TAG, "%s: flacTaskQHdl start
|
||||
// wireChnk", __func__);
|
||||
xQueueSend(flacTaskQHdl, &pFlacData,
|
||||
xQueueSend(decoderTaskQHdl, &pDecData,
|
||||
portMAX_DELAY);
|
||||
// ESP_LOGE(TAG, "%s: flacTaskQHdl stop wireChnk",
|
||||
// __func__);
|
||||
#else
|
||||
xSemaphoreGive(decoderWriteSemaphore);
|
||||
// and wait until it is done
|
||||
xQueueReceive(decoderWriteQHdl, &pFlacData,
|
||||
xQueueReceive(decoderWriteQHdl, &pDecData,
|
||||
portMAX_DELAY);
|
||||
|
||||
if (pFlacData->outData != NULL) {
|
||||
pcmData = pFlacData->outData;
|
||||
if (pDecData->outData != NULL) {
|
||||
pcmData = pDecData->outData;
|
||||
pcmData->timestamp = wire_chnk.timestamp;
|
||||
|
||||
size_t decodedSize =
|
||||
@@ -1909,9 +2074,9 @@ static void http_get_task(void *pvParameters) {
|
||||
t_flac_decoder_task = NULL;
|
||||
}
|
||||
|
||||
if (t_flac_task != NULL) {
|
||||
vTaskDelete(t_flac_task);
|
||||
t_flac_task = NULL;
|
||||
if (dec_task_handle != NULL) {
|
||||
vTaskDelete(dec_task_handle);
|
||||
dec_task_handle = NULL;
|
||||
}
|
||||
|
||||
if (flacDecoder != NULL) {
|
||||
@@ -1930,16 +2095,81 @@ static void http_get_task(void *pvParameters) {
|
||||
decoderReadQHdl = NULL;
|
||||
}
|
||||
|
||||
if (flacTaskQHdl != NULL) {
|
||||
vQueueDelete(flacTaskQHdl);
|
||||
flacTaskQHdl = NULL;
|
||||
if (decoderTaskQHdl != NULL) {
|
||||
vQueueDelete(decoderTaskQHdl);
|
||||
decoderTaskQHdl = NULL;
|
||||
}
|
||||
|
||||
if (opusDecoder != NULL) {
|
||||
opus_decoder_destroy(opusDecoder);
|
||||
opusDecoder = NULL;
|
||||
}
|
||||
|
||||
if (codec == OPUS) {
|
||||
ESP_LOGI(TAG, "OPUS not implemented yet");
|
||||
decoderTaskQHdl =
|
||||
xQueueCreate(8, sizeof(decoderData_t *));
|
||||
if (decoderTaskQHdl == NULL) {
|
||||
ESP_LOGE(TAG, "Failed to create decoderTaskQHdl");
|
||||
return;
|
||||
}
|
||||
|
||||
return;
|
||||
// ESP_LOGI(TAG, "OPUS not
|
||||
// implemented yet"); return;
|
||||
uint16_t channels;
|
||||
uint32_t rate;
|
||||
uint16_t bits;
|
||||
|
||||
memcpy(&rate, tmp + 4, sizeof(rate));
|
||||
memcpy(&bits, tmp + 8, sizeof(bits));
|
||||
memcpy(&channels, tmp + 10, sizeof(channels));
|
||||
|
||||
scSet.codec = codec;
|
||||
scSet.bits = bits;
|
||||
scSet.ch = channels;
|
||||
scSet.sr = rate;
|
||||
|
||||
ESP_LOGI(TAG, "Opus sample format: %d:%d:%d\n", rate,
|
||||
bits, channels);
|
||||
|
||||
int error = 0;
|
||||
|
||||
opusDecoder =
|
||||
opus_decoder_create(scSet.sr, scSet.ch, &error);
|
||||
if (error != 0) {
|
||||
ESP_LOGI(TAG, "Failed to init opus coder");
|
||||
return;
|
||||
}
|
||||
|
||||
ESP_LOGI(TAG, "Initialized opus Decoder: %d", error);
|
||||
|
||||
if (dec_task_handle == NULL) {
|
||||
xTaskCreatePinnedToCore(
|
||||
&opus_decoder_task, "opus_task", 8 * 1024,
|
||||
&scSet, OPUS_TASK_PRIORITY, &dec_task_handle,
|
||||
OPUS_TASK_CORE_ID);
|
||||
}
|
||||
} else if (codec == FLAC) {
|
||||
decoderTaskQHdl =
|
||||
xQueueCreate(8, sizeof(decoderData_t *));
|
||||
if (decoderTaskQHdl == NULL) {
|
||||
ESP_LOGE(TAG, "Failed to create decoderTaskQHdl");
|
||||
return;
|
||||
}
|
||||
|
||||
decoderReadQHdl =
|
||||
xQueueCreate(1, sizeof(decoderData_t *));
|
||||
if (decoderReadQHdl == NULL) {
|
||||
ESP_LOGE(TAG, "Failed to create flac read queue");
|
||||
return;
|
||||
}
|
||||
|
||||
decoderWriteQHdl =
|
||||
xQueueCreate(1, sizeof(decoderData_t *));
|
||||
if (decoderWriteQHdl == NULL) {
|
||||
ESP_LOGE(TAG, "Failed to create flac write queue");
|
||||
return;
|
||||
}
|
||||
|
||||
if (t_flac_decoder_task == NULL) {
|
||||
xTaskCreatePinnedToCore(
|
||||
&flac_decoder_task, "flac_decoder_task",
|
||||
@@ -1948,42 +2178,36 @@ static void http_get_task(void *pvParameters) {
|
||||
FLAC_DECODER_TASK_CORE_ID);
|
||||
}
|
||||
|
||||
// TODO: find a smarter way for
|
||||
// this wait for task creation done
|
||||
// maybe use task notification
|
||||
while (flacTaskQHdl == NULL) {
|
||||
vTaskDelay(10);
|
||||
}
|
||||
|
||||
#if TEST_DECODER_TASK
|
||||
if (t_flac_task == NULL) {
|
||||
if (dec_task_handle == NULL) {
|
||||
xTaskCreatePinnedToCore(
|
||||
&flac_task, "flac_task", 9 * 256, &scSet,
|
||||
FLAC_TASK_PRIORITY, &t_flac_task,
|
||||
FLAC_TASK_PRIORITY, &dec_task_handle,
|
||||
FLAC_TASK_CORE_ID);
|
||||
}
|
||||
|
||||
pFlacData = (flacData_t *)malloc(sizeof(flacData_t));
|
||||
memset(pFlacData, 0, sizeof(flacData_t));
|
||||
pDecData =
|
||||
(decoderData_t *)malloc(sizeof(decoderData_t));
|
||||
memset(pDecData, 0, sizeof(decoderData_t));
|
||||
|
||||
pFlacData->bytes = typedMsgLen;
|
||||
pFlacData->inData = (char *)malloc(typedMsgLen);
|
||||
memcpy(pFlacData->inData, tmp, typedMsgLen);
|
||||
pFlacData->outData = NULL;
|
||||
pFlacData->type = SNAPCAST_MESSAGE_CODEC_HEADER;
|
||||
pDecData->bytes = typedMsgLen;
|
||||
pDecData->inData = (uint8_t *)malloc(typedMsgLen);
|
||||
memcpy(pDecData->inData, tmp, typedMsgLen);
|
||||
pDecData->outData = NULL;
|
||||
pDecData->type = SNAPCAST_MESSAGE_CODEC_HEADER;
|
||||
|
||||
// ESP_LOGE(TAG, "%s: flacTaskQHdl start codec
|
||||
// header", __func__);
|
||||
|
||||
// send codec header to flac decoder
|
||||
xQueueSend(flacTaskQHdl, &pFlacData, portMAX_DELAY);
|
||||
xQueueSend(decoderTaskQHdl, &pDecData, portMAX_DELAY);
|
||||
|
||||
// ESP_LOGE(TAG, "sent codec header");
|
||||
|
||||
// send NULL so we know to wait
|
||||
// for decoded data in task
|
||||
pFlacData = NULL;
|
||||
xQueueSend(flacTaskQHdl, &pFlacData, portMAX_DELAY);
|
||||
pDecData = NULL;
|
||||
xQueueSend(decoderTaskQHdl, &pDecData, portMAX_DELAY);
|
||||
|
||||
// ESP_LOGE(TAG, "%s: flacTaskQHdl done codec header",
|
||||
// __func__);
|
||||
@@ -1997,7 +2221,7 @@ static void http_get_task(void *pvParameters) {
|
||||
|
||||
flacData.bytes = typedMsgLen;
|
||||
flacData.inData = tmp;
|
||||
pFlacData = &flacData;
|
||||
pDecData = &flacData;
|
||||
|
||||
// TODO: find a smarter way for
|
||||
// this wait for task creation done
|
||||
@@ -2008,8 +2232,7 @@ static void http_get_task(void *pvParameters) {
|
||||
xSemaphoreTake(decoderReadSemaphore, portMAX_DELAY);
|
||||
|
||||
// send data to flac decoder
|
||||
xQueueSend(decoderReadQHdl, &pFlacData,
|
||||
portMAX_DELAY);
|
||||
xQueueSend(decoderReadQHdl, &pDecData, portMAX_DELAY);
|
||||
// and wait until data was
|
||||
// processed
|
||||
xSemaphoreTake(decoderReadSemaphore, portMAX_DELAY);
|
||||
@@ -2017,17 +2240,19 @@ static void http_get_task(void *pvParameters) {
|
||||
// for next round
|
||||
xSemaphoreGive(decoderReadSemaphore);
|
||||
// wait until it is done
|
||||
xQueueReceive(decoderWriteQHdl, &pFlacData,
|
||||
xQueueReceive(decoderWriteQHdl, &pDecData,
|
||||
portMAX_DELAY);
|
||||
|
||||
ESP_LOGI(TAG, "fLaC sampleformat: %d:%d:%d", scSet.sr,
|
||||
scSet.bits, scSet.ch);
|
||||
#endif
|
||||
} else if (codec == PCM) {
|
||||
memcpy(&channels, tmp + 22, sizeof(channels));
|
||||
uint16_t channels;
|
||||
uint32_t rate;
|
||||
memcpy(&rate, tmp + 24, sizeof(rate));
|
||||
uint16_t bits;
|
||||
|
||||
memcpy(&channels, tmp + 22, sizeof(channels));
|
||||
memcpy(&rate, tmp + 24, sizeof(rate));
|
||||
memcpy(&bits, tmp + 34, sizeof(bits));
|
||||
|
||||
scSet.codec = codec;
|
||||
@@ -2730,7 +2955,7 @@ void app_main(void) {
|
||||
xTaskCreatePinnedToCore(&ota_server_task, "ota", 14 * 256, NULL,
|
||||
OTA_TASK_PRIORITY, t_ota_task, OTA_TASK_CORE_ID);
|
||||
|
||||
xTaskCreatePinnedToCore(&http_get_task, "http", 3 * 1024, NULL,
|
||||
xTaskCreatePinnedToCore(&http_get_task, "http", 4 * 1024, NULL,
|
||||
HTTP_TASK_PRIORITY, &t_http_get_task,
|
||||
HTTP_TASK_CORE_ID);
|
||||
|
||||
|
||||
91
sdkconfig
91
sdkconfig
@@ -65,6 +65,7 @@ CONFIG_BOOTLOADER_APP_ROLLBACK_ENABLE=y
|
||||
# CONFIG_BOOTLOADER_SKIP_VALIDATE_ALWAYS is not set
|
||||
CONFIG_BOOTLOADER_RESERVE_RTC_SIZE=0
|
||||
# CONFIG_BOOTLOADER_CUSTOM_RESERVE_RTC is not set
|
||||
CONFIG_BOOTLOADER_FLASH_XMC_SUPPORT=y
|
||||
# end of Bootloader config
|
||||
|
||||
#
|
||||
@@ -143,13 +144,7 @@ CONFIG_ESP_LYRAT_V4_3_BOARD=y
|
||||
#
|
||||
# ESP32 DSP processor config
|
||||
#
|
||||
CONFIG_USE_DSP_PROCESSOR=y
|
||||
# CONFIG_SNAPCLIENT_DSP_FLOW_STEREO is not set
|
||||
# CONFIG_SNAPCLIENT_DSP_FLOW_BASSBOOST is not set
|
||||
# CONFIG_SNAPCLIENT_DSP_FLOW_BIAMP is not set
|
||||
CONFIG_SNAPCLIENT_DSP_FLOW_BASS_TREBLE_EQ=y
|
||||
CONFIG_USE_BIQUAD_ASM=y
|
||||
CONFIG_SNAPCLIENT_USE_SOFT_VOL=y
|
||||
# CONFIG_USE_DSP_PROCESSOR is not set
|
||||
# end of ESP32 DSP processor config
|
||||
|
||||
#
|
||||
@@ -168,9 +163,9 @@ CONFIG_SNTP_SERVER="pool.ntp.org"
|
||||
#
|
||||
# Wifi Configuration
|
||||
#
|
||||
CONFIG_ENABLE_WIFI_PROVISIONING=y
|
||||
CONFIG_WIFI_PROVISIONING_SSID="prov_snapclient"
|
||||
CONFIG_WIFI_PROVISIONING_PASSWORD="12345678"
|
||||
# CONFIG_ENABLE_WIFI_PROVISIONING is not set
|
||||
CONFIG_WIFI_SSID="zuhause"
|
||||
CONFIG_WIFI_PASSWORD="dErtischlEr"
|
||||
CONFIG_WIFI_MAXIMUM_RETRY=0
|
||||
# end of Wifi Configuration
|
||||
|
||||
@@ -215,7 +210,7 @@ CONFIG_COMPILER_STACK_CHECK_MODE_NONE=y
|
||||
#
|
||||
# Application Level Tracing
|
||||
#
|
||||
# CONFIG_APPTRACE_DEST_TRAX is not set
|
||||
# CONFIG_APPTRACE_DEST_JTAG is not set
|
||||
CONFIG_APPTRACE_DEST_NONE=y
|
||||
CONFIG_APPTRACE_LOCK_ENABLE=y
|
||||
# end of Application Level Tracing
|
||||
@@ -230,35 +225,6 @@ CONFIG_APPTRACE_LOCK_ENABLE=y
|
||||
# Bluetooth
|
||||
#
|
||||
# CONFIG_BT_ENABLED is not set
|
||||
CONFIG_BTDM_CTRL_BR_EDR_SCO_DATA_PATH_EFF=0
|
||||
CONFIG_BTDM_CTRL_PCM_ROLE_EFF=0
|
||||
CONFIG_BTDM_CTRL_PCM_POLAR_EFF=0
|
||||
CONFIG_BTDM_CTRL_BLE_MAX_CONN_EFF=0
|
||||
CONFIG_BTDM_CTRL_BR_EDR_MAX_ACL_CONN_EFF=0
|
||||
CONFIG_BTDM_CTRL_BR_EDR_MAX_SYNC_CONN_EFF=0
|
||||
CONFIG_BTDM_CTRL_PINNED_TO_CORE=0
|
||||
CONFIG_BTDM_BLE_SLEEP_CLOCK_ACCURACY_INDEX_EFF=1
|
||||
CONFIG_BT_CTRL_MODE_EFF=1
|
||||
CONFIG_BT_CTRL_BLE_MAX_ACT=10
|
||||
CONFIG_BT_CTRL_BLE_MAX_ACT_EFF=10
|
||||
CONFIG_BT_CTRL_BLE_STATIC_ACL_TX_BUF_NB=0
|
||||
CONFIG_BT_CTRL_PINNED_TO_CORE=0
|
||||
CONFIG_BT_CTRL_HCI_TL=1
|
||||
CONFIG_BT_CTRL_ADV_DUP_FILT_MAX=30
|
||||
CONFIG_BT_CTRL_HW_CCA_EFF=0
|
||||
CONFIG_BT_CTRL_DFT_TX_POWER_LEVEL_EFF=0
|
||||
CONFIG_BT_CTRL_BLE_ADV_REPORT_FLOW_CTRL_SUPP=y
|
||||
CONFIG_BT_CTRL_BLE_ADV_REPORT_FLOW_CTRL_NUM=100
|
||||
CONFIG_BT_CTRL_BLE_ADV_REPORT_DISCARD_THRSHOLD=20
|
||||
CONFIG_BT_CTRL_BLE_SCAN_DUPL=y
|
||||
CONFIG_BT_CTRL_SCAN_DUPL_TYPE=0
|
||||
CONFIG_BT_CTRL_SCAN_DUPL_CACHE_SIZE=100
|
||||
CONFIG_BT_CTRL_COEX_PHY_CODED_TX_RX_TLIM_EFF=0
|
||||
CONFIG_BT_CTRL_SLEEP_MODE_EFF=0
|
||||
CONFIG_BT_CTRL_SLEEP_CLOCK_EFF=0
|
||||
CONFIG_BT_CTRL_HCI_TL_EFF=1
|
||||
CONFIG_BT_RESERVE_DRAM=0
|
||||
CONFIG_BT_NIMBLE_USE_ESP_TIMER=y
|
||||
# end of Bluetooth
|
||||
|
||||
#
|
||||
@@ -298,6 +264,7 @@ CONFIG_SPI_MASTER_ISR_IN_IRAM=y
|
||||
# CONFIG_TWAI_ERRATA_FIX_TX_INTR_LOST is not set
|
||||
# CONFIG_TWAI_ERRATA_FIX_RX_FRAME_INVALID is not set
|
||||
# CONFIG_TWAI_ERRATA_FIX_RX_FIFO_CORRUPT is not set
|
||||
# CONFIG_TWAI_ERRATA_FIX_LISTEN_ONLY_DOM is not set
|
||||
# end of TWAI configuration
|
||||
|
||||
#
|
||||
@@ -345,9 +312,16 @@ CONFIG_ESP_TLS_USING_MBEDTLS=y
|
||||
#
|
||||
CONFIG_ESP32_REV_MIN_0=y
|
||||
# CONFIG_ESP32_REV_MIN_1 is not set
|
||||
# CONFIG_ESP32_REV_MIN_1_1 is not set
|
||||
# CONFIG_ESP32_REV_MIN_2 is not set
|
||||
# CONFIG_ESP32_REV_MIN_3 is not set
|
||||
# CONFIG_ESP32_REV_MIN_3_1 is not set
|
||||
CONFIG_ESP32_REV_MIN=0
|
||||
CONFIG_ESP32_REV_MIN_FULL=0
|
||||
CONFIG_ESP_REV_MIN_FULL=0
|
||||
CONFIG_ESP32_REV_MAX_FULL_STR_OPT=y
|
||||
CONFIG_ESP32_REV_MAX_FULL=399
|
||||
CONFIG_ESP_REV_MAX_FULL=399
|
||||
CONFIG_ESP32_DPORT_WORKAROUND=y
|
||||
# CONFIG_ESP32_DEFAULT_CPU_FREQ_80 is not set
|
||||
# CONFIG_ESP32_DEFAULT_CPU_FREQ_160 is not set
|
||||
@@ -445,7 +419,7 @@ CONFIG_ETH_PHY_INTERFACE_RMII=y
|
||||
CONFIG_ETH_RMII_CLK_INPUT=y
|
||||
# CONFIG_ETH_RMII_CLK_OUTPUT is not set
|
||||
CONFIG_ETH_RMII_CLK_IN_GPIO=0
|
||||
CONFIG_ETH_DMA_BUFFER_SIZE=512
|
||||
CONFIG_ETH_DMA_BUFFER_SIZE=1024
|
||||
CONFIG_ETH_DMA_RX_BUFFER_NUM=30
|
||||
CONFIG_ETH_DMA_TX_BUFFER_NUM=5
|
||||
# CONFIG_ETH_SOFT_FLOW_CONTROL is not set
|
||||
@@ -521,6 +495,12 @@ CONFIG_ESP_SYSTEM_PANIC_PRINT_REBOOT=y
|
||||
# CONFIG_ESP_SYSTEM_PANIC_SILENT_REBOOT is not set
|
||||
# CONFIG_ESP_SYSTEM_PANIC_GDBSTUB is not set
|
||||
CONFIG_ESP_SYSTEM_PD_FLASH=y
|
||||
# CONFIG_ESP_SYSTEM_FLASH_LEAKAGE_WORKAROUND is not set
|
||||
|
||||
#
|
||||
# RTC Clock Config
|
||||
#
|
||||
# end of RTC Clock Config
|
||||
|
||||
#
|
||||
# Memory protection
|
||||
@@ -561,14 +541,15 @@ CONFIG_ESP32_WIFI_MGMT_SBUF_NUM=32
|
||||
# CONFIG_WIFI_LOG_DEFAULT_LEVEL_NONE is not set
|
||||
# CONFIG_WIFI_LOG_DEFAULT_LEVEL_ERROR is not set
|
||||
# CONFIG_WIFI_LOG_DEFAULT_LEVEL_WARN is not set
|
||||
# CONFIG_WIFI_LOG_DEFAULT_LEVEL_INFO is not set
|
||||
CONFIG_WIFI_LOG_DEFAULT_LEVEL_INFO=y
|
||||
# CONFIG_WIFI_LOG_DEFAULT_LEVEL_DEBUG is not set
|
||||
CONFIG_WIFI_LOG_DEFAULT_LEVEL_VERBOSE=y
|
||||
# CONFIG_WIFI_LOG_DEFAULT_LEVEL_VERBOSE is not set
|
||||
# CONFIG_ESP32_WIFI_IRAM_OPT is not set
|
||||
CONFIG_ESP32_WIFI_RX_IRAM_OPT=y
|
||||
CONFIG_ESP32_WIFI_ENABLE_WPA3_SAE=y
|
||||
# CONFIG_ESP_WIFI_SLP_IRAM_OPT is not set
|
||||
# CONFIG_ESP_WIFI_STA_DISCONNECTED_PM_ENABLE is not set
|
||||
# CONFIG_ESP_WIFI_SLP_BEACON_LOST_OPT is not set
|
||||
# end of Wi-Fi
|
||||
|
||||
#
|
||||
@@ -640,6 +621,10 @@ CONFIG_FMB_SERIAL_BUF_SIZE=256
|
||||
CONFIG_FMB_SERIAL_ASCII_BITS_PER_SYMB=8
|
||||
CONFIG_FMB_SERIAL_ASCII_TIMEOUT_RESPOND_MS=1000
|
||||
CONFIG_FMB_PORT_TASK_PRIO=10
|
||||
# CONFIG_FMB_PORT_TASK_AFFINITY_NO_AFFINITY is not set
|
||||
CONFIG_FMB_PORT_TASK_AFFINITY_CPU0=y
|
||||
# CONFIG_FMB_PORT_TASK_AFFINITY_CPU1 is not set
|
||||
CONFIG_FMB_PORT_TASK_AFFINITY=0x0
|
||||
CONFIG_FMB_CONTROLLER_SLAVE_ID_SUPPORT=y
|
||||
CONFIG_FMB_CONTROLLER_SLAVE_ID=0x00112233
|
||||
CONFIG_FMB_CONTROLLER_NOTIFY_TIMEOUT=20
|
||||
@@ -649,6 +634,8 @@ CONFIG_FMB_EVENT_QUEUE_TIMEOUT=20
|
||||
CONFIG_FMB_TIMER_PORT_ENABLED=y
|
||||
CONFIG_FMB_TIMER_GROUP=0
|
||||
CONFIG_FMB_TIMER_INDEX=0
|
||||
CONFIG_FMB_MASTER_TIMER_GROUP=0
|
||||
CONFIG_FMB_MASTER_TIMER_INDEX=0
|
||||
# CONFIG_FMB_TIMER_ISR_IN_IRAM is not set
|
||||
# end of Modbus configuration
|
||||
|
||||
@@ -756,6 +743,7 @@ CONFIG_LWIP_TCPIP_RECVMBOX_SIZE=32
|
||||
CONFIG_LWIP_DHCP_DOES_ARP_CHECK=y
|
||||
# CONFIG_LWIP_DHCP_DISABLE_CLIENT_ID is not set
|
||||
# CONFIG_LWIP_DHCP_RESTORE_LAST_IP is not set
|
||||
CONFIG_LWIP_DHCP_COARSE_TIMER_SECS=1
|
||||
|
||||
#
|
||||
# DHCP server
|
||||
@@ -782,6 +770,7 @@ CONFIG_LWIP_TCP_SYNMAXRTX=12
|
||||
CONFIG_LWIP_TCP_MSS=1460
|
||||
CONFIG_LWIP_TCP_TMR_INTERVAL=250
|
||||
CONFIG_LWIP_TCP_MSL=60000
|
||||
CONFIG_LWIP_TCP_FIN_WAIT_TIMEOUT=20000
|
||||
CONFIG_LWIP_TCP_SND_BUF_DEFAULT=11680
|
||||
CONFIG_LWIP_TCP_WND_DEFAULT=11680
|
||||
CONFIG_LWIP_TCP_RECVMBOX_SIZE=10
|
||||
@@ -871,6 +860,15 @@ CONFIG_MBEDTLS_SSL_OUT_CONTENT_LEN=4096
|
||||
# CONFIG_MBEDTLS_DYNAMIC_BUFFER is not set
|
||||
# CONFIG_MBEDTLS_DEBUG is not set
|
||||
|
||||
#
|
||||
# mbedTLS v2.28.x related
|
||||
#
|
||||
# CONFIG_MBEDTLS_SSL_VARIABLE_BUFFER_LENGTH is not set
|
||||
# CONFIG_MBEDTLS_X509_TRUSTED_CERT_CALLBACK is not set
|
||||
# CONFIG_MBEDTLS_SSL_CONTEXT_SERIALIZATION is not set
|
||||
CONFIG_MBEDTLS_SSL_KEEP_PEER_CERTIFICATE=y
|
||||
# end of mbedTLS v2.28.x related
|
||||
|
||||
#
|
||||
# Certificate Bundle
|
||||
#
|
||||
@@ -1069,6 +1067,8 @@ CONFIG_SPI_FLASH_SUPPORT_ISSI_CHIP=y
|
||||
CONFIG_SPI_FLASH_SUPPORT_MXIC_CHIP=y
|
||||
CONFIG_SPI_FLASH_SUPPORT_GD_CHIP=y
|
||||
CONFIG_SPI_FLASH_SUPPORT_WINBOND_CHIP=y
|
||||
# CONFIG_SPI_FLASH_SUPPORT_BOYA_CHIP is not set
|
||||
# CONFIG_SPI_FLASH_SUPPORT_TH_CHIP is not set
|
||||
# end of Auto-detect flash chips
|
||||
|
||||
CONFIG_SPI_FLASH_ENABLE_ENCRYPTED_READ_WRITE=y
|
||||
@@ -1179,6 +1179,7 @@ CONFIG_WPA_MBEDTLS_CRYPTO=y
|
||||
# CONFIG_WPA_TESTING_OPTIONS is not set
|
||||
# CONFIG_WPA_WPS_STRICT is not set
|
||||
# CONFIG_WPA_11KV_SUPPORT is not set
|
||||
# CONFIG_WPA_DPP_SUPPORT is not set
|
||||
# end of Supplicant
|
||||
|
||||
#
|
||||
@@ -1255,10 +1256,6 @@ CONFIG_STACK_CHECK_NONE=y
|
||||
# CONFIG_ESP32_APPTRACE_DEST_TRAX is not set
|
||||
CONFIG_ESP32_APPTRACE_DEST_NONE=y
|
||||
CONFIG_ESP32_APPTRACE_LOCK_ENABLE=y
|
||||
CONFIG_BTDM_CONTROLLER_BLE_MAX_CONN_EFF=0
|
||||
CONFIG_BTDM_CONTROLLER_BR_EDR_MAX_ACL_CONN_EFF=0
|
||||
CONFIG_BTDM_CONTROLLER_BR_EDR_MAX_SYNC_CONN_EFF=0
|
||||
CONFIG_BTDM_CONTROLLER_PINNED_TO_CORE=0
|
||||
CONFIG_ADC2_DISABLE_DAC=y
|
||||
# CONFIG_SPIRAM_SUPPORT is not set
|
||||
CONFIG_TRACEMEM_RESERVE_DRAM=0x0
|
||||
|
||||
205
sdkconfig.old
205
sdkconfig.old
@@ -65,6 +65,7 @@ CONFIG_BOOTLOADER_APP_ROLLBACK_ENABLE=y
|
||||
# CONFIG_BOOTLOADER_SKIP_VALIDATE_ALWAYS is not set
|
||||
CONFIG_BOOTLOADER_RESERVE_RTC_SIZE=0
|
||||
# CONFIG_BOOTLOADER_CUSTOM_RESERVE_RTC is not set
|
||||
CONFIG_BOOTLOADER_FLASH_XMC_SUPPORT=y
|
||||
# end of Bootloader config
|
||||
|
||||
#
|
||||
@@ -130,8 +131,8 @@ CONFIG_PARTITION_TABLE_MD5=y
|
||||
#
|
||||
# Audio HAL
|
||||
#
|
||||
CONFIG_AUDIO_BOARD_CUSTOM=y
|
||||
# CONFIG_ESP_LYRAT_V4_3_BOARD is not set
|
||||
# CONFIG_AUDIO_BOARD_CUSTOM is not set
|
||||
CONFIG_ESP_LYRAT_V4_3_BOARD=y
|
||||
# CONFIG_ESP_LYRAT_V4_2_BOARD is not set
|
||||
# CONFIG_ESP_LYRATD_MSC_V2_1_BOARD is not set
|
||||
# CONFIG_ESP_LYRATD_MSC_V2_2_BOARD is not set
|
||||
@@ -140,51 +141,10 @@ CONFIG_AUDIO_BOARD_CUSTOM=y
|
||||
# CONFIG_ESP32_S2_KALUGA_1_V1_2_BOARD is not set
|
||||
# end of Audio HAL
|
||||
|
||||
#
|
||||
# Custom Audio Board
|
||||
#
|
||||
# CONFIG_DAC_PCM51XX is not set
|
||||
# CONFIG_DAC_PCM5102A is not set
|
||||
# CONFIG_DAC_MA120 is not set
|
||||
# CONFIG_DAC_MA120X0 is not set
|
||||
CONFIG_DAC_ADAU1961=y
|
||||
|
||||
#
|
||||
# DAC I2C control interface
|
||||
#
|
||||
CONFIG_DAC_I2C_SDA=12
|
||||
CONFIG_DAC_I2C_SCL=14
|
||||
CONFIG_DAC_I2C_ADDR=0x70
|
||||
# end of DAC I2C control interface
|
||||
|
||||
#
|
||||
# I2S master interface
|
||||
#
|
||||
CONFIG_MASTER_I2S_MCLK_PIN=3
|
||||
CONFIG_MASTER_I2S_BCK_PIN=15
|
||||
CONFIG_MASTER_I2S_LRCK_PIN=13
|
||||
CONFIG_MASTER_I2S_DATAOUT_PIN=4
|
||||
# end of I2S master interface
|
||||
|
||||
#
|
||||
# I2S slave interface
|
||||
#
|
||||
CONFIG_SLAVE_I2S_BCK_PIN=26
|
||||
CONFIG_SLAVE_I2S_LRCK_PIN=12
|
||||
CONFIG_SLAVE_I2S_DATAOUT_PIN=5
|
||||
# end of I2S slave interface
|
||||
# end of Custom Audio Board
|
||||
|
||||
#
|
||||
# ESP32 DSP processor config
|
||||
#
|
||||
CONFIG_USE_DSP_PROCESSOR=y
|
||||
# CONFIG_SNAPCLIENT_DSP_FLOW_STEREO is not set
|
||||
# CONFIG_SNAPCLIENT_DSP_FLOW_BASSBOOST is not set
|
||||
# CONFIG_SNAPCLIENT_DSP_FLOW_BIAMP is not set
|
||||
CONFIG_SNAPCLIENT_DSP_FLOW_BASS_TREBLE_EQ=y
|
||||
CONFIG_USE_BIQUAD_ASM=y
|
||||
CONFIG_SNAPCLIENT_USE_SOFT_VOL=y
|
||||
# CONFIG_USE_DSP_PROCESSOR is not set
|
||||
# end of ESP32 DSP processor config
|
||||
|
||||
#
|
||||
@@ -203,9 +163,9 @@ CONFIG_SNTP_SERVER="pool.ntp.org"
|
||||
#
|
||||
# Wifi Configuration
|
||||
#
|
||||
CONFIG_ENABLE_WIFI_PROVISIONING=y
|
||||
CONFIG_WIFI_PROVISIONING_SSID="prov_snapclient"
|
||||
CONFIG_WIFI_PROVISIONING_PASSWORD="12345678"
|
||||
# CONFIG_ENABLE_WIFI_PROVISIONING is not set
|
||||
CONFIG_WIFI_SSID="zuhause"
|
||||
CONFIG_WIFI_PASSWORD="dErtischlEr"
|
||||
CONFIG_WIFI_MAXIMUM_RETRY=0
|
||||
# end of Wifi Configuration
|
||||
|
||||
@@ -250,7 +210,7 @@ CONFIG_COMPILER_STACK_CHECK_MODE_NONE=y
|
||||
#
|
||||
# Application Level Tracing
|
||||
#
|
||||
# CONFIG_APPTRACE_DEST_TRAX is not set
|
||||
# CONFIG_APPTRACE_DEST_JTAG is not set
|
||||
CONFIG_APPTRACE_DEST_NONE=y
|
||||
CONFIG_APPTRACE_LOCK_ENABLE=y
|
||||
# end of Application Level Tracing
|
||||
@@ -265,35 +225,6 @@ CONFIG_APPTRACE_LOCK_ENABLE=y
|
||||
# Bluetooth
|
||||
#
|
||||
# CONFIG_BT_ENABLED is not set
|
||||
CONFIG_BTDM_CTRL_BR_EDR_SCO_DATA_PATH_EFF=0
|
||||
CONFIG_BTDM_CTRL_PCM_ROLE_EFF=0
|
||||
CONFIG_BTDM_CTRL_PCM_POLAR_EFF=0
|
||||
CONFIG_BTDM_CTRL_BLE_MAX_CONN_EFF=0
|
||||
CONFIG_BTDM_CTRL_BR_EDR_MAX_ACL_CONN_EFF=0
|
||||
CONFIG_BTDM_CTRL_BR_EDR_MAX_SYNC_CONN_EFF=0
|
||||
CONFIG_BTDM_CTRL_PINNED_TO_CORE=0
|
||||
CONFIG_BTDM_BLE_SLEEP_CLOCK_ACCURACY_INDEX_EFF=1
|
||||
CONFIG_BT_CTRL_MODE_EFF=1
|
||||
CONFIG_BT_CTRL_BLE_MAX_ACT=10
|
||||
CONFIG_BT_CTRL_BLE_MAX_ACT_EFF=10
|
||||
CONFIG_BT_CTRL_BLE_STATIC_ACL_TX_BUF_NB=0
|
||||
CONFIG_BT_CTRL_PINNED_TO_CORE=0
|
||||
CONFIG_BT_CTRL_HCI_TL=1
|
||||
CONFIG_BT_CTRL_ADV_DUP_FILT_MAX=30
|
||||
CONFIG_BT_CTRL_HW_CCA_EFF=0
|
||||
CONFIG_BT_CTRL_DFT_TX_POWER_LEVEL_EFF=0
|
||||
CONFIG_BT_CTRL_BLE_ADV_REPORT_FLOW_CTRL_SUPP=y
|
||||
CONFIG_BT_CTRL_BLE_ADV_REPORT_FLOW_CTRL_NUM=100
|
||||
CONFIG_BT_CTRL_BLE_ADV_REPORT_DISCARD_THRSHOLD=20
|
||||
CONFIG_BT_CTRL_BLE_SCAN_DUPL=y
|
||||
CONFIG_BT_CTRL_SCAN_DUPL_TYPE=0
|
||||
CONFIG_BT_CTRL_SCAN_DUPL_CACHE_SIZE=100
|
||||
CONFIG_BT_CTRL_COEX_PHY_CODED_TX_RX_TLIM_EFF=0
|
||||
CONFIG_BT_CTRL_SLEEP_MODE_EFF=0
|
||||
CONFIG_BT_CTRL_SLEEP_CLOCK_EFF=0
|
||||
CONFIG_BT_CTRL_HCI_TL_EFF=1
|
||||
CONFIG_BT_RESERVE_DRAM=0
|
||||
CONFIG_BT_NIMBLE_USE_ESP_TIMER=y
|
||||
# end of Bluetooth
|
||||
|
||||
#
|
||||
@@ -333,6 +264,7 @@ CONFIG_SPI_MASTER_ISR_IN_IRAM=y
|
||||
# CONFIG_TWAI_ERRATA_FIX_TX_INTR_LOST is not set
|
||||
# CONFIG_TWAI_ERRATA_FIX_RX_FRAME_INVALID is not set
|
||||
# CONFIG_TWAI_ERRATA_FIX_RX_FIFO_CORRUPT is not set
|
||||
# CONFIG_TWAI_ERRATA_FIX_LISTEN_ONLY_DOM is not set
|
||||
# end of TWAI configuration
|
||||
|
||||
#
|
||||
@@ -378,17 +310,87 @@ CONFIG_ESP_TLS_USING_MBEDTLS=y
|
||||
#
|
||||
# ESP32-specific
|
||||
#
|
||||
CONFIG_ESP32_ECO3_CACHE_LOCK_FIX=y
|
||||
CONFIG_ESP32_REV_MIN_0=y
|
||||
# CONFIG_ESP32_REV_MIN_1 is not set
|
||||
# CONFIG_ESP32_REV_MIN_1_1 is not set
|
||||
# CONFIG_ESP32_REV_MIN_2 is not set
|
||||
# CONFIG_ESP32_REV_MIN_3 is not set
|
||||
# CONFIG_ESP32_REV_MIN_3_1 is not set
|
||||
CONFIG_ESP32_REV_MIN=0
|
||||
CONFIG_ESP32_REV_MIN_FULL=0
|
||||
CONFIG_ESP_REV_MIN_FULL=0
|
||||
CONFIG_ESP32_REV_MAX_FULL_STR_OPT=y
|
||||
CONFIG_ESP32_REV_MAX_FULL=399
|
||||
CONFIG_ESP_REV_MAX_FULL=399
|
||||
CONFIG_ESP32_DPORT_WORKAROUND=y
|
||||
# CONFIG_ESP32_DEFAULT_CPU_FREQ_80 is not set
|
||||
# CONFIG_ESP32_DEFAULT_CPU_FREQ_160 is not set
|
||||
CONFIG_ESP32_DEFAULT_CPU_FREQ_240=y
|
||||
CONFIG_ESP32_DEFAULT_CPU_FREQ_MHZ=240
|
||||
# CONFIG_ESP32_SPIRAM_SUPPORT is not set
|
||||
CONFIG_ESP32_SPIRAM_SUPPORT=y
|
||||
|
||||
#
|
||||
# SPI RAM config
|
||||
#
|
||||
CONFIG_SPIRAM_TYPE_AUTO=y
|
||||
# CONFIG_SPIRAM_TYPE_ESPPSRAM16 is not set
|
||||
# CONFIG_SPIRAM_TYPE_ESPPSRAM32 is not set
|
||||
# CONFIG_SPIRAM_TYPE_ESPPSRAM64 is not set
|
||||
CONFIG_SPIRAM_SIZE=-1
|
||||
# CONFIG_SPIRAM_SPEED_40M is not set
|
||||
CONFIG_SPIRAM_SPEED_80M=y
|
||||
CONFIG_SPIRAM=y
|
||||
CONFIG_SPIRAM_BOOT_INIT=y
|
||||
# CONFIG_SPIRAM_IGNORE_NOTFOUND is not set
|
||||
# CONFIG_SPIRAM_USE_MEMMAP is not set
|
||||
# CONFIG_SPIRAM_USE_CAPS_ALLOC is not set
|
||||
CONFIG_SPIRAM_USE_MALLOC=y
|
||||
CONFIG_SPIRAM_MEMTEST=y
|
||||
CONFIG_SPIRAM_MALLOC_ALWAYSINTERNAL=16384
|
||||
# CONFIG_SPIRAM_TRY_ALLOCATE_WIFI_LWIP is not set
|
||||
CONFIG_SPIRAM_MALLOC_RESERVE_INTERNAL=32768
|
||||
# CONFIG_SPIRAM_ALLOW_BSS_SEG_EXTERNAL_MEMORY is not set
|
||||
CONFIG_SPIRAM_CACHE_WORKAROUND=y
|
||||
|
||||
#
|
||||
# SPIRAM cache workaround debugging
|
||||
#
|
||||
CONFIG_SPIRAM_CACHE_WORKAROUND_STRATEGY_MEMW=y
|
||||
# CONFIG_SPIRAM_CACHE_WORKAROUND_STRATEGY_DUPLDST is not set
|
||||
# CONFIG_SPIRAM_CACHE_WORKAROUND_STRATEGY_NOPS is not set
|
||||
# end of SPIRAM cache workaround debugging
|
||||
|
||||
CONFIG_SPIRAM_BANKSWITCH_ENABLE=y
|
||||
CONFIG_SPIRAM_BANKSWITCH_RESERVE=8
|
||||
# CONFIG_SPIRAM_ALLOW_STACK_EXTERNAL_MEMORY is not set
|
||||
# CONFIG_SPIRAM_OCCUPY_HSPI_HOST is not set
|
||||
CONFIG_SPIRAM_OCCUPY_VSPI_HOST=y
|
||||
# CONFIG_SPIRAM_OCCUPY_NO_HOST is not set
|
||||
|
||||
#
|
||||
# PSRAM clock and cs IO for ESP32-DOWD
|
||||
#
|
||||
CONFIG_D0WD_PSRAM_CLK_IO=17
|
||||
CONFIG_D0WD_PSRAM_CS_IO=16
|
||||
# end of PSRAM clock and cs IO for ESP32-DOWD
|
||||
|
||||
#
|
||||
# PSRAM clock and cs IO for ESP32-D2WD
|
||||
#
|
||||
CONFIG_D2WD_PSRAM_CLK_IO=9
|
||||
CONFIG_D2WD_PSRAM_CS_IO=10
|
||||
# end of PSRAM clock and cs IO for ESP32-D2WD
|
||||
|
||||
#
|
||||
# PSRAM clock and cs IO for ESP32-PICO
|
||||
#
|
||||
CONFIG_PICO_PSRAM_CS_IO=10
|
||||
# end of PSRAM clock and cs IO for ESP32-PICO
|
||||
|
||||
# CONFIG_SPIRAM_2T_MODE is not set
|
||||
# end of SPI RAM config
|
||||
|
||||
# CONFIG_ESP32_TRAX is not set
|
||||
CONFIG_ESP32_TRACEMEM_RESERVE_DRAM=0x0
|
||||
# CONFIG_ESP32_UNIVERSAL_MAC_ADDRESSES_TWO is not set
|
||||
@@ -480,7 +482,7 @@ CONFIG_ETH_PHY_INTERFACE_RMII=y
|
||||
CONFIG_ETH_RMII_CLK_INPUT=y
|
||||
# CONFIG_ETH_RMII_CLK_OUTPUT is not set
|
||||
CONFIG_ETH_RMII_CLK_IN_GPIO=0
|
||||
CONFIG_ETH_DMA_BUFFER_SIZE=512
|
||||
CONFIG_ETH_DMA_BUFFER_SIZE=1024
|
||||
CONFIG_ETH_DMA_RX_BUFFER_NUM=30
|
||||
CONFIG_ETH_DMA_TX_BUFFER_NUM=5
|
||||
# CONFIG_ETH_SOFT_FLOW_CONTROL is not set
|
||||
@@ -555,7 +557,13 @@ CONFIG_ESP_NETIF_TCPIP_ADAPTER_COMPATIBLE_LAYER=y
|
||||
CONFIG_ESP_SYSTEM_PANIC_PRINT_REBOOT=y
|
||||
# CONFIG_ESP_SYSTEM_PANIC_SILENT_REBOOT is not set
|
||||
# CONFIG_ESP_SYSTEM_PANIC_GDBSTUB is not set
|
||||
CONFIG_ESP_SYSTEM_PD_FLASH=y
|
||||
# CONFIG_ESP_SYSTEM_PSRAM_LEAKAGE_WORKAROUND is not set
|
||||
# CONFIG_ESP_SYSTEM_FLASH_LEAKAGE_WORKAROUND is not set
|
||||
|
||||
#
|
||||
# RTC Clock Config
|
||||
#
|
||||
# end of RTC Clock Config
|
||||
|
||||
#
|
||||
# Memory protection
|
||||
@@ -580,14 +588,15 @@ 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=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_CACHE_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=8
|
||||
CONFIG_ESP32_WIFI_AMPDU_RX_ENABLED=y
|
||||
CONFIG_ESP32_WIFI_RX_BA_WIN=16
|
||||
# CONFIG_ESP32_WIFI_AMSDU_TX_ENABLED is not set
|
||||
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
|
||||
@@ -596,14 +605,15 @@ CONFIG_ESP32_WIFI_MGMT_SBUF_NUM=32
|
||||
# CONFIG_WIFI_LOG_DEFAULT_LEVEL_NONE is not set
|
||||
# CONFIG_WIFI_LOG_DEFAULT_LEVEL_ERROR is not set
|
||||
# CONFIG_WIFI_LOG_DEFAULT_LEVEL_WARN is not set
|
||||
# CONFIG_WIFI_LOG_DEFAULT_LEVEL_INFO is not set
|
||||
CONFIG_WIFI_LOG_DEFAULT_LEVEL_INFO=y
|
||||
# CONFIG_WIFI_LOG_DEFAULT_LEVEL_DEBUG is not set
|
||||
CONFIG_WIFI_LOG_DEFAULT_LEVEL_VERBOSE=y
|
||||
# CONFIG_WIFI_LOG_DEFAULT_LEVEL_VERBOSE is not set
|
||||
# CONFIG_ESP32_WIFI_IRAM_OPT is not set
|
||||
CONFIG_ESP32_WIFI_RX_IRAM_OPT=y
|
||||
CONFIG_ESP32_WIFI_ENABLE_WPA3_SAE=y
|
||||
# CONFIG_ESP_WIFI_SLP_IRAM_OPT is not set
|
||||
# CONFIG_ESP_WIFI_STA_DISCONNECTED_PM_ENABLE is not set
|
||||
# CONFIG_ESP_WIFI_SLP_BEACON_LOST_OPT is not set
|
||||
# end of Wi-Fi
|
||||
|
||||
#
|
||||
@@ -655,6 +665,7 @@ CONFIG_FATFS_LFN_NONE=y
|
||||
CONFIG_FATFS_FS_LOCK=0
|
||||
CONFIG_FATFS_TIMEOUT_MS=10000
|
||||
CONFIG_FATFS_PER_FILE_CACHE=y
|
||||
CONFIG_FATFS_ALLOC_PREFER_EXTRAM=y
|
||||
# CONFIG_FATFS_USE_FASTSEEK is not set
|
||||
# end of FAT Filesystem support
|
||||
|
||||
@@ -675,6 +686,10 @@ CONFIG_FMB_SERIAL_BUF_SIZE=256
|
||||
CONFIG_FMB_SERIAL_ASCII_BITS_PER_SYMB=8
|
||||
CONFIG_FMB_SERIAL_ASCII_TIMEOUT_RESPOND_MS=1000
|
||||
CONFIG_FMB_PORT_TASK_PRIO=10
|
||||
# CONFIG_FMB_PORT_TASK_AFFINITY_NO_AFFINITY is not set
|
||||
CONFIG_FMB_PORT_TASK_AFFINITY_CPU0=y
|
||||
# CONFIG_FMB_PORT_TASK_AFFINITY_CPU1 is not set
|
||||
CONFIG_FMB_PORT_TASK_AFFINITY=0x0
|
||||
CONFIG_FMB_CONTROLLER_SLAVE_ID_SUPPORT=y
|
||||
CONFIG_FMB_CONTROLLER_SLAVE_ID=0x00112233
|
||||
CONFIG_FMB_CONTROLLER_NOTIFY_TIMEOUT=20
|
||||
@@ -684,6 +699,8 @@ CONFIG_FMB_EVENT_QUEUE_TIMEOUT=20
|
||||
CONFIG_FMB_TIMER_PORT_ENABLED=y
|
||||
CONFIG_FMB_TIMER_GROUP=0
|
||||
CONFIG_FMB_TIMER_INDEX=0
|
||||
CONFIG_FMB_MASTER_TIMER_GROUP=0
|
||||
CONFIG_FMB_MASTER_TIMER_INDEX=0
|
||||
# CONFIG_FMB_TIMER_ISR_IN_IRAM is not set
|
||||
# end of Modbus configuration
|
||||
|
||||
@@ -791,6 +808,7 @@ CONFIG_LWIP_TCPIP_RECVMBOX_SIZE=32
|
||||
CONFIG_LWIP_DHCP_DOES_ARP_CHECK=y
|
||||
# CONFIG_LWIP_DHCP_DISABLE_CLIENT_ID is not set
|
||||
# CONFIG_LWIP_DHCP_RESTORE_LAST_IP is not set
|
||||
CONFIG_LWIP_DHCP_COARSE_TIMER_SECS=1
|
||||
|
||||
#
|
||||
# DHCP server
|
||||
@@ -817,6 +835,7 @@ CONFIG_LWIP_TCP_SYNMAXRTX=12
|
||||
CONFIG_LWIP_TCP_MSS=1460
|
||||
CONFIG_LWIP_TCP_TMR_INTERVAL=250
|
||||
CONFIG_LWIP_TCP_MSL=60000
|
||||
CONFIG_LWIP_TCP_FIN_WAIT_TIMEOUT=20000
|
||||
CONFIG_LWIP_TCP_SND_BUF_DEFAULT=11680
|
||||
CONFIG_LWIP_TCP_WND_DEFAULT=11680
|
||||
CONFIG_LWIP_TCP_RECVMBOX_SIZE=10
|
||||
@@ -898,6 +917,7 @@ CONFIG_LWIP_HOOK_NETCONN_EXT_RESOLVE_NONE=y
|
||||
# mbedTLS
|
||||
#
|
||||
CONFIG_MBEDTLS_INTERNAL_MEM_ALLOC=y
|
||||
# CONFIG_MBEDTLS_EXTERNAL_MEM_ALLOC is not set
|
||||
# CONFIG_MBEDTLS_DEFAULT_MEM_ALLOC is not set
|
||||
# CONFIG_MBEDTLS_CUSTOM_MEM_ALLOC is not set
|
||||
CONFIG_MBEDTLS_ASYMMETRIC_CONTENT_LEN=y
|
||||
@@ -906,6 +926,15 @@ CONFIG_MBEDTLS_SSL_OUT_CONTENT_LEN=4096
|
||||
# CONFIG_MBEDTLS_DYNAMIC_BUFFER is not set
|
||||
# CONFIG_MBEDTLS_DEBUG is not set
|
||||
|
||||
#
|
||||
# mbedTLS v2.28.x related
|
||||
#
|
||||
# CONFIG_MBEDTLS_SSL_VARIABLE_BUFFER_LENGTH is not set
|
||||
# CONFIG_MBEDTLS_X509_TRUSTED_CERT_CALLBACK is not set
|
||||
# CONFIG_MBEDTLS_SSL_CONTEXT_SERIALIZATION is not set
|
||||
CONFIG_MBEDTLS_SSL_KEEP_PEER_CERTIFICATE=y
|
||||
# end of mbedTLS v2.28.x related
|
||||
|
||||
#
|
||||
# Certificate Bundle
|
||||
#
|
||||
@@ -1104,6 +1133,8 @@ CONFIG_SPI_FLASH_SUPPORT_ISSI_CHIP=y
|
||||
CONFIG_SPI_FLASH_SUPPORT_MXIC_CHIP=y
|
||||
CONFIG_SPI_FLASH_SUPPORT_GD_CHIP=y
|
||||
CONFIG_SPI_FLASH_SUPPORT_WINBOND_CHIP=y
|
||||
# CONFIG_SPI_FLASH_SUPPORT_BOYA_CHIP is not set
|
||||
# CONFIG_SPI_FLASH_SUPPORT_TH_CHIP is not set
|
||||
# end of Auto-detect flash chips
|
||||
|
||||
CONFIG_SPI_FLASH_ENABLE_ENCRYPTED_READ_WRITE=y
|
||||
@@ -1214,6 +1245,7 @@ CONFIG_WPA_MBEDTLS_CRYPTO=y
|
||||
# CONFIG_WPA_TESTING_OPTIONS is not set
|
||||
# CONFIG_WPA_WPS_STRICT is not set
|
||||
# CONFIG_WPA_11KV_SUPPORT is not set
|
||||
# CONFIG_WPA_DPP_SUPPORT is not set
|
||||
# end of Supplicant
|
||||
|
||||
#
|
||||
@@ -1290,12 +1322,9 @@ CONFIG_STACK_CHECK_NONE=y
|
||||
# CONFIG_ESP32_APPTRACE_DEST_TRAX is not set
|
||||
CONFIG_ESP32_APPTRACE_DEST_NONE=y
|
||||
CONFIG_ESP32_APPTRACE_LOCK_ENABLE=y
|
||||
CONFIG_BTDM_CONTROLLER_BLE_MAX_CONN_EFF=0
|
||||
CONFIG_BTDM_CONTROLLER_BR_EDR_MAX_ACL_CONN_EFF=0
|
||||
CONFIG_BTDM_CONTROLLER_BR_EDR_MAX_SYNC_CONN_EFF=0
|
||||
CONFIG_BTDM_CONTROLLER_PINNED_TO_CORE=0
|
||||
CONFIG_ADC2_DISABLE_DAC=y
|
||||
# CONFIG_SPIRAM_SUPPORT is not set
|
||||
CONFIG_SPIRAM_SUPPORT=y
|
||||
# CONFIG_WIFI_LWIP_ALLOCATION_FROM_SPIRAM_FIRST is not set
|
||||
CONFIG_TRACEMEM_RESERVE_DRAM=0x0
|
||||
# CONFIG_TWO_UNIVERSAL_MAC_ADDRESS is not set
|
||||
CONFIG_FOUR_UNIVERSAL_MAC_ADDRESS=y
|
||||
|
||||
1439
sdkconfig_PSRAM_lyrat_v4.3
Normal file
1439
sdkconfig_PSRAM_lyrat_v4.3
Normal file
File diff suppressed because it is too large
Load Diff
@@ -65,6 +65,7 @@ CONFIG_BOOTLOADER_APP_ROLLBACK_ENABLE=y
|
||||
# CONFIG_BOOTLOADER_SKIP_VALIDATE_ALWAYS is not set
|
||||
CONFIG_BOOTLOADER_RESERVE_RTC_SIZE=0
|
||||
# CONFIG_BOOTLOADER_CUSTOM_RESERVE_RTC is not set
|
||||
CONFIG_BOOTLOADER_FLASH_XMC_SUPPORT=y
|
||||
# end of Bootloader config
|
||||
|
||||
#
|
||||
@@ -143,15 +144,15 @@ CONFIG_ESP_LYRAT_V4_3_BOARD=y
|
||||
#
|
||||
# ESP32 DSP processor config
|
||||
#
|
||||
CONFIG_USE_DSP_PROCESSOR=y
|
||||
# CONFIG_SNAPCLIENT_DSP_FLOW_STEREO is not set
|
||||
# CONFIG_SNAPCLIENT_DSP_FLOW_BASSBOOST is not set
|
||||
# CONFIG_SNAPCLIENT_DSP_FLOW_BIAMP is not set
|
||||
CONFIG_SNAPCLIENT_DSP_FLOW_BASS_TREBLE_EQ=y
|
||||
CONFIG_USE_BIQUAD_ASM=y
|
||||
# CONFIG_SNAPCLIENT_USE_SOFT_VOL is not set
|
||||
# CONFIG_USE_DSP_PROCESSOR is not set
|
||||
# end of ESP32 DSP processor config
|
||||
|
||||
#
|
||||
# Snapclient Ethernet Configuration
|
||||
#
|
||||
# CONFIG_SNAPCLIENT_ENABLE_ETHERNET is not set
|
||||
# end of Snapclient Ethernet Configuration
|
||||
|
||||
#
|
||||
# SNTP Configuration
|
||||
#
|
||||
@@ -160,36 +161,26 @@ CONFIG_SNTP_SERVER="pool.ntp.org"
|
||||
# end of SNTP Configuration
|
||||
|
||||
#
|
||||
# Application Configuration
|
||||
# Wifi Configuration
|
||||
#
|
||||
# CONFIG_ENABLE_WIFI_PROVISIONING is not set
|
||||
CONFIG_WIFI_SSID="zuhause"
|
||||
CONFIG_WIFI_PASSWORD="dErtischlEr"
|
||||
CONFIG_WIFI_MAXIMUM_RETRY=0
|
||||
# end of Wifi Configuration
|
||||
|
||||
#
|
||||
# Snapclient Configuration
|
||||
#
|
||||
CONFIG_SNAPSERVER_USE_MDNS=y
|
||||
CONFIG_SNAPCLIENT_NAME="esp-snapclient"
|
||||
|
||||
#
|
||||
# HTTP Server Setting
|
||||
#
|
||||
CONFIG_WEB_PORT=8000
|
||||
# end of HTTP Server Setting
|
||||
|
||||
#
|
||||
# GPIO Setting
|
||||
#
|
||||
CONFIG_GPIO_RANGE_MAX=33
|
||||
CONFIG_BLINK_GPIO=5
|
||||
# end of GPIO Setting
|
||||
# end of Application Configuration
|
||||
|
||||
#
|
||||
# Wifi Configuration
|
||||
#
|
||||
CONFIG_ENABLE_WIFI_PROVISIONING=y
|
||||
CONFIG_WIFI_MAXIMUM_RETRY=0
|
||||
# end of Wifi Configuration
|
||||
|
||||
#
|
||||
# Snapcast Configuration
|
||||
#
|
||||
CONFIG_SNAPSERVER_USE_MDNS=y
|
||||
CONFIG_SNAPCLIENT_NAME="esp-snapclient"
|
||||
# end of Snapcast Configuration
|
||||
# end of Snapclient Configuration
|
||||
|
||||
#
|
||||
# Compiler options
|
||||
@@ -219,7 +210,7 @@ CONFIG_COMPILER_STACK_CHECK_MODE_NONE=y
|
||||
#
|
||||
# Application Level Tracing
|
||||
#
|
||||
# CONFIG_APPTRACE_DEST_TRAX is not set
|
||||
# CONFIG_APPTRACE_DEST_JTAG is not set
|
||||
CONFIG_APPTRACE_DEST_NONE=y
|
||||
CONFIG_APPTRACE_LOCK_ENABLE=y
|
||||
# end of Application Level Tracing
|
||||
@@ -234,35 +225,6 @@ CONFIG_APPTRACE_LOCK_ENABLE=y
|
||||
# Bluetooth
|
||||
#
|
||||
# CONFIG_BT_ENABLED is not set
|
||||
CONFIG_BTDM_CTRL_BR_EDR_SCO_DATA_PATH_EFF=0
|
||||
CONFIG_BTDM_CTRL_PCM_ROLE_EFF=0
|
||||
CONFIG_BTDM_CTRL_PCM_POLAR_EFF=0
|
||||
CONFIG_BTDM_CTRL_BLE_MAX_CONN_EFF=0
|
||||
CONFIG_BTDM_CTRL_BR_EDR_MAX_ACL_CONN_EFF=0
|
||||
CONFIG_BTDM_CTRL_BR_EDR_MAX_SYNC_CONN_EFF=0
|
||||
CONFIG_BTDM_CTRL_PINNED_TO_CORE=0
|
||||
CONFIG_BTDM_BLE_SLEEP_CLOCK_ACCURACY_INDEX_EFF=1
|
||||
CONFIG_BT_CTRL_MODE_EFF=1
|
||||
CONFIG_BT_CTRL_BLE_MAX_ACT=10
|
||||
CONFIG_BT_CTRL_BLE_MAX_ACT_EFF=10
|
||||
CONFIG_BT_CTRL_BLE_STATIC_ACL_TX_BUF_NB=0
|
||||
CONFIG_BT_CTRL_PINNED_TO_CORE=0
|
||||
CONFIG_BT_CTRL_HCI_TL=1
|
||||
CONFIG_BT_CTRL_ADV_DUP_FILT_MAX=30
|
||||
CONFIG_BT_CTRL_HW_CCA_EFF=0
|
||||
CONFIG_BT_CTRL_DFT_TX_POWER_LEVEL_EFF=0
|
||||
CONFIG_BT_CTRL_BLE_ADV_REPORT_FLOW_CTRL_SUPP=y
|
||||
CONFIG_BT_CTRL_BLE_ADV_REPORT_FLOW_CTRL_NUM=100
|
||||
CONFIG_BT_CTRL_BLE_ADV_REPORT_DISCARD_THRSHOLD=20
|
||||
CONFIG_BT_CTRL_BLE_SCAN_DUPL=y
|
||||
CONFIG_BT_CTRL_SCAN_DUPL_TYPE=0
|
||||
CONFIG_BT_CTRL_SCAN_DUPL_CACHE_SIZE=100
|
||||
CONFIG_BT_CTRL_COEX_PHY_CODED_TX_RX_TLIM_EFF=0
|
||||
CONFIG_BT_CTRL_SLEEP_MODE_EFF=0
|
||||
CONFIG_BT_CTRL_SLEEP_CLOCK_EFF=0
|
||||
CONFIG_BT_CTRL_HCI_TL_EFF=1
|
||||
CONFIG_BT_RESERVE_DRAM=0
|
||||
CONFIG_BT_NIMBLE_USE_ESP_TIMER=y
|
||||
# end of Bluetooth
|
||||
|
||||
#
|
||||
@@ -302,6 +264,7 @@ CONFIG_SPI_MASTER_ISR_IN_IRAM=y
|
||||
# CONFIG_TWAI_ERRATA_FIX_TX_INTR_LOST is not set
|
||||
# CONFIG_TWAI_ERRATA_FIX_RX_FRAME_INVALID is not set
|
||||
# CONFIG_TWAI_ERRATA_FIX_RX_FIFO_CORRUPT is not set
|
||||
# CONFIG_TWAI_ERRATA_FIX_LISTEN_ONLY_DOM is not set
|
||||
# end of TWAI configuration
|
||||
|
||||
#
|
||||
@@ -349,9 +312,16 @@ CONFIG_ESP_TLS_USING_MBEDTLS=y
|
||||
#
|
||||
CONFIG_ESP32_REV_MIN_0=y
|
||||
# CONFIG_ESP32_REV_MIN_1 is not set
|
||||
# CONFIG_ESP32_REV_MIN_1_1 is not set
|
||||
# CONFIG_ESP32_REV_MIN_2 is not set
|
||||
# CONFIG_ESP32_REV_MIN_3 is not set
|
||||
# CONFIG_ESP32_REV_MIN_3_1 is not set
|
||||
CONFIG_ESP32_REV_MIN=0
|
||||
CONFIG_ESP32_REV_MIN_FULL=0
|
||||
CONFIG_ESP_REV_MIN_FULL=0
|
||||
CONFIG_ESP32_REV_MAX_FULL_STR_OPT=y
|
||||
CONFIG_ESP32_REV_MAX_FULL=399
|
||||
CONFIG_ESP_REV_MAX_FULL=399
|
||||
CONFIG_ESP32_DPORT_WORKAROUND=y
|
||||
# CONFIG_ESP32_DEFAULT_CPU_FREQ_80 is not set
|
||||
# CONFIG_ESP32_DEFAULT_CPU_FREQ_160 is not set
|
||||
@@ -413,7 +383,7 @@ CONFIG_ADC_CAL_LUT_ENABLE=y
|
||||
CONFIG_ESP_ERR_TO_NAME_LOOKUP=y
|
||||
CONFIG_ESP_SYSTEM_EVENT_QUEUE_SIZE=32
|
||||
CONFIG_ESP_SYSTEM_EVENT_TASK_STACK_SIZE=2304
|
||||
CONFIG_ESP_MAIN_TASK_STACK_SIZE=2048
|
||||
CONFIG_ESP_MAIN_TASK_STACK_SIZE=2560
|
||||
CONFIG_ESP_IPC_TASK_STACK_SIZE=1024
|
||||
CONFIG_ESP_IPC_USES_CALLERS_PRIORITY=y
|
||||
CONFIG_ESP_MINIMAL_SHARED_STACK_SIZE=2048
|
||||
@@ -449,9 +419,10 @@ CONFIG_ETH_PHY_INTERFACE_RMII=y
|
||||
CONFIG_ETH_RMII_CLK_INPUT=y
|
||||
# CONFIG_ETH_RMII_CLK_OUTPUT is not set
|
||||
CONFIG_ETH_RMII_CLK_IN_GPIO=0
|
||||
CONFIG_ETH_DMA_BUFFER_SIZE=512
|
||||
CONFIG_ETH_DMA_RX_BUFFER_NUM=10
|
||||
CONFIG_ETH_DMA_TX_BUFFER_NUM=10
|
||||
CONFIG_ETH_DMA_BUFFER_SIZE=1024
|
||||
CONFIG_ETH_DMA_RX_BUFFER_NUM=30
|
||||
CONFIG_ETH_DMA_TX_BUFFER_NUM=5
|
||||
# CONFIG_ETH_SOFT_FLOW_CONTROL is not set
|
||||
CONFIG_ETH_USE_SPI_ETHERNET=y
|
||||
# CONFIG_ETH_SPI_ETHERNET_DM9051 is not set
|
||||
# CONFIG_ETH_SPI_ETHERNET_W5500 is not set
|
||||
@@ -524,6 +495,12 @@ CONFIG_ESP_SYSTEM_PANIC_PRINT_REBOOT=y
|
||||
# CONFIG_ESP_SYSTEM_PANIC_SILENT_REBOOT is not set
|
||||
# CONFIG_ESP_SYSTEM_PANIC_GDBSTUB is not set
|
||||
CONFIG_ESP_SYSTEM_PD_FLASH=y
|
||||
# CONFIG_ESP_SYSTEM_FLASH_LEAKAGE_WORKAROUND is not set
|
||||
|
||||
#
|
||||
# RTC Clock Config
|
||||
#
|
||||
# end of RTC Clock Config
|
||||
|
||||
#
|
||||
# Memory protection
|
||||
@@ -568,10 +545,11 @@ CONFIG_WIFI_LOG_DEFAULT_LEVEL_INFO=y
|
||||
# CONFIG_WIFI_LOG_DEFAULT_LEVEL_DEBUG is not set
|
||||
# CONFIG_WIFI_LOG_DEFAULT_LEVEL_VERBOSE is not set
|
||||
# CONFIG_ESP32_WIFI_IRAM_OPT is not set
|
||||
# CONFIG_ESP32_WIFI_RX_IRAM_OPT is not set
|
||||
CONFIG_ESP32_WIFI_RX_IRAM_OPT=y
|
||||
CONFIG_ESP32_WIFI_ENABLE_WPA3_SAE=y
|
||||
# CONFIG_ESP_WIFI_SLP_IRAM_OPT is not set
|
||||
# CONFIG_ESP_WIFI_STA_DISCONNECTED_PM_ENABLE is not set
|
||||
# CONFIG_ESP_WIFI_SLP_BEACON_LOST_OPT is not set
|
||||
# end of Wi-Fi
|
||||
|
||||
#
|
||||
@@ -643,6 +621,10 @@ CONFIG_FMB_SERIAL_BUF_SIZE=256
|
||||
CONFIG_FMB_SERIAL_ASCII_BITS_PER_SYMB=8
|
||||
CONFIG_FMB_SERIAL_ASCII_TIMEOUT_RESPOND_MS=1000
|
||||
CONFIG_FMB_PORT_TASK_PRIO=10
|
||||
# CONFIG_FMB_PORT_TASK_AFFINITY_NO_AFFINITY is not set
|
||||
CONFIG_FMB_PORT_TASK_AFFINITY_CPU0=y
|
||||
# CONFIG_FMB_PORT_TASK_AFFINITY_CPU1 is not set
|
||||
CONFIG_FMB_PORT_TASK_AFFINITY=0x0
|
||||
CONFIG_FMB_CONTROLLER_SLAVE_ID_SUPPORT=y
|
||||
CONFIG_FMB_CONTROLLER_SLAVE_ID=0x00112233
|
||||
CONFIG_FMB_CONTROLLER_NOTIFY_TIMEOUT=20
|
||||
@@ -652,6 +634,8 @@ CONFIG_FMB_EVENT_QUEUE_TIMEOUT=20
|
||||
CONFIG_FMB_TIMER_PORT_ENABLED=y
|
||||
CONFIG_FMB_TIMER_GROUP=0
|
||||
CONFIG_FMB_TIMER_INDEX=0
|
||||
CONFIG_FMB_MASTER_TIMER_GROUP=0
|
||||
CONFIG_FMB_MASTER_TIMER_INDEX=0
|
||||
# CONFIG_FMB_TIMER_ISR_IN_IRAM is not set
|
||||
# end of Modbus configuration
|
||||
|
||||
@@ -759,6 +743,7 @@ CONFIG_LWIP_TCPIP_RECVMBOX_SIZE=32
|
||||
CONFIG_LWIP_DHCP_DOES_ARP_CHECK=y
|
||||
# CONFIG_LWIP_DHCP_DISABLE_CLIENT_ID is not set
|
||||
# CONFIG_LWIP_DHCP_RESTORE_LAST_IP is not set
|
||||
CONFIG_LWIP_DHCP_COARSE_TIMER_SECS=1
|
||||
|
||||
#
|
||||
# DHCP server
|
||||
@@ -785,6 +770,7 @@ CONFIG_LWIP_TCP_SYNMAXRTX=12
|
||||
CONFIG_LWIP_TCP_MSS=1460
|
||||
CONFIG_LWIP_TCP_TMR_INTERVAL=250
|
||||
CONFIG_LWIP_TCP_MSL=60000
|
||||
CONFIG_LWIP_TCP_FIN_WAIT_TIMEOUT=20000
|
||||
CONFIG_LWIP_TCP_SND_BUF_DEFAULT=11680
|
||||
CONFIG_LWIP_TCP_WND_DEFAULT=11680
|
||||
CONFIG_LWIP_TCP_RECVMBOX_SIZE=10
|
||||
@@ -874,6 +860,15 @@ CONFIG_MBEDTLS_SSL_OUT_CONTENT_LEN=4096
|
||||
# CONFIG_MBEDTLS_DYNAMIC_BUFFER is not set
|
||||
# CONFIG_MBEDTLS_DEBUG is not set
|
||||
|
||||
#
|
||||
# mbedTLS v2.28.x related
|
||||
#
|
||||
# CONFIG_MBEDTLS_SSL_VARIABLE_BUFFER_LENGTH is not set
|
||||
# CONFIG_MBEDTLS_X509_TRUSTED_CERT_CALLBACK is not set
|
||||
# CONFIG_MBEDTLS_SSL_CONTEXT_SERIALIZATION is not set
|
||||
CONFIG_MBEDTLS_SSL_KEEP_PEER_CERTIFICATE=y
|
||||
# end of mbedTLS v2.28.x related
|
||||
|
||||
#
|
||||
# Certificate Bundle
|
||||
#
|
||||
@@ -1072,6 +1067,8 @@ CONFIG_SPI_FLASH_SUPPORT_ISSI_CHIP=y
|
||||
CONFIG_SPI_FLASH_SUPPORT_MXIC_CHIP=y
|
||||
CONFIG_SPI_FLASH_SUPPORT_GD_CHIP=y
|
||||
CONFIG_SPI_FLASH_SUPPORT_WINBOND_CHIP=y
|
||||
# CONFIG_SPI_FLASH_SUPPORT_BOYA_CHIP is not set
|
||||
# CONFIG_SPI_FLASH_SUPPORT_TH_CHIP is not set
|
||||
# end of Auto-detect flash chips
|
||||
|
||||
CONFIG_SPI_FLASH_ENABLE_ENCRYPTED_READ_WRITE=y
|
||||
@@ -1182,6 +1179,7 @@ CONFIG_WPA_MBEDTLS_CRYPTO=y
|
||||
# CONFIG_WPA_TESTING_OPTIONS is not set
|
||||
# CONFIG_WPA_WPS_STRICT is not set
|
||||
# CONFIG_WPA_11KV_SUPPORT is not set
|
||||
# CONFIG_WPA_DPP_SUPPORT is not set
|
||||
# end of Supplicant
|
||||
|
||||
#
|
||||
@@ -1258,10 +1256,6 @@ CONFIG_STACK_CHECK_NONE=y
|
||||
# CONFIG_ESP32_APPTRACE_DEST_TRAX is not set
|
||||
CONFIG_ESP32_APPTRACE_DEST_NONE=y
|
||||
CONFIG_ESP32_APPTRACE_LOCK_ENABLE=y
|
||||
CONFIG_BTDM_CONTROLLER_BLE_MAX_CONN_EFF=0
|
||||
CONFIG_BTDM_CONTROLLER_BR_EDR_MAX_ACL_CONN_EFF=0
|
||||
CONFIG_BTDM_CONTROLLER_BR_EDR_MAX_SYNC_CONN_EFF=0
|
||||
CONFIG_BTDM_CONTROLLER_PINNED_TO_CORE=0
|
||||
CONFIG_ADC2_DISABLE_DAC=y
|
||||
# CONFIG_SPIRAM_SUPPORT is not set
|
||||
CONFIG_TRACEMEM_RESERVE_DRAM=0x0
|
||||
@@ -1290,7 +1284,7 @@ CONFIG_ESP32_RTC_CLOCK_SOURCE_INTERNAL_RC=y
|
||||
# CONFIG_COMPATIBLE_PRE_V2_1_BOOTLOADERS is not set
|
||||
CONFIG_SYSTEM_EVENT_QUEUE_SIZE=32
|
||||
CONFIG_SYSTEM_EVENT_TASK_STACK_SIZE=2304
|
||||
CONFIG_MAIN_TASK_STACK_SIZE=2048
|
||||
CONFIG_MAIN_TASK_STACK_SIZE=2560
|
||||
CONFIG_IPC_TASK_STACK_SIZE=1024
|
||||
CONFIG_CONSOLE_UART_DEFAULT=y
|
||||
# CONFIG_CONSOLE_UART_CUSTOM is not set
|
||||
|
||||
Reference in New Issue
Block a user