From 70b7f287b45fe64c6babed603ad9e8ceb83d7eb1 Mon Sep 17 00:00:00 2001 From: Dmitriy Gerasimov <naeper@demlabs.net> Date: Wed, 15 May 2019 22:19:33 +0700 Subject: [PATCH] [+] set active channels list --- dap_client.c | 14 ++++++++++++++ dap_client.h | 1 + dap_client_pvt.c | 8 +++++++- dap_client_pvt.h | 1 + 4 files changed, 23 insertions(+), 1 deletion(-) diff --git a/dap_client.c b/dap_client.c index 2406aeb..787142c 100755 --- a/dap_client.c +++ b/dap_client.c @@ -3,6 +3,7 @@ #include <unistd.h> #include "dap_common.h" +#include "dap_strfuncs.h" #include "dap_http_client.h" #include "dap_client.h" #include "dap_client_pvt.h" @@ -109,6 +110,19 @@ const char* dap_client_get_uplink_addr(dap_client_t * a_client) return DAP_CLIENT_PVT(a_client)->uplink_addr; } +/** + * @brief dap_client_set_active_channels + * @param a_client + * @param a_active_channels + */ +void dap_client_set_active_channels (dap_client_t * a_client, const char * a_active_channels) +{ + if ( DAP_CLIENT_PVT(a_client)->active_channels ) + DAP_DELETE(DAP_CLIENT_PVT(a_client)->active_channels ); + DAP_CLIENT_PVT(a_client)->active_channels = dap_strdup( a_active_channels); +} + + /** * @brief dap_client_get_uplink_port * @param a_client diff --git a/dap_client.h b/dap_client.h index 2d8093a..c955559 100755 --- a/dap_client.h +++ b/dap_client.h @@ -128,6 +128,7 @@ const char * dap_client_get_auth_cookie(dap_client_t * a_client); dap_stream_t * dap_client_get_stream(dap_client_t * a_client); dap_stream_ch_t * dap_client_get_stream_ch(dap_client_t * a_client, uint8_t a_ch_id); const char * dap_client_get_stream_id(dap_client_t * a_client); +void dap_client_set_active_channels (dap_client_t * a_client, const char * a_active_channels); dap_client_stage_t dap_client_get_stage(dap_client_t * a_client); dap_client_stage_status_t dap_client_get_stage_status(dap_client_t * a_client); diff --git a/dap_client_pvt.c b/dap_client_pvt.c index 953ecf3..1cf377f 100755 --- a/dap_client_pvt.c +++ b/dap_client_pvt.c @@ -114,6 +114,8 @@ void dap_client_pvt_delete(dap_client_pvt_t * a_client_pvt) { if(a_client_pvt->session_key_id) DAP_DELETE(a_client_pvt->session_key_id); + if ( a_client_pvt->active_channels ) + DAP_DELETE(a_client_pvt->active_channels ); if (a_client_pvt->session_key) dap_enc_key_delete(a_client_pvt->session_key); if (a_client_pvt->session_key_open) @@ -247,7 +249,11 @@ static void s_stage_status_after(dap_client_pvt_t * a_client_pvt) break; case STAGE_STREAM_CONNECTED: { log_it(L_INFO, "Go to stage STAGE_STREAM_CONNECTED"); - dap_stream_ch_new(a_client_pvt->stream, 'N'); + size_t count_channels = strlen( a_client_pvt->active_channels ) ; + for(size_t i = 0; i < count_channels; i++) { + dap_stream_ch_new(a_client_pvt->stream,(uint8_t) a_client_pvt->active_channels[i]); + //sid->channel[i]->ready_to_write = true; + } char* l_full_path = NULL; const char * l_path = "stream"; diff --git a/dap_client_pvt.h b/dap_client_pvt.h index 58d2f0b..a9785f9 100755 --- a/dap_client_pvt.h +++ b/dap_client_pvt.h @@ -54,6 +54,7 @@ typedef struct dap_client_internal char * last_parsed_node; char * uplink_addr; + char * active_channels; uint16_t uplink_port; uint32_t uplink_protocol_version; -- GitLab