void talkerStopStream(tl_state_t *pTLState) { AVB_TRACE_ENTRY(AVB_TRACE_TL); if (!pTLState) { AVB_LOG_ERROR("Invalid TLState"); AVB_TRACE_EXIT(AVB_TRACE_TL); return; } talker_data_t *pTalkerData = pTLState->pPvtTalkerData; if (!pTalkerData) { AVB_LOG_ERROR("Invalid listener data"); AVB_TRACE_EXIT(AVB_TRACE_TL); return; } void *rawsock = NULL; if (pTalkerData->avtpHandle) { rawsock = ((avtp_stream_t*)pTalkerData->avtpHandle)->rawsock; } openavbTalkerAddStat(pTLState, TL_STAT_TX_CALLS, pTalkerData->cntWakes); openavbTalkerAddStat(pTLState, TL_STAT_TX_FRAMES, pTalkerData->cntFrames); // openavbTalkerAddStat(pTLState, TL_STAT_TX_LATE, 0); // Can't calulate at this time openavbTalkerAddStat(pTLState, TL_STAT_TX_BYTES, openavbAvtpBytes(pTalkerData->avtpHandle)); AVB_LOGF_INFO("TX "STREAMID_FORMAT", Totals: calls=%" PRIu64 ", frames=%" PRIu64 ", late=%" PRIu64 ", bytes=%" PRIu64 ", TXOutOfBuffs=%ld", STREAMID_ARGS(&pTalkerData->streamID), openavbTalkerGetStat(pTLState, TL_STAT_TX_CALLS), openavbTalkerGetStat(pTLState, TL_STAT_TX_FRAMES), openavbTalkerGetStat(pTLState, TL_STAT_TX_LATE), openavbTalkerGetStat(pTLState, TL_STAT_TX_BYTES), openavbRawsockGetTXOutOfBuffers(rawsock) ); if (pTLState->bStreaming) { openavbAvtpShutdown(pTalkerData->avtpHandle); pTLState->bStreaming = FALSE; } AVB_TRACE_EXIT(AVB_TRACE_TL); }
EXTERN_DLL_EXPORT U64 openavbTLStat(tl_handle_t handle, tl_stat_t stat) { AVB_TRACE_ENTRY(AVB_TRACE_TL); U64 val = 0; tl_state_t *pTLState = (tl_state_t *)handle; if (!pTLState) { AVB_LOG_ERROR("Invalid handle"); AVB_TRACE_EXIT(AVB_TRACE_TL); return 0; } if (pTLState->cfg.role == AVB_ROLE_TALKER) { val = openavbTalkerGetStat(pTLState, stat); } else if (pTLState->cfg.role == AVB_ROLE_LISTENER) { val = openavbListenerGetStat(pTLState, stat); } AVB_TRACE_EXIT(AVB_TRACE_TL); return val; }