diff --git a/dap_client.c b/dap_client.c index 2406aebd8a9bf1a24b530753bbcd1d5d133a6999..787142ce933dba87bd3b70b742104595d3408057 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 2d8093a518088cef049ec433d4bc49e9292464b7..c9555590ec9f457f3785600eb030a79c2747a606 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 953ecf36c68871db7388c83ef0f4149dafb104ba..1cf377f3efc1b53113153e1abbd172a1df2e89dc 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 58d2f0b7a3e015515f022bb4b0d64a59e2aa3890..a9785f9cb553b9a9ceeb36d635fb65db709767a3 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;