move some staks to external memory

This commit is contained in:
philippe44
2019-08-26 21:46:48 -07:00
parent df525bbb10
commit 7f97f621c4
12 changed files with 103 additions and 15 deletions

View File

@@ -43,6 +43,8 @@
#include "dmap_parser.h"
#include "log_util.h"
#define RTSP_STACK_SIZE (8*1024)
typedef struct raop_ctx_s {
#ifdef WIN32
struct mdns_service *svc;
@@ -57,6 +59,8 @@ typedef struct raop_ctx_s {
pthread_t thread, search_thread;
#else
TaskHandle_t thread, search_thread, joiner;
StaticTask_t *xTaskBuffer;
StackType_t *xStack;
#endif
unsigned char mac[6];
int latency;
@@ -178,8 +182,14 @@ struct raop_ctx_s *raop_create(struct in_addr host, char *name,
snprintf(id, 64, "%02X%02X%02X%02X%02X%02X@%s", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5], name);
#ifdef WIN32
// seems that Windows snprintf does not add NULL char if actual size > max
id[63] = '\0';
// seems that Windows snprintf does not add NULL char if actual size > max
id[63] = '\0';
ctx->svc = mdnsd_register_svc(ctx->svr, id, "_raop._tcp.local", ctx->port, NULL, (const char**) txt);
pthread_create(&ctx->thread, NULL, &rtsp_thread, ctx);
#else
LOG_INFO("starting mDNS with %s", id);
ESP_ERROR_CHECK( mdns_service_add(id, "_raop", "_tcp", ctx->port, txt, sizeof(txt) / sizeof(mdns_txt_item_t)) );
/*
xTaskCreate((TaskFunction_t) rtsp_thread, "RTSP_thread", 8*1024, ctx, ESP_TASK_PRIO_MIN + 1, &ctx->thread);
@@ -192,7 +202,11 @@ void raop_delete(struct raop_ctx_s *ctx) {
return ctx;
}
/*----------------------------------------------------------------------------*/
void raop_delete(struct raop_ctx_s *ctx) {
int sock;
struct sockaddr addr;
socklen_t nlen = sizeof(struct sockaddr);
if (!ctx) return;
@@ -205,8 +219,9 @@ void raop_delete(struct raop_ctx_s *ctx) {
// wake-up thread by connecting socket, needed for freeBSD
sock = socket(AF_INET, SOCK_STREAM, 0);
getsockname(ctx->sock, (struct sockaddr *) &addr, &nlen);
connect(sock, (struct sockaddr*) &addr, sizeof(addr));
getsockname(ctx->sock, (struct sockaddr *) &addr, &nlen);
connect(sock, (struct sockaddr*) &addr, sizeof(addr));
closesocket(sock);
#ifdef WIN32
pthread_join(ctx->thread, NULL);
@@ -229,11 +244,13 @@ void raop_delete(struct raop_ctx_s *ctx) {
// terminate search, but do not reclaim memory of pthread if never launched
if (ctx->active_remote.handle) {
close_mDNS(ctx->active_remote.handle);
pthread_join(ctx->search_thread, NULL);
pthread_join(ctx->search_thread, NULL);
}
*/
NFREE(ctx->rtsp.aeskey);
NFREE(ctx->rtsp.aesiv);
NFREE(ctx->rtsp.fmtp);
// stop broadcasting devices
#ifdef WIN32