extern DLL_EXPORT bool osalAVBInitialize(const char* ifname) { avbLogInit(); osalAVBTimeInit(); openavbQmgrInitialize(FQTSS_MODE_HW_CLASS, 0, ifname, 0, 0, 0); return TRUE; }
int avbEndpointLoop(void) { AVB_TRACE_ENTRY(AVB_TRACE_ENDPOINT); int retVal = -1; openavbRC rc = OPENAVB_SUCCESS; do { if (!x_cfg.bypassAsCapableCheck && (startPTP() < 0)) { // make sure ptp, a separate process, starts and is using the same interface as endpoint AVB_LOG_ERROR("PTP failed to start - Exiting"); break; } else if(x_cfg.bypassAsCapableCheck) { AVB_LOG_WARNING(" "); AVB_LOG_WARNING("Configuration 'gptp_asCapable_not_required = 1' is set."); AVB_LOG_WARNING("This configuration bypasses the requirement for gPTP"); AVB_LOG_WARNING("and openavb_gptp is not started automatically."); AVB_LOG_WARNING("An appropriate ptp MUST be started separately."); AVB_LOG_WARNING("Any network which does not use ptp to synchronize time"); AVB_LOG_WARNING("on each and every network device is NOT an AVB network."); AVB_LOG_WARNING("Such a network WILL NOT FUNCTION PROPERLY."); AVB_LOG_WARNING(" "); } x_streamList = NULL; if (!openavbQmgrInitialize(x_cfg.fqtss_mode, x_cfg.ifindex, x_cfg.ifname, x_cfg.mtu, x_cfg.link_kbit, x_cfg.nsr_kbit)) { AVB_LOG_ERROR("Failed to initialize QMgr"); break; } if (!openavbMaapInitialize(x_cfg.ifname, x_cfg.maapPort, &(x_cfg.maap_preferred), maapRestartCallback)) { AVB_LOG_ERROR("Failed to initialize MAAP"); openavbQmgrFinalize(); break; } if (!openavbShaperInitialize(x_cfg.ifname, x_cfg.shaperPort)) { AVB_LOG_ERROR("Failed to initialize Shaper"); openavbMaapFinalize(); openavbQmgrFinalize(); break; } if(!x_cfg.noSrp) { // Initialize SRP rc = openavbSrpInitialize(strmAttachCb, strmRegCb, x_cfg.ifname, x_cfg.link_kbit, x_cfg.bypassAsCapableCheck); } else { rc = OPENAVB_SUCCESS; AVB_LOG_WARNING(" "); AVB_LOG_WARNING("Configuration 'preconfigured = 1' is set."); AVB_LOG_WARNING("SRP is disabled. Streams MUST be configured manually"); AVB_LOG_WARNING("on each and every device in the network, without exception."); AVB_LOG_WARNING("AN AVB NETWORK WILL NOT FUNCTION AS EXPECTED UNLESS ALL"); AVB_LOG_WARNING("STREAMS ARE PROPERLY CONFIGURED ON ALL NETWORK DEVICES."); AVB_LOG_WARNING(" "); } if (!IS_OPENAVB_SUCCESS(rc)) { AVB_LOG_ERROR("Failed to initialize SRP"); openavbShaperFinalize(); openavbMaapFinalize(); openavbQmgrFinalize(); break; } if (openavbEndpointServerOpen()) { retVal = 0; while (endpointRunning) { openavbEptSrvrService(); } openavbEndpointServerClose(); } if(!x_cfg.noSrp) { // Shutdown SRP openavbSrpShutdown(); } openavbShaperFinalize(); openavbMaapFinalize(); openavbQmgrFinalize(); } while (0); if (!x_cfg.bypassAsCapableCheck && (stopPTP() < 0)) { AVB_LOG_WARNING("Failed to execute PTP stop command: killall -s SIGINT openavb_gptp"); } AVB_TRACE_EXIT(AVB_TRACE_ENDPOINT); return retVal; }