From 238bda5ea30853fed984841d6e4ba9b75db91993 Mon Sep 17 00:00:00 2001 From: Brant Thomsen Date: Wed, 19 Jul 2017 13:40:21 -0600 Subject: Stream class specified by AVDECC AVDECC can overwrite the stream class specified by the original settings. This causes the Talker/Listener and Endpoint to use the stream class specified by the AVDECC controller, and AVDECC to report the current stream class being used. --- lib/avtp_pipeline/avdecc_msg/openavb_avdecc_msg.h | 10 ++++++---- .../avdecc_msg/openavb_avdecc_msg_client.c | 20 ++++++++++++-------- .../avdecc_msg/openavb_avdecc_msg_server.c | 8 ++++++-- lib/avtp_pipeline/endpoint/openavb_endpoint.c | 1 + lib/avtp_pipeline/endpoint/openavb_endpoint.h | 3 +++ lib/avtp_pipeline/endpoint/openavb_endpoint_client.c | 3 ++- lib/avtp_pipeline/endpoint/openavb_endpoint_server.c | 2 ++ .../avdecc/openavb_avdecc_pipeline_interaction.c | 1 + lib/avtp_pipeline/tl/openavb_talker.h | 1 + lib/avtp_pipeline/tl/openavb_talker_endpoint.c | 5 ++++- lib/avtp_pipeline/tl/openavb_talker_no_endpoint.c | 4 +++- 11 files changed, 41 insertions(+), 17 deletions(-) diff --git a/lib/avtp_pipeline/avdecc_msg/openavb_avdecc_msg.h b/lib/avtp_pipeline/avdecc_msg/openavb_avdecc_msg.h index 78c4f38e..135efc45 100644 --- a/lib/avtp_pipeline/avdecc_msg/openavb_avdecc_msg.h +++ b/lib/avtp_pipeline/avdecc_msg/openavb_avdecc_msg.h @@ -109,6 +109,7 @@ typedef struct { } openavbAvdeccMsgParams_ClientInitIdentify_t; typedef struct { + U8 sr_class; // SR_CLASS_A or SR_CLASS_B U8 stream_src_mac[6]; // MAC Address for the Talker U16 stream_uid; // Stream ID value U8 stream_dest_mac[6]; // Multicast address for the stream @@ -127,6 +128,7 @@ typedef struct { } openavbAvdeccMsgParams_VersionCallback_t; typedef struct { + U8 sr_class; // SR_CLASS_A or SR_CLASS_B U8 stream_src_mac[6]; // MAC Address for the Talker U16 stream_uid; // Stream ID value U8 stream_dest_mac[6]; // Multicast address for the stream @@ -172,12 +174,12 @@ bool openavbAvdeccMsgClntInitIdentify(int avdeccMsgHandle, const char * friendly bool openavbAvdeccMsgSrvrHndlInitIdentifyFromClient(int avdeccMsgHandle, char * friendly_name, U8 talker); // Client notify the server of the stream values for the Talker to use. -bool openavbAvdeccMsgClntTalkerStreamID(int avdeccMsgHandle, const U8 stream_src_mac[6], U16 stream_uid, const U8 stream_dest_mac[6], U16 stream_vlan_id); -bool openavbAvdeccMsgSrvrHndlTalkerStreamIDFromClient(int avdeccMsgHandle, const U8 stream_src_mac[6], U16 stream_uid, const U8 stream_dest_mac[6], U16 stream_vlan_id); +bool openavbAvdeccMsgClntTalkerStreamID(int avdeccMsgHandle, U8 sr_class, const U8 stream_src_mac[6], U16 stream_uid, const U8 stream_dest_mac[6], U16 stream_vlan_id); +bool openavbAvdeccMsgSrvrHndlTalkerStreamIDFromClient(int avdeccMsgHandle, U8 sr_class, const U8 stream_src_mac[6], U16 stream_uid, const U8 stream_dest_mac[6], U16 stream_vlan_id); // Server notify the client of the stream values for the Listener to use. -bool openavbAvdeccMsgSrvrListenerStreamID(int avdeccMsgHandle, const U8 stream_src_mac[6], U16 stream_uid, const U8 stream_dest_mac[6], U16 stream_vlan_id); -bool openavbAvdeccMsgClntHndlListenerStreamIDFromServer(int avdeccMsgHandle, const U8 stream_src_mac[6], U16 stream_uid, const U8 stream_dest_mac[6], U16 stream_vlan_id); +bool openavbAvdeccMsgSrvrListenerStreamID(int avdeccMsgHandle, U8 sr_class, const U8 stream_src_mac[6], U16 stream_uid, const U8 stream_dest_mac[6], U16 stream_vlan_id); +bool openavbAvdeccMsgClntHndlListenerStreamIDFromServer(int avdeccMsgHandle, U8 sr_class, const U8 stream_src_mac[6], U16 stream_uid, const U8 stream_dest_mac[6], U16 stream_vlan_id); // Server state change requests, and client notifications of state changes. bool openavbAvdeccMsgSrvrChangeRequest(int avdeccMsgHandle, openavbAvdeccMsgStateType_t desiredState); diff --git a/lib/avtp_pipeline/avdecc_msg/openavb_avdecc_msg_client.c b/lib/avtp_pipeline/avdecc_msg/openavb_avdecc_msg_client.c index f2addd41..5e1c76cd 100644 --- a/lib/avtp_pipeline/avdecc_msg/openavb_avdecc_msg_client.c +++ b/lib/avtp_pipeline/avdecc_msg/openavb_avdecc_msg_client.c @@ -86,7 +86,7 @@ static bool openavbAvdeccMsgClntReceiveFromServer(int avdeccMsgHandle, openavbAv case OPENAVB_AVDECC_MSG_LISTENER_STREAM_ID: AVB_LOG_DEBUG("Message received: OPENAVB_AVDECC_MSG_LISTENER_STREAM_ID"); openavbAvdeccMsgClntHndlListenerStreamIDFromServer(avdeccMsgHandle, - msg->params.listenerStreamID.stream_src_mac, ntohs(msg->params.listenerStreamID.stream_uid), + msg->params.listenerStreamID.sr_class, msg->params.listenerStreamID.stream_src_mac, ntohs(msg->params.listenerStreamID.stream_uid), msg->params.listenerStreamID.stream_dest_mac, ntohs(msg->params.listenerStreamID.stream_vlan_id)); break; case OPENAVB_AVDECC_MSG_CLIENT_CHANGE_REQUEST: @@ -162,7 +162,7 @@ bool openavbAvdeccMsgClntInitIdentify(int avdeccMsgHandle, const char * friendly return ret; } -bool openavbAvdeccMsgClntTalkerStreamID(int avdeccMsgHandle, const U8 stream_src_mac[6], U16 stream_uid, const U8 stream_dest_mac[6], U16 stream_vlan_id) +bool openavbAvdeccMsgClntTalkerStreamID(int avdeccMsgHandle, U8 sr_class, const U8 stream_src_mac[6], U16 stream_uid, const U8 stream_dest_mac[6], U16 stream_vlan_id) { AVB_TRACE_ENTRY(AVB_TRACE_AVDECC_MSG); openavbAvdeccMessage_t msgBuf; @@ -191,6 +191,7 @@ bool openavbAvdeccMsgClntTalkerStreamID(int avdeccMsgHandle, const U8 stream_src msgBuf.type = OPENAVB_AVDECC_MSG_TALKER_STREAM_ID; openavbAvdeccMsgParams_TalkerStreamID_t * pParams = &(msgBuf.params.talkerStreamID); + pParams->sr_class = sr_class; memcpy(pParams->stream_src_mac, stream_src_mac, 6); pParams->stream_uid = htons(stream_uid); memcpy(pParams->stream_dest_mac, stream_dest_mac, 6); @@ -201,7 +202,7 @@ bool openavbAvdeccMsgClntTalkerStreamID(int avdeccMsgHandle, const U8 stream_src return ret; } -bool openavbAvdeccMsgClntHndlListenerStreamIDFromServer(int avdeccMsgHandle, const U8 stream_src_mac[6], U16 stream_uid, const U8 stream_dest_mac[6], U16 stream_vlan_id) +bool openavbAvdeccMsgClntHndlListenerStreamIDFromServer(int avdeccMsgHandle, U8 sr_class, const U8 stream_src_mac[6], U16 stream_uid, const U8 stream_dest_mac[6], U16 stream_vlan_id) { AVB_TRACE_ENTRY(AVB_TRACE_AVDECC_MSG); @@ -220,10 +221,11 @@ bool openavbAvdeccMsgClntHndlListenerStreamIDFromServer(int avdeccMsgHandle, con // Determine if the supplied information differs from the current settings. openavb_tl_cfg_t * pCfg = &(pState->pTLState->cfg); - if (memcmp(pCfg->stream_addr.buffer.ether_addr_octet, stream_src_mac, 6) != 0 || - pCfg->stream_uid != stream_uid || - memcmp(pCfg->dest_addr.buffer.ether_addr_octet, stream_dest_mac, 6) != 0 || - pCfg->vlan_id != stream_vlan_id) { + if (pCfg->sr_class != sr_class || + memcmp(pCfg->stream_addr.buffer.ether_addr_octet, stream_src_mac, 6) != 0 || + pCfg->stream_uid != stream_uid || + memcmp(pCfg->dest_addr.buffer.ether_addr_octet, stream_dest_mac, 6) != 0 || + pCfg->vlan_id != stream_vlan_id) { // If the Listener is running, stop the Listener before updating the information. if (pState->pTLState->bRunning) { AVB_LOG_DEBUG("Forcing Listener to Stop to change streaming settings"); @@ -231,6 +233,7 @@ bool openavbAvdeccMsgClntHndlListenerStreamIDFromServer(int avdeccMsgHandle, con } // Update the stream information supplied by the server. + pCfg->sr_class = sr_class; memcpy(pCfg->stream_addr.buffer.ether_addr_octet, stream_src_mac, 6); pCfg->stream_addr.mac = &(pCfg->stream_addr.buffer); // Indicate that the MAC Address is valid. pCfg->stream_uid = stream_uid; @@ -239,6 +242,7 @@ bool openavbAvdeccMsgClntHndlListenerStreamIDFromServer(int avdeccMsgHandle, con pCfg->vlan_id = stream_vlan_id; } + AVB_LOGF_DEBUG("AVDECC-supplied sr_class: %u", pCfg->sr_class); AVB_LOGF_DEBUG("AVDECC-supplied stream_id: " ETH_FORMAT "/%u", ETH_OCTETS(pCfg->stream_addr.buffer.ether_addr_octet), pCfg->stream_uid); AVB_LOGF_DEBUG("AVDECC-supplied dest_addr: " ETH_FORMAT, @@ -413,7 +417,7 @@ void openavbAvdeccMsgRunTalker(avdecc_msg_state_t *pState) // Let the AVDECC Msg server know our stream ID. if (!openavbAvdeccMsgClntTalkerStreamID(pState->avdeccMsgHandle, - cfg->stream_addr.buffer.ether_addr_octet, cfg->stream_uid, + cfg->sr_class, cfg->stream_addr.buffer.ether_addr_octet, cfg->stream_uid, cfg->dest_addr.buffer.ether_addr_octet, cfg->vlan_id)) { AVB_LOG_ERROR("openavbAvdeccMsgClntTalkerStreamID() failed"); AVB_TRACE_EXIT(AVB_TRACE_AVDECC_MSG); diff --git a/lib/avtp_pipeline/avdecc_msg/openavb_avdecc_msg_server.c b/lib/avtp_pipeline/avdecc_msg/openavb_avdecc_msg_server.c index 3afcfc3d..fa1cd73c 100644 --- a/lib/avtp_pipeline/avdecc_msg/openavb_avdecc_msg_server.c +++ b/lib/avtp_pipeline/avdecc_msg/openavb_avdecc_msg_server.c @@ -99,6 +99,7 @@ static bool openavbAvdeccMsgSrvrReceiveFromClient(int avdeccMsgHandle, openavbAv case OPENAVB_AVDECC_MSG_TALKER_STREAM_ID: AVB_LOG_DEBUG("Message received: OPENAVB_AVDECC_MSG_TALKER_STREAM_ID"); ret = openavbAvdeccMsgSrvrHndlTalkerStreamIDFromClient(avdeccMsgHandle, + msg->params.talkerStreamID.sr_class, msg->params.talkerStreamID.stream_src_mac, ntohs(msg->params.talkerStreamID.stream_uid), msg->params.talkerStreamID.stream_dest_mac, @@ -208,7 +209,7 @@ bool openavbAvdeccMsgSrvrHndlInitIdentifyFromClient(int avdeccMsgHandle, char * return true; } -bool openavbAvdeccMsgSrvrHndlTalkerStreamIDFromClient(int avdeccMsgHandle, const U8 stream_src_mac[6], U16 stream_uid, const U8 stream_dest_mac[6], U16 stream_vlan_id) +bool openavbAvdeccMsgSrvrHndlTalkerStreamIDFromClient(int avdeccMsgHandle, U8 sr_class, const U8 stream_src_mac[6], U16 stream_uid, const U8 stream_dest_mac[6], U16 stream_vlan_id) { AVB_TRACE_ENTRY(AVB_TRACE_AVDECC_MSG); @@ -227,12 +228,14 @@ bool openavbAvdeccMsgSrvrHndlTalkerStreamIDFromClient(int avdeccMsgHandle, const } // Update the stream information supplied by the client. + pCfg->sr_class = sr_class; memcpy(pCfg->stream_addr.buffer.ether_addr_octet, stream_src_mac, 6); pCfg->stream_addr.mac = &(pCfg->stream_addr.buffer); // Indicate that the MAC Address is valid. pCfg->stream_uid = stream_uid; memcpy(pCfg->dest_addr.buffer.ether_addr_octet, stream_dest_mac, 6); pCfg->dest_addr.mac = &(pCfg->dest_addr.buffer); // Indicate that the MAC Address is valid. pCfg->vlan_id = stream_vlan_id; + AVB_LOGF_DEBUG("Talker-supplied sr_class: %u", pCfg->sr_class); AVB_LOGF_DEBUG("Talker-supplied stream_id: " ETH_FORMAT "/%u", ETH_OCTETS(pCfg->stream_addr.buffer.ether_addr_octet), pCfg->stream_uid); AVB_LOGF_DEBUG("Talker-supplied dest_addr: " ETH_FORMAT, @@ -246,7 +249,7 @@ bool openavbAvdeccMsgSrvrHndlTalkerStreamIDFromClient(int avdeccMsgHandle, const return true; } -bool openavbAvdeccMsgSrvrListenerStreamID(int avdeccMsgHandle, const U8 stream_src_mac[6], U16 stream_uid, const U8 stream_dest_mac[6], U16 stream_vlan_id) +bool openavbAvdeccMsgSrvrListenerStreamID(int avdeccMsgHandle, U8 sr_class, const U8 stream_src_mac[6], U16 stream_uid, const U8 stream_dest_mac[6], U16 stream_vlan_id) { AVB_TRACE_ENTRY(AVB_TRACE_AVDECC_MSG); openavbAvdeccMessage_t msgBuf; @@ -262,6 +265,7 @@ bool openavbAvdeccMsgSrvrListenerStreamID(int avdeccMsgHandle, const U8 stream_s msgBuf.type = OPENAVB_AVDECC_MSG_LISTENER_STREAM_ID; openavbAvdeccMsgParams_ListenerStreamID_t * pParams = &(msgBuf.params.listenerStreamID); + pParams->sr_class = sr_class; memcpy(pParams->stream_src_mac, stream_src_mac, 6); pParams->stream_uid = htons(stream_uid); memcpy(pParams->stream_dest_mac, stream_dest_mac, 6); diff --git a/lib/avtp_pipeline/endpoint/openavb_endpoint.c b/lib/avtp_pipeline/endpoint/openavb_endpoint.c index 0238487d..30d8114a 100644 --- a/lib/avtp_pipeline/endpoint/openavb_endpoint.c +++ b/lib/avtp_pipeline/endpoint/openavb_endpoint.c @@ -354,6 +354,7 @@ openavbRC strmAttachCb(void* pv, x_cfg.ifname, ps->destAddr, lsnrDecl, + ps->srClass, ps->classRate, ps->vlanID, ps->priority, diff --git a/lib/avtp_pipeline/endpoint/openavb_endpoint.h b/lib/avtp_pipeline/endpoint/openavb_endpoint.h index 9e6708ae..cf7af178 100644 --- a/lib/avtp_pipeline/endpoint/openavb_endpoint.h +++ b/lib/avtp_pipeline/endpoint/openavb_endpoint.h @@ -99,6 +99,7 @@ typedef struct { char ifname[IFNAMSIZ + 10]; // Include space for the socket type prefix (e.g. "simple:eth0") U8 destAddr[ETH_ALEN]; openavbSrpLsnrDeclSubtype_t lsnrDecl; + U8 srClass; U32 classRate; U16 vlanID; U8 priority; @@ -241,6 +242,7 @@ void openavbEptSrvrNotifyTlkrOfSrpCb(int h, char *ifname, U8 destAddr[], openavbSrpLsnrDeclSubtype_t lsnrDecl, + U8 srClass, U32 classRate, U16 vlanID, U8 priority, @@ -250,6 +252,7 @@ void openavbEptClntNotifyTlkrOfSrpCb(int h, char *ifname, U8 destAddr[], openavbSrpLsnrDeclSubtype_t lsnrDecl, + U8 srClass, U32 classRate, U16 vlanID, U8 priority, diff --git a/lib/avtp_pipeline/endpoint/openavb_endpoint_client.c b/lib/avtp_pipeline/endpoint/openavb_endpoint_client.c index 14b54497..4d2b64cf 100644 --- a/lib/avtp_pipeline/endpoint/openavb_endpoint_client.c +++ b/lib/avtp_pipeline/endpoint/openavb_endpoint_client.c @@ -81,13 +81,14 @@ static bool openavbEptClntReceiveFromServer(int h, openavbEndpointMessage_t *msg msg->params.talkerCallback.ifname, msg->params.talkerCallback.destAddr, msg->params.talkerCallback.lsnrDecl, + msg->params.talkerCallback.srClass, msg->params.talkerCallback.classRate, msg->params.talkerCallback.vlanID, msg->params.talkerCallback.priority, msg->params.talkerCallback.fwmark); break; case OPENAVB_ENDPOINT_LISTENER_CALLBACK: - openavbEptClntNotifyLstnrOfSrpCb(h, + openavbEptClntNotifyLstnrOfSrpCb(h, &msg->streamID, msg->params.listenerCallback.ifname, msg->params.listenerCallback.destAddr, diff --git a/lib/avtp_pipeline/endpoint/openavb_endpoint_server.c b/lib/avtp_pipeline/endpoint/openavb_endpoint_server.c index 7736184c..ae2cf8fb 100644 --- a/lib/avtp_pipeline/endpoint/openavb_endpoint_server.c +++ b/lib/avtp_pipeline/endpoint/openavb_endpoint_server.c @@ -119,6 +119,7 @@ void openavbEptSrvrNotifyTlkrOfSrpCb(int h, char *ifname, U8 destAddr[ETH_ALEN], openavbSrpLsnrDeclSubtype_t lsnrDecl, + U8 srClass, U32 classRate, U16 vlanID, U8 priority, @@ -139,6 +140,7 @@ void openavbEptSrvrNotifyTlkrOfSrpCb(int h, strncpy(msgBuf.params.talkerCallback.ifname, ifname, IFNAMSIZ - 1); memcpy(msgBuf.params.talkerCallback.destAddr, destAddr, ETH_ALEN); msgBuf.params.talkerCallback.lsnrDecl = lsnrDecl; + msgBuf.params.talkerCallback.srClass = srClass; msgBuf.params.talkerCallback.classRate = classRate; msgBuf.params.talkerCallback.vlanID = vlanID; msgBuf.params.talkerCallback.priority = priority; diff --git a/lib/avtp_pipeline/platform/Linux/avdecc/openavb_avdecc_pipeline_interaction.c b/lib/avtp_pipeline/platform/Linux/avdecc/openavb_avdecc_pipeline_interaction.c index 5ff27285..be38cf67 100644 --- a/lib/avtp_pipeline/platform/Linux/avdecc/openavb_avdecc_pipeline_interaction.c +++ b/lib/avtp_pipeline/platform/Linux/avdecc/openavb_avdecc_pipeline_interaction.c @@ -67,6 +67,7 @@ bool openavbAVDECCRunListener(openavb_aem_descriptor_stream_io_t *pDescriptorStr // Send the Stream ID to the client. // The client will stop a running Listener if the settings differ from its current values. if (!openavbAvdeccMsgSrvrListenerStreamID(pDescriptorStreamInput->stream->client->avdeccMsgHandle, + ((pListenerStreamInfo->flags & OPENAVB_ACMP_FLAG_CLASS_B) != 0 ? SR_CLASS_B : SR_CLASS_A), pListenerStreamInfo->stream_id, /* The first 6 bytes of the steam_id are the source MAC Address */ (((U16) pListenerStreamInfo->stream_id[6]) << 8 | (U16) pListenerStreamInfo->stream_id[7]), pListenerStreamInfo->stream_dest_mac, diff --git a/lib/avtp_pipeline/tl/openavb_talker.h b/lib/avtp_pipeline/tl/openavb_talker.h index b886c363..0bdcf1ea 100644 --- a/lib/avtp_pipeline/tl/openavb_talker.h +++ b/lib/avtp_pipeline/tl/openavb_talker.h @@ -44,6 +44,7 @@ typedef struct { AVBStreamID_t streamID; U8 destAddr[ETH_ALEN]; AVBTSpec_t tSpec; + U8 srClass; U32 classRate; U32 fwmark; U16 vlanID; diff --git a/lib/avtp_pipeline/tl/openavb_talker_endpoint.c b/lib/avtp_pipeline/tl/openavb_talker_endpoint.c index b20c5188..24262665 100644 --- a/lib/avtp_pipeline/tl/openavb_talker_endpoint.c +++ b/lib/avtp_pipeline/tl/openavb_talker_endpoint.c @@ -58,6 +58,7 @@ void openavbEptClntNotifyTlkrOfSrpCb(int endpointHandle, char *ifname, U8 destAddr[], openavbSrpLsnrDeclSubtype_t lsnrDecl, + U8 srClass, U32 classRate, U16 vlanID, U8 priority, @@ -95,6 +96,7 @@ void openavbEptClntNotifyTlkrOfSrpCb(int endpointHandle, } memcpy(&pTalkerData->streamID, streamID, sizeof(AVBStreamID_t)); memcpy(&pTalkerData->destAddr, destAddr, ETH_ALEN); + pTalkerData->srClass = srClass; pTalkerData->classRate = classRate; pTalkerData->vlanID = vlanID; pTalkerData->vlanPCP = priority; @@ -113,6 +115,7 @@ void openavbEptClntNotifyTlkrOfSrpCb(int endpointHandle, } memcpy(&pTalkerData->streamID, streamID, sizeof(AVBStreamID_t)); memcpy(&pTalkerData->destAddr, destAddr, ETH_ALEN); + pTalkerData->srClass = srClass; pTalkerData->classRate = classRate; pTalkerData->vlanID = vlanID; pTalkerData->vlanPCP = priority; @@ -131,7 +134,7 @@ void openavbEptClntNotifyTlkrOfSrpCb(int endpointHandle, // Let the AVDECC Msg server know our current stream ID, in case it was updated by MAAP. if (pTLState->avdeccMsgHandle != AVB_AVDECC_MSG_HANDLE_INVALID) { if (!openavbAvdeccMsgClntTalkerStreamID(pTLState->avdeccMsgHandle, - pTalkerData->streamID.addr, pTalkerData->streamID.uniqueID, + pTalkerData->srClass, pTalkerData->streamID.addr, pTalkerData->streamID.uniqueID, pTalkerData->destAddr, pTalkerData->vlanID)) { AVB_LOG_ERROR("openavbAvdeccMsgClntTalkerStreamID() failed"); } diff --git a/lib/avtp_pipeline/tl/openavb_talker_no_endpoint.c b/lib/avtp_pipeline/tl/openavb_talker_no_endpoint.c index 4a4768a8..2e9a29d7 100644 --- a/lib/avtp_pipeline/tl/openavb_talker_no_endpoint.c +++ b/lib/avtp_pipeline/tl/openavb_talker_no_endpoint.c @@ -74,6 +74,7 @@ bool openavbTLRunTalkerInit(tl_state_t *pTLState) } pTalkerData->streamID.uniqueID = pCfg->stream_uid; + pTalkerData->srClass = pCfg->sr_class; if (pCfg->sr_class == SR_CLASS_A) { pTalkerData->classRate = 8000; pTalkerData->vlanID = pCfg->vlan_id == VLAN_NULL ? @@ -132,7 +133,7 @@ bool openavbTLRunTalkerInit(tl_state_t *pTLState) // Let the AVDECC Msg server know our current stream ID, in case it is waiting for an update. if (pTLState->avdeccMsgHandle != AVB_AVDECC_MSG_HANDLE_INVALID) { if (!openavbAvdeccMsgClntTalkerStreamID(pTLState->avdeccMsgHandle, - pTalkerData->streamID.addr, pTalkerData->streamID.uniqueID, + pTalkerData->srClass, pTalkerData->streamID.addr, pTalkerData->streamID.uniqueID, pTalkerData->destAddr, pTalkerData->vlanID)) { AVB_LOG_ERROR("openavbAvdeccMsgClntTalkerStreamID() failed"); } @@ -153,6 +154,7 @@ AVBStreamID_t *streamID, char *ifname, U8 destAddr[], openavbSrpLsnrDeclSubtype_t lsnrDecl, +U8 srClass, U32 classRate, U16 vlanID, U8 priority, -- cgit v1.2.1