├── .gitignore ├── .gitmodules ├── .travis.yml ├── CMakeLists.txt ├── Makefile ├── README.rst ├── appveyor.yml ├── avnu_logo.png ├── daemons ├── LICENSE ├── common │ ├── eui64set.c │ ├── eui64set.h │ ├── parse.c │ ├── parse.h │ └── tests │ │ ├── AllTests.cpp │ │ ├── CMakeLists.txt │ │ └── eui64set_tests.cpp ├── maap │ ├── CMakeLists.txt │ ├── README.rst │ ├── common │ │ ├── intervals.c │ │ ├── intervals.h │ │ ├── maap.c │ │ ├── maap.h │ │ ├── maap_iface.h │ │ ├── maap_log.h │ │ ├── maap_log_queue.c │ │ ├── maap_log_queue.h │ │ ├── maap_net.c │ │ ├── maap_net.h │ │ ├── maap_packet.c │ │ ├── maap_packet.h │ │ ├── maap_parse.c │ │ ├── maap_parse.h │ │ ├── maap_timer.h │ │ └── platform.h │ ├── doc │ │ ├── CMakeLists.txt │ │ ├── Doxyfile.in │ │ └── mainpage.dox │ ├── linux │ │ ├── build │ │ │ └── Makefile │ │ └── src │ │ │ ├── maap_daemon.c │ │ │ ├── maap_helper_linux.h │ │ │ ├── maap_log_linux.c │ │ │ └── maap_timer_linux.c │ ├── test │ │ ├── CMakeLists.txt │ │ ├── maap_log_dummy.c │ │ ├── maap_log_dummy.h │ │ ├── maap_test.c │ │ ├── maap_timer_dummy.c │ │ ├── maap_timer_dummy.h │ │ └── test_intervals.c │ ├── tests │ │ ├── AllTests.cpp │ │ ├── CMakeLists.txt │ │ ├── maap_net_tests.cpp │ │ ├── maap_packet_tests.cpp │ │ └── maap_tests.cpp │ └── windows │ │ └── src │ │ ├── maap_log_windows.c │ │ ├── maap_main.c │ │ └── maap_timer_windows.c ├── mrpd │ ├── .gitignore │ ├── CMakeLists.txt │ ├── Makefile │ ├── mmrp.c │ ├── mmrp.h │ ├── mrp.c │ ├── mrp.h │ ├── mrpctl.c │ ├── mrpd.c │ ├── mrpd.h │ ├── mrpw.c │ ├── mrpw.h │ ├── msrp.c │ ├── msrp.h │ ├── mvrp.c │ ├── mvrp.h │ ├── que.c │ ├── que.h │ ├── readme.rst │ └── tests │ │ └── simple │ │ ├── AllTests.cpp │ │ ├── CMakeLists.txt │ │ ├── applicant_fsm_tests.cpp │ │ ├── mmrp_tests.cpp │ │ ├── mrp_doubles.c │ │ ├── mrp_doubles.h │ │ ├── msrp_pdu_tests.cpp │ │ ├── msrp_pruning_tests.cpp │ │ ├── msrp_tests.cpp │ │ ├── msrp_tests.h │ │ ├── mvrp_pdu_tests.cpp │ │ ├── mvrp_tests.cpp │ │ ├── parse_tests.cpp │ │ ├── sample_msrp_packets.h │ │ └── sample_mvrp_packets.h └── shaper │ ├── LICENSE │ ├── Makefile │ ├── README.rst │ └── src │ ├── platform.h │ ├── shaper_daemon.c │ ├── shaper_helper_linux.h │ ├── shaper_log.h │ ├── shaper_log_linux.c │ ├── shaper_log_queue.c │ └── shaper_log_queue.h ├── documents ├── Linux_Plumbers2012.pdf ├── design │ └── AVnu_gPTP_Code.asciidoc └── examples │ └── AVB_Talker_Listener_Example_Setup.md ├── examples ├── LICENSE ├── alsa_timed_audio │ ├── Makefile │ ├── README.md │ ├── alsa.c │ ├── alsa.h │ ├── alsa_test.c │ ├── args.c │ ├── args.h │ ├── audio_input.h │ ├── audio_output.h │ ├── bool.h │ ├── capture.c │ ├── capture.h │ ├── documentation │ │ └── Doxyfile │ ├── init.h │ ├── linked_list.c │ ├── linked_list.h │ ├── mixer.c │ ├── mixer.h │ ├── monoraw_to_net_time.c │ ├── net_time_to_monoraw.c │ ├── play_file_at.c │ ├── record_file_at.c │ ├── sdk.h │ ├── stack.c │ ├── stack.h │ ├── stream.c │ ├── stream.h │ ├── thread_signal.c │ ├── thread_signal.h │ └── util.h ├── common │ ├── Makefile │ ├── listener_mrp_client.c │ ├── listener_mrp_client.h │ ├── talker_mrp_client.c │ └── talker_mrp_client.h ├── gstreamer-avb-plugins │ ├── .gitmodules │ ├── COPYING.LIB │ ├── COPYING.MIT │ ├── README │ └── gst-plugin │ │ ├── .gitignore │ │ ├── AUTHORS │ │ ├── COPYING │ │ ├── ChangeLog │ │ ├── INSTALL │ │ ├── Makefile.am │ │ ├── Makefile.in │ │ ├── NEWS │ │ ├── README │ │ ├── aclocal.m4 │ │ ├── autogen.sh │ │ ├── config.guess │ │ ├── config.h.in │ │ ├── config.sub │ │ ├── configure │ │ ├── configure.ac │ │ ├── depcomp │ │ ├── install-sh │ │ ├── ltmain.sh │ │ ├── missing │ │ └── src │ │ ├── Makefile.am │ │ ├── Makefile.in │ │ ├── gst_app_src.c │ │ ├── gst_avb_playbin.c │ │ ├── gst_avb_playbin.h │ │ ├── gstavbsink.c │ │ ├── gstavbsink.h │ │ ├── gstplugin.c │ │ └── gstplugin.h ├── jackd-listener │ ├── Makefile │ └── jack_listener.c ├── jackd-talker │ ├── Makefile │ ├── defines.h │ ├── jack.c │ ├── jack.h │ └── jackd_talker.c ├── live_stream │ ├── Makefile │ ├── README │ ├── listener.c │ └── talker.c ├── mrp_client │ ├── Makefile │ ├── mrpValidate.c │ ├── mrpdclient.c │ ├── mrpdclient.h │ ├── mrpdhelper.c │ ├── mrpdhelper.h │ ├── mrpl.c │ └── mrpq.c ├── osx │ └── avb_viewer │ │ ├── AVB Viewer.xcodeproj │ │ ├── project.pbxproj │ │ ├── project.xcworkspace │ │ │ ├── contents.xcworkspacedata │ │ │ └── xcuserdata │ │ │ │ └── jgildred.xcuserdatad │ │ │ │ └── UserInterfaceState.xcuserstate │ │ └── xcuserdata │ │ │ └── jgildred.xcuserdatad │ │ │ └── xcschemes │ │ │ ├── AVB Viewer.xcscheme │ │ │ └── xcschememanagement.plist │ │ ├── AVB Viewer │ │ ├── AVB Viewer-Info.plist │ │ ├── AVB Viewer-Prefix.pch │ │ ├── AVB Viewer.entitlements │ │ ├── AppDelegate.h │ │ ├── AppDelegate.m │ │ ├── AvbDevice.h │ │ ├── AvbDevice.m │ │ ├── Base.lproj │ │ │ └── MainMenu.xib │ │ ├── Brick-Icons.icns │ │ ├── Images.xcassets │ │ │ ├── AppIcon-1.appiconset │ │ │ │ ├── Brick-Icons128x128.png │ │ │ │ ├── Brick-Icons128x128@2x.png │ │ │ │ ├── Brick-Icons16x16.png │ │ │ │ ├── Brick-Icons16x16@2x.png │ │ │ │ ├── Brick-Icons256x256.png │ │ │ │ ├── Brick-Icons256x256@2x.png │ │ │ │ ├── Brick-Icons32x32.png │ │ │ │ ├── Brick-Icons32x32@2x.png │ │ │ │ ├── Brick-Icons512x512.png │ │ │ │ ├── Brick-Icons512x512@2x.png │ │ │ │ └── Contents.json │ │ │ ├── AppIcon-2.appiconset │ │ │ │ └── Contents.json │ │ │ ├── AppIcon.appiconset │ │ │ │ ├── Brick-Icons128x128.png │ │ │ │ ├── Brick-Icons128x128@2x.png │ │ │ │ ├── Brick-Icons16x16.png │ │ │ │ ├── Brick-Icons16x16@2x.png │ │ │ │ ├── Brick-Icons256x256.png │ │ │ │ ├── Brick-Icons256x256@2x.png │ │ │ │ ├── Brick-Icons32x32.png │ │ │ │ ├── Brick-Icons32x32@2x.png │ │ │ │ ├── Brick-Icons512x512.png │ │ │ │ ├── Brick-Icons512x512@2x.png │ │ │ │ └── Contents.json │ │ │ └── xmos.iconset │ │ │ │ ├── icon_128x128.png │ │ │ │ ├── icon_128x128@2x.png │ │ │ │ ├── icon_16x16.png │ │ │ │ ├── icon_16x16@2x.png │ │ │ │ ├── icon_256x256.png │ │ │ │ ├── icon_256x256@2x.png │ │ │ │ ├── icon_32x32.png │ │ │ │ ├── icon_32x32@2x.png │ │ │ │ ├── icon_512x512.png │ │ │ │ └── icon_512x512@2x.png │ │ ├── OutlineViewController.h │ │ ├── OutlineViewController.m │ │ ├── en.lproj │ │ │ ├── Credits.rtf │ │ │ └── InfoPlist.strings │ │ └── main.m │ │ ├── AVB ViewerTests │ │ ├── AVB ViewerTests-Info.plist │ │ ├── AVB_ViewerTests.m │ │ └── en.lproj │ │ │ └── InfoPlist.strings │ │ └── Brick-Icons.icns ├── simple_listener │ ├── Makefile │ ├── README │ └── simple_listener.c ├── simple_rx │ ├── Makefile │ ├── README │ └── simple_rx.c └── simple_talker │ ├── Makefile │ ├── README │ └── simple_talker.c ├── lib ├── avtp_pipeline │ ├── CMakeLists.txt │ ├── LICENSE │ ├── README.md │ ├── acmp │ │ ├── CMakeLists.txt │ │ ├── openavb_acmp.c │ │ ├── openavb_acmp.h │ │ ├── openavb_acmp_message.c │ │ ├── openavb_acmp_message.h │ │ ├── openavb_acmp_pub.h │ │ ├── openavb_acmp_sm_controller.c │ │ ├── openavb_acmp_sm_controller.h │ │ ├── openavb_acmp_sm_listener.c │ │ ├── openavb_acmp_sm_listener.h │ │ ├── openavb_acmp_sm_talker.c │ │ └── openavb_acmp_sm_talker.h │ ├── adp │ │ ├── CMakeLists.txt │ │ ├── openavb_adp.c │ │ ├── openavb_adp.h │ │ ├── openavb_adp_message.c │ │ ├── openavb_adp_message.h │ │ ├── openavb_adp_pub.h │ │ ├── openavb_adp_sm_advertise_entity.c │ │ ├── openavb_adp_sm_advertise_entity.h │ │ ├── openavb_adp_sm_advertise_interface.c │ │ ├── openavb_adp_sm_advertise_interface.h │ │ ├── openavb_adp_sm_discovery.c │ │ └── openavb_adp_sm_discovery.h │ ├── aecp │ │ ├── CMakeLists.txt │ │ ├── openavb_aecp.c │ │ ├── openavb_aecp.h │ │ ├── openavb_aecp_cmd_get_counters.c │ │ ├── openavb_aecp_cmd_get_counters.h │ │ ├── openavb_aecp_message.c │ │ ├── openavb_aecp_message.h │ │ ├── openavb_aecp_pub.h │ │ ├── openavb_aecp_sm_entity_model_entity.c │ │ └── openavb_aecp_sm_entity_model_entity.h │ ├── aem │ │ ├── CMakeLists.txt │ │ ├── openavb_aem.c │ │ ├── openavb_aem.h │ │ ├── openavb_aem_pub.h │ │ ├── openavb_aem_types_pub.h │ │ ├── openavb_descriptor_audio_cluster.c │ │ ├── openavb_descriptor_audio_cluster.h │ │ ├── openavb_descriptor_audio_cluster_pub.h │ │ ├── openavb_descriptor_audio_map.c │ │ ├── openavb_descriptor_audio_map.h │ │ ├── openavb_descriptor_audio_map_pub.h │ │ ├── openavb_descriptor_audio_unit.c │ │ ├── openavb_descriptor_audio_unit.h │ │ ├── openavb_descriptor_audio_unit_pub.h │ │ ├── openavb_descriptor_avb_interface.c │ │ ├── openavb_descriptor_avb_interface.h │ │ ├── openavb_descriptor_avb_interface_pub.h │ │ ├── openavb_descriptor_clock_domain.c │ │ ├── openavb_descriptor_clock_domain.h │ │ ├── openavb_descriptor_clock_domain_pub.h │ │ ├── openavb_descriptor_clock_source.c │ │ ├── openavb_descriptor_clock_source.h │ │ ├── openavb_descriptor_clock_source_pub.h │ │ ├── openavb_descriptor_configuration.c │ │ ├── openavb_descriptor_configuration.h │ │ ├── openavb_descriptor_configuration_pub.h │ │ ├── openavb_descriptor_control.c │ │ ├── openavb_descriptor_control.h │ │ ├── openavb_descriptor_control_pub.h │ │ ├── openavb_descriptor_entity.c │ │ ├── openavb_descriptor_entity.h │ │ ├── openavb_descriptor_entity_pub.h │ │ ├── openavb_descriptor_external_port_io.c │ │ ├── openavb_descriptor_external_port_io.h │ │ ├── openavb_descriptor_external_port_io_pub.h │ │ ├── openavb_descriptor_jack_io.c │ │ ├── openavb_descriptor_jack_io.h │ │ ├── openavb_descriptor_jack_io_pub.h │ │ ├── openavb_descriptor_locale.c │ │ ├── openavb_descriptor_locale.h │ │ ├── openavb_descriptor_locale_pub.h │ │ ├── openavb_descriptor_locale_strings_handler.c │ │ ├── openavb_descriptor_locale_strings_handler.h │ │ ├── openavb_descriptor_locale_strings_handler_pub.h │ │ ├── openavb_descriptor_stream_io.c │ │ ├── openavb_descriptor_stream_io.h │ │ ├── openavb_descriptor_stream_io_pub.h │ │ ├── openavb_descriptor_stream_port_io.c │ │ ├── openavb_descriptor_stream_port_io.h │ │ ├── openavb_descriptor_stream_port_io_pub.h │ │ ├── openavb_descriptor_strings.c │ │ ├── openavb_descriptor_strings.h │ │ └── openavb_descriptor_strings_pub.h │ ├── avdecc │ │ ├── CMakeLists.txt │ │ ├── avdecc.ini │ │ ├── openavb_avdecc.c │ │ ├── openavb_avdecc.h │ │ ├── openavb_avdecc_pipeline_interaction_pub.h │ │ ├── openavb_avdecc_pub.h │ │ ├── openavb_avdecc_read_ini_pub.h │ │ └── shutdown_openavb_avdecc.sh │ ├── avdecc_msg │ │ ├── CMakeLists.txt │ │ ├── openavb_avdecc_msg.c │ │ ├── openavb_avdecc_msg.h │ │ ├── openavb_avdecc_msg_client.c │ │ ├── openavb_avdecc_msg_client.h │ │ ├── openavb_avdecc_msg_server.c │ │ └── openavb_avdecc_msg_server.h │ ├── avtp │ │ ├── CMakeLists.txt │ │ ├── openavb_avtp.c │ │ ├── openavb_avtp.h │ │ ├── openavb_avtp_time.c │ │ └── openavb_avtp_time_pub.h │ ├── avtp_avdecc.mk │ ├── avtp_pipeline.mk │ ├── cmake │ │ ├── FindALSA.cmake │ │ ├── FindPCAP.cmake │ │ └── LibFindMacros.cmake │ ├── documents │ │ ├── CMakeLists.txt │ │ ├── Doxyfile.in │ │ ├── DoxygenLayout.xml │ │ ├── Release Notes.docx │ │ ├── images │ │ │ ├── AVTP_Data_Flow.png │ │ │ ├── Core_AVB.png │ │ │ ├── Listener_Stream_Data_Flow.png │ │ │ ├── Stream_Initialize.png │ │ │ ├── Talker_Stream_Data_Flow.png │ │ │ ├── fig1.png │ │ │ ├── fig2.png │ │ │ └── harman_logo.png │ │ ├── index.md │ │ ├── sdk_avtp_interface_module_dev.md │ │ ├── sdk_avtp_stream_cfg.md │ │ ├── sdk_eavb_integration.md │ │ ├── sdk_notes.md │ │ ├── sdk_notes_media_queue_usage.md │ │ └── sdk_overview.md │ ├── endpoint │ │ ├── CMakeLists.txt │ │ ├── NOTES.TXT │ │ ├── endpoint.ini │ │ ├── gstreamer.txt │ │ ├── openavb_endpoint.c │ │ ├── openavb_endpoint.h │ │ ├── openavb_endpoint_client.c │ │ ├── openavb_endpoint_server.c │ │ └── shutdown_openavb_endpoint.sh │ ├── include │ │ ├── avb_sched.h │ │ ├── openavb_audio_pub.h │ │ ├── openavb_intf_pub.h │ │ ├── openavb_log.h │ │ ├── openavb_log_pub.h │ │ ├── openavb_map_pub.h │ │ ├── openavb_platform.h │ │ ├── openavb_platform_pub.h │ │ ├── openavb_pub.h │ │ ├── openavb_trace.h │ │ ├── openavb_trace_pub.h │ │ ├── openavb_types.h │ │ ├── openavb_types_base.h │ │ ├── openavb_types_base_pub.h │ │ └── openavb_types_pub.h │ ├── inih │ │ ├── CMakeLists.txt │ │ ├── LICENSE.txt │ │ ├── README.TXT │ │ ├── ini.c │ │ ├── ini.h │ │ └── inih_r23.zip │ ├── intf_ctrl │ │ ├── CMakeLists.txt │ │ ├── ctrl_intf.md │ │ ├── ctrl_listener.ini │ │ ├── ctrl_mux_listener.ini │ │ ├── ctrl_mux_talker.ini │ │ ├── ctrl_talker.ini │ │ ├── openavb_intf_ctrl.c │ │ └── openavb_intf_ctrl_pub.h │ ├── intf_echo │ │ ├── CMakeLists.txt │ │ ├── echo_host_intf.md │ │ ├── echo_listener.ini │ │ ├── echo_listener_auto.ini │ │ ├── echo_talker.ini │ │ ├── echo_talker_auto.ini │ │ └── openavb_intf_echo.c │ ├── intf_logger │ │ ├── CMakeLists.txt │ │ ├── openavb_intf_logger.c │ │ └── openavb_intf_logger.md │ ├── intf_null │ │ ├── CMakeLists.txt │ │ ├── null_host_intf.md │ │ ├── null_listener.ini │ │ ├── null_talker.ini │ │ └── openavb_intf_null.c │ ├── intf_tonegen │ │ ├── CMakeLists.txt │ │ ├── openavb_intf_tonegen.c │ │ ├── openavb_intf_tonegen.md │ │ ├── tonegen_talker.ini │ │ └── tonegen_talker_lowlatency.ini │ ├── intf_viewer │ │ ├── CMakeLists.txt │ │ ├── latency_listener.ini │ │ ├── latency_talker.ini │ │ ├── openavb_intf_viewer.c │ │ ├── viewer_intf.md │ │ └── viewer_listener.ini │ ├── maap │ │ └── openavb_maap.h │ ├── map_aaf_audio │ │ ├── CMakeLists.txt │ │ ├── README.TXT │ │ ├── aaf_audio_map.md │ │ ├── openavb_map_aaf_audio.c │ │ └── openavb_map_aaf_audio_pub.h │ ├── map_ctrl │ │ ├── CMakeLists.txt │ │ ├── ctrl_map.md │ │ ├── openavb_map_ctrl.c │ │ └── openavb_map_ctrl_pub.h │ ├── map_h264 │ │ ├── CMakeLists.txt │ │ ├── openavb_map_h264.c │ │ └── openavb_map_h264_pub.h │ ├── map_mjpeg │ │ ├── CMakeLists.txt │ │ ├── mjpeg_map.md │ │ ├── openavb_map_mjpeg.c │ │ └── openavb_map_mjpeg_pub.h │ ├── map_mpeg2ts │ │ ├── CMakeLists.txt │ │ ├── demo_listener.ini │ │ ├── demo_talker.ini │ │ ├── mpeg2ts_map.md │ │ ├── openavb_map_mpeg2ts.c │ │ ├── openavb_map_mpeg2ts_pub.h │ │ └── ts_packet_size.c │ ├── map_null │ │ ├── CMakeLists.txt │ │ ├── null_map.md │ │ ├── openavb_map_null.c │ │ └── openavb_map_null_pub.h │ ├── map_pipe │ │ ├── CMakeLists.txt │ │ ├── openavb_map_pipe.c │ │ ├── openavb_map_pipe_pub.h │ │ └── pipe_map.md │ ├── map_uncmp_audio │ │ ├── CMakeLists.txt │ │ ├── openavb_map_uncmp_audio.c │ │ ├── openavb_map_uncmp_audio_pub.h │ │ └── uncmp_audio_map.md │ ├── mcr │ │ ├── CMakeLists.txt │ │ └── openavb_mcr_hal_pub.h │ ├── mcs │ │ ├── CMakeLists.txt │ │ ├── openavb_mcs.c │ │ └── openavb_mcs.h │ ├── mediaq │ │ ├── CMakeLists.txt │ │ ├── openavb_mediaq.c │ │ ├── openavb_mediaq.h │ │ └── openavb_mediaq_pub.h │ ├── openavb_common │ │ ├── CMakeLists.txt │ │ ├── README.TXT │ │ ├── mrp_client.c │ │ └── mrp_client.h │ ├── platform │ │ ├── Linux │ │ │ ├── CMakeLists.txt │ │ │ ├── arm_imx6sx_linux.cmake │ │ │ ├── avb_avdecc │ │ │ │ ├── CMakeLists.txt │ │ │ │ └── openavb_avdecc.c │ │ │ ├── avb_host │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── openavb_harness.c │ │ │ │ └── openavb_host.c │ │ │ ├── avdecc │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── openavb_avdecc_cfg.c │ │ │ │ ├── openavb_avdecc_cfg.h │ │ │ │ ├── openavb_avdecc_osal.c │ │ │ │ ├── openavb_avdecc_osal.h │ │ │ │ ├── openavb_avdecc_pipeline_interaction.c │ │ │ │ ├── openavb_avdecc_read_ini.c │ │ │ │ ├── openavb_avdecc_save_state.c │ │ │ │ └── openavb_avdecc_save_state.h │ │ │ ├── avdecc_msg │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── openavb_avdecc_msg_client_osal.c │ │ │ │ ├── openavb_avdecc_msg_osal.h │ │ │ │ └── openavb_avdecc_msg_server_osal.c │ │ │ ├── avtp │ │ │ │ └── openavb_avtp_time_osal.c │ │ │ ├── endpoint │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── openavb_endpoint_cfg.c │ │ │ │ ├── openavb_endpoint_cfg.h │ │ │ │ ├── openavb_endpoint_client_osal.c │ │ │ │ ├── openavb_endpoint_osal.c │ │ │ │ ├── openavb_endpoint_osal.h │ │ │ │ ├── openavb_endpoint_osal_maap.c │ │ │ │ ├── openavb_endpoint_osal_ptp.c │ │ │ │ ├── openavb_endpoint_osal_shaper.c │ │ │ │ ├── openavb_endpoint_osal_srp.c │ │ │ │ └── openavb_endpoint_server_osal.c │ │ │ ├── generic.cmake │ │ │ ├── gst_al │ │ │ │ ├── gst_al.h │ │ │ │ ├── gst_al_01.c │ │ │ │ └── gst_al_10.c │ │ │ ├── intf_alsa │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── aaf_file_talker.ini │ │ │ │ ├── aaf_listener.ini │ │ │ │ ├── aaf_listener_auto.ini │ │ │ │ ├── aaf_talker.ini │ │ │ │ ├── alsa_intf.md │ │ │ │ ├── alsa_listener.ini │ │ │ │ ├── alsa_talker.ini │ │ │ │ ├── example_listener.ini │ │ │ │ ├── example_talker.ini │ │ │ │ └── openavb_intf_alsa.c │ │ │ ├── intf_h264_gst │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── h264_gst_intf.md │ │ │ │ ├── h264_gst_listener.ini │ │ │ │ ├── h264_gst_talker.ini │ │ │ │ └── openavb_intf_h264_gst.c │ │ │ ├── intf_mjpeg_gst │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── mjpeg_camera_intf.md │ │ │ │ ├── mjpeg_gst_listener.ini │ │ │ │ ├── mjpeg_gst_talker.ini │ │ │ │ └── openavb_intf_mjpeg_gst.c │ │ │ ├── intf_mpeg2ts_file │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── mpeg2ts_file_intf.md │ │ │ │ ├── mpeg2ts_file_listener.ini │ │ │ │ ├── mpeg2ts_file_talker.ini │ │ │ │ └── openavb_intf_mpeg2ts_file.c │ │ │ ├── intf_mpeg2ts_gst │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── mpeg2ts_gst_intf.md │ │ │ │ ├── mpeg2ts_gst_listener.ini │ │ │ │ ├── mpeg2ts_gst_talker.ini │ │ │ │ └── openavb_intf_mpeg2ts_gst.c │ │ │ ├── intf_wav_file │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── openavb_intf_wav_file.c │ │ │ │ ├── wav_file_intf.md │ │ │ │ ├── wav_file_listener.ini │ │ │ │ └── wav_file_talker.ini │ │ │ ├── openavb_grandmaster_osal.c │ │ │ ├── openavb_grandmaster_osal.h │ │ │ ├── openavb_grandmaster_osal_pub.h │ │ │ ├── openavb_os_services_osal.h │ │ │ ├── openavb_os_services_osal_pub.h │ │ │ ├── openavb_osal.c │ │ │ ├── openavb_osal.h │ │ │ ├── openavb_osal_avdecc.c │ │ │ ├── openavb_osal_endpoint.c │ │ │ ├── openavb_osal_pub.h │ │ │ ├── openavb_poll_osal.h │ │ │ ├── openavb_tasks.h │ │ │ ├── openavb_time_osal.c │ │ │ ├── openavb_time_osal.h │ │ │ ├── openavb_time_osal_pub.h │ │ │ ├── rawsock │ │ │ │ ├── avtp_rx.c │ │ │ │ ├── igb_rawsock.c │ │ │ │ ├── igb_rawsock.h │ │ │ │ ├── openavb_rawsock.c │ │ │ │ ├── pcap_rawsock.c │ │ │ │ ├── pcap_rawsock.h │ │ │ │ ├── rawsock_rx.c │ │ │ │ ├── rawsock_tx.c │ │ │ │ ├── ring_rawsock.c │ │ │ │ ├── ring_rawsock.h │ │ │ │ ├── sendmmsg_rawsock.c │ │ │ │ ├── sendmmsg_rawsock.h │ │ │ │ ├── simple_rawsock.c │ │ │ │ └── simple_rawsock.h │ │ │ ├── tl │ │ │ │ └── openavb_tl_osal.c │ │ │ └── x86_i210_linux.cmake │ │ ├── generic │ │ │ ├── mcr │ │ │ │ ├── openavb_mcr_hal.c │ │ │ │ └── openavb_mcr_hal.h │ │ │ └── openavb_hal.h │ │ ├── platHAL │ │ │ └── readme.txt │ │ ├── platOSAL │ │ │ └── readme.txt │ │ ├── platTCAL │ │ │ └── GNU │ │ │ │ ├── openavb_mem_tcal.c │ │ │ │ ├── openavb_mem_tcal.h │ │ │ │ ├── openavb_mem_tcal_pub.h │ │ │ │ ├── openavb_tcal_pub.h │ │ │ │ ├── openavb_time_tcal_pub.h │ │ │ │ ├── openavb_types_base_tcal_pub.h │ │ │ │ ├── openavb_warnings_tcal.h │ │ │ │ └── rawsock │ │ │ │ └── openavb_rawsock_tcal.h │ │ └── x86_i210 │ │ │ ├── mcr │ │ │ ├── openavb_mcr_hal.c │ │ │ └── openavb_mcr_hal.h │ │ │ ├── openavb_hal.h │ │ │ ├── openavb_igb.c │ │ │ └── openavb_igb.h │ ├── qmgr │ │ ├── CMakeLists.txt │ │ ├── openavb_qmgr.c │ │ └── openavb_qmgr.h │ ├── rawsock │ │ ├── CMakeLists.txt │ │ ├── openavb_rawsock.h │ │ ├── rawsock_impl.c │ │ └── rawsock_impl.h │ ├── sdk │ │ └── CMakeLists.txt │ ├── shaper │ │ └── openavb_shaper.h │ ├── srp │ │ ├── openavb_srp.h │ │ └── openavb_srp_api.h │ ├── tl │ │ ├── CMakeLists.txt │ │ ├── NOTES.TXT │ │ ├── openavb_listener.c │ │ ├── openavb_listener.h │ │ ├── openavb_listener_endpoint.c │ │ ├── openavb_listener_no_endpoint.c │ │ ├── openavb_talker.c │ │ ├── openavb_talker.h │ │ ├── openavb_talker_endpoint.c │ │ ├── openavb_talker_no_endpoint.c │ │ ├── openavb_tl.c │ │ ├── openavb_tl.h │ │ ├── openavb_tl_endpoint.c │ │ ├── openavb_tl_no_endpoint.c │ │ └── openavb_tl_pub.h │ └── util │ │ ├── CMakeLists.txt │ │ ├── openavb_array.c │ │ ├── openavb_array.h │ │ ├── openavb_debug.c │ │ ├── openavb_debug.h │ │ ├── openavb_list.c │ │ ├── openavb_list.h │ │ ├── openavb_log.c │ │ ├── openavb_plugin.c │ │ ├── openavb_plugin.h │ │ ├── openavb_printbuf.c │ │ ├── openavb_printbuf.h │ │ ├── openavb_queue.c │ │ ├── openavb_queue.h │ │ ├── openavb_result_codes.c │ │ ├── openavb_result_codes.h │ │ ├── openavb_time.c │ │ ├── openavb_time.h │ │ ├── openavb_timestamp.c │ │ └── openavb_timestamp.h └── common │ ├── Makefile │ ├── avb.h │ ├── avb_avtp.c │ ├── avb_avtp.h │ ├── avb_gptp.c │ ├── avb_gptp.h │ ├── avb_igb.c │ ├── avb_igb.h │ └── avb_srp.h ├── run_avtp_pipeline.sh ├── run_daemons.sh ├── run_echo_listener.sh ├── run_echo_talker.sh ├── run_gptp.sh ├── run_igb.sh ├── run_maap.sh ├── run_shaper.sh ├── run_simple_talker.sh ├── run_srp.sh ├── stop_avtp_pipeline.sh ├── stop_daemons.sh ├── test ├── README.rst ├── astime_fitline.py └── avtp_astimes.py └── travis.sh /.gitignore: -------------------------------------------------------------------------------- 1 | *.o 2 | *.swp 3 | *build/ 4 | *build_avdecc/ 5 | *CMakeFiles/ 6 | CMakeCache.txt 7 | 8 | daemons/maap/linux/maap_daemon 9 | examples/jackd-listener/jack_listener 10 | examples/jackd-talker/jackd_talker 11 | examples/live_stream/listener 12 | examples/live_stream/talker 13 | examples/mrp_client/mrpValidate 14 | examples/mrp_client/mrpl 15 | examples/mrp_client/mrpq 16 | examples/simple_listener/simple_listener 17 | examples/simple_talker/simple_talker 18 | kmod/igb/.*.cmd 19 | kmod/igb/.tmp_versions/ 20 | kmod/igb/Module.symvers 21 | kmod/igb/*.ko 22 | kmod/igb/*.mod.* 23 | kmod/igb/modules.order 24 | lib/igb/*.a 25 | 26 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "thirdparty/cpputest"] 2 | path = thirdparty/cpputest 3 | url = ../../AVnu/cpputest.git 4 | [submodule "avdecc-lib"] 5 | path = avdecc-lib 6 | url = ../../AVnu/avdecc-lib 7 | [submodule "lib/igb_avb"] 8 | path = lib/igb_avb 9 | url = https://github.com/AVnu/igb_avb.git 10 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | 2 | dist: trusty 3 | sudo: required 4 | 5 | language: c 6 | # git submodules workaround 7 | git: 8 | submodules: false 9 | # use sed to replace SSH URL with the public URL, then init submodules 10 | before_install: 11 | - sed -i 's/git@github.com:/https:\/\/github.com\//' .gitmodules 12 | - git submodule update --init --recursive 13 | - sudo add-apt-repository ppa:ubuntu-toolchain-r/test -y 14 | - sudo apt-get update -qq 15 | - sudo apt-get install doxygen graphviz gcc-4.8 g++-4.8 16 | - sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 20 17 | - sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.8 20 18 | - sudo update-alternatives --install /usr/bin/cc cc /usr/bin/gcc 30 19 | - sudo update-alternatives --set cc /usr/bin/gcc 20 | - sudo update-alternatives --install /usr/bin/c++ c++ /usr/bin/g++ 30 21 | - sudo update-alternatives --set c++ /usr/bin/g++ 22 | compiler: 23 | - gcc 24 | env: 25 | - BUILD_KERNEL=4.4.0-75-generic 26 | install: 27 | - sudo apt-get update -qq 28 | - sudo apt-get install -y libpcap-dev libpci-dev libsndfile1-dev libjack-dev linux-headers-4.4.0-75-generic 29 | - sudo apt-get install -y libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev libasound2-dev 30 | - sudo cp /usr/src/linux-headers-4.4.0-75/include/uapi/linux/ethtool.h /usr/include/linux 31 | - sudo cp /usr/src/linux-headers-4.4.0-75/include/uapi/linux/ptp_clock.h /usr/include/linux 32 | - CMAKE_URL="https://cmake.org/files/v3.9/cmake-3.9.4-Linux-x86_64.tar.gz" 33 | - mkdir -p ${TRAVIS_BUILD_DIR}/deps/cmake 34 | - travis_retry wget --no-check-certificate --quiet -O - ${CMAKE_URL} | tar --strip-components=1 -xz -C ${TRAVIS_BUILD_DIR}/deps/cmake 35 | - export PATH=${TRAVIS_BUILD_DIR}/deps/cmake/bin:${PATH} 36 | 37 | 38 | script: ./travis.sh 39 | 40 | -------------------------------------------------------------------------------- /CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required (VERSION 2.8) 2 | project (open-avb) 3 | enable_testing() 4 | 5 | include(CheckCXXCompilerFlag) 6 | CHECK_CXX_COMPILER_FLAG("-std=c++11" COMPILER_SUPPORTS_CXX11) 7 | CHECK_CXX_COMPILER_FLAG("-std=c++0x" COMPILER_SUPPORTS_CXX0X) 8 | if(COMPILER_SUPPORTS_CXX11) 9 | set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") 10 | elseif(COMPILER_SUPPORTS_CXX0X) 11 | set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x") 12 | else() 13 | message(STATUS "The compiler ${CMAKE_CXX_COMPILER} has no C++11 support. Please use a different C++ compiler.") 14 | endif() 15 | 16 | add_subdirectory("thirdparty/cpputest") 17 | add_subdirectory("daemons/common/tests") 18 | add_subdirectory("daemons/mrpd") 19 | add_subdirectory("daemons/maap") 20 | 21 | message(" 22 | ------------------------------------------------------- 23 | OpenAvnu Build information 24 | 25 | Current compiler options: 26 | CC: ${CMAKE_C_COMPILER} 27 | CXX: ${CMAKE_CXX_COMPILER} 28 | OpenAvnu CFLAGS: ${CMAKE_C_FLAGS} 29 | OpenAvnu CXXFLAGS: ${CMAKE_CXX_FLAGS} 30 | OpenAvnu LDFLAGS: ${CMAKE_LD_FLAGS} 31 | 32 | Features configured in OpenAvnu root CMakeFile.txt: 33 | Memory Leak Detection: ${MEMORY_LEAK_DETECTION} 34 | Compiling Extensions: ${EXTENSIONS} 35 | Support Long Long: ${LONGLONG} 36 | Use OpenAvnu flags: ${CMAKE_FLAGS} 37 | 38 | Using Standard C library: ${STD_C} 39 | Using Standard C++ library: ${STD_CPP} 40 | Using C++11 library: ${C++11} 41 | 42 | ------------------------------------------------------- 43 | ") 44 | -------------------------------------------------------------------------------- /appveyor.yml: -------------------------------------------------------------------------------- 1 | version: '1.0.{build}' 2 | 3 | clone_folder: c:\oavb 4 | clone_depth: 20 5 | 6 | environment: 7 | # Config for mrp Windows build 8 | WPCAP_DIR: c:\oavb\WpdPack 9 | 10 | install: 11 | - git submodule update --init --recursive 12 | # download WinPcap developer module and unzip it 13 | - ps: Start-FileDownload 'https://www.winpcap.org/install/bin/WpdPack_4_1_2.zip' 14 | - ps: 7z x WpdPack_4_1_2.zip 15 | 16 | before_build: 17 | # cmake 18 | - choco upgrade cmake 19 | - set path=C:\Program Files\CMake\bin;%path% 20 | 21 | build_script: 22 | - cd c:\oavb 23 | - cmake CMakeLists.txt -G "Visual Studio 12 2013" 24 | - cmake --build . --config Release 25 | -------------------------------------------------------------------------------- /avnu_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PADL/OpenAvnu/8fa80d1de59fbef14c8d0e80d8d9a62679a6182a/avnu_logo.png -------------------------------------------------------------------------------- /daemons/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2012, Intel Corporation 2 | All rights reserved. 3 | 4 | Redistribution and use in source and binary forms, with or without 5 | modification, are permitted provided that the following conditions are met: 6 | 7 | 1. Redistributions of source code must retain the above copyright notice, 8 | this list of conditions and the following disclaimer. 9 | 10 | 2. Redistributions in binary form must reproduce the above copyright 11 | notice, this list of conditions and the following disclaimer in the 12 | documentation and/or other materials provided with the distribution. 13 | 14 | 3. Neither the name of the Intel Corporation nor the names of its 15 | contributors may be used to endorse or promote products derived from 16 | this software without specific prior written permission. 17 | 18 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 19 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 20 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 21 | ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 22 | LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 23 | CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 24 | SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 25 | INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 26 | CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 27 | ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 28 | POSSIBILITY OF SUCH DAMAGE. 29 | 30 | -------------------------------------------------------------------------------- /daemons/common/tests/AllTests.cpp: -------------------------------------------------------------------------------- 1 | /**************************************************************************** 2 | Copyright (c) 2014, J.D. Koftinoff Software, Ltd. 3 | All rights reserved. 4 | 5 | Redistribution and use in source and binary forms, with or without 6 | modification, are permitted provided that the following conditions are met: 7 | 8 | 1. Redistributions of source code must retain the above copyright notice, 9 | this list of conditions and the following disclaimer. 10 | 11 | 2. Redistributions in binary form must reproduce the above copyright 12 | notice, this list of conditions and the following disclaimer in the 13 | documentation and/or other materials provided with the distribution. 14 | 15 | 3. Neither the name of J.D. Koftinoff Software, Ltd. nor the names of its 16 | contributors may be used to endorse or promote products derived from 17 | this software without specific prior written permission. 18 | 19 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 20 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 21 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 22 | ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 23 | LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 24 | CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 25 | SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 26 | INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 27 | CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 28 | ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 29 | POSSIBILITY OF SUCH DAMAGE. 30 | 31 | ******************************************************************************/ 32 | 33 | #include "CppUTest/TestHarness.h" 34 | #include "CppUTest/CommandLineTestRunner.h" 35 | 36 | int main(int ac, char **av) 37 | { 38 | return CommandLineTestRunner::RunAllTests(ac, av); 39 | } 40 | -------------------------------------------------------------------------------- /daemons/common/tests/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required (VERSION 2.8) 2 | project (mrpd_simple_test) 3 | enable_testing() 4 | 5 | set (CPPUTEST_DIR "${CMAKE_CURRENT_LIST_DIR}/../../../thirdparty/cpputest" ) 6 | set (SRC_DIR ".." ) 7 | add_definitions(-DMRP_CPPUTEST) 8 | 9 | include_directories( . "${CMAKE_CURRENT_LIST_DIR}/../" ${CPPUTEST_DIR}/include ) 10 | file(GLOB CPPUTEST_SRC *.cpp) 11 | file(GLOB EUI64SET_SRC ${SRC_DIR}/eui64set.c) 12 | 13 | if(APPLE) 14 | include_directories( include ${CPPUTEST_DIR}/include/Platforms/Gcc ) 15 | link_directories(${CPPUTEST_DIR}/src/CppUTest ${CPPUTEST_DIR}/src/CppUTestExt ) 16 | add_executable (alltests ${EUI64SET_SRC} ${CPPUTEST_SRC} ) 17 | target_link_libraries(alltests CppUTest CppUTestExt) 18 | elseif(UNIX) 19 | include_directories( include ${CPPUTEST_DIR}/include/Platforms/Gcc ) 20 | link_directories(${CPPUTEST_DIR}/src/CppUTest ${CPPUTEST_DIR}/src/CppUTestExt ) 21 | add_executable (alltests ${EUI64SET_SRC} ${CPPUTEST_SRC} ) 22 | target_link_libraries(alltests CppUTest CppUTestExt) 23 | elseif(WIN32) 24 | if( CMAKE_SIZEOF_VOID_P EQUAL 8 ) 25 | link_directories($ENV{WPCAP_DIR}/Lib/x64 ${CPPUTEST_DIR}/src/CppUTest ${CPPUTEST_DIR}/src/CppUTestExt) 26 | elseif( CMAKE_SIZEOF_VOID_P EQUAL 4 ) 27 | link_directories($ENV{WPCAP_DIR}/Lib ${CPPUTEST_DIR}/src/CppUTest ${CPPUTEST_DIR}/src/CppUTestExt) 28 | endif() 29 | 30 | add_definitions(-D_CRT_SECURE_NO_WARNINGS) 31 | add_executable (alltests ${EUI64SET_SRC} ${CPPUTEST_SRC} ) 32 | target_link_libraries(alltests CppUTest CppUTestExt) 33 | endif() 34 | 35 | add_test( alltests alltests ) 36 | -------------------------------------------------------------------------------- /daemons/maap/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required (VERSION 2.8) 2 | project (maap) 3 | 4 | set (ComDir "./common") 5 | set (ComSource 6 | "${ComDir}/intervals.c" 7 | "${ComDir}/maap.c" 8 | "${ComDir}/maap_net.c" 9 | "${ComDir}/maap_packet.c" 10 | "${ComDir}/maap_parse.c" 11 | "${ComDir}/maap_log_queue.c" 12 | ) 13 | include_directories( ${ComDir} ) 14 | 15 | if(UNIX) 16 | set (OsDir "./linux/src") 17 | set (OsSource 18 | "${OsDir}/maap_daemon.c" 19 | "${OsDir}/maap_log_linux.c" 20 | "${OsDir}/maap_timer_linux.c" 21 | ) 22 | include_directories( ${OsDir} ) 23 | add_executable(maap_daemon ${ComSource} ${OsSource}) 24 | target_link_libraries(maap_daemon rt pthread) 25 | elseif(WIN32) 26 | set (OsDir "./windows/src") 27 | set (OsSource 28 | "${OsDir}/maap_main.c" 29 | "${OsDir}/maap_log_windows.c" 30 | "${OsDir}/maap_timer_windows.c" 31 | ) 32 | add_definitions(-D_CRT_SECURE_NO_WARNINGS -DHAVE_REMOTE) 33 | include_directories( ${OsDir} ) 34 | add_executable(maap_daemon ${ComSource} ${OsSource}) 35 | target_link_libraries(maap_daemon ws2_32) 36 | endif() 37 | 38 | add_subdirectory("test") 39 | add_subdirectory("tests") 40 | -------------------------------------------------------------------------------- /daemons/maap/doc/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 2.8) 2 | 3 | # add a target to generate API documentation with Doxygen 4 | find_package(Doxygen) 5 | option(BUILD_DOCUMENTATION "Create and install the HTML based API documentation (requires Doxygen)" ${DOXYGEN_FOUND}) 6 | 7 | if(BUILD_DOCUMENTATION) 8 | if(NOT DOXYGEN_FOUND) 9 | message(FATAL_ERROR "Doxygen is needed to build the documentation.") 10 | endif() 11 | 12 | set(doxyfile_in ${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.in) 13 | set(doxyfile ${CMAKE_CURRENT_SOURCE_DIR}/build/Doxyfile) 14 | 15 | configure_file(${doxyfile_in} ${doxyfile} @ONLY) 16 | 17 | add_custom_target(doc 18 | COMMAND ${DOXYGEN_EXECUTABLE} ${doxyfile} 19 | WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} 20 | COMMENT "Generating API documentation with Doxygen" 21 | VERBATIM) 22 | 23 | #install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/html DESTINATION share/doc) 24 | endif() 25 | -------------------------------------------------------------------------------- /daemons/maap/doc/mainpage.dox: -------------------------------------------------------------------------------- 1 | /** 2 | * \mainpage MAAP Documentation 3 | * 4 | * Introduction 5 | * ------------ 6 | * This is a MAAP implementation. Details will be provided soon. 7 | * 8 | * Linux Specific 9 | * ------------- 10 | * 11 | * Requirements for documentation on a ubuntu based system: 12 | * - cmake: sudo apt-get install cmake 13 | * - doxygen: sudo apt-get install doxygen 14 | * 15 | * To build, execute the linux/build makefile. 16 | * 17 | * To execute, run ./maap_daemon 18 | * 19 | * Windows Version 20 | * --------------- 21 | * 22 | * Windows is not supported. 23 | */ 24 | 25 | -------------------------------------------------------------------------------- /daemons/maap/linux/build/Makefile: -------------------------------------------------------------------------------- 1 | COMMON_DIR=../../common 2 | LINUX_DIR=../src 3 | TEST_DIR=../../test 4 | 5 | OPT?=-O2 6 | CFLAGS=$(OPT) -Wall 7 | CPPFLAGS=-I$(COMMON_DIR) 8 | CC?=gcc 9 | 10 | VPATH=$(LINUX_DIR) $(COMMON_DIR) $(TEST_DIR) 11 | 12 | BINARIES=maap_daemon maap_test test_intervals 13 | 14 | .PHONY: all clean 15 | 16 | all: $(BINARIES) 17 | 18 | # Header dependencies 19 | 20 | intervals.o: intervals.h 21 | 22 | maap.o: maap.h intervals.h maap_iface.h maap_timer.h maap_net.h platform.h maap_packet.h maap_log.h 23 | maap_net.o: maap_net.h maap_log.h 24 | maap_packet.o: maap.h intervals.h maap_iface.h maap_timer.h maap_net.h platform.h maap_packet.h maap_log.h 25 | maap_parse.o: maap.h intervals.h maap_iface.h maap_timer.h maap_net.h platform.h maap_parse.h maap_log.h 26 | maap_log_queue.o: maap_log_queue.h maap_log.h 27 | 28 | maap_daemon.o: maap.h intervals.h maap_iface.h maap_timer.h maap_net.h platform.h maap_parse.h maap_packet.h 29 | maap_log_linux.o: maap_log_queue.h maap_helper_linux.h platform.h 30 | maap_timer_linux.o: maap_timer.h platform.h 31 | 32 | test_intervals.o: intervals.h 33 | 34 | # Binary targets 35 | 36 | maap_daemon: LDLIBS = -lrt -lpthread 37 | maap_daemon: maap_log_linux.o maap_timer_linux.o intervals.o maap.o maap_net.o maap_packet.o maap_parse.o maap_log_queue.o 38 | 39 | maap_test: LDLIBS = -lpcap 40 | 41 | test_intervals: intervals.o 42 | 43 | # Utility targets 44 | 45 | clean: 46 | rm -f *.o 47 | rm -f $(BINARIES) 48 | -------------------------------------------------------------------------------- /daemons/maap/test/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required (VERSION 2.8) 2 | project (maap_tests) 3 | enable_testing() 4 | 5 | set (ComDir "../common" ) 6 | 7 | include_directories( ${ComDir} ) 8 | 9 | if(UNIX) 10 | add_executable( test_intervals "test_intervals.c" "${ComDir}/intervals.c" ) 11 | elseif(WIN32) 12 | add_executable( test_intervals "test_intervals.c" "${ComDir}/intervals.c" ) 13 | endif() 14 | 15 | add_test(IntervalTreeWorks test_intervals ) 16 | -------------------------------------------------------------------------------- /daemons/maap/test/maap_timer_dummy.h: -------------------------------------------------------------------------------- 1 | /************************************************************************************* 2 | Copyright (c) 2016-2017, Harman International Industries, Incorporated 3 | All rights reserved. 4 | 5 | Redistribution and use in source and binary forms, with or without 6 | modification, are permitted provided that the following conditions are met: 7 | 8 | 1. Redistributions of source code must retain the above copyright notice, this 9 | list of conditions and the following disclaimer. 10 | 2. Redistributions in binary form must reproduce the above copyright notice, 11 | this list of conditions and the following disclaimer in the documentation 12 | and/or other materials provided with the distribution. 13 | 14 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS LISTED "AS IS" AND 15 | ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 16 | WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 17 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS LISTED BE LIABLE FOR 18 | ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 19 | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 20 | LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 21 | ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 22 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 23 | SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 24 | *************************************************************************************/ 25 | 26 | /** 27 | * @file 28 | * 29 | * @brief Support for timer operations unit tests 30 | * 31 | * These functions support additional functions used by unit tests for timing operations. 32 | */ 33 | 34 | #ifndef MAAP_TIMER_DUMMY_H 35 | #define MAAP_TIMER_DUMMY_H 36 | 37 | #include 38 | 39 | 40 | /** 41 | * Advance the internal time by the number of nanoseconds. 42 | * 43 | * @param nsec Number of nanoseconds to advance the internal time 44 | */ 45 | void Time_increaseNanos(uint64_t nsec); 46 | 47 | #endif 48 | -------------------------------------------------------------------------------- /daemons/maap/tests/AllTests.cpp: -------------------------------------------------------------------------------- 1 | /**************************************************************************** 2 | Copyright (c) 2014, J.D. Koftinoff Software, Ltd. 3 | All rights reserved. 4 | 5 | Redistribution and use in source and binary forms, with or without 6 | modification, are permitted provided that the following conditions are met: 7 | 8 | 1. Redistributions of source code must retain the above copyright notice, 9 | this list of conditions and the following disclaimer. 10 | 11 | 2. Redistributions in binary form must reproduce the above copyright 12 | notice, this list of conditions and the following disclaimer in the 13 | documentation and/or other materials provided with the distribution. 14 | 15 | 3. Neither the name of J.D. Koftinoff Software, Ltd. nor the names of its 16 | contributors may be used to endorse or promote products derived from 17 | this software without specific prior written permission. 18 | 19 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 20 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 21 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 22 | ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 23 | LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 24 | CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 25 | SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 26 | INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 27 | CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 28 | ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 29 | POSSIBILITY OF SUCH DAMAGE. 30 | 31 | ******************************************************************************/ 32 | 33 | #include "CppUTest/TestHarness.h" 34 | #include "CppUTest/CommandLineTestRunner.h" 35 | 36 | int main(int ac, char **av) 37 | { 38 | return CommandLineTestRunner::RunAllTests(ac, av); 39 | } 40 | -------------------------------------------------------------------------------- /daemons/maap/tests/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required (VERSION 2.8) 2 | project (maap_test) 3 | enable_testing() 4 | 5 | set (CPPUTEST_DIR "${CMAKE_CURRENT_LIST_DIR}/../../../thirdparty/cpputest" ) 6 | set (SRC_DIR "../common" ) 7 | set (TEST_DIR "../test" ) 8 | add_definitions(-DMRP_CPPUTEST) 9 | 10 | include_directories( . "${CMAKE_CURRENT_LIST_DIR}/../common/" ${CPPUTEST_DIR}/include ) 11 | file(GLOB CPPUTEST_SRC *.cpp) 12 | file(GLOB MAAP_SRC ${SRC_DIR}/intervals.c ${SRC_DIR}/maap.c ${SRC_DIR}/maap_log_queue.c ${SRC_DIR}/maap_net.c ${SRC_DIR}/maap_packet.c ${SRC_DIR}/maap_parse.c) 13 | file(GLOB MAAP_TEST_SRC ${TEST_DIR}/maap_log_dummy.c ${TEST_DIR}/maap_timer_dummy.c) 14 | 15 | if(APPLE) 16 | include_directories( include ${SRC_DIR} ${CPPUTEST_DIR}/include/Platforms/Gcc ) 17 | link_directories(${CPPUTEST_DIR}/src/CppUTest ${CPPUTEST_DIR}/src/CppUTestExt ) 18 | add_executable (maap_test ${MAAP_SRC} ${MAAP_TEST_SRC} ${CPPUTEST_SRC} ) 19 | target_link_libraries(maap_test CppUTest CppUTestExt) 20 | elseif(UNIX) 21 | include_directories( include ${SRC_DIR} ${CPPUTEST_DIR}/include/Platforms/Gcc ) 22 | link_directories(${CPPUTEST_DIR}/src/CppUTest ${CPPUTEST_DIR}/src/CppUTestExt ) 23 | add_executable (maap_test ${MAAP_SRC} ${MAAP_TEST_SRC} ${CPPUTEST_SRC} ) 24 | target_link_libraries(maap_test CppUTest CppUTestExt) 25 | elseif(WIN32) 26 | if( CMAKE_SIZEOF_VOID_P EQUAL 8 ) 27 | link_directories($ENV{WPCAP_DIR}/Lib/x64 ${CPPUTEST_DIR}/src/CppUTest ${CPPUTEST_DIR}/src/CppUTestExt) 28 | elseif( CMAKE_SIZEOF_VOID_P EQUAL 4 ) 29 | link_directories($ENV{WPCAP_DIR}/Lib ${CPPUTEST_DIR}/src/CppUTest ${CPPUTEST_DIR}/src/CppUTestExt) 30 | endif() 31 | 32 | add_definitions(-D_CRT_SECURE_NO_WARNINGS) 33 | add_executable (maap_test ${MAAP_SRC} ${MAAP_TEST_SRC} ${CPPUTEST_SRC} ) 34 | target_link_libraries(maap_test CppUTest CppUTestExt Ws2_32 Winmm) 35 | endif() 36 | 37 | add_test( maap_test maap_test ) 38 | 39 | -------------------------------------------------------------------------------- /daemons/maap/windows/src/maap_main.c: -------------------------------------------------------------------------------- 1 | /************************************************************************************* 2 | Copyright (c) 2016-2017, Harman International Industries, Incorporated 3 | All rights reserved. 4 | 5 | Redistribution and use in source and binary forms, with or without 6 | modification, are permitted provided that the following conditions are met: 7 | 8 | 1. Redistributions of source code must retain the above copyright notice, this 9 | list of conditions and the following disclaimer. 10 | 2. Redistributions in binary form must reproduce the above copyright notice, 11 | this list of conditions and the following disclaimer in the documentation 12 | and/or other materials provided with the distribution. 13 | 14 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS LISTED "AS IS" AND 15 | ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 16 | WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 17 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS LISTED BE LIABLE FOR 18 | ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 19 | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 20 | LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 21 | ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 22 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 23 | SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 24 | *************************************************************************************/ 25 | 26 | /* 27 | * TODO: This code still needs to be added! 28 | */ 29 | 30 | int main(int argc, char *argv[]) 31 | { 32 | } 33 | -------------------------------------------------------------------------------- /daemons/mrpd/.gitignore: -------------------------------------------------------------------------------- 1 | *.o 2 | mrpctl 3 | mrpd 4 | -------------------------------------------------------------------------------- /daemons/mrpd/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required (VERSION 2.8) 2 | project (mrpd) 3 | enable_testing() 4 | 5 | include_directories( . "../common" ) 6 | file(GLOB MRPD_SRC "mrp.c" "mvrp.c" "mmrp.c" "msrp.c" "../common/parse.c" "../common/eui64set.c" ) 7 | 8 | if(APPLE) 9 | add_executable (mrpd ${MRPD_SRC} "mrpd.c") 10 | elseif(UNIX) 11 | add_executable (mrpd ${MRPD_SRC} "mrpd.c") 12 | target_link_libraries(mrpd pthread) 13 | elseif(WIN32) 14 | if( CMAKE_SIZEOF_VOID_P EQUAL 8 ) 15 | link_directories($ENV{WPCAP_DIR}/Lib/x64) 16 | elseif( CMAKE_SIZEOF_VOID_P EQUAL 4 ) 17 | link_directories($ENV{WPCAP_DIR}/Lib) 18 | endif() 19 | 20 | add_definitions(-D_CRT_SECURE_NO_WARNINGS) 21 | include_directories( include $ENV{WPCAP_DIR}/Include ) 22 | add_executable (mrpd ${MRPD_SRC} "mrpw.c" "que.c") 23 | target_link_libraries(mrpd wpcap Iphlpapi Ws2_32) 24 | endif() 25 | 26 | add_subdirectory("tests/simple") 27 | -------------------------------------------------------------------------------- /daemons/mrpd/Makefile: -------------------------------------------------------------------------------- 1 | OPT=-O2 2 | #CFLAGS=$(OPT) -Wall -Wextra -Wno-parentheses -Wstrict-prototypes -Wmissing-prototypes -ggdb 3 | CFLAGS=$(OPT) -Wall -Wextra -Wno-parentheses -ggdb -D_GNU_SOURCE 4 | 5 | ifeq ($(ARCH),arm) 6 | CC?=arm-none-linux-gnueabi-gcc 7 | else 8 | CC?=gcc 9 | endif 10 | INCFLAGS=-I../common -I../../examples/mrp_client 11 | 12 | all: mrpd mrpctl 13 | 14 | VPATH = ../common 15 | 16 | mrpd: mrpd.o mvrp.o msrp.o mmrp.o mrp.o parse.o eui64set.o 17 | 18 | mrpctl: mrpctl.o ../../examples/mrp_client/mrpdclient.o 19 | 20 | ../../examples/mrp_client/mrpdclient.o: \ 21 | ../../examples/mrp_client/mrpdclient.c \ 22 | ../../examples/mrp_client/mrpdclient.h 23 | make -C ../../examples/mrp_client/ mrpdclient.o 24 | 25 | %.o: %.c 26 | $(CC) -c $(INCFLAGS) $(CFLAGS) -o $@ $< 27 | %: %.o 28 | $(CC) $(LDFLAGS) $^ $(LDLIBS) -o $@ 29 | 30 | clean: 31 | rm -f `find . -name "*~" -o -name "*.[oa]" -o -name "\#*\#" -o -name TAGS -o -name core -o -name "*.orig"` 32 | rm -f mrpd mrpctl 33 | 34 | indent: 35 | indent --linux-style mrpd.c mrpd.h mvrp.c mvrp.h msrp.c msrp.h mmrp.c mmrp.h mrp.c mrp.h \ 36 | mrpw.c que.c que.h ../common/parse.c ../common/parse.h ../common/eui64set.c ../common/eui64set.h 37 | 38 | -------------------------------------------------------------------------------- /daemons/mrpd/mrpw.h: -------------------------------------------------------------------------------- 1 | /****************************************************************************** 2 | 3 | Copyright (c) 2012, Intel Corporation 4 | Copyright (c) 2012, AudioScience, Inc 5 | All rights reserved. 6 | 7 | Redistribution and use in source and binary forms, with or without 8 | modification, are permitted provided that the following conditions are met: 9 | 10 | 1. Redistributions of source code must retain the above copyright notice, 11 | this list of conditions and the following disclaimer. 12 | 13 | 2. Redistributions in binary form must reproduce the above copyright 14 | notice, this list of conditions and the following disclaimer in the 15 | documentation and/or other materials provided with the distribution. 16 | 17 | 3. Neither the name of the Intel Corporation nor the names of its 18 | contributors may be used to endorse or promote products derived from 19 | this software without specific prior written permission. 20 | 21 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 22 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 23 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 24 | ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 25 | LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 26 | CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 27 | SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 28 | INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 29 | CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 30 | ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 31 | POSSIBILITY OF SUCH DAMAGE. 32 | 33 | ******************************************************************************/ 34 | #ifndef _MRPW_H_ 35 | #define _MPRW_H_ 36 | 37 | void mrpw_cleanup(void); 38 | int mrpw_init_protocols(void); 39 | int mrpw_run_once(void); 40 | int mrpw_init_threads(void); 41 | 42 | #endif -------------------------------------------------------------------------------- /daemons/mrpd/readme.rst: -------------------------------------------------------------------------------- 1 | 2 | ==================================== 3 | MMRP, MVRP, MSRP documentation 4 | ==================================== 5 | 6 | The MRP daemon is required to establish stream reservations with compatible AVB 7 | infrastructure devices. The command line selectively enables MMRP (via the 8 | -m option), MVRP (via the -v option), and MSRP (via the -s option). You must 9 | also specify the interface on which you want to bind the daemon to 10 | (e.g. -i eth2). The full command line typically appears as follows: 11 | sudo ./mrpd -mvs -i eth2 12 | 13 | Sample client applications - mrpctl, mrpq, mrpl - illustrate how to connect, 14 | query and add attributes to the MRP daemon. 15 | 16 | General command string format 17 | ============================= 18 | 19 | CCC:X=12233,Y=34567 20 | 21 | where CCC is the 3 character command and X and Y are parameters followed by their values. 22 | 23 | 24 | MSRP 25 | ==== 26 | 27 | S??: query MSRP Registrar database 28 | 29 | S+?: (re)JOIN a stream 30 | 31 | S++: NEW a stream 32 | 33 | S--: LV a stream 34 | 35 | S+L: Report a listener status 36 | 37 | S-L: Withdraw a listener status 38 | 39 | S+D: Report a domain status 40 | 41 | S-D: Withdraw a domain status 42 | 43 | 44 | -------------------------------------------------------------------------------- /daemons/mrpd/tests/simple/AllTests.cpp: -------------------------------------------------------------------------------- 1 | /****************************************************************************** 2 | 3 | Copyright (c) 2014, AudioScience, Inc. 4 | All rights reserved. 5 | 6 | Redistribution and use in source and binary forms, with or without 7 | modification, are permitted provided that the following conditions are met: 8 | 9 | 1. Redistributions of source code must retain the above copyright notice, 10 | this list of conditions and the following disclaimer. 11 | 12 | 2. Redistributions in binary form must reproduce the above copyright 13 | notice, this list of conditions and the following disclaimer in the 14 | documentation and/or other materials provided with the distribution. 15 | 16 | 3. Neither the name of the AudioScience, Inc nor the names of its 17 | contributors may be used to endorse or promote products derived from 18 | this software without specific prior written permission. 19 | 20 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 21 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 22 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 23 | ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 24 | LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 25 | CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 26 | SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 27 | INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 28 | CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 29 | ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 30 | POSSIBILITY OF SUCH DAMAGE. 31 | 32 | ******************************************************************************/ 33 | 34 | #include "CppUTest/TestHarness.h" 35 | #include "CppUTest/CommandLineTestRunner.h" 36 | 37 | int main(int ac, char **av) 38 | { 39 | return CommandLineTestRunner::RunAllTests(ac, av); 40 | } 41 | -------------------------------------------------------------------------------- /daemons/mrpd/tests/simple/applicant_fsm_tests.cpp: -------------------------------------------------------------------------------- 1 | /****************************************************************************** 2 | 3 | Copyright (c) 2014, AudioScience, Inc. 4 | All rights reserved. 5 | 6 | Redistribution and use in source and binary forms, with or without 7 | modification, are permitted provided that the following conditions are met: 8 | 9 | 1. Redistributions of source code must retain the above copyright notice, 10 | this list of conditions and the following disclaimer. 11 | 12 | 2. Redistributions in binary form must reproduce the above copyright 13 | notice, this list of conditions and the following disclaimer in the 14 | documentation and/or other materials provided with the distribution. 15 | 16 | 3. Neither the name of the Intel Corporation nor the names of its 17 | contributors may be used to endorse or promote products derived from 18 | this software without specific prior written permission. 19 | 20 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 21 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 22 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 23 | ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 24 | LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 25 | CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 26 | SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 27 | INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 28 | CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 29 | ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 30 | POSSIBILITY OF SUCH DAMAGE. 31 | 32 | ******************************************************************************/ 33 | 34 | #include 35 | #include 36 | 37 | #include "CppUTest/TestHarness.h" 38 | 39 | extern "C" { 40 | 41 | #include "mrpd.h" 42 | #include "mrp.h" 43 | 44 | } 45 | 46 | TEST_GROUP(ApplicantTestGroup) 47 | { 48 | void setup() 49 | { 50 | } 51 | 52 | void teardown() 53 | { 54 | } 55 | }; 56 | 57 | TEST(ApplicantTestGroup, Applicant_rLVA) 58 | { 59 | mrp_applicant_attribute_t a; 60 | 61 | a.mrp_state = 0; 62 | // etc.... 63 | } 64 | -------------------------------------------------------------------------------- /daemons/mrpd/tests/simple/msrp_tests.h: -------------------------------------------------------------------------------- 1 | #ifndef GUARD_MSRP_TESTS_H_ 2 | #define GUARD_MSRP_TESTS_H_ 3 | 4 | int msrp_tests_event_counts_per_type(int the_type, int the_event); 5 | int msrp_tests_cmd_ok(const char *zstr); 6 | 7 | #endif 8 | -------------------------------------------------------------------------------- /daemons/shaper/LICENSE: -------------------------------------------------------------------------------- 1 | /************************************************************************************************************* 2 | Copyright (c) 2016-2017, Harman International Industries, Incorporated 3 | All rights reserved. 4 | 5 | Redistribution and use in source and binary forms, with or without 6 | modification, are permitted provided that the following conditions are met: 7 | 8 | 1. Redistributions of source code must retain the above copyright notice, this 9 | list of conditions and the following disclaimer. 10 | 2. Redistributions in binary form must reproduce the above copyright notice, 11 | this list of conditions and the following disclaimer in the documentation 12 | and/or other materials provided with the distribution. 13 | 14 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS LISTED "AS IS" AND 15 | ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 16 | WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 17 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS LISTED BE LIABLE FOR 18 | ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 19 | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 20 | LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 21 | ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 22 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 23 | SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 24 | *************************************************************************************************************/ 25 | 26 | -------------------------------------------------------------------------------- /daemons/shaper/Makefile: -------------------------------------------------------------------------------- 1 | CC ?= gcc 2 | OPT = -O2 -g 3 | CFLAGS = $(OPT) -Wall -Wextra 4 | INCFLAGS = 5 | LDLIBS = -lm -pthread 6 | 7 | SRC_DIR = src 8 | OUT_O_DIR = build 9 | 10 | all: shaper_daemon 11 | 12 | shaper_daemon: \ 13 | $(OUT_O_DIR)/shaper_daemon.o \ 14 | $(OUT_O_DIR)/shaper_log_queue.o \ 15 | $(OUT_O_DIR)/shaper_log_linux.o 16 | 17 | $(OUT_O_DIR)/shaper_daemon.o: $(SRC_DIR)/shaper_daemon.c \ 18 | $(SRC_DIR)/shaper_log.h 19 | @mkdir -p $(@D) 20 | $(CC) $(CFLAGS) $(INCFLAGS) -c $(SRC_DIR)/shaper_daemon.c -o $(OUT_O_DIR)/shaper_daemon.o 21 | 22 | $(OUT_O_DIR)/shaper_log_queue.o: $(SRC_DIR)/shaper_log_queue.c \ 23 | $(SRC_DIR)/shaper_log.h $(SRC_DIR)/shaper_log_queue.h 24 | @mkdir -p $(@D) 25 | $(CC) $(CFLAGS) $(INCFLAGS) -c $(SRC_DIR)/shaper_log_queue.c -o $(OUT_O_DIR)/shaper_log_queue.o 26 | 27 | $(OUT_O_DIR)/shaper_log_linux.o: $(SRC_DIR)/shaper_log_linux.c \ 28 | $(SRC_DIR)/platform.h $(SRC_DIR)/shaper_log.h $(SRC_DIR)/shaper_log_queue.h $(SRC_DIR)/shaper_helper_linux.h 29 | @mkdir -p $(@D) 30 | $(CC) $(CFLAGS) $(INCFLAGS) -c $(SRC_DIR)/shaper_log_linux.c -o $(OUT_O_DIR)/shaper_log_linux.o 31 | 32 | %: $(OUT_O_DIR)/%.o 33 | $(CC) $(LDFLAGS) $^ $(LDLIBS) -o $@ 34 | 35 | clean: 36 | $(RM) shaper_daemon 37 | $(RM) -r $(OUT_O_DIR) 38 | -------------------------------------------------------------------------------- /daemons/shaper/README.rst: -------------------------------------------------------------------------------- 1 | OpenAvnu Traffic Shaping Daemon 2 | =============================== 3 | 4 | .. contents:: 5 | .. 6 | 1 Introduction 7 | 2 Support 8 | 3 Future Updates 9 | 10 | Introduction 11 | ------------ 12 | 13 | The shaper daemon is an interface to use the tc (Traffic Control) command to 14 | configure the kernel traffic shaping with the Hierarchy Token Bucket. While 15 | tc could be called directly, using the daemon allows for a simpler interface 16 | and keeps track of the current traffic shaping configurations in use. 17 | 18 | Support 19 | ------- 20 | 21 | To enable the Shaper daemon support for AVTP Pipeline, edit the endpoint.ini 22 | file and uncomment the port=15365 line of the shaper section. 23 | 24 | The Shaper daemon does not work (i.e. no shaping occurs) if the Intel IGB 25 | support is loaded for the adapter being used. You may also need to compile 26 | the AVTP Pipeline with PLATFORM_TOOLCHAIN=generic to not include the IGB 27 | features. 28 | 29 | Future Updates 30 | -------------- 31 | 32 | - Have the daemon verify that tc is installed 33 | - Have the daemon verify that the kernel is configured to support Hierarchy 34 | Token Bucket traffic shaping 35 | - Add a method to interlace frames from multiple streams of the same class 36 | (perhaps using multiple layers of queues) 37 | - Add updates to support IEEE 802.1Qcc configurable classes 38 | 39 | -------------------------------------------------------------------------------- /documents/Linux_Plumbers2012.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PADL/OpenAvnu/8fa80d1de59fbef14c8d0e80d8d9a62679a6182a/documents/Linux_Plumbers2012.pdf -------------------------------------------------------------------------------- /documents/examples/AVB_Talker_Listener_Example_Setup.md: -------------------------------------------------------------------------------- 1 | # Setup AVB tools for listener / talker example 2 | 3 | _Note:_ this tutorial targets a Linux OS. 4 | 5 | ## Preparation 6 | 7 | Fetch the Open-AVB repository. To ease the further steps, enter your local copy 8 | and export its path and AVB interfaces via 9 | ```bash 10 | export AVB_PATH=$(pwd) 11 | export AVB_PC1_IF="eth0" 12 | export AVB_PC2_IF="eth2" 13 | ``` 14 | Then, you can use a terminal multiplexer like _byobu_ to start all needed AVB 15 | tools in different windows. 16 | 17 | We assume the following PC setup: 18 | * PC1: ethernet eth0 for AVB connection 19 | * PC2: ethernet eth2 for AVB connection 20 | * Both ethernet cards are using the `igb_avb` driver. 21 | * Check via `ethtool -i eth0`. 22 | * If not, launch `sudo ./startup.sh eth0` in `kmod/igb` to load the required 23 | driver for the AVB interface. 24 | * Both PCs can ping each other through the AVB network cards. 25 | 26 | ## PC 1: start AVB environment + talker application 27 | 28 | Start AVB environment: 29 | 30 | ```bash 31 | # GPTP time synchronization daemon 32 | cd "${AVB_PATH}/daemons/gptp/linux/build/obj" 33 | sudo ./daemon_cl $AVB_PC1_IF -R 1 34 | 35 | # Stream reservation daemon (m: MMRP, v: MVRP, s: MSRP) 36 | cd "${AVB_PATH}/daemons/mrpd" 37 | sudo ./mrpd -mvs -i $AVB_PC1_IF 38 | ``` 39 | 40 | Start AVB talker example: 41 | 42 | ```bash 43 | cd "${AVB_PATH}/examples/simple_talker" 44 | sudo ./simple_talker -i $AVB_PC1_IF -t 2 45 | ``` 46 | 47 | ## PC 2: start AVB environment + listener application 48 | 49 | Start AVB environment similar to PC 1: 50 | 51 | ```bash 52 | # GPTP time synchronization daemon (will synchronize on PC 1) 53 | cd "${AVB_PATH}/daemons/gptp/linux/build/obj" 54 | sudo ./daemon_cl $AVB_PC2_IF 55 | 56 | # Stream reservation daemon (m: MMRP, v: MVRP, s: MSRP) 57 | cd "${AVB_PATH}/daemons/mrpd" 58 | sudo ./mrpd -mvs -i $AVB_PC2_IF 59 | ``` 60 | 61 | Start AVB listener example: 62 | 63 | ```bash 64 | cd "${AVB_PATH}/examples/simple_listener" 65 | sudo ./simple_listener -i $AVB_PC2_IF -f out.wav 66 | ``` 67 | 68 | :tada: 69 | -------------------------------------------------------------------------------- /examples/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2012, Intel Corporation 2 | All rights reserved. 3 | 4 | Redistribution and use in source and binary forms, with or without 5 | modification, are permitted provided that the following conditions are met: 6 | 7 | 1. Redistributions of source code must retain the above copyright notice, 8 | this list of conditions and the following disclaimer. 9 | 10 | 2. Redistributions in binary form must reproduce the above copyright 11 | notice, this list of conditions and the following disclaimer in the 12 | documentation and/or other materials provided with the distribution. 13 | 14 | 3. Neither the name of the Intel Corporation nor the names of its 15 | contributors may be used to endorse or promote products derived from 16 | this software without specific prior written permission. 17 | 18 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 19 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 20 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 21 | ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 22 | LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 23 | CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 24 | SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 25 | INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 26 | CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 27 | ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 28 | POSSIBILITY OF SUCH DAMAGE. 29 | 30 | -------------------------------------------------------------------------------- /examples/alsa_timed_audio/README.md: -------------------------------------------------------------------------------- 1 |

2 | Introduction 3 |

4 | The Intel Synchronized Audio Toolkit consists of several pieces of sample 5 | code that wrap ALSA timing primitives. It contains building blocks for a time 6 | aware mixer and capture module. It uses the OpenAVB time sync daemon for 7 | the 802.1AS protocol. 8 | 9 | There are several Python scripts that use this example code creating a simple 10 | demo that measures distance between two devices 11 | 12 |

13 | Prerequisites 14 |

15 | - **libsndfile** development package/source 16 | - **Doxygen** 17 | - **pdxlatex** - usually part of **TeX Live** package 18 | 19 |

20 | Building 21 |

22 |

23 | Build sample applications 24 |

25 | Checkout the Open-AVB submodule: 26 |
27 | git submodule update --init
28 | 
29 | In the support directory run: 30 |
31 | make
32 | 
33 | This generates the time sync daemon and helper application for the ranging 34 | demo that finds a "chirp" signal given an audio file 35 | 36 | In the top level directory run: 37 |
38 | make
39 | 
40 |

41 | Build the documentation 42 |

43 | In the top level directory run: 44 |
45 | make docs
46 | 
47 | Produces documentation.pdf in the top level directory. 48 |

49 | Running the demo 50 |

51 | In the support/RangingDemo directory run: 52 |
53 | ./RangingDemo <-p|-r> -d \ -i \
54 | 
55 | 56 | One machine should use the -p flag to play audio, the other machine should 57 | use the -r flag, to record audio. 58 | 59 |

60 | Example applications 61 |

62 |

@subpage play_at

63 |

@subpage record_at

64 |

@subpage sys_to_net_time

65 |

@subpage net_to_sys_time

66 | -------------------------------------------------------------------------------- /examples/alsa_timed_audio/alsa.h: -------------------------------------------------------------------------------- 1 | #ifndef ALSA_H 2 | #define ALSA_H 3 | 4 | #include 5 | 6 | struct isaudk_output * 7 | isaudk_get_default_alsa_output(); 8 | 9 | struct isaudk_output * 10 | alsa_open_output( char *devname ); 11 | 12 | struct isaudk_input * 13 | isaudk_get_default_alsa_input(); 14 | 15 | struct isaudk_input * 16 | alsa_open_input( char *devname ); 17 | 18 | #endif/*ALSA_H*/ 19 | -------------------------------------------------------------------------------- /examples/alsa_timed_audio/bool.h: -------------------------------------------------------------------------------- 1 | #ifndef BOOL_H 2 | #define BOOL_H 3 | 4 | typedef _Bool bool; 5 | 6 | typedef enum 7 | { 8 | true = -1, 9 | false = 0, 10 | } _bool_t; 11 | 12 | #endif/*BOOL_H*/ 13 | -------------------------------------------------------------------------------- /examples/alsa_timed_audio/init.h: -------------------------------------------------------------------------------- 1 | /****************************************************************************** 2 | 3 | Copyright (c) 2018, Intel Corporation 4 | All rights reserved. 5 | 6 | Redistribution and use in source and binary forms, with or without 7 | modification, are permitted provided that the following conditions are met: 8 | 9 | 1. Redistributions of source code must retain the above copyright notice, 10 | this list of conditions and the following disclaimer. 11 | 12 | 2. Redistributions in binary form must reproduce the above copyright 13 | notice, this list of conditions and the following disclaimer in the 14 | documentation and/or other materials provided with the distribution. 15 | 16 | 3. Neither the name of the Intel Corporation nor the names of its 17 | contributors may be used to endorse or promote products derived from 18 | this software without specific prior written permission. 19 | 20 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 21 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 22 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 23 | ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 24 | LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 25 | CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 26 | SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 27 | INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 28 | CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 29 | ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 30 | POSSIBILITY OF SUCH DAMAGE. 31 | 32 | ******************************************************************************/ 33 | 34 | #ifndef INIT_H 35 | #define INIT_H 36 | 37 | #define _isaudk_io_init __attribute__((constructor(101))) 38 | #define _isaudk_mixer_init __attribute__((constructor(102))) 39 | #define _isaudk_capture_init __attribute__((constructor(102))) 40 | #define _isaudk_stream_init __attribute__((constructor(103))) 41 | 42 | #define _isaudk_io_stop __attribute__((destructor(101))) 43 | #define _isaudk_mixer_stop __attribute__((destructor(102))) 44 | #define _isaudk_capture_stop __attribute__((destructor(102))) 45 | #define _isaudk_stream_stop __attribute__((destructor(103))) 46 | 47 | #endif/*INIT_H*/ 48 | -------------------------------------------------------------------------------- /examples/alsa_timed_audio/stack.c: -------------------------------------------------------------------------------- 1 | /****************************************************************************** 2 | 3 | Copyright (c) 2018, Intel Corporation 4 | All rights reserved. 5 | 6 | Redistribution and use in source and binary forms, with or without 7 | modification, are permitted provided that the following conditions are met: 8 | 9 | 1. Redistributions of source code must retain the above copyright notice, 10 | this list of conditions and the following disclaimer. 11 | 12 | 2. Redistributions in binary form must reproduce the above copyright 13 | notice, this list of conditions and the following disclaimer in the 14 | documentation and/or other materials provided with the distribution. 15 | 16 | 3. Neither the name of the Intel Corporation nor the names of its 17 | contributors may be used to endorse or promote products derived from 18 | this software without specific prior written permission. 19 | 20 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 21 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 22 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 23 | ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 24 | LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 25 | CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 26 | SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 27 | INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 28 | CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 29 | ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 30 | POSSIBILITY OF SUCH DAMAGE. 31 | 32 | ******************************************************************************/ 33 | 34 | #include 35 | #include 36 | 37 | stack_element_t * 38 | pop( stack_t stack ) 39 | { 40 | linked_list_element_t tmp; 41 | linked_list_element_t *ret = NULL; 42 | 43 | if( !ll_is_valid( stack )) 44 | return NULL; 45 | tmp = ll_get_head( stack ); 46 | if( tmp != NULL ) { 47 | ll_remove_head( stack ); 48 | ret = ll_get_addr( tmp ); 49 | } 50 | 51 | return ret; 52 | } 53 | -------------------------------------------------------------------------------- /examples/alsa_timed_audio/stack.h: -------------------------------------------------------------------------------- 1 | #ifndef STACK_H 2 | #define STACK_H 3 | 4 | #include 5 | 6 | typedef linked_list_t stack_t; 7 | typedef linked_list_element_t stack_element_t; 8 | 9 | #define STATIC_STACK_INIT NULL 10 | 11 | static inline stack_t stack_init() 12 | { 13 | return ll_init(); 14 | } 15 | 16 | static inline stack_t stack_alloc() 17 | { 18 | return ll_alloc(); 19 | } 20 | 21 | static inline bool stack_is_valid( stack_t stack ) 22 | { 23 | return ll_is_valid( stack ); 24 | } 25 | 26 | static inline void stack_init_element( stack_element_t *element ) 27 | { 28 | ll_init_element( element ); 29 | } 30 | 31 | 32 | static inline bool push( stack_t stack, stack_element_t *element ) 33 | { 34 | return ll_add_head( stack, element ); 35 | } 36 | 37 | static inline void free_stack_element( stack_element_t *element ) 38 | { 39 | ll_free_element( element ); 40 | } 41 | 42 | static inline linked_list_t get_list( stack_t stack ) 43 | { 44 | return (linked_list_t) stack; 45 | } 46 | 47 | stack_element_t * 48 | pop( stack_t stack ); 49 | 50 | #endif/*STACK_H*/ 51 | -------------------------------------------------------------------------------- /examples/common/Makefile: -------------------------------------------------------------------------------- 1 | DAEMONS_DIR = ../../daemons 2 | 3 | CC ?= gcc 4 | OPT = -O2 -g 5 | WARN = -Wall -Wextra -Wno-parentheses 6 | CFLAGS = $(OPT) $(WARN) 7 | CPPFLAGS = -I$(DAEMONS_DIR)/mrpd -I$(DAEMONS_DIR)/common 8 | 9 | all: talker_mrp_client.o listener_mrp_client.o 10 | 11 | talker_mrp_client.o: talker_mrp_client.c talker_mrp_client.h 12 | 13 | listener_mrp_client.o: listener_mrp_client.c listener_mrp_client.h 14 | 15 | clean: 16 | $(RM) talker_mrp_client.o listener_mrp_client.o 17 | $(RM) `find . -name "*~" -o -name "*.[oa]" -o -name "\#*\#" -o -name TAGS -o -name core -o -name "*.orig"` 18 | -------------------------------------------------------------------------------- /examples/gstreamer-avb-plugins/.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "common"] 2 | path = common 3 | url = git://anongit.freedesktop.org/gstreamer/common 4 | -------------------------------------------------------------------------------- /examples/gstreamer-avb-plugins/COPYING.MIT: -------------------------------------------------------------------------------- 1 | Permission is hereby granted, free of charge, to any person obtaining a 2 | copy of this software and associated documentation files (the "Software"), 3 | to deal in the Software without restriction, including without limitation 4 | the rights to use, copy, modify, merge, publish, distribute, sublicense, 5 | and/or sell copies of the Software, and to permit persons to whom the 6 | Software is furnished to do so, subject to the following conditions: 7 | 8 | The above copyright notice and this permission notice shall be included in 9 | all copies or substantial portions of the Software. 10 | 11 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 12 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 13 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 14 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 15 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 16 | FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 17 | DEALINGS IN THE SOFTWARE. 18 | -------------------------------------------------------------------------------- /examples/gstreamer-avb-plugins/gst-plugin/.gitignore: -------------------------------------------------------------------------------- 1 | aclocal.m4 2 | autom4te.cache 3 | autoregen.sh 4 | config.* 5 | configure 6 | libtool 7 | INSTALL 8 | Makefile.in 9 | depcomp 10 | install-sh 11 | ltmain.sh 12 | missing 13 | stamp-* 14 | my-plugin-*.tar.* 15 | *~ 16 | 17 | -------------------------------------------------------------------------------- /examples/gstreamer-avb-plugins/gst-plugin/AUTHORS: -------------------------------------------------------------------------------- 1 | Thomas Vander Stichele 2 | -------------------------------------------------------------------------------- /examples/gstreamer-avb-plugins/gst-plugin/COPYING: -------------------------------------------------------------------------------- 1 | Put your license in here! 2 | 3 | -------------------------------------------------------------------------------- /examples/gstreamer-avb-plugins/gst-plugin/Makefile.am: -------------------------------------------------------------------------------- 1 | SUBDIRS = src 2 | 3 | EXTRA_DIST = autogen.sh 4 | -------------------------------------------------------------------------------- /examples/gstreamer-avb-plugins/gst-plugin/NEWS: -------------------------------------------------------------------------------- 1 | Nothing much yet. 2 | -------------------------------------------------------------------------------- /examples/gstreamer-avb-plugins/gst-plugin/README: -------------------------------------------------------------------------------- 1 | WHAT IT IS 2 | ---------- 3 | 4 | gst-plugin is a template for writing your own GStreamer plug-in. 5 | 6 | The code is deliberately kept simple so that you quickly understand the basics 7 | of how to set up autotools and your source tree. 8 | 9 | This template demonstrates : 10 | - what to do in autogen.sh 11 | - how to setup configure.ac (your package name and version, GStreamer flags) 12 | - how to setup your source dir 13 | - what to put in Makefile.am 14 | 15 | More features and templates might get added later on. 16 | 17 | HOW TO USE IT 18 | ------------- 19 | 20 | To use it, either make a copy for yourself and rename the parts or use the 21 | make_element script in tools. To create sources for "myfilter" based on the 22 | "gsttransform" template run: 23 | 24 | cd src; 25 | ../tools/make_element myfilter gsttransform 26 | 27 | This will create gstmyfilter.c and gstmyfilter.h. Open them in an editor and 28 | start editing. There are several occurances of the string "template", update 29 | those with real values. The plugin will be called 'myfilter' and it will have 30 | one element called 'myfilter' too. Also look for "FIXME:" markers that point you 31 | to places where you need to edit the code. 32 | 33 | You still need to adjust the Makefile.am. 34 | 35 | -------------------------------------------------------------------------------- /examples/gstreamer-avb-plugins/gst-plugin/autogen.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # you can either set the environment variables AUTOCONF, AUTOHEADER, AUTOMAKE, 3 | # ACLOCAL, AUTOPOINT and/or LIBTOOLIZE to the right versions, or leave them 4 | # unset and get the defaults 5 | 6 | autoreconf --verbose --force --install --make || { 7 | echo 'autogen.sh failed'; 8 | exit 1; 9 | } 10 | 11 | ./configure || { 12 | echo 'configure failed'; 13 | exit 1; 14 | } 15 | 16 | echo 17 | echo "Now type 'make' to compile this module." 18 | echo 19 | -------------------------------------------------------------------------------- /examples/gstreamer-avb-plugins/gst-plugin/config.h.in: -------------------------------------------------------------------------------- 1 | /* config.h.in. Generated from configure.ac by autoheader. */ 2 | 3 | /* Define to 1 if you have the header file. */ 4 | #undef HAVE_DLFCN_H 5 | 6 | /* Define to 1 if you have the header file. */ 7 | #undef HAVE_INTTYPES_H 8 | 9 | /* Define to 1 if you have the header file. */ 10 | #undef HAVE_MEMORY_H 11 | 12 | /* Define to 1 if you have the header file. */ 13 | #undef HAVE_STDINT_H 14 | 15 | /* Define to 1 if you have the header file. */ 16 | #undef HAVE_STDLIB_H 17 | 18 | /* Define to 1 if you have the header file. */ 19 | #undef HAVE_STRINGS_H 20 | 21 | /* Define to 1 if you have the header file. */ 22 | #undef HAVE_STRING_H 23 | 24 | /* Define to 1 if you have the header file. */ 25 | #undef HAVE_SYS_STAT_H 26 | 27 | /* Define to 1 if you have the header file. */ 28 | #undef HAVE_SYS_TYPES_H 29 | 30 | /* Define to 1 if you have the header file. */ 31 | #undef HAVE_UNISTD_H 32 | 33 | /* Define to the sub-directory in which libtool stores uninstalled libraries. 34 | */ 35 | #undef LT_OBJDIR 36 | 37 | /* Name of package */ 38 | #undef PACKAGE 39 | 40 | /* Define to the address where bug reports for this package should be sent. */ 41 | #undef PACKAGE_BUGREPORT 42 | 43 | /* Define to the full name of this package. */ 44 | #undef PACKAGE_NAME 45 | 46 | /* Define to the full name and version of this package. */ 47 | #undef PACKAGE_STRING 48 | 49 | /* Define to the one symbol short name of this package. */ 50 | #undef PACKAGE_TARNAME 51 | 52 | /* Define to the home page for this package. */ 53 | #undef PACKAGE_URL 54 | 55 | /* Define to the version of this package. */ 56 | #undef PACKAGE_VERSION 57 | 58 | /* Define to 1 if you have the ANSI C header files. */ 59 | #undef STDC_HEADERS 60 | 61 | /* Version number of package */ 62 | #undef VERSION 63 | -------------------------------------------------------------------------------- /examples/gstreamer-avb-plugins/gst-plugin/src/Makefile.am: -------------------------------------------------------------------------------- 1 | # Note: plugindir is set in configure 2 | 3 | ############################################################################## 4 | # TODO: change libgstplugin.la to something else, e.g. libmysomething.la # 5 | ############################################################################## 6 | plugin_LTLIBRARIES = libgstplugin.la 7 | 8 | EXTRA_FLAGS=-I ../../lib/igb/ 9 | EXTRA_FLAGS+=-L ../../lib/igb/ -ligb -lpci -lrt -lpthread -lm -lgstapp-1.0 10 | 11 | ############################################################################## 12 | # TODO: for the next set of variables, name the prefix if you named the .la, # 13 | # e.g. libmysomething.la => libmysomething_la_SOURCES # 14 | # libmysomething_la_CFLAGS # 15 | # libmysomething_la_LIBADD # 16 | # libmysomething_la_LDFLAGS # 17 | ############################################################################## 18 | 19 | # sources used to compile this plug-in 20 | 21 | #For Talker uncomment the below: 22 | 23 | #libgstplugin_la_SOURCES = gstavbsink.c gstavbsink.h ../../../common/avb.c ../../../common/avb.h ../../../../lib/igb/igb.h 24 | 25 | 26 | #For Listener uncomment the below: 27 | 28 | #libgstplugin_la_SOURCES = gst_avb_playbin.c gst_avb_playbin.h ../../../common/avb.c ../../../common/avb.h ../../../../lib/igb/igb.h gst_app_src.c 29 | 30 | # compiler and linker flags used to compile this plugin, set in configure.ac 31 | libgstplugin_la_CFLAGS = $(GST_CFLAGS) 32 | libgstplugin_la_LIBADD = $(GST_LIBS) 33 | libgstplugin_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS) $(LDFLAGS) 34 | libgstplugin_la_LIBTOOLFLAGS = --tag=disable-static 35 | libgstplugin_la_EXTRA_FLAGS=$(EXTRA_FLAGS) 36 | 37 | 38 | # headers we need but don't want installed 39 | noinst_HEADERS = gstplugin.h 40 | -------------------------------------------------------------------------------- /examples/gstreamer-avb-plugins/gst-plugin/src/gst_avb_playbin.h: -------------------------------------------------------------------------------- 1 | /* Avbplaybin header file. 2 | * 3 | * Copyright (c) <2013>, Intel Corporation. 4 | * 5 | * This program is free software; you can redistribute it and/or modify it 6 | * under the terms and conditions of the GNU Lesser General Public License, 7 | * version 2.1, as published by the Free Software Foundation. 8 | * 9 | * This program is distributed in the hope it will be useful, but WITHOUT 10 | * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 11 | * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for 12 | * more details. 13 | * 14 | * You should have received a copy of the GNU Lesser General Public License along with 15 | * this program; if not, write to the Free Software Foundation, Inc., 16 | * 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA. 17 | * 18 | */ 19 | 20 | 21 | #ifndef __\_H__ 22 | #define __GST_AVBSRC_H__ 23 | 24 | #include 25 | #include 26 | #include 27 | 28 | G_BEGIN_DECLS 29 | 30 | 31 | #define GST_TYPE_AVBSRC \ 32 | (gst_avbsrc_get_type()) 33 | 34 | #define GST_AVBSRC(obj) \ 35 | (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_AVBSRC,GstAVBSrc)) 36 | 37 | #define GST_AVBSRC_CLASS(klass) \ 38 | (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_AVBSRC,GstAVBSrcClass)) 39 | 40 | #define GST_IS_AVBSRC(obj) \ 41 | (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_AVBSRC)) 42 | 43 | #define GST_IS_AVBSRC_CLASS(klass) \ 44 | (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_AVBSRC)) 45 | 46 | #define GST_AVBSRC_CAST(obj) ((GstAVBSrc *)(obj)) 47 | 48 | typedef struct _GstAVBSrc GstAVBSrc; 49 | typedef struct _GstAVBSrcClass GstAVBSrcClass; 50 | 51 | struct _GstAVBSrc { 52 | GstPushSrc parent; 53 | 54 | /* properties */ 55 | gchar *interface; 56 | gchar *talker_ip; 57 | gint port; 58 | }; 59 | 60 | struct _GstAVBSrcClass { 61 | GstPushSrcClass parent_class; 62 | }; 63 | 64 | GType gst_avbsrc_get_type(void); 65 | 66 | G_END_DECLS 67 | 68 | 69 | #endif /* __GST_AVBSRC_H__ */ 70 | -------------------------------------------------------------------------------- /examples/gstreamer-avb-plugins/gst-plugin/src/gstavbsink.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Gstreamer AvbSink plugin header file 3 | * Copyright (c) <2013>, Intel Corporation. 4 | * 5 | * This program is free software; you can redistribute it and/or modify it 6 | * under the terms and conditions of the GNU Lesser General Public License, 7 | * version 2.1, as published by the Free Software Foundation. 8 | * 9 | * This program is distributed in the hope it will be useful, but WITHOUT 10 | * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 11 | * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for 12 | * more details. 13 | * 14 | * You should have received a copy of the GNU Lesser General Public License along with 15 | * this program; if not, write to the Free Software Foundation, Inc., 16 | * 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA. 17 | * 18 | */ 19 | 20 | 21 | 22 | #ifndef __GST_AVBSINK_H__ 23 | #define __GST_AVBSINK_H__ 24 | 25 | #include 26 | #include 27 | #include 28 | 29 | G_BEGIN_DECLS 30 | 31 | #define GST_TYPE_AVBSINK (gst_avbsink_get_type()) 32 | #define GST_AVBSINK(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_AVBSINK,GstAvbSink)) 33 | #define GST_AVBSINK_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_AVBSINK,GstAvbSinkClass)) 34 | #define GST_IS_AVBSINK(obj) G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_AVBSINK)) 35 | #define GST_IS_AVBSINK_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_AVBSINK)) 36 | 37 | typedef struct _GstAvbSink GstAvbSink; 38 | typedef struct _GstAvbSinkClass GstAvbSinkClass; 39 | 40 | 41 | struct _GstAvbSink { 42 | GstBaseSink parent; 43 | 44 | /* properties */ 45 | gchar *interface; 46 | guint sourceid; 47 | }; 48 | 49 | struct _GstAvbSinkClass { 50 | GstBaseSinkClass parent_class; 51 | 52 | }; 53 | 54 | GType gst_avbsink_get_type(void); 55 | 56 | G_END_DECLS 57 | 58 | #endif /* __GST_AVBSINK_H__ */ 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | -------------------------------------------------------------------------------- /examples/jackd-listener/Makefile: -------------------------------------------------------------------------------- 1 | MRPCLIENT_DIR = ../common 2 | MRPLISTENER_OBJS = listener_mrp_client.o 3 | MRPLISTENER_TARGETS = $(addprefix $(MRPCLIENT_DIR)/,$(MRPLISTENER_OBJS)) 4 | 5 | DAEMONS_DIR = ../../daemons 6 | 7 | CC ?= gcc 8 | OPT = -O2 -g 9 | WARN = -Wall -Wextra -Wno-parentheses 10 | CFLAGS = $(OPT) $(WARN) -std=gnu99 11 | CPPFLAGS = -I$(DAEMONS_DIR)/mrpd -I$(MRPCLIENT_DIR) -I$(DAEMONS_DIR)/common 12 | LDLIBS = -lpcap -lsndfile -ljack -lpthread 13 | 14 | all: jack_listener 15 | 16 | jack_listener: jack_listener.o $(MRPLISTENER_TARGETS) 17 | 18 | jack_listener.o: jack_listener.c 19 | 20 | $(MRPCLIENT_DIR)/%.o: $(MRPCLIENT_DIR)/%.c $(MRPCLIENT_DIR)/%.h 21 | make -C $(MRPCLIENT_DIR) $@ 22 | 23 | %: %.o 24 | $(CC) $^ $(LDLIBS) -o $@ 25 | 26 | clean: 27 | $(RM) jack_listener 28 | $(RM) `find . -name "*~" -o -name "*.[oa]" -o -name "\#*\#" -o -name TAGS -o -name core -o -name "*.orig"` 29 | -------------------------------------------------------------------------------- /examples/jackd-talker/Makefile: -------------------------------------------------------------------------------- 1 | AVBLIB_DIR = ../../lib/common 2 | AVBLIB_OBJS = avb_avtp.o avb_gptp.o avb_igb.o 3 | AVBLIB_TARGETS = $(addprefix $(AVBLIB_DIR)/,$(AVBLIB_OBJS)) 4 | 5 | MRPCLIENT_DIR = ../common 6 | MRPTALKER_OBJS = talker_mrp_client.o 7 | MRPTALKER_TARGETS = $(addprefix $(MRPCLIENT_DIR)/,$(MRPTALKER_OBJS)) 8 | 9 | IGBLIB_DIR = ../../lib/igb_avb/lib 10 | DAEMONS_DIR = ../../daemons 11 | 12 | CC ?= gcc 13 | OPT = -O2 -g 14 | WARN = -Wall -Wextra -Wno-parentheses 15 | CFLAGS = $(OPT) $(WARN) -std=gnu99 16 | CPPFLAGS = -I$(IGBLIB_DIR) -I$(DAEMONS_DIR)/mrpd -I$(MRPCLIENT_DIR) -I$(AVBLIB_DIR) -I$(DAEMONS_DIR)/common 17 | LDLIBS = -ligb -lpci -lrt -pthread -ljack 18 | LDFLAGS = -L$(IGBLIB_DIR) 19 | 20 | .PHONY: all clean 21 | 22 | all: jackd_talker 23 | 24 | jackd_talker: jackd_talker.o jack.o $(MRPTALKER_TARGETS) $(AVBLIB_TARGETS) 25 | 26 | jack.o: jack.c jack.h defines.h 27 | 28 | jackd_talker.o: jackd_talker.c defines.h jack.h 29 | 30 | $(AVBLIB_DIR)/%.o: $(AVBLIB_DIR)/%.h $(AVBLIB_DIR)/%.c 31 | make -C $(AVBLIB_DIR) $@ 32 | 33 | $(MRPCLIENT_DIR)/%.o: $(MRPCLIENT_DIR)/%.c $(MRPCLIENT_DIR)/%.h 34 | make -C $(MRPCLIENT_DIR) $@ 35 | 36 | %: %.o 37 | $(CC) $(LDFLAGS) $^ $(LDLIBS) -o $@ 38 | 39 | clean: 40 | $(RM) jackd_talker 41 | $(RM) `find . -name "*~" -o -name "*.[oa]" -o -name "\#*\#" -o -name TAGS -o -name core -o -name "*.orig"` 42 | -------------------------------------------------------------------------------- /examples/jackd-talker/defines.h: -------------------------------------------------------------------------------- 1 | #ifndef _DEFINES_H 2 | #define _DEFINES_H 3 | 4 | 5 | #define SAMPLES_PER_FRAME 6 6 | #define SAMPLE_SIZE 4 7 | #define CHANNELS 2 8 | 9 | #endif /* _DEFINES_H */ 10 | -------------------------------------------------------------------------------- /examples/jackd-talker/jack.h: -------------------------------------------------------------------------------- 1 | #ifndef _AVB_JACK_H 2 | #define _AVB_JACK_H 3 | 4 | #define DEFAULT_RINGBUFFER_SIZE 32768 5 | extern struct mrp_talker_ctx *ctx; 6 | 7 | /* Prototypes */ 8 | jack_client_t* init_jack(struct mrp_talker_ctx *ctx); 9 | void stop_jack(jack_client_t* client); 10 | 11 | #endif /* _AVB_JACK_H */ 12 | -------------------------------------------------------------------------------- /examples/live_stream/Makefile: -------------------------------------------------------------------------------- 1 | AVBLIB_DIR = ../../lib/common 2 | AVBLIB_OBJS = avb_avtp.o avb_gptp.o avb_igb.o 3 | AVBLIB_TARGETS = $(addprefix $(AVBLIB_DIR)/,$(AVBLIB_OBJS)) 4 | 5 | MRPCLIENT_DIR = ../common 6 | MRPTALKER_OBJS = talker_mrp_client.o 7 | MRPTALKER_TARGETS = $(addprefix $(MRPCLIENT_DIR)/,$(MRPTALKER_OBJS)) 8 | MRPLISTENER_OBJS = listener_mrp_client.o 9 | MRPLISTENER_TARGETS = $(addprefix $(MRPCLIENT_DIR)/,$(MRPLISTENER_OBJS)) 10 | 11 | IGBLIB_DIR = ../../lib/igb_avb/lib 12 | DAEMONS_DIR = ../../daemons 13 | 14 | CC?=gcc 15 | OPT=-O2 -g 16 | WARN=-Wall -Wextra -Wno-parentheses 17 | CFLAGS=$(OPT) $(WARN) 18 | CPPFLAGS=-I$(IGBLIB_DIR) -I$(DAEMONS_DIR)/mrpd -I$(MRPCLIENT_DIR) -I$(AVBLIB_DIR) -I$(DAEMONS_DIR)/common 19 | LDLIBS=-ligb -lpci -lrt -lpthread 20 | LDFLAGS=-L$(IGBLIB_DIR) 21 | 22 | .PHONY: all clean 23 | 24 | all: talker listener 25 | 26 | talker: talker.o $(MRPTALKER_TARGETS) $(AVBLIB_TARGETS) 27 | 28 | talker.o: talker.c 29 | 30 | listener: listener.o $(MRPLISTENER_TARGETS) $(AVBLIB_TARGETS) 31 | 32 | listener.o: listener.c 33 | 34 | $(AVBLIB_DIR)/%.o: $(AVBLIB_DIR)/%.h $(AVBLIB_DIR)/%.c 35 | make -C $(AVBLIB_DIR) $@ 36 | 37 | $(MRPCLIENT_DIR)/%.o: $(MRPCLIENT_DIR)/%.c $(MRPCLIENT_DIR)/%.h 38 | make -C $(MRPCLIENT_DIR) $@ 39 | 40 | %: %.o 41 | $(CC) $(LDFLAGS) $^ $(LDLIBS) $(EXTRA_FLAGS) -o $@ 42 | 43 | clean: 44 | $(RM) talker listener 45 | $(RM) *.o *~ *.rej *.orig 46 | -------------------------------------------------------------------------------- /examples/mrp_client/Makefile: -------------------------------------------------------------------------------- 1 | OPT=-O2 2 | CFLAGS=$(OPT) -Wall -Wextra -Wno-parentheses -ggdb 3 | 4 | ifeq ($(ARCH),arm) 5 | CC?=arm-none-linux-gnueabi-gcc 6 | else 7 | CC?=gcc 8 | endif 9 | #INCFLAGS=-I../../lib/igb 10 | #LDLIBS=-ligb -lpci -lz -pthread 11 | #LDFLAGS=-L../../lib/igb 12 | 13 | all: mrpq mrpl mrpValidate 14 | 15 | mrpl: mrpl.o mrpdclient.o 16 | 17 | mrpq: mrpq.o mrpdclient.o 18 | 19 | mrpValidate: mrpValidate.o mrpdclient.o 20 | 21 | mrpl.o: mrpl.c mrpdclient.h ../../daemons/mrpd/mrpd.h 22 | $(CC) -c $(INCFLAGS) -I../../daemons/mrpd $(CFLAGS) mrpl.c 23 | 24 | mrpq.o: mrpq.c mrpdclient.h ../../daemons/mrpd/mrpd.h 25 | $(CC) -c $(INCFLAGS) -I../../daemons/mrpd $(CFLAGS) mrpq.c 26 | 27 | mrpValidate.o: mrpValidate.c mrpdclient.h ../../daemons/mrpd/mrpd.h 28 | $(CC) -c $(INCFLAGS) -I../../daemons/mrpd $(CFLAGS) mrpValidate.c 29 | 30 | mrpdclient.o: mrpdclient.c mrpdclient.h mrpdhelper.h 31 | $(CC) -c $(INCFLAGS) -I../../daemons/mrpd $(CFLAGS) mrpdclient.c 32 | 33 | %: %.o 34 | $(CC) $(LDFLAGS) $^ $(LDLIBS) -o $@ 35 | 36 | clean: 37 | $(RM) mrpl mrpq mrpValidate 38 | $(RM) `find . -name "*~" -o -name "*.[oa]" -o -name "\#*\#" -o -name TAGS -o -name core -o -name "*.orig"` 39 | 40 | -------------------------------------------------------------------------------- /examples/mrp_client/mrpdclient.h: -------------------------------------------------------------------------------- 1 | /****************************************************************************** 2 | 3 | Copyright (c) 2012, Intel Corporation 4 | Copyright (c) 2012, AudioScience, Inc 5 | All rights reserved. 6 | 7 | Redistribution and use in source and binary forms, with or without 8 | modification, are permitted provided that the following conditions are met: 9 | 10 | 1. Redistributions of source code must retain the above copyright notice, 11 | this list of conditions and the following disclaimer. 12 | 13 | 2. Redistributions in binary form must reproduce the above copyright 14 | notice, this list of conditions and the following disclaimer in the 15 | documentation and/or other materials provided with the distribution. 16 | 17 | 3. Neither the name of the Intel Corporation nor the names of its 18 | contributors may be used to endorse or promote products derived from 19 | this software without specific prior written permission. 20 | 21 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 22 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 23 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 24 | ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 25 | LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 26 | CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 27 | SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 28 | INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 29 | CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 30 | ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 31 | POSSIBILITY OF SUCH DAMAGE. 32 | 33 | ******************************************************************************/ 34 | 35 | #ifndef _MRPDCLIENT_H_ 36 | #define _MRPDCLIENT_H_ 37 | 38 | #define MRPDCLIENT_MAX_MSG_SIZE 2000 39 | 40 | typedef int (*ptr_process_mrpd_msg) (char *buf, int buflen); 41 | 42 | int mrpdclient_init(void); 43 | int mrpdclient_recv(SOCKET mrpd_sock, ptr_process_mrpd_msg fn); 44 | int mrpdclient_sendto(SOCKET mrpd_sock, char *notify_data, int notify_len); 45 | int mrpdclient_close(SOCKET *mrpd_sock); 46 | 47 | #endif 48 | -------------------------------------------------------------------------------- /examples/osx/avb_viewer/AVB Viewer.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /examples/osx/avb_viewer/AVB Viewer.xcodeproj/project.xcworkspace/xcuserdata/jgildred.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PADL/OpenAvnu/8fa80d1de59fbef14c8d0e80d8d9a62679a6182a/examples/osx/avb_viewer/AVB Viewer.xcodeproj/project.xcworkspace/xcuserdata/jgildred.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /examples/osx/avb_viewer/AVB Viewer.xcodeproj/xcuserdata/jgildred.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | AVB Viewer.xcscheme 8 | 9 | orderHint 10 | 0 11 | 12 | 13 | SuppressBuildableAutocreation 14 | 15 | 674AAFCB182011BB00234149 16 | 17 | primary 18 | 19 | 20 | 674AAFEC182011BB00234149 21 | 22 | primary 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /examples/osx/avb_viewer/AVB Viewer/AVB Viewer-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | resourceUsage 6 | 7 | iokit.user-client 8 | 9 | IOAVB17221EntityDiscoveryUserClient 10 | 11 | 12 | CFBundleDevelopmentRegion 13 | en 14 | CFBundleExecutable 15 | ${EXECUTABLE_NAME} 16 | CFBundleIconFile 17 | Brick-Icons 18 | CFBundleIdentifier 19 | avbio.${PRODUCT_NAME:rfc1034identifier} 20 | CFBundleInfoDictionaryVersion 21 | 6.0 22 | CFBundleName 23 | ${PRODUCT_NAME} 24 | CFBundlePackageType 25 | APPL 26 | CFBundleShortVersionString 27 | 1.0 28 | CFBundleSignature 29 | ???? 30 | CFBundleVersion 31 | 1 32 | LSApplicationCategoryType 33 | public.app-category.utilities 34 | LSMinimumSystemVersion 35 | ${MACOSX_DEPLOYMENT_TARGET} 36 | NSHumanReadableCopyright 37 | Copyright © 2013 AVB.io (FloLink). All rights reserved. 38 | NSMainNibFile 39 | MainMenu 40 | NSPrincipalClass 41 | NSApplication 42 | 43 | 44 | -------------------------------------------------------------------------------- /examples/osx/avb_viewer/AVB Viewer/AVB Viewer-Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // Prefix header 3 | // 4 | // The contents of this file are implicitly included at the beginning of every source file. 5 | // 6 | 7 | #ifdef __OBJC__ 8 | #import 9 | #endif 10 | -------------------------------------------------------------------------------- /examples/osx/avb_viewer/AVB Viewer/AVB Viewer.entitlements: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /examples/osx/avb_viewer/AVB Viewer/AppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.h 3 | // AVB Viewer 4 | // 5 | // Created by John Gildred on 10/29/13. 6 | // Copyright (c) 2013 AVB.io. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface AppDelegate : NSObject 12 | 13 | @property (assign) IBOutlet NSWindow *window; 14 | @property (weak) IBOutlet NSSplitView *splitview; 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /examples/osx/avb_viewer/AVB Viewer/AppDelegate.m: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.m 3 | // AVB Viewer 4 | // 5 | // Created by John Gildred on 10/29/13. 6 | // Copyright (c) 2013 AVB.io. All rights reserved. 7 | // 8 | 9 | #import "AppDelegate.h" 10 | 11 | @implementation AppDelegate 12 | 13 | - (void)applicationDidFinishLaunching:(NSNotification *)aNotification 14 | { 15 | [self.splitview setPosition:250 ofDividerAtIndex:0]; 16 | } 17 | 18 | - (BOOL)applicationShouldTerminateAfterLastWindowClosed:(NSApplication*)sender 19 | { 20 | return YES; 21 | } 22 | 23 | @end 24 | -------------------------------------------------------------------------------- /examples/osx/avb_viewer/AVB Viewer/AvbDevice.h: -------------------------------------------------------------------------------- 1 | // 2 | // AvbDevice.h 3 | // AVB Viewer 4 | // 5 | // Created by John Gildred on 10/29/13. 6 | // Copyright (c) 2013 AVB.io. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | 12 | @interface AvbDevice : NSObject 13 | 14 | @property (copy) NSString *name; 15 | @property (copy) NSImage *image; 16 | @property (copy) NSString *deviceId; 17 | @property (copy) NSMutableArray *macAddresses; 18 | @property (copy) NSString *modelId; 19 | @property (copy) NSString *vendorId; 20 | @property BOOL isLocal; 21 | @property BOOL isTalker; 22 | @property BOOL isListener; 23 | @property BOOL isController; 24 | @property (copy) NSString *talkerType; 25 | @property (copy) NSString *listenerType; 26 | @property int talkerSources; 27 | @property int listenerSinks; 28 | @property (readonly, copy) NSMutableArray *children; 29 | 30 | - (id)initWithId:(NSString *)deviceId; 31 | - (id)initWithEntity:(AVB17221Entity *)entity; 32 | - (void)updateFromEntity:(AVB17221Entity *)entity; 33 | - (NSString *)vendorFromEntity:(AVB17221Entity *)entity; 34 | - (void)addChild:(AvbDevice *)device; 35 | - (void)removeChild:(AvbDevice *)device; 36 | 37 | @end 38 | -------------------------------------------------------------------------------- /examples/osx/avb_viewer/AVB Viewer/Brick-Icons.icns: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PADL/OpenAvnu/8fa80d1de59fbef14c8d0e80d8d9a62679a6182a/examples/osx/avb_viewer/AVB Viewer/Brick-Icons.icns -------------------------------------------------------------------------------- /examples/osx/avb_viewer/AVB Viewer/Images.xcassets/AppIcon-1.appiconset/Brick-Icons128x128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PADL/OpenAvnu/8fa80d1de59fbef14c8d0e80d8d9a62679a6182a/examples/osx/avb_viewer/AVB Viewer/Images.xcassets/AppIcon-1.appiconset/Brick-Icons128x128.png -------------------------------------------------------------------------------- /examples/osx/avb_viewer/AVB Viewer/Images.xcassets/AppIcon-1.appiconset/Brick-Icons128x128@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PADL/OpenAvnu/8fa80d1de59fbef14c8d0e80d8d9a62679a6182a/examples/osx/avb_viewer/AVB Viewer/Images.xcassets/AppIcon-1.appiconset/Brick-Icons128x128@2x.png -------------------------------------------------------------------------------- /examples/osx/avb_viewer/AVB Viewer/Images.xcassets/AppIcon-1.appiconset/Brick-Icons16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PADL/OpenAvnu/8fa80d1de59fbef14c8d0e80d8d9a62679a6182a/examples/osx/avb_viewer/AVB Viewer/Images.xcassets/AppIcon-1.appiconset/Brick-Icons16x16.png -------------------------------------------------------------------------------- /examples/osx/avb_viewer/AVB Viewer/Images.xcassets/AppIcon-1.appiconset/Brick-Icons16x16@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PADL/OpenAvnu/8fa80d1de59fbef14c8d0e80d8d9a62679a6182a/examples/osx/avb_viewer/AVB Viewer/Images.xcassets/AppIcon-1.appiconset/Brick-Icons16x16@2x.png -------------------------------------------------------------------------------- /examples/osx/avb_viewer/AVB Viewer/Images.xcassets/AppIcon-1.appiconset/Brick-Icons256x256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PADL/OpenAvnu/8fa80d1de59fbef14c8d0e80d8d9a62679a6182a/examples/osx/avb_viewer/AVB Viewer/Images.xcassets/AppIcon-1.appiconset/Brick-Icons256x256.png -------------------------------------------------------------------------------- /examples/osx/avb_viewer/AVB Viewer/Images.xcassets/AppIcon-1.appiconset/Brick-Icons256x256@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PADL/OpenAvnu/8fa80d1de59fbef14c8d0e80d8d9a62679a6182a/examples/osx/avb_viewer/AVB Viewer/Images.xcassets/AppIcon-1.appiconset/Brick-Icons256x256@2x.png -------------------------------------------------------------------------------- /examples/osx/avb_viewer/AVB Viewer/Images.xcassets/AppIcon-1.appiconset/Brick-Icons32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PADL/OpenAvnu/8fa80d1de59fbef14c8d0e80d8d9a62679a6182a/examples/osx/avb_viewer/AVB Viewer/Images.xcassets/AppIcon-1.appiconset/Brick-Icons32x32.png -------------------------------------------------------------------------------- /examples/osx/avb_viewer/AVB Viewer/Images.xcassets/AppIcon-1.appiconset/Brick-Icons32x32@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PADL/OpenAvnu/8fa80d1de59fbef14c8d0e80d8d9a62679a6182a/examples/osx/avb_viewer/AVB Viewer/Images.xcassets/AppIcon-1.appiconset/Brick-Icons32x32@2x.png -------------------------------------------------------------------------------- /examples/osx/avb_viewer/AVB Viewer/Images.xcassets/AppIcon-1.appiconset/Brick-Icons512x512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PADL/OpenAvnu/8fa80d1de59fbef14c8d0e80d8d9a62679a6182a/examples/osx/avb_viewer/AVB Viewer/Images.xcassets/AppIcon-1.appiconset/Brick-Icons512x512.png -------------------------------------------------------------------------------- /examples/osx/avb_viewer/AVB Viewer/Images.xcassets/AppIcon-1.appiconset/Brick-Icons512x512@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PADL/OpenAvnu/8fa80d1de59fbef14c8d0e80d8d9a62679a6182a/examples/osx/avb_viewer/AVB Viewer/Images.xcassets/AppIcon-1.appiconset/Brick-Icons512x512@2x.png -------------------------------------------------------------------------------- /examples/osx/avb_viewer/AVB Viewer/Images.xcassets/AppIcon-1.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "size" : "16x16", 5 | "idiom" : "mac", 6 | "filename" : "Brick-Icons16x16.png", 7 | "scale" : "1x" 8 | }, 9 | { 10 | "size" : "16x16", 11 | "idiom" : "mac", 12 | "filename" : "Brick-Icons16x16@2x.png", 13 | "scale" : "2x" 14 | }, 15 | { 16 | "size" : "32x32", 17 | "idiom" : "mac", 18 | "filename" : "Brick-Icons32x32.png", 19 | "scale" : "1x" 20 | }, 21 | { 22 | "size" : "32x32", 23 | "idiom" : "mac", 24 | "filename" : "Brick-Icons32x32@2x.png", 25 | "scale" : "2x" 26 | }, 27 | { 28 | "size" : "128x128", 29 | "idiom" : "mac", 30 | "filename" : "Brick-Icons128x128.png", 31 | "scale" : "1x" 32 | }, 33 | { 34 | "size" : "128x128", 35 | "idiom" : "mac", 36 | "filename" : "Brick-Icons128x128@2x.png", 37 | "scale" : "2x" 38 | }, 39 | { 40 | "size" : "256x256", 41 | "idiom" : "mac", 42 | "filename" : "Brick-Icons256x256.png", 43 | "scale" : "1x" 44 | }, 45 | { 46 | "size" : "256x256", 47 | "idiom" : "mac", 48 | "filename" : "Brick-Icons256x256@2x.png", 49 | "scale" : "2x" 50 | }, 51 | { 52 | "size" : "512x512", 53 | "idiom" : "mac", 54 | "filename" : "Brick-Icons512x512.png", 55 | "scale" : "1x" 56 | }, 57 | { 58 | "size" : "512x512", 59 | "idiom" : "mac", 60 | "filename" : "Brick-Icons512x512@2x.png", 61 | "scale" : "2x" 62 | } 63 | ], 64 | "info" : { 65 | "version" : 1, 66 | "author" : "xcode" 67 | } 68 | } -------------------------------------------------------------------------------- /examples/osx/avb_viewer/AVB Viewer/Images.xcassets/AppIcon-2.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "mac", 5 | "size" : "16x16", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "mac", 10 | "size" : "16x16", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "mac", 15 | "size" : "32x32", 16 | "scale" : "1x" 17 | }, 18 | { 19 | "idiom" : "mac", 20 | "size" : "32x32", 21 | "scale" : "2x" 22 | }, 23 | { 24 | "idiom" : "mac", 25 | "size" : "128x128", 26 | "scale" : "1x" 27 | }, 28 | { 29 | "idiom" : "mac", 30 | "size" : "128x128", 31 | "scale" : "2x" 32 | }, 33 | { 34 | "idiom" : "mac", 35 | "size" : "256x256", 36 | "scale" : "1x" 37 | }, 38 | { 39 | "idiom" : "mac", 40 | "size" : "256x256", 41 | "scale" : "2x" 42 | }, 43 | { 44 | "idiom" : "mac", 45 | "size" : "512x512", 46 | "scale" : "1x" 47 | }, 48 | { 49 | "idiom" : "mac", 50 | "size" : "512x512", 51 | "scale" : "2x" 52 | } 53 | ], 54 | "info" : { 55 | "version" : 1, 56 | "author" : "xcode" 57 | } 58 | } -------------------------------------------------------------------------------- /examples/osx/avb_viewer/AVB Viewer/Images.xcassets/AppIcon.appiconset/Brick-Icons128x128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PADL/OpenAvnu/8fa80d1de59fbef14c8d0e80d8d9a62679a6182a/examples/osx/avb_viewer/AVB Viewer/Images.xcassets/AppIcon.appiconset/Brick-Icons128x128.png -------------------------------------------------------------------------------- /examples/osx/avb_viewer/AVB Viewer/Images.xcassets/AppIcon.appiconset/Brick-Icons128x128@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PADL/OpenAvnu/8fa80d1de59fbef14c8d0e80d8d9a62679a6182a/examples/osx/avb_viewer/AVB Viewer/Images.xcassets/AppIcon.appiconset/Brick-Icons128x128@2x.png -------------------------------------------------------------------------------- /examples/osx/avb_viewer/AVB Viewer/Images.xcassets/AppIcon.appiconset/Brick-Icons16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PADL/OpenAvnu/8fa80d1de59fbef14c8d0e80d8d9a62679a6182a/examples/osx/avb_viewer/AVB Viewer/Images.xcassets/AppIcon.appiconset/Brick-Icons16x16.png -------------------------------------------------------------------------------- /examples/osx/avb_viewer/AVB Viewer/Images.xcassets/AppIcon.appiconset/Brick-Icons16x16@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PADL/OpenAvnu/8fa80d1de59fbef14c8d0e80d8d9a62679a6182a/examples/osx/avb_viewer/AVB Viewer/Images.xcassets/AppIcon.appiconset/Brick-Icons16x16@2x.png -------------------------------------------------------------------------------- /examples/osx/avb_viewer/AVB Viewer/Images.xcassets/AppIcon.appiconset/Brick-Icons256x256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PADL/OpenAvnu/8fa80d1de59fbef14c8d0e80d8d9a62679a6182a/examples/osx/avb_viewer/AVB Viewer/Images.xcassets/AppIcon.appiconset/Brick-Icons256x256.png -------------------------------------------------------------------------------- /examples/osx/avb_viewer/AVB Viewer/Images.xcassets/AppIcon.appiconset/Brick-Icons256x256@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PADL/OpenAvnu/8fa80d1de59fbef14c8d0e80d8d9a62679a6182a/examples/osx/avb_viewer/AVB Viewer/Images.xcassets/AppIcon.appiconset/Brick-Icons256x256@2x.png -------------------------------------------------------------------------------- /examples/osx/avb_viewer/AVB Viewer/Images.xcassets/AppIcon.appiconset/Brick-Icons32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PADL/OpenAvnu/8fa80d1de59fbef14c8d0e80d8d9a62679a6182a/examples/osx/avb_viewer/AVB Viewer/Images.xcassets/AppIcon.appiconset/Brick-Icons32x32.png -------------------------------------------------------------------------------- /examples/osx/avb_viewer/AVB Viewer/Images.xcassets/AppIcon.appiconset/Brick-Icons32x32@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PADL/OpenAvnu/8fa80d1de59fbef14c8d0e80d8d9a62679a6182a/examples/osx/avb_viewer/AVB Viewer/Images.xcassets/AppIcon.appiconset/Brick-Icons32x32@2x.png -------------------------------------------------------------------------------- /examples/osx/avb_viewer/AVB Viewer/Images.xcassets/AppIcon.appiconset/Brick-Icons512x512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PADL/OpenAvnu/8fa80d1de59fbef14c8d0e80d8d9a62679a6182a/examples/osx/avb_viewer/AVB Viewer/Images.xcassets/AppIcon.appiconset/Brick-Icons512x512.png -------------------------------------------------------------------------------- /examples/osx/avb_viewer/AVB Viewer/Images.xcassets/AppIcon.appiconset/Brick-Icons512x512@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PADL/OpenAvnu/8fa80d1de59fbef14c8d0e80d8d9a62679a6182a/examples/osx/avb_viewer/AVB Viewer/Images.xcassets/AppIcon.appiconset/Brick-Icons512x512@2x.png -------------------------------------------------------------------------------- /examples/osx/avb_viewer/AVB Viewer/Images.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "size" : "16x16", 5 | "idiom" : "mac", 6 | "filename" : "Brick-Icons16x16.png", 7 | "scale" : "1x" 8 | }, 9 | { 10 | "size" : "16x16", 11 | "idiom" : "mac", 12 | "filename" : "Brick-Icons16x16@2x.png", 13 | "scale" : "2x" 14 | }, 15 | { 16 | "size" : "32x32", 17 | "idiom" : "mac", 18 | "filename" : "Brick-Icons32x32.png", 19 | "scale" : "1x" 20 | }, 21 | { 22 | "size" : "32x32", 23 | "idiom" : "mac", 24 | "filename" : "Brick-Icons32x32@2x.png", 25 | "scale" : "2x" 26 | }, 27 | { 28 | "size" : "128x128", 29 | "idiom" : "mac", 30 | "filename" : "Brick-Icons128x128.png", 31 | "scale" : "1x" 32 | }, 33 | { 34 | "size" : "128x128", 35 | "idiom" : "mac", 36 | "filename" : "Brick-Icons128x128@2x.png", 37 | "scale" : "2x" 38 | }, 39 | { 40 | "size" : "256x256", 41 | "idiom" : "mac", 42 | "filename" : "Brick-Icons256x256.png", 43 | "scale" : "1x" 44 | }, 45 | { 46 | "size" : "256x256", 47 | "idiom" : "mac", 48 | "filename" : "Brick-Icons256x256@2x.png", 49 | "scale" : "2x" 50 | }, 51 | { 52 | "size" : "512x512", 53 | "idiom" : "mac", 54 | "filename" : "Brick-Icons512x512.png", 55 | "scale" : "1x" 56 | }, 57 | { 58 | "size" : "512x512", 59 | "idiom" : "mac", 60 | "filename" : "Brick-Icons512x512@2x.png", 61 | "scale" : "2x" 62 | } 63 | ], 64 | "info" : { 65 | "version" : 1, 66 | "author" : "xcode" 67 | } 68 | } -------------------------------------------------------------------------------- /examples/osx/avb_viewer/AVB Viewer/Images.xcassets/xmos.iconset/icon_128x128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PADL/OpenAvnu/8fa80d1de59fbef14c8d0e80d8d9a62679a6182a/examples/osx/avb_viewer/AVB Viewer/Images.xcassets/xmos.iconset/icon_128x128.png -------------------------------------------------------------------------------- /examples/osx/avb_viewer/AVB Viewer/Images.xcassets/xmos.iconset/icon_128x128@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PADL/OpenAvnu/8fa80d1de59fbef14c8d0e80d8d9a62679a6182a/examples/osx/avb_viewer/AVB Viewer/Images.xcassets/xmos.iconset/icon_128x128@2x.png -------------------------------------------------------------------------------- /examples/osx/avb_viewer/AVB Viewer/Images.xcassets/xmos.iconset/icon_16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PADL/OpenAvnu/8fa80d1de59fbef14c8d0e80d8d9a62679a6182a/examples/osx/avb_viewer/AVB Viewer/Images.xcassets/xmos.iconset/icon_16x16.png -------------------------------------------------------------------------------- /examples/osx/avb_viewer/AVB Viewer/Images.xcassets/xmos.iconset/icon_16x16@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PADL/OpenAvnu/8fa80d1de59fbef14c8d0e80d8d9a62679a6182a/examples/osx/avb_viewer/AVB Viewer/Images.xcassets/xmos.iconset/icon_16x16@2x.png -------------------------------------------------------------------------------- /examples/osx/avb_viewer/AVB Viewer/Images.xcassets/xmos.iconset/icon_256x256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PADL/OpenAvnu/8fa80d1de59fbef14c8d0e80d8d9a62679a6182a/examples/osx/avb_viewer/AVB Viewer/Images.xcassets/xmos.iconset/icon_256x256.png -------------------------------------------------------------------------------- /examples/osx/avb_viewer/AVB Viewer/Images.xcassets/xmos.iconset/icon_256x256@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PADL/OpenAvnu/8fa80d1de59fbef14c8d0e80d8d9a62679a6182a/examples/osx/avb_viewer/AVB Viewer/Images.xcassets/xmos.iconset/icon_256x256@2x.png -------------------------------------------------------------------------------- /examples/osx/avb_viewer/AVB Viewer/Images.xcassets/xmos.iconset/icon_32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PADL/OpenAvnu/8fa80d1de59fbef14c8d0e80d8d9a62679a6182a/examples/osx/avb_viewer/AVB Viewer/Images.xcassets/xmos.iconset/icon_32x32.png -------------------------------------------------------------------------------- /examples/osx/avb_viewer/AVB Viewer/Images.xcassets/xmos.iconset/icon_32x32@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PADL/OpenAvnu/8fa80d1de59fbef14c8d0e80d8d9a62679a6182a/examples/osx/avb_viewer/AVB Viewer/Images.xcassets/xmos.iconset/icon_32x32@2x.png -------------------------------------------------------------------------------- /examples/osx/avb_viewer/AVB Viewer/Images.xcassets/xmos.iconset/icon_512x512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PADL/OpenAvnu/8fa80d1de59fbef14c8d0e80d8d9a62679a6182a/examples/osx/avb_viewer/AVB Viewer/Images.xcassets/xmos.iconset/icon_512x512.png -------------------------------------------------------------------------------- /examples/osx/avb_viewer/AVB Viewer/Images.xcassets/xmos.iconset/icon_512x512@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PADL/OpenAvnu/8fa80d1de59fbef14c8d0e80d8d9a62679a6182a/examples/osx/avb_viewer/AVB Viewer/Images.xcassets/xmos.iconset/icon_512x512@2x.png -------------------------------------------------------------------------------- /examples/osx/avb_viewer/AVB Viewer/OutlineViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // OutlineViewController.h 3 | // AVB Viewer 4 | // 5 | // Created by John Gildred on 10/29/13. 6 | // Copyright (c) 2013 AVB.io. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | #import "AvbDevice.h" 12 | 13 | @interface OutlineViewController : NSObject 14 | 15 | @property (weak) IBOutlet NSOutlineView *outlineView; 16 | @property (copy) NSMutableArray *avbDevices; 17 | @property (copy) AVBInterface *avbInterface; 18 | 19 | @property (weak) IBOutlet NSImageView *detailsImage; 20 | @property (weak) IBOutlet NSTextField *detailsName; 21 | @property (weak) IBOutlet NSTextField *detailsDeviceId; 22 | @property (weak) IBOutlet NSTextField *detailsModelId; 23 | @property (weak) IBOutlet NSTextField *detailsVendorId; 24 | @property (weak) IBOutlet NSTextField *detailsIsLocal; 25 | @property (weak) IBOutlet NSTextField *detailsIsTalker; 26 | @property (weak) IBOutlet NSTextField *detailsIsListener; 27 | @property (weak) IBOutlet NSTextField *detailsIsController; 28 | @property (weak) IBOutlet NSTextField *detailsTalkerStreams; 29 | @property (weak) IBOutlet NSTextField *detailsListenerStreams; 30 | @property (weak) IBOutlet NSTextField *detailsMacAddresses; 31 | @property (weak) IBOutlet NSTextField *detailsTalkerType; 32 | @property (weak) IBOutlet NSTextField *detailsListenerType; 33 | 34 | - (void)updateDeviceList:(NSNotification *)notification; 35 | - (IBAction)add:(id)sender; 36 | - (IBAction)remove:(id)sender; 37 | - (IBAction)refresh:(id)sender; 38 | - (IBAction)changedSelection:(id)sender; 39 | 40 | @end 41 | -------------------------------------------------------------------------------- /examples/osx/avb_viewer/AVB Viewer/en.lproj/Credits.rtf: -------------------------------------------------------------------------------- 1 | {\rtf1\ansi\ansicpg1252\cocoartf1265 2 | {\fonttbl\f0\fswiss\fcharset0 Helvetica;} 3 | {\colortbl;\red255\green255\blue255;} 4 | \vieww9600\viewh8400\viewkind0 5 | \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc 6 | 7 | \f0\fs24 \cf0 \ 8 | This utility is provided free of charge\ 9 | to the public by AVB.io.\ 10 | \ 11 | } -------------------------------------------------------------------------------- /examples/osx/avb_viewer/AVB Viewer/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | -------------------------------------------------------------------------------- /examples/osx/avb_viewer/AVB Viewer/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // AVB Viewer 4 | // 5 | // Created by John Gildred on 10/29/13. 6 | // Copyright (c) 2013 AVB.io. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | int main(int argc, const char * argv[]) 12 | { 13 | return NSApplicationMain(argc, argv); 14 | } 15 | -------------------------------------------------------------------------------- /examples/osx/avb_viewer/AVB ViewerTests/AVB ViewerTests-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | avbio.${PRODUCT_NAME:rfc1034identifier} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundlePackageType 14 | BNDL 15 | CFBundleShortVersionString 16 | 1.0 17 | CFBundleSignature 18 | ???? 19 | CFBundleVersion 20 | 1 21 | 22 | 23 | -------------------------------------------------------------------------------- /examples/osx/avb_viewer/AVB ViewerTests/AVB_ViewerTests.m: -------------------------------------------------------------------------------- 1 | // 2 | // AVB_ViewerTests.m 3 | // AVB ViewerTests 4 | // 5 | // Created by John Gildred on 10/29/13. 6 | // Copyright (c) 2013 AVB.io. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface AVB_ViewerTests : XCTestCase 12 | 13 | @end 14 | 15 | @implementation AVB_ViewerTests 16 | 17 | - (void)setUp 18 | { 19 | [super setUp]; 20 | // Put setup code here. This method is called before the invocation of each test method in the class. 21 | } 22 | 23 | - (void)tearDown 24 | { 25 | // Put teardown code here. This method is called after the invocation of each test method in the class. 26 | [super tearDown]; 27 | } 28 | 29 | - (void)testExample 30 | { 31 | XCTFail(@"No implementation for \"%s\"", __PRETTY_FUNCTION__); 32 | } 33 | 34 | @end 35 | -------------------------------------------------------------------------------- /examples/osx/avb_viewer/AVB ViewerTests/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /examples/osx/avb_viewer/Brick-Icons.icns: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PADL/OpenAvnu/8fa80d1de59fbef14c8d0e80d8d9a62679a6182a/examples/osx/avb_viewer/Brick-Icons.icns -------------------------------------------------------------------------------- /examples/simple_listener/Makefile: -------------------------------------------------------------------------------- 1 | MRPCLIENT_DIR = ../common 2 | MRPLISTENER_OBJS = listener_mrp_client.o 3 | MRPLISTENER_TARGETS = $(addprefix $(MRPCLIENT_DIR)/,$(MRPLISTENER_OBJS)) 4 | 5 | DAEMONS_DIR = ../../daemons 6 | 7 | CC ?= gcc 8 | OPT = -O2 -g 9 | WARN=-Wall -Wextra -Wno-parentheses 10 | CFLAGS=$(OPT) $(WARN) 11 | CPPFLAGS = -I$(DAEMONS_DIR)/mrpd -I$(MRPCLIENT_DIR) -I$(DAEMONS_DIR)/common 12 | LDLIBS = -lpcap -lsndfile -pthread 13 | 14 | all: simple_listener 15 | 16 | simple_listener: simple_listener.o $(MRPLISTENER_TARGETS) 17 | 18 | simple_listener.o: simple_listener.c 19 | 20 | $(MRPCLIENT_DIR)/%.o: $(MRPCLIENT_DIR)/%.c $(MRPCLIENT_DIR)/%.h 21 | make -C $(MRPCLIENT_DIR) $@ 22 | 23 | %: %.o 24 | $(CC) $(LDFLAGS) $^ $(LDLIBS) -o $@ 25 | 26 | clean: 27 | $(RM) simple_listener 28 | $(RM) `find . -name "*~" -o -name "*.[oa]" -o -name "\#*\#" -o -name TAGS -o -name core -o -name "*.orig"` 29 | -------------------------------------------------------------------------------- /examples/simple_listener/README: -------------------------------------------------------------------------------- 1 | Simple libpcap-based AVB listener 2 | 3 | Dumps a stereo AVB audio stream to a wav file. 4 | 5 | Requirements: 6 | 7 | * running mrpd 8 | * libpcap 9 | 10 | 11 | Can be tested against simple_talker. 12 | -------------------------------------------------------------------------------- /examples/simple_rx/Makefile: -------------------------------------------------------------------------------- 1 | 2 | MRPCLIENT_DIR = ../common 3 | MRPLISTENER_OBJS = listener_mrp_client.o 4 | MRPLISTENER_TARGETS = $(addprefix $(MRPCLIENT_DIR)/,$(MRPLISTENER_OBJS)) 5 | 6 | IGBLIB_DIR = ../../lib/igb_avb/lib 7 | IGBLIB_OBJS = igb.o 8 | IGBLIB_TARGETS = $(addprefix $(IGBLIB_DIR)/,$(IGBLIB_OBJS)) 9 | 10 | DAEMONS_DIR = ../../daemons 11 | 12 | CC ?= gcc 13 | OPT = -O2 -g 14 | WARN=-Wall -Wextra -Wno-parentheses 15 | CFLAGS=$(OPT) $(WARN) 16 | CPPFLAGS = -I$(DAEMONS_DIR)/mrpd -I$(MRPCLIENT_DIR) -I$(DAEMONS_DIR)/common -I$(IGBLIB_DIR) 17 | # GLIBC versions starting with 2.17 don't need -lrt anymore 18 | LDLIBS = -lpcap -lsndfile -pthread -lpci -lrt 19 | 20 | all: simple_rx 21 | 22 | simple_rx: simple_rx.o $(MRPLISTENER_TARGETS) $(IGBLIB_TARGETS) 23 | 24 | simple_rx.o: simple_rx.c 25 | 26 | $(MRPCLIENT_DIR)/%.o: $(MRPCLIENT_DIR)/%.c $(MRPCLIENT_DIR)/%.h 27 | make -C $(MRPCLIENT_DIR) $@ 28 | 29 | $(IGBLIB_DIR)/%.o: $(IGBLIB_DIR)/%.c $(IGBLIB_DIR)/%.h 30 | make -C $(IGBLIB_DIR) $@ 31 | 32 | %: %.o 33 | $(CC) $(LDFLAGS) $^ $(LDLIBS) -o $@ 34 | 35 | clean: 36 | $(RM) simple_rx 37 | $(RM) `find . -name "*~" -o -name "*.[oa]" -o -name "\#*\#" -o -name TAGS -o -name core -o -name "*.orig"` 38 | -------------------------------------------------------------------------------- /examples/simple_rx/README: -------------------------------------------------------------------------------- 1 | EXAMPLE APPLICATIONS 2 | 3 | The 'simple_rx' application illustrates the various steps to receive packets 4 | directly into a user-space AVB application. 5 | 6 | The simple rx application requires root permissions to execute and 7 | attach to the driver. 8 | sudo ./simple_rx -i enp3s0 -f out.wav 9 | 10 | To exit the app, hit Ctrl-C. The application gracefully tears down 11 | the connection to the driver. If the application unexpectedly aborts the 12 | kernel-mode driver also reclaims the various buffers and attempts to clean up. 13 | The application should be able to re-initialize and use the transmit queues 14 | without restarting the driver. 15 | 16 | To build the application, you need to have the pciutils library 17 | installed. the latest version can be downloaded from: 18 | 19 | < ftp://ftp.kernel.org/pub/software/utils/pciutils/ >. 20 | 21 | Download and extract the library, and run 'make;make install;make install-lib'. 22 | 23 | -------------------------------------------------------------------------------- /examples/simple_talker/Makefile: -------------------------------------------------------------------------------- 1 | AVBLIB_DIR = ../../lib/common 2 | AVBLIB_OBJS = avb_avtp.o avb_gptp.o avb_igb.o 3 | AVBLIB_TARGETS = $(addprefix $(AVBLIB_DIR)/,$(AVBLIB_OBJS)) 4 | 5 | MRPCLIENT_DIR = ../common 6 | MRPTALKER_OBJS = talker_mrp_client.o 7 | MRPTALKER_TARGETS = $(addprefix $(MRPCLIENT_DIR)/,$(MRPTALKER_OBJS)) 8 | 9 | IGBLIB_DIR = ../../lib/igb_avb/lib 10 | DAEMONS_DIR = ../../daemons 11 | 12 | CC?=gcc 13 | OPT=-O2 -g 14 | WARN=-Wall -Wextra -Wno-parentheses 15 | CFLAGS=$(OPT) $(WARN) 16 | CPPFLAGS=-I$(IGBLIB_DIR) -I$(DAEMONS_DIR)/mrpd -I$(MRPCLIENT_DIR) -I$(AVBLIB_DIR) -I$(DAEMONS_DIR)/common 17 | LDLIBS=-ligb -lpci -lrt -lm -pthread 18 | LDFLAGS=-L$(IGBLIB_DIR) 19 | 20 | .PHONY: all clean 21 | 22 | all: simple_talker 23 | 24 | simple_talker: simple_talker.o $(MRPTALKER_TARGETS) $(AVBLIB_TARGETS) 25 | 26 | simple_talker.o: simple_talker.c 27 | 28 | $(AVBLIB_DIR)/%.o: $(AVBLIB_DIR)/%.h $(AVBLIB_DIR)/%.c 29 | make -C $(AVBLIB_DIR) $@ 30 | 31 | $(MRPCLIENT_DIR)/%.o: $(MRPCLIENT_DIR)/%.c $(MRPCLIENT_DIR)/%.h 32 | make -C $(MRPCLIENT_DIR) $@ 33 | 34 | %: %.o 35 | $(CC) $(LDFLAGS) $^ $(LDLIBS) -o $@ 36 | 37 | clean: 38 | $(RM) simple_talker 39 | $(RM) `find . -name "*~" -o -name "*.[oa]" -o -name "\#*\#" -o -name TAGS -o -name core -o -name "*.orig"` 40 | -------------------------------------------------------------------------------- /examples/simple_talker/README: -------------------------------------------------------------------------------- 1 | EXAMPLE APPLICATIONS 2 | 3 | The 'simple_talker' application illustrates the various steps to publish a stream 4 | and streaming 1722/61883 audio frames after a listener connects. The audio 5 | itself is a simple sine wave. It has been tested with other vendors listeners 6 | at AVNu plug-fests. 7 | 8 | The simple talker application requires root permissions to execute and 9 | attach to the driver. 10 | sudo ./simple_talker 11 | 12 | To exit the app, hit Ctrl-C. The application gracefully tears down 13 | the connection to the driver. If the application unexpectedly aborts the 14 | kernel-mode driver also reclaims the various buffers and attempts to clean up. 15 | The application should be able to re-initialize and use the transmit queues 16 | without restarting the driver. 17 | 18 | Note this application requires using the provided gptp timesync daemon to 19 | provide the 802.1AS presentation times included in the 1722 frames. This 20 | application also requires the mrpd daemon to be running to detect and 21 | establish various stream reservation parameters. 22 | 23 | Lastly, to build the application, you need to have the pciutils library 24 | installed. the latest version can be downloaded from: 25 | 26 | < ftp://ftp.kernel.org/pub/software/utils/pciutils/ >. 27 | 28 | Download and extract the library, and run 'make;make install;make install-lib'. 29 | 30 | -------------------------------------------------------------------------------- /lib/avtp_pipeline/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required ( VERSION 2.6 ) 2 | set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/") 3 | project ( AVB ) 4 | 5 | # point to AVB SRC directory 6 | set ( AVB_SRC_DIR ${CMAKE_SOURCE_DIR} ) 7 | 8 | # point to HAL directory 9 | set ( AVB_HAL_DIR ${AVB_SRC_DIR}/platform/${OPENAVB_HAL} ) 10 | 11 | # point to OSAL directory 12 | set ( AVB_OSAL_DIR ${AVB_SRC_DIR}/platform/${OPENAVB_OSAL} ) 13 | 14 | # point to TCAL directory 15 | set ( AVB_TCAL_DIR ${AVB_SRC_DIR}/platform/platTCAL/${OPENAVB_TCAL} ) 16 | 17 | # Directory to install binaries to 18 | set ( AVB_INSTALL_DIR ${CMAKE_BINARY_DIR}/bin ) 19 | 20 | # CORE_TODO: There may be additional common CMakeLists.txt functionality that can be migrated out of the platform specific area. 21 | 22 | # CMake is happier when the CMakeLists.txt is in a top level directory working down. Therefore the platform specific CMakeLists.txt 23 | # is included here. The common CMake command uage will take this form below when run from a build directory that is at the same 24 | # directory level as the repo: 25 | # cmake -DCMAKE_TOOLCHAIN_FILE=..//platform//.cmake -DCMAKE_BUILD_TYPE=Release ../ 26 | # for example: 27 | # cmake -DCMAKE_TOOLCHAIN_FILE=../avbrepo/platform/Linux/x86_i210_linux.cmake -DCMAKE_BUILD_TYPE=Release ../avbrepo 28 | 29 | # Used to hold lists of source files from common code subdirectories 30 | SET (SRC_FILES "") 31 | 32 | # Suppress the policy warning when including a CMakeLists.txt file 33 | if(POLICY CMP0011) 34 | cmake_policy(SET CMP0011 OLD) 35 | endif(POLICY CMP0011) 36 | 37 | include(${AVB_OSAL_DIR}/CMakeLists.txt) 38 | 39 | 40 | 41 | -------------------------------------------------------------------------------- /lib/avtp_pipeline/LICENSE: -------------------------------------------------------------------------------- 1 | /************************************************************************************************************* 2 | Copyright (c) 2012-2015, Symphony Teleca Corporation, a Harman International Industries, Incorporated company 3 | Copyright (c) 2016-2017, Harman International Industries, Incorporated 4 | All rights reserved. 5 | 6 | Redistribution and use in source and binary forms, with or without 7 | modification, are permitted provided that the following conditions are met: 8 | 9 | 1. Redistributions of source code must retain the above copyright notice, this 10 | list of conditions and the following disclaimer. 11 | 2. Redistributions in binary form must reproduce the above copyright notice, 12 | this list of conditions and the following disclaimer in the documentation 13 | and/or other materials provided with the distribution. 14 | 15 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS LISTED "AS IS" AND 16 | ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 17 | WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 18 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS LISTED BE LIABLE FOR 19 | ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 20 | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 21 | LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 22 | ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 23 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 24 | SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25 | 26 | Attributions: The inih library portion of the source code is licensed from 27 | Brush Technology and Ben Hoyt - Copyright (c) 2009, Brush Technology and Copyright (c) 2009, Ben Hoyt. 28 | Complete license and copyright information can be found at 29 | https://github.com/benhoyt/inih/commit/74d2ca064fb293bc60a77b0bd068075b293cf175. 30 | *************************************************************************************************************/ 31 | 32 | -------------------------------------------------------------------------------- /lib/avtp_pipeline/acmp/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | SET (SRC_FILES ${SRC_FILES} 2 | ${AVB_SRC_DIR}/acmp/openavb_acmp.c 3 | ${AVB_SRC_DIR}/acmp/openavb_acmp_message.c 4 | ${AVB_SRC_DIR}/acmp/openavb_acmp_sm_listener.c 5 | ${AVB_SRC_DIR}/acmp/openavb_acmp_sm_talker.c 6 | ${AVB_SRC_DIR}/acmp/openavb_acmp_sm_controller.c 7 | PARENT_SCOPE 8 | ) 9 | 10 | -------------------------------------------------------------------------------- /lib/avtp_pipeline/adp/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | SET (SRC_FILES ${SRC_FILES} 2 | ${AVB_SRC_DIR}/adp/openavb_adp.c 3 | ${AVB_SRC_DIR}/adp/openavb_adp_message.c 4 | ${AVB_SRC_DIR}/adp/openavb_adp_sm_advertise_entity.c 5 | ${AVB_SRC_DIR}/adp/openavb_adp_sm_advertise_interface.c 6 | ${AVB_SRC_DIR}/adp/openavb_adp_sm_discovery.c 7 | PARENT_SCOPE 8 | ) 9 | 10 | -------------------------------------------------------------------------------- /lib/avtp_pipeline/aecp/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | SET (SRC_FILES ${SRC_FILES} 2 | ${AVB_SRC_DIR}/aecp/openavb_aecp.c 3 | ${AVB_SRC_DIR}/aecp/openavb_aecp_message.c 4 | ${AVB_SRC_DIR}/aecp/openavb_aecp_sm_entity_model_entity.c 5 | ${AVB_SRC_DIR}/aecp/openavb_aecp_cmd_get_counters.c 6 | PARENT_SCOPE 7 | ) 8 | 9 | -------------------------------------------------------------------------------- /lib/avtp_pipeline/aem/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | SET (SRC_FILES ${SRC_FILES} 2 | ${AVB_SRC_DIR}/aem/openavb_aem.c 3 | ${AVB_SRC_DIR}/aem/openavb_descriptor_entity.c 4 | ${AVB_SRC_DIR}/aem/openavb_descriptor_configuration.c 5 | ${AVB_SRC_DIR}/aem/openavb_descriptor_audio_unit.c 6 | ${AVB_SRC_DIR}/aem/openavb_descriptor_locale.c 7 | ${AVB_SRC_DIR}/aem/openavb_descriptor_strings.c 8 | ${AVB_SRC_DIR}/aem/openavb_descriptor_stream_io.c 9 | ${AVB_SRC_DIR}/aem/openavb_descriptor_jack_io.c 10 | ${AVB_SRC_DIR}/aem/openavb_descriptor_avb_interface.c 11 | ${AVB_SRC_DIR}/aem/openavb_descriptor_clock_source.c 12 | ${AVB_SRC_DIR}/aem/openavb_descriptor_stream_port_io.c 13 | ${AVB_SRC_DIR}/aem/openavb_descriptor_external_port_io.c 14 | ${AVB_SRC_DIR}/aem/openavb_descriptor_audio_cluster.c 15 | ${AVB_SRC_DIR}/aem/openavb_descriptor_audio_map.c 16 | ${AVB_SRC_DIR}/aem/openavb_descriptor_control.c 17 | ${AVB_SRC_DIR}/aem/openavb_descriptor_clock_domain.c 18 | ${AVB_SRC_DIR}/aem/openavb_descriptor_locale_strings_handler.c 19 | PARENT_SCOPE 20 | ) 21 | 22 | -------------------------------------------------------------------------------- /lib/avtp_pipeline/avdecc/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | SET (SRC_FILES ${SRC_FILES} 2 | ${AVB_SRC_DIR}/avdecc/openavb_avdecc.c 3 | ${AVB_OSAL_DIR}/avdecc/openavb_avdecc_osal.c 4 | ${AVB_OSAL_DIR}/avdecc/openavb_avdecc_cfg.c 5 | ${AVB_OSAL_DIR}/avdecc/openavb_avdecc_read_ini.c 6 | ${AVB_OSAL_DIR}/avdecc/openavb_avdecc_pipeline_interaction.c 7 | ${AVB_OSAL_DIR}/avdecc/openavb_avdecc_save_state.c 8 | ${AVB_OSAL_DIR}/openavb_osal_avdecc.c 9 | ${AVB_OSAL_DIR}/openavb_grandmaster_osal.c 10 | ${AVB_SRC_DIR}/avdecc_msg/openavb_avdecc_msg_server.c 11 | PARENT_SCOPE 12 | ) 13 | -------------------------------------------------------------------------------- /lib/avtp_pipeline/avdecc/shutdown_openavb_avdecc.sh: -------------------------------------------------------------------------------- 1 | #! /bin/sh 2 | # 3 | # AVB AVDECC clean-up script 4 | # 5 | # Only needs to be run if the AVDECC process crashes. 6 | # 7 | # Removes resources created/loaded by AVDECC, so that a new 8 | # instance can run. 9 | 10 | IFACES=$(cat /proc/net/dev | grep -- : | cut -d: -f1) 11 | 12 | echo "removing AVDECC resources" 13 | 14 | killall -s SIGINT openavb_avdecc > /dev/null 2>&1 15 | killall -s SIGINT openavb_harness > /dev/null 2>&1 16 | killall -s SIGINT openavb_host > /dev/null 2>&1 17 | rm -f /tmp/avdecc_msg > /dev/null 2>&1 18 | 19 | -------------------------------------------------------------------------------- /lib/avtp_pipeline/avdecc_msg/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /lib/avtp_pipeline/avtp/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | SET (SRC_FILES ${SRC_FILES} 2 | ${AVB_SRC_DIR}/avtp/openavb_avtp.c 3 | ${AVB_SRC_DIR}/avtp/openavb_avtp_time.c 4 | PARENT_SCOPE 5 | ) 6 | 7 | -------------------------------------------------------------------------------- /lib/avtp_pipeline/avtp_avdecc.mk: -------------------------------------------------------------------------------- 1 | AVB_FEATURE_AVDECC ?= 1 2 | PLATFORM_TOOLCHAIN ?= generic 3 | 4 | .PHONY: all clean 5 | 6 | all: build_avdecc/Makefile 7 | $(MAKE) -s -C build_avdecc install 8 | mkdir -p build/bin 9 | cp build_avdecc/bin/* build/bin/. 10 | 11 | doc: build_avdecc/Makefile 12 | $(MAKE) -s -C build_avdecc doc 13 | @echo "\n\nTo display documentation use:\n\n" \ 14 | "\txdg-open $(abspath build_avdecc/documents/api_docs/index.html)\n" 15 | 16 | clean: 17 | $(RM) -r build_avdecc 18 | 19 | build_avdecc/Makefile: 20 | mkdir -p build_avdecc && \ 21 | cd build_avdecc && \ 22 | cmake -DCMAKE_BUILD_TYPE=Release \ 23 | -DCMAKE_TOOLCHAIN_FILE=../platform/Linux/$(PLATFORM_TOOLCHAIN).cmake \ 24 | -DAVB_FEATURE_AVDECC=$(AVB_FEATURE_AVDECC) \ 25 | .. 26 | 27 | -------------------------------------------------------------------------------- /lib/avtp_pipeline/avtp_pipeline.mk: -------------------------------------------------------------------------------- 1 | AVB_FEATURE_ENDPOINT ?= 1 2 | IGB_LAUNCHTIME_ENABLED ?= 0 3 | AVB_FEATURE_GSTREAMER ?= 0 4 | PLATFORM_TOOLCHAIN ?= generic 5 | 6 | .PHONY: all clean 7 | 8 | all: build/Makefile 9 | $(MAKE) -s -C build install 10 | 11 | doc: build/Makefile 12 | $(MAKE) -s -C build doc 13 | @echo "\n\nTo display documentation use:\n\n" \ 14 | "\txdg-open $(abspath build/documents/api_docs/index.html)\n" 15 | 16 | clean: 17 | $(RM) -r build 18 | 19 | build/Makefile: 20 | mkdir -p build && \ 21 | cd build && \ 22 | cmake -DCMAKE_BUILD_TYPE=Release \ 23 | -DCMAKE_TOOLCHAIN_FILE=../platform/Linux/$(PLATFORM_TOOLCHAIN).cmake \ 24 | -DAVB_FEATURE_ENDPOINT=$(AVB_FEATURE_ENDPOINT) \ 25 | -DIGB_LAUNCHTIME_ENABLED=$(IGB_LAUNCHTIME_ENABLED) \ 26 | -DAVB_FEATURE_GSTREAMER=$(AVB_FEATURE_GSTREAMER) \ 27 | .. 28 | -------------------------------------------------------------------------------- /lib/avtp_pipeline/cmake/FindALSA.cmake: -------------------------------------------------------------------------------- 1 | # - Try to find ALSA 2 | # Once done, this will define 3 | # 4 | # ALSA_FOUND - system has ALSA (GL and GLU) 5 | # ALSA_INCLUDE_DIRS - the ALSA include directories 6 | # ALSA_LIBRARIES - link these to use ALSA 7 | # ALSA_GL_LIBRARY - only GL 8 | # ALSA_GLU_LIBRARY - only GLU 9 | # 10 | # See documentation on how to write CMake scripts at 11 | # http://www.cmake.org/Wiki/CMake:How_To_Find_Libraries 12 | 13 | include(LibFindMacros) 14 | 15 | libfind_pkg_check_modules(ALSA alsa) 16 | 17 | find_path(ALSA_INCLUDE_DIR 18 | NAMES alsa/version.h 19 | PATHS ${ALSA_INCLUDE_DIRS} 20 | ) 21 | 22 | find_library(ALSA_LIBRARY 23 | NAMES asound 24 | PATHS ${ALSA_LIBRARY_DIRS} 25 | ) 26 | 27 | # Extract the version number 28 | IF(ALSA_INCLUDE_DIR) 29 | file(READ "${ALSA_INCLUDE_DIR}/alsa/version.h" _ALSA_VERSION_H_CONTENTS) 30 | string(REGEX REPLACE ".*#define SND_LIB_VERSION_STR[ \t]*\"([^\n]*)\".*" "\\1" ALSA_VERSION "${_ALSA_VERSION_H_CONTENTS}") 31 | ENDIF(ALSA_INCLUDE_DIR) 32 | 33 | set(ALSA_PROCESS_INCLUDES ALSA_INCLUDE_DIR) 34 | set(ALSA_PROCESS_LIBS ALSA_LIBRARY) 35 | libfind_process(ALSA) 36 | 37 | -------------------------------------------------------------------------------- /lib/avtp_pipeline/documents/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # add a target to generate API documentation with Doxygen 2 | find_package(Doxygen) 3 | 4 | if(DOXYGEN_FOUND) 5 | 6 | configure_file(${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.in 7 | ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile @ONLY) 8 | 9 | configure_file(${CMAKE_CURRENT_SOURCE_DIR}/DoxygenLayout.xml 10 | ${CMAKE_CURRENT_BINARY_DIR}/DoxygenLayout.xml @ONLY) 11 | 12 | add_custom_target(doc 13 | ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile 14 | WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} 15 | COMMENT "Generating API documentation with Doxygen" VERBATIM 16 | ) 17 | 18 | add_custom_target(pdfdoc 19 | make 1>/dev/null 2>/dev/null 20 | WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/latex 21 | DEPENDS doc 22 | COMMENT "Generating PDF document" 23 | ) 24 | 25 | install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/api_docs 26 | DESTINATION ${SDK_INSTALL_SDK_INTF_MOD_DIR} OPTIONAL) 27 | 28 | install(FILES ${CMAKE_CURRENT_BINARY_DIR}/latex/refman.pdf 29 | DESTINATION ${SDK_INSTALL_SDK_INTF_MOD_DIR} 30 | RENAME "OPENAVB EAVB SDK.pdf" 31 | OPTIONAL) 32 | 33 | install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/api_docs 34 | DESTINATION ${SDK_INSTALL_SDK_EAVB_DIR} OPTIONAL) 35 | 36 | install(FILES ${CMAKE_CURRENT_BINARY_DIR}/latex/refman.pdf 37 | DESTINATION ${SDK_INSTALL_SDK_EAVB_DIR} 38 | RENAME "OPENAVB EAVB SDK.pdf" 39 | OPTIONAL) 40 | 41 | 42 | endif(DOXYGEN_FOUND) 43 | -------------------------------------------------------------------------------- /lib/avtp_pipeline/documents/Release Notes.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PADL/OpenAvnu/8fa80d1de59fbef14c8d0e80d8d9a62679a6182a/lib/avtp_pipeline/documents/Release Notes.docx -------------------------------------------------------------------------------- /lib/avtp_pipeline/documents/images/AVTP_Data_Flow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PADL/OpenAvnu/8fa80d1de59fbef14c8d0e80d8d9a62679a6182a/lib/avtp_pipeline/documents/images/AVTP_Data_Flow.png -------------------------------------------------------------------------------- /lib/avtp_pipeline/documents/images/Core_AVB.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PADL/OpenAvnu/8fa80d1de59fbef14c8d0e80d8d9a62679a6182a/lib/avtp_pipeline/documents/images/Core_AVB.png -------------------------------------------------------------------------------- /lib/avtp_pipeline/documents/images/Listener_Stream_Data_Flow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PADL/OpenAvnu/8fa80d1de59fbef14c8d0e80d8d9a62679a6182a/lib/avtp_pipeline/documents/images/Listener_Stream_Data_Flow.png -------------------------------------------------------------------------------- /lib/avtp_pipeline/documents/images/Stream_Initialize.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PADL/OpenAvnu/8fa80d1de59fbef14c8d0e80d8d9a62679a6182a/lib/avtp_pipeline/documents/images/Stream_Initialize.png -------------------------------------------------------------------------------- /lib/avtp_pipeline/documents/images/Talker_Stream_Data_Flow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PADL/OpenAvnu/8fa80d1de59fbef14c8d0e80d8d9a62679a6182a/lib/avtp_pipeline/documents/images/Talker_Stream_Data_Flow.png -------------------------------------------------------------------------------- /lib/avtp_pipeline/documents/images/fig1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PADL/OpenAvnu/8fa80d1de59fbef14c8d0e80d8d9a62679a6182a/lib/avtp_pipeline/documents/images/fig1.png -------------------------------------------------------------------------------- /lib/avtp_pipeline/documents/images/fig2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PADL/OpenAvnu/8fa80d1de59fbef14c8d0e80d8d9a62679a6182a/lib/avtp_pipeline/documents/images/fig2.png -------------------------------------------------------------------------------- /lib/avtp_pipeline/documents/images/harman_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PADL/OpenAvnu/8fa80d1de59fbef14c8d0e80d8d9a62679a6182a/lib/avtp_pipeline/documents/images/harman_logo.png -------------------------------------------------------------------------------- /lib/avtp_pipeline/documents/sdk_eavb_integration.md: -------------------------------------------------------------------------------- 1 | EAVB Integration Guide {#sdk_integration} 2 | ====================== 3 | 4 | Introduction {#sdk_integration_introduction} 5 | ============ 6 | Integrating the OPENAVB AVB stack into a larger solution can be conceptually divided 7 | into 2 parts. The first is the configuration and start up of the AVB components 8 | such as gPTP and AVTP. The second part is the configuration of the streams that 9 | will be active. The details of stream configuration is described in another 10 | section. 11 | 12 |
13 | 14 | AVTP Control {#sdk_integration_avtp_control} 15 | ============ 16 | Only a handful of functions are needed to control the AVTP component. This is 17 | done indirectly when opening, running and closing talkers and listeners. The 18 | general flow is: 19 | 1. openavbTLInitialize() is called to initialize the openavb_tl module. 20 | 2. openavbTLOpen() is called one or more times to load talkers and listeners. 21 | 3. openavbTLConfigure() is called for each talker or listener. 22 | 4. openavbTLRun() is called for each talker and listener to start their stream. 23 | 5. openavbTLClose() is called for each talker and listener to stop the stream and 24 | close. 25 | 26 |
27 | 28 | Host Application Integration {#sdk_integration_host_app} 29 | ============================ 30 | Controlling the non-AVTP components of the AVB stack are platform dependent. 31 | Release notes for the specific port should be referenced for those details. 32 | 33 | 34 | -------------------------------------------------------------------------------- /lib/avtp_pipeline/documents/sdk_notes.md: -------------------------------------------------------------------------------- 1 | Developer Notes {#sdk_notes} 2 | =============== 3 | 4 | These are additional topics from the trenches but the details have not yet been incorporated into the formal SDK documentation sections. 5 | 6 | - [Media Queue Usage](@ref sdk_notes_media_queue_usage) 7 | 8 | -------------------------------------------------------------------------------- /lib/avtp_pipeline/endpoint/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | SET (SRC_FILES ${SRC_FILES} 2 | ${AVB_SRC_DIR}/endpoint/openavb_endpoint.c 3 | ${AVB_OSAL_DIR}/endpoint/openavb_endpoint_osal.c 4 | ${AVB_OSAL_DIR}/endpoint/openavb_endpoint_osal_maap.c 5 | ${AVB_OSAL_DIR}/endpoint/openavb_endpoint_osal_ptp.c 6 | ${AVB_OSAL_DIR}/endpoint/openavb_endpoint_osal_shaper.c 7 | ${AVB_OSAL_DIR}/endpoint/openavb_endpoint_osal_srp.c 8 | ${AVB_SRC_DIR}/endpoint/openavb_endpoint_server.c 9 | ${AVB_OSAL_DIR}/endpoint/openavb_endpoint_cfg.c 10 | PARENT_SCOPE 11 | ) 12 | -------------------------------------------------------------------------------- /lib/avtp_pipeline/endpoint/NOTES.TXT: -------------------------------------------------------------------------------- 1 | The endpoint process hosts the per-node functionality that's used by 2 | all the talkers/listeners on the node. This includesthe SRP and FQTSS 3 | logic, which is provided by the SRP and FQTSS libraries. 4 | 5 | The actual AVTP talkers/listeners are implemented as seperate 6 | processes. Those processes communicate with the endpoint through IPC 7 | (currently we're using a local socket on Linux.) The IPC 8 | communication is handled by openavb_resv_server.c (server-side IPC, 9 | linked into the endpoint process) and openavb_resv_client.c 10 | (client-side of the IPC, linked into the talker and listener 11 | processes.) 12 | -------------------------------------------------------------------------------- /lib/avtp_pipeline/endpoint/shutdown_openavb_endpoint.sh: -------------------------------------------------------------------------------- 1 | #! /bin/sh 2 | # 3 | # AVB endpoint clean-up script 4 | # 5 | # Only needs to be run if the endpoint process crashes. 6 | # 7 | # Removes resources created/loaded by the endpoint, so that a new 8 | # instance can run. 9 | 10 | IFACES=$(cat /proc/net/dev | grep -- : | cut -d: -f1) 11 | 12 | echo "removing endpoint resources" 13 | 14 | killall -s SIGINT openavb_endpoint > /dev/null 2>&1 15 | killall -s SIGINT openavb_gptp > /dev/null 2>&1 16 | rm -f /tmp/avb_endpoint > /dev/null 2>&1 17 | 18 | for I in ${IFACES} 19 | do 20 | ./tc qdisc del dev ${I} root > /dev/null 2>&1 21 | done 22 | 23 | rmmod sch_avb > /dev/null 2>&1 24 | -------------------------------------------------------------------------------- /lib/avtp_pipeline/inih/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | SET (SRC_FILES ${SRC_FILES} 2 | ${AVB_SRC_DIR}/inih/ini.c 3 | PARENT_SCOPE 4 | ) 5 | 6 | -------------------------------------------------------------------------------- /lib/avtp_pipeline/inih/LICENSE.txt: -------------------------------------------------------------------------------- 1 | 2 | The "inih" library is distributed under the New BSD license: 3 | 4 | Copyright (c) 2009, Brush Technology 5 | All rights reserved. 6 | 7 | Redistribution and use in source and binary forms, with or without 8 | modification, are permitted provided that the following conditions are met: 9 | * Redistributions of source code must retain the above copyright 10 | notice, this list of conditions and the following disclaimer. 11 | * Redistributions in binary form must reproduce the above copyright 12 | notice, this list of conditions and the following disclaimer in the 13 | documentation and/or other materials provided with the distribution. 14 | * Neither the name of Brush Technology nor the names of its contributors 15 | may be used to endorse or promote products derived from this software 16 | without specific prior written permission. 17 | 18 | THIS SOFTWARE IS PROVIDED BY BRUSH TECHNOLOGY ''AS IS'' AND ANY 19 | EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 20 | WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 21 | DISCLAIMED. IN NO EVENT SHALL BRUSH TECHNOLOGY BE LIABLE FOR ANY 22 | DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 23 | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 24 | LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 25 | ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 26 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 27 | SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 | -------------------------------------------------------------------------------- /lib/avtp_pipeline/inih/README.TXT: -------------------------------------------------------------------------------- 1 | "inih" is an .ini file parser. I'm currently using it for the 2 | prototype talker and listener. It uses a BSD license, which requires 3 | a copyright notification in releases of derived works, but does not 4 | require the source code for derived works to be released. 5 | 6 | The description from the project page on Google code: 7 | 8 | inih (INI Not Invented Here) is a simple .INI file parser written in C. 9 | It's only a couple of pages of code, and it was designed to be small 10 | and simple, so it's good for embedded systems. It's also more or 11 | less compatible with Python's ConfigParser style of .INI files, 12 | including RFC 822-style multi-line syntax and name: value entries. 13 | 14 | Downloaded from: 15 | http://code.google.com/p/inih/ 16 | -------------------------------------------------------------------------------- /lib/avtp_pipeline/inih/inih_r23.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PADL/OpenAvnu/8fa80d1de59fbef14c8d0e80d8d9a62679a6182a/lib/avtp_pipeline/inih/inih_r23.zip -------------------------------------------------------------------------------- /lib/avtp_pipeline/intf_ctrl/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | SET (SRC_FILES ${SRC_FILES} 2 | ${AVB_SRC_DIR}/intf_ctrl/openavb_intf_ctrl.c 3 | PARENT_SCOPE 4 | ) 5 | 6 | 7 | -------------------------------------------------------------------------------- /lib/avtp_pipeline/intf_ctrl/ctrl_intf.md: -------------------------------------------------------------------------------- 1 | Ctrl interface {#ctrl_intf} 2 | ============== 3 | 4 | # Description 5 | 6 | Control interface module. 7 | 8 | This interface module sends and receives control messages. There are 9 | two modes this interface module can be configured for normal mode and mux 10 | mode. In normal mode the control messages are exchanged with the host 11 | application. In mux mode the control messages will be multiplexed from 12 | multiple control streams into one out-going talker control stream. This 13 | is part of the dispatch model for configuring the control message system 14 | in the OPENAVB AVB stack. 15 | 16 |
17 | # Interface module configuration parameters 18 | 19 | Name | Description 20 | --------------------------|--------------------------- 21 | intf_nv_mux_mode | If set to 1 the multiplier mode for the control \ 22 | interface is enabled. This is used for the dispatch \ 23 | model of control message configuration.
For a \ 24 | listener the in mux mode any incoming control \ 25 | message is immediatedly placed in the ctrl mux \ 26 | talkers media queue for retransmission.
\ 27 | When using mux mode, the talker MUST be created \ 28 | prior to listeners and remain running as long as any\ 29 | listeners are running. 30 | intf_nv_ignore_timestamp | If set to 1 timestamps will be ignored during \ 31 | processing of frames. This also means stale (old) \ 32 | Media Queue items will not be purged. 33 | -------------------------------------------------------------------------------- /lib/avtp_pipeline/intf_echo/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | SET (SRC_FILES ${SRC_FILES} 2 | ${AVB_SRC_DIR}/intf_echo/openavb_intf_echo.c 3 | PARENT_SCOPE 4 | ) 5 | 6 | -------------------------------------------------------------------------------- /lib/avtp_pipeline/intf_echo/echo_host_intf.md: -------------------------------------------------------------------------------- 1 | Echo interface {#echo_host_intf} 2 | ============== 3 | 4 | # Description 5 | 6 | This interface module as a talker will push a configured string into the Media 7 | Queue for transmission. As a listener it will echo the received data to stdout. 8 | This is strictly for testing purposes and is generally intended to work with the 9 | [Pipe mapping](@ref pipe_map) module 10 | 11 |
12 | # Interface module configuration parameters 13 | 14 | Name | Description 15 | --------------------------|--------------------------- 16 | intf_nv_echo_string | String that will be sent by the talker 17 | intf_nv_echo_string_repeat| Number of copies of the string to send in each \ 18 | packet.
\ 19 | The repeat setting if used must come after the \ 20 | intf_nv_echo_string in this file 21 | intf_nv_echo_increment | If set to 1 an incrementing number will be appended\ 22 | to the string 23 | intf_nv_tx_local_echo | If set to 1 locally output the string to stdout \ 24 | at the talker 25 | intf_nv_echo_no_newline | If set to 1 a newline will not be printed to the \ 26 | stdout 27 | intf_nv_ignore_timestamp | If set to 1 timestamps will be ignored during \ 28 | processing of frames. This also means stale (old) \ 29 | Media Queue items will not be purged. 30 | -------------------------------------------------------------------------------- /lib/avtp_pipeline/intf_logger/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | SET (SRC_FILES ${SRC_FILES} 2 | ${AVB_SRC_DIR}/intf_logger/openavb_intf_logger.c 3 | PARENT_SCOPE 4 | ) 5 | 6 | -------------------------------------------------------------------------------- /lib/avtp_pipeline/intf_logger/openavb_intf_logger.md: -------------------------------------------------------------------------------- 1 | Logger Interface {#logger_intf} 2 | ================ 3 | 4 | # Description 5 | 6 | This interface module is a talker only and design to send OPENAVB AVB 7 | internally log message over AVB for a listener to act on (such as 8 | display). One use case of this interface module is for low end devices 9 | that either have no provisions for console output or are restricted in 10 | CPU cycle to lot messages. 11 | 12 | For this interface module to be used the logging system must be built 13 | with the option OPENAVB_LOG_PULL_MODE set to TRUE. 14 | 15 | Typically the TX rate for this interface module can be quite low. The 16 | actual value will depend on how much data is expected to be logged. For 17 | general purpose use it is recommended to use 1000 packet per second or 18 | less. 19 | 20 |
21 | # Interface module configuration parameters 22 | 23 | There are no configuration parameters for this interface module. 24 | 25 | -------------------------------------------------------------------------------- /lib/avtp_pipeline/intf_null/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | SET (SRC_FILES ${SRC_FILES} 2 | ${AVB_SRC_DIR}/intf_null/openavb_intf_null.c 3 | PARENT_SCOPE 4 | ) 5 | 6 | -------------------------------------------------------------------------------- /lib/avtp_pipeline/intf_null/null_host_intf.md: -------------------------------------------------------------------------------- 1 | NULL interface {#null_host_intf} 2 | ============== 3 | 4 | # Description 5 | 6 | This NULL interface module neither sends or receives data but will 7 | exercise the various functions and callback and can be used as an example 8 | or a template for new interfaces. 9 | 10 |
11 | # Interface module configuration parameters 12 | 13 | Name | Description 14 | --------------------------|--------------------------- 15 | intf_nv_ignore_timestamp | If set to 1 timestamps will be ignored during \ 16 | processing of frames. This also means stale (old) \ 17 | Media Queue items will not be purged. 18 | -------------------------------------------------------------------------------- /lib/avtp_pipeline/intf_tonegen/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | SET (SRC_FILES ${SRC_FILES} 2 | ${AVB_SRC_DIR}/intf_tonegen/openavb_intf_tonegen.c 3 | PARENT_SCOPE 4 | ) 5 | -------------------------------------------------------------------------------- /lib/avtp_pipeline/intf_tonegen/openavb_intf_tonegen.md: -------------------------------------------------------------------------------- 1 | Tone Generator Interface {#tonegen_intf} 2 | ======================== 3 | 4 | # Description 5 | 6 | This interface module is a talker only and is used to generate an audio 7 | tone for testing purposes. It is designed to work with the AAF (AVTP 8 | Audio Format) mapping but could be quickly adjusted to work with the 9 | 61883-6 mapping module as well. 10 | 11 | # Interface module configuration parameters 12 | 13 | Name | Description 14 | -----------------------------|--------------------------- 15 | intf_nv_tone_hz | The frequency of the generated tone 16 | intf_nv_on_off_interval_msec | How many millisecs to turn on and off the tone 17 | intf_nv_melody_string | A simple melody to play. When a melody string is set the on/off tone hz is not used. The string holds the notes in a 2 octave range with the use of letters A B C D E F G a b c d e f g followed by a duration of the note. For example the full scale is A4B4C4D4E4F4G4a4b4c4d4e4f4g4. 18 | intf_nv_audio_rate | Audio rate, numberic values defined by @ref avb_audio_rate_t 19 | intf_nv_audio_bit_depth | Bit depth of audio, numeric values defined by @ref avb_audio_bit_depth_t 20 | intf_nv_audio_channels | Number of audio channels, numeric values should be within range of values in @ref avb_audio_channels_t 21 | intf_nv_audio_endian | Data endianess possible values
  • big
  • little
22 | intf_nv_audio_channels | Number of audio channels, numeric values should be within range of values in @ref avb_audio_channels_t 23 | intf_nv_volume | The volune of the tone generation PCM in dB 24 | intf_nv_fv1 and intf_nv_fv2 | Optionally replace the last channel, or last two channels if both are defined, with fixed 32-bit sample values 25 | -------------------------------------------------------------------------------- /lib/avtp_pipeline/intf_viewer/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | SET (SRC_FILES ${SRC_FILES} 2 | ${AVB_SRC_DIR}/intf_viewer/openavb_intf_viewer.c 3 | PARENT_SCOPE 4 | ) 5 | 6 | 7 | -------------------------------------------------------------------------------- /lib/avtp_pipeline/intf_viewer/viewer_intf.md: -------------------------------------------------------------------------------- 1 | Viewer interface {#viewer_intf} 2 | ================ 3 | 4 | # Description 5 | 6 | Viewer interface module. 7 | 8 | The viewer interface module is a listener only module. It is designed 9 | for testing purposes and will evaluate and display AVTP stream data in a 10 | number of formats. 11 | 12 | 13 |
14 | # Interface module configuration parameters 15 | 16 | Name | Description 17 | --------------------------|--------------------------- 18 | intf_nv_view_type | Mode of operation. Acceptable values are
    \ 19 |
  • 0 - Full details
  • \ 20 |
  • 1 - mapping aware (not implemented)
  • \ 21 |
  • 2 - Timestamp mode
  • \ 22 |
  • 3 - Latency measurement
  • \ 23 |
  • 4 - Selective timestamp mode
  • \ 24 |
  • 5 - Late packet measurement
  • \ 25 |
  • 6 - Packet gap measurement
26 | intf_nv_view_interval | Frequency of output (in packet count) 27 | intf_nv_raw_offset | Offset into the raw frame to output 28 | intf_nv_raw_length | Length of the raw frame to output (0 = all) 29 | intf_nv_ignore_timestamp | If set to 1 timestamps will be ignored during \ 30 | processing of frames. This also means stale (old) \ 31 | Media Queue items will not be purged. 32 | -------------------------------------------------------------------------------- /lib/avtp_pipeline/map_aaf_audio/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | SET (SRC_FILES ${SRC_FILES} 2 | ${AVB_SRC_DIR}/map_aaf_audio/openavb_map_aaf_audio.c 3 | PARENT_SCOPE 4 | ) 5 | 6 | -------------------------------------------------------------------------------- /lib/avtp_pipeline/map_aaf_audio/README.TXT: -------------------------------------------------------------------------------- 1 | Notes on the AVTP Audio Format mapping module: 2 | 3 | Implements AAF (or "AVTP Audio Format") as described in IEEE-1722a (Draft 11). 4 | 5 | Works with the ALSA interface and the WAV file interface. 6 | 7 | The transmit rate (map_nv_tx_rate) for the mapping module 8 | should be set according to the sample rate, so that the transmit 9 | interval meets the suggested values in 1722a: 10 | 11 | For audio sample rates which are a multiple of 8000hz: use 8000 for class A, 4000 for class B 12 | For audio sample rates which are a multiple of 44100hz: use 7350 for class A, 3675 for class B 13 | 14 | AAF supports the following ALSA sample parameters: 15 | 16 | - sample rate: 17 | intf_nv_audio_rate = 8, 16, 32, 44.1, 48, 88.2, 96, 176.4 or 192Khz 18 | - signed integer, unsigned integer or floating point samples 19 | intf_nv_audio_type = int, uint or float 20 | - bit depth 21 | intf_nv_audio_bit_depth = 16, 24 or 32 for integers; 32 for float 22 | - number of audio channels 23 | intf_nv_audio_channels = 1 - 8 24 | - sample endian-ness 25 | intf_nv_audio_end = big or little 26 | 27 | The ALSA library on various platforms will only support certain 28 | combinations of the sample parameters. Typically, only sample rate and 29 | bit depth need to be configured, and the other parameters may be left 30 | to their defaults. 31 | 32 | The WAV file interface will send data that matches the encoding of the 33 | WAV file. 34 | 35 | Both the talker and listner must be configured with matching sample 36 | parameters. If the received data does not match the configured 37 | parameters on the listener, the stream will still be setup and data 38 | will still flow - but no audio will be played. 39 | 40 | Sample talker and listener ini files are provided in aaf_talker.ini 41 | and aaf_listener.ini. 42 | 43 | -------------------------------------------------------------------------------- /lib/avtp_pipeline/map_ctrl/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | SET (SRC_FILES ${SRC_FILES} 2 | ${AVB_SRC_DIR}/map_ctrl/openavb_map_ctrl.c 3 | PARENT_SCOPE 4 | ) 5 | 6 | -------------------------------------------------------------------------------- /lib/avtp_pipeline/map_ctrl/ctrl_map.md: -------------------------------------------------------------------------------- 1 | Ctrl Mapping {#ctrl_map} 2 | ============ 3 | 4 | # Description 5 | 6 | Control mapping module. 7 | 8 | The Control mapping is an AVTP control subtype with an vender specific 9 | type defined to carry control command payloads between custom interface 10 | modules. This is compliant with 1722a-D6 11 | 12 | # Mapping module configuration parameters 13 | 14 | Name | Description 15 | --------------------|--------------------------- 16 | map_nv_item_count |The number of media queue elements to hold. 17 | map_nv_tx_rate or map_nv_tx_interval | Transmit interval in frames per second. \ 18 | 0 = default for talker class 19 | map_nv_max_payload_size| Maximum payload that will be send in one ethernet frame 20 | -------------------------------------------------------------------------------- /lib/avtp_pipeline/map_h264/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | SET (SRC_FILES ${SRC_FILES} 2 | ${AVB_SRC_DIR}/map_h264/openavb_map_h264.c 3 | PARENT_SCOPE 4 | ) 5 | 6 | -------------------------------------------------------------------------------- /lib/avtp_pipeline/map_mjpeg/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | SET (SRC_FILES ${SRC_FILES} 2 | ${AVB_SRC_DIR}/map_mjpeg/openavb_map_mjpeg.c 3 | PARENT_SCOPE 4 | ) 5 | 6 | -------------------------------------------------------------------------------- /lib/avtp_pipeline/map_mjpeg/mjpeg_map.md: -------------------------------------------------------------------------------- 1 | mjpeg Mapping {#mjpeg_map} 2 | ============= 3 | 4 | # Description 5 | 6 | Motion Jpeg mapping module conforming to 1722A RTP payload encapsulation. 7 | 8 | # Mapping module configuration parameters 9 | 10 | Name | Description 11 | --------------------|--------------------------- 12 | map_nv_item_count |The number of media queue elements to hold. 13 | map_nv_tx_rate or map_nv_tx_interval | Transmit interval in frames per second. \ 14 | 0 = default for talker class 15 | 16 | # Notes 17 | 18 | This module also uses the field media_q_item_map_mjpeg_pub_data_t::lastFragment 19 | in both RX and TX. The usage depends on situation, for: 20 | - TX - stores in the AVTP header information that this is the last fragment of 21 | this frame. The interface module has to set this variable to correct value, 22 | * RX - extracts from the AVTP header information if this fragment is the last one 23 | of current video frame and sets field accordingly. The interface module might use 24 | it later during frame composition. 25 | -------------------------------------------------------------------------------- /lib/avtp_pipeline/map_mpeg2ts/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | SET (SRC_FILES ${SRC_FILES} 2 | ${AVB_SRC_DIR}/map_mpeg2ts/openavb_map_mpeg2ts.c 3 | PARENT_SCOPE 4 | ) 5 | 6 | -------------------------------------------------------------------------------- /lib/avtp_pipeline/map_mpeg2ts/mpeg2ts_map.md: -------------------------------------------------------------------------------- 1 | MPEG2 TS Mapping {#mpeg2ts_map} 2 | ================ 3 | 4 | # Description 5 | 6 | Mpeg2 TS mapping module conforming to AVB 61883-4 encapsulation. 7 | 8 | Refer to IEC 61883-4 for details of the "source packet" structure. 9 | 10 | This mapping module module as a talker requires an interface module to push 11 | one source packet of 192 octets into the media queue along with a media queue 12 | time value when the first data block of the source packet was obtained. 13 | There is no need to place the timestamp within the source packet header, 14 | this will be done within the mapping module when the maximum transit time is 15 | added. The mapping module may bundle multiple source packets into one AVTP 16 | packet before sending it. 17 | 18 | This mapping module module as a listener will parse source packets from the AVTP 19 | packet and place each source packet of 192 octets into the media queue along 20 | with the correct timestamp from the source packet header. The interface module 21 | will pull each source packet from the media queue and present has needed. 22 | 23 | The protocol_specific_header, CIP header and the mpeg2 ts source packet header 24 | are all taken care of in the mapping module. 25 | 26 |
27 | # Mapping module configuration parameters 28 | 29 | Name | Description 30 | --------------------|--------------------------- 31 | map_nv_item_count |The number of Media Queue items to hold. 32 | map_nv_item_size |Size of data in each Media Queue item 33 | map_nv_ts_packet_size|Size of transport stream packets passed to/from interface\ 34 | module (188 or 192) 35 | map_nv_num_source_packets|Number of source packets to send an in AVTP frame \ 36 | (**Talker only**) 37 | map_nv_tx_rate or map_nv_tx_interval | Transmit interval in frames per second. \ 38 | 0 = default for talker class 39 | -------------------------------------------------------------------------------- /lib/avtp_pipeline/map_null/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | SET (SRC_FILES ${SRC_FILES} 2 | ${AVB_SRC_DIR}/map_null/openavb_map_null.c 3 | PARENT_SCOPE 4 | ) 5 | 6 | -------------------------------------------------------------------------------- /lib/avtp_pipeline/map_null/null_map.md: -------------------------------------------------------------------------------- 1 | NULL Mapping {#null_map} 2 | ============ 3 | 4 | # Description 5 | 6 | This NULL mapping does not pack or unpack any Mmedia Queue data in AVB packer. 7 | It does however exercise the various functions and callback and can be 8 | used as an example or a template for new mapping modules. 9 | 10 |
11 | # Mapping module configuration parameters 12 | 13 | Name | Description 14 | --------------------|--------------------------- 15 | map_nv_item_count |The number of media queue elements to hold. 16 | map_nv_tx_rate |Transmit interval in frames per second. \ 17 | 0 = default for talker class 18 | -------------------------------------------------------------------------------- /lib/avtp_pipeline/map_pipe/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | SET (SRC_FILES ${SRC_FILES} 2 | ${AVB_SRC_DIR}/map_pipe/openavb_map_pipe.c 3 | PARENT_SCOPE 4 | ) 5 | 6 | -------------------------------------------------------------------------------- /lib/avtp_pipeline/map_pipe/pipe_map.md: -------------------------------------------------------------------------------- 1 | Pipe Mapping {#pipe_map} 2 | ============ 3 | 4 | # Description 5 | 6 | The Pipe Mapping module is an AVTP vendor specific mapping format. It will pass through 7 | any data from interface modules unchanged. This can be useful for development, 8 | testing or custom solutions 9 | 10 |
11 | # Mapping module configuration parameters 12 | 13 | Name | Description 14 | --------------------|--------------------------- 15 | map_nv_item_count |The number of Media Queue items to hold. 16 | map_nv_tx_rate or map_nv_tx_interval | Transmit interval in frames per second. \ 17 | 0 = default for talker class 18 | map_nv_max_payload_size| Maximum payload that will be send in one Ethernet frame 19 | map_nv_push_header |If set to 1 the Ethernet header should be pushed to the \ 20 | Media Queue
\ 21 | Note:RX side only - Listener 22 | map_nv_pull_header |If set to 1 data in Media Queue is with Ethernet header \ 23 |
\ 24 | Note:TX side only - Talker 25 | -------------------------------------------------------------------------------- /lib/avtp_pipeline/map_uncmp_audio/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | SET (SRC_FILES ${SRC_FILES} 2 | ${AVB_SRC_DIR}/map_uncmp_audio/openavb_map_uncmp_audio.c 3 | PARENT_SCOPE 4 | ) 5 | 6 | -------------------------------------------------------------------------------- /lib/avtp_pipeline/mcr/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | SET (SRC_FILES ${SRC_FILES} 2 | ${AVB_HAL_DIR}/mcr/openavb_mcr_hal.c 3 | PARENT_SCOPE 4 | ) 5 | -------------------------------------------------------------------------------- /lib/avtp_pipeline/mcs/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | SET (SRC_FILES ${SRC_FILES} 2 | ${AVB_SRC_DIR}/mcs/openavb_mcs.c 3 | PARENT_SCOPE 4 | ) 5 | 6 | -------------------------------------------------------------------------------- /lib/avtp_pipeline/mediaq/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | SET (SRC_FILES ${SRC_FILES} 2 | ${AVB_SRC_DIR}/mediaq/openavb_mediaq.c 3 | PARENT_SCOPE 4 | ) 5 | 6 | -------------------------------------------------------------------------------- /lib/avtp_pipeline/openavb_common/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | if (AVB_FEATURE_IGB) 2 | message("-- common IGB library included") 3 | SET (IGB_FILES 4 | ${AVB_SRC_DIR}/../common/avb_igb.c 5 | ) 6 | endif () 7 | SET (SRC_FILES ${SRC_FILES} 8 | ${AVB_SRC_DIR}/../common/avb_gptp.c 9 | ${AVB_SRC_DIR}/openavb_common/mrp_client.c 10 | ${IGB_FILES} 11 | PARENT_SCOPE 12 | ) 13 | -------------------------------------------------------------------------------- /lib/avtp_pipeline/openavb_common/README.TXT: -------------------------------------------------------------------------------- 1 | The files in this folder originated in examples/common 2 | 3 | These were copied here because of inconsistancies in implementation of these functions in different examples. 4 | 5 | See the each source file for the actual license. 6 | 7 | TODO_OPENAVB: It should be considered if these common support functions in avb.c, 8 | listener_mrp_client.c and talker_mrp_client.c should be moved to a true commmon source 9 | area in OpenAVB and outside of the examples folder. 10 | -------------------------------------------------------------------------------- /lib/avtp_pipeline/platform/Linux/arm_imx6sx_linux.cmake: -------------------------------------------------------------------------------- 1 | set ( GSTREAMER_1_0 0 ) 2 | set ( AVB_FEATURE_PCAP 1 ) 3 | set ( AVB_FEATURE_IGB 0 ) 4 | set ( IGB_LAUNCHTIME_ENABLED 0 ) 5 | 6 | # and another kernel sources 7 | #set ( LINUX_KERNEL_DIR "/usr/src/kernel" ) 8 | 9 | # build configuration 10 | set ( OPENAVB_HAL "arm_im6sx" ) 11 | set ( OPENAVB_OSAL "Linux" ) 12 | set ( OPENAVB_TCAL "GNU" ) 13 | set ( OPENAVB_PLATFORM "${OPENAVB_HAL}-${OPENAVB_OSAL}" ) 14 | 15 | # Platform Additions 16 | set ( PLATFORM_INCLUDE_DIRECTORIES 17 | ${CMAKE_SOURCE_DIR}/platform/arm_imx6x/include 18 | ${CMAKE_SOURCE_DIR}/openavb_common 19 | ${CMAKE_SOURCE_DIR}/../../daemons/common 20 | ${CMAKE_SOURCE_DIR}/../../daemons/mrpd 21 | ${CMAKE_SOURCE_DIR}/../../daemons/maap/common 22 | ) 23 | 24 | # TODO_OPENAVB : need this? 25 | # Set platform specific define 26 | #set ( PLATFORM_DEFINE "AVB_DELAY_TWEAK_USEC=15" ) 27 | -------------------------------------------------------------------------------- /lib/avtp_pipeline/platform/Linux/avb_avdecc/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | include_directories( 2 | ${AVB_OSAL_DIR}/avdecc 3 | ${AVB_SRC_DIR}/util 4 | ) 5 | 6 | # Rules to build the AVB AVDECC 7 | add_executable ( openavb_avdecc openavb_avdecc.c ) 8 | target_link_libraries( openavb_avdecc 9 | avbTl 10 | ${PLATFORM_LINK_LIBRARIES} 11 | ${ALSA_LIBRARIES} 12 | ${GSTRTP_PKG_LIBRARIES} 13 | ${GLIB_PKG_LIBRARIES} 14 | ${GST_PKG_LIBRARIES} 15 | pthread 16 | rt 17 | dl ) 18 | 19 | # Install rules 20 | install ( TARGETS openavb_avdecc RUNTIME DESTINATION ${AVB_INSTALL_BIN_DIR} ) 21 | 22 | if (AVB_FEATURE_GSTREAMER) 23 | include_directories( ${GLIB_PKG_INCLUDE_DIRS} ${GST_PKG_INCLUDE_DIRS} ) 24 | target_link_libraries( openavb_avdecc ${GLIB_PKG_LIBRARIES} ${GST_PKG_LIBRARIES} ${PLATFORM_LINK_LIBRARIES} ) 25 | endif () 26 | -------------------------------------------------------------------------------- /lib/avtp_pipeline/platform/Linux/avb_host/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | include_directories( 2 | ${AVB_OSAL_DIR}/tl 3 | ${AVB_OSAL_DIR}/endpoint 4 | ${AVB_SRC_DIR}/util 5 | ${AVB_SRC_DIR}/tl 6 | ${AVB_SRC_DIR}/srp 7 | ) 8 | 9 | # Rules to build the AVB host 10 | add_executable ( openavb_host openavb_host.c ) 11 | target_link_libraries( openavb_host 12 | map_ctrl 13 | map_mjpeg 14 | map_mpeg2ts 15 | map_null 16 | map_pipe 17 | map_aaf_audio 18 | map_uncmp_audio 19 | map_h264 20 | intf_ctrl 21 | intf_echo 22 | intf_logger 23 | intf_null 24 | intf_tonegen 25 | intf_viewer 26 | intf_alsa 27 | intf_mpeg2ts_file 28 | intf_wav_file 29 | avbTl 30 | ${PLATFORM_LINK_LIBRARIES} 31 | ${ALSA_LIBRARIES} 32 | ${GLIB_PKG_LIBRARIES} 33 | pthread 34 | rt 35 | dl ) 36 | 37 | 38 | # Rules to build the AVB harness 39 | add_executable ( openavb_harness openavb_harness.c ) 40 | target_link_libraries( openavb_harness 41 | map_ctrl 42 | map_mjpeg 43 | map_mpeg2ts 44 | map_null 45 | map_pipe 46 | map_aaf_audio 47 | map_uncmp_audio 48 | map_h264 49 | intf_ctrl 50 | intf_echo 51 | intf_logger 52 | intf_null 53 | intf_tonegen 54 | intf_viewer 55 | intf_alsa 56 | intf_mpeg2ts_file 57 | intf_wav_file 58 | avbTl 59 | ${PLATFORM_LINK_LIBRARIES} 60 | ${ALSA_LIBRARIES} 61 | ${GLIB_PKG_LIBRARIES} 62 | pthread 63 | rt 64 | dl ) 65 | 66 | # Install rules 67 | install ( TARGETS openavb_host RUNTIME DESTINATION ${AVB_INSTALL_BIN_DIR} ) 68 | install ( TARGETS openavb_harness RUNTIME DESTINATION ${AVB_INSTALL_BIN_DIR} ) 69 | 70 | if (AVB_FEATURE_GSTREAMER) 71 | include_directories( ${GLIB_PKG_INCLUDE_DIRS} ${GST_PKG_INCLUDE_DIRS} ) 72 | target_link_libraries( openavb_host intf_mpeg2ts_gst intf_mjpeg_gst intf_h264_gst ${GST_PKG_LIBRARIES} ${GSTRTP_PKG_LIBRARIES} ) 73 | target_link_libraries( openavb_harness intf_mpeg2ts_gst intf_mjpeg_gst intf_h264_gst ${GST_PKG_LIBRARIES} ${GSTRTP_PKG_LIBRARIES} ) 74 | endif () 75 | -------------------------------------------------------------------------------- /lib/avtp_pipeline/platform/Linux/avdecc/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /lib/avtp_pipeline/platform/Linux/avdecc_msg/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /lib/avtp_pipeline/platform/Linux/avtp/openavb_avtp_time_osal.c: -------------------------------------------------------------------------------- 1 | /************************************************************************************************************* 2 | Copyright (c) 2012-2015, Symphony Teleca Corporation, a Harman International Industries, Incorporated company 3 | Copyright (c) 2016-2017, Harman International Industries, Incorporated 4 | All rights reserved. 5 | 6 | Redistribution and use in source and binary forms, with or without 7 | modification, are permitted provided that the following conditions are met: 8 | 9 | 1. Redistributions of source code must retain the above copyright notice, this 10 | list of conditions and the following disclaimer. 11 | 2. Redistributions in binary form must reproduce the above copyright notice, 12 | this list of conditions and the following disclaimer in the documentation 13 | and/or other materials provided with the distribution. 14 | 15 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS LISTED "AS IS" AND 16 | ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 17 | WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 18 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS LISTED BE LIABLE FOR 19 | ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 20 | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 21 | LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 22 | ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 23 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 24 | SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25 | 26 | Attributions: The inih library portion of the source code is licensed from 27 | Brush Technology and Ben Hoyt - Copyright (c) 2009, Brush Technology and Copyright (c) 2009, Ben Hoyt. 28 | Complete license and copyright information can be found at 29 | https://github.com/benhoyt/inih/commit/74d2ca064fb293bc60a77b0bd068075b293cf175. 30 | *************************************************************************************************************/ 31 | 32 | /* 33 | * MODULE SUMMARY : Avtp Time implementation 34 | */ 35 | 36 | -------------------------------------------------------------------------------- /lib/avtp_pipeline/platform/Linux/endpoint/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /lib/avtp_pipeline/platform/Linux/generic.cmake: -------------------------------------------------------------------------------- 1 | # generic build settings 2 | # just builds linux version of stack on host machine 3 | 4 | set ( AVB_FEATURE_IGB 0 ) 5 | set ( IGB_LAUNCHTIME_ENABLED 0 ) 6 | set ( AVB_FEATURE_PCAP 1 ) 7 | 8 | # Label for messages / build configuration 9 | set ( OPENAVB_HAL "generic" ) 10 | set ( OPENAVB_OSAL "Linux" ) 11 | set ( OPENAVB_TCAL "GNU" ) 12 | set ( OPENAVB_PLATFORM "${OPENAVB_HAL}-${OPENAVB_OSAL}" ) 13 | 14 | set ( PLATFORM_INCLUDE_DIRECTORIES 15 | ${CMAKE_SOURCE_DIR}/openavb_common 16 | ${CMAKE_SOURCE_DIR}/../../daemons/common 17 | ${CMAKE_SOURCE_DIR}/../../daemons/mrpd 18 | ${CMAKE_SOURCE_DIR}/../../daemons/maap/common 19 | ) 20 | 21 | include_directories ( platform/generic/include ) 22 | 23 | #set ( PLATFORM_DEFINE "AVB_DELAY_TWEAK_USEC=45" ) 24 | 25 | set ( GSTREAMER_1_0 1 ) 26 | -------------------------------------------------------------------------------- /lib/avtp_pipeline/platform/Linux/intf_alsa/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | SET (SRC_FILES ${SRC_FILES} 2 | ${AVB_OSAL_DIR}/intf_alsa/openavb_intf_alsa.c 3 | PARENT_SCOPE 4 | ) 5 | 6 | # Need include and link directories for ALSA 7 | SET (INTF_INCLUDE_DIR ${INTF_INCLUDE_DIR} ${ALSA_INCLUDE_DIRS} PARENT_SCOPE) 8 | SET (INTF_LIBRARY_DIR ${INTF_LIBRARY_DIR} ${ALSA_LIBRARY_DIRS} PARENT_SCOPE) 9 | SET (INTF_LIBRARY ${ALSA_LIBRARIES} pthread rt PARENT_SCOPE) 10 | 11 | -------------------------------------------------------------------------------- /lib/avtp_pipeline/platform/Linux/intf_alsa/alsa_intf.md: -------------------------------------------------------------------------------- 1 | ALSA interface {#alsa_intf} 2 | ============== 3 | 4 | # Description 5 | 6 | ALSA interface module. An interface to connect AVTP streams to ALSA either as an audio source or sink. 7 | 8 |
9 | # Interface module configuration parameters 10 | 11 | Name | Description 12 | --------------------------|--------------------------- 13 | intf_nv_ignore_timestamp | If set to 1 timestamps will be ignored during processing of frames. This also means stale (old) Media Queue items will not be purged. 14 | intf_nv_device_name | ALSA device name. Commonly "default" or "plug:dmix" 15 | intf_nv_audio_rate | Audio rate, numberic values defined by @ref avb_audio_rate_t 16 | intf_nv_audio_bit_depth | Bit depth of audio, numeric values defined by @ref avb_audio_bit_depth_t 17 | intf_nv_audio_type | Type of data samples, possible values
  • float
  • sign
  • unsign
  • int
  • uint
18 | intf_nv_audio_endian | Data endianess possible values
  • big
  • little
19 | intf_nv_audio_channels | Number of audio channels, numeric values should be within range of values in @ref avb_audio_channels_t 20 | intf_nv_allow_resampling | If 1 software resampling allowed, disallowed otherwise (by default allowed) 21 | intf_nv_start_threshold_periods | Playback start threshold measured in ALSA periods (2 by default) 22 | intf_nv_period_time | Approximate ALSA period duration in microseconds 23 | intf_nv_clock_skew_ppb | Estimate of media clock skew in Parts Per Billion (nanoseconds per second) 24 | 25 |
26 | # Notes 27 | 28 | There are some parameters that have to be set during configuration of this 29 | interface module and before configuring mapping: 30 | * [AAF audio mapping](@ref aaf_audio_map) 31 | * [Uncompressed audio mapping](@ref uncmp_audio_map) 32 | 33 | These parameters can be set in either: 34 | * in the ini file (or available configuration system), so values will be parsed 35 | in the intf_cfg_cb function, 36 | * in the interface module initialization function where valid values can be 37 | assigned directly 38 | 39 | Values assigned in the intf_cfg_cb function will override any values set in the 40 | initialization function. 41 | 42 | -------------------------------------------------------------------------------- /lib/avtp_pipeline/platform/Linux/intf_h264_gst/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | IF (NOT GSTREAMER_1_0) 2 | SET (SRC_FILES ${SRC_FILES} 3 | ${AVB_OSAL_DIR}/intf_h264_gst/openavb_intf_h264_gst.c 4 | ${AVB_OSAL_DIR}/gst_al/gst_al_01.c 5 | PARENT_SCOPE 6 | ) 7 | ELSE () 8 | SET (SRC_FILES ${SRC_FILES} 9 | ${AVB_OSAL_DIR}/intf_h264_gst/openavb_intf_h264_gst.c 10 | ${AVB_OSAL_DIR}/gst_al/gst_al_10.c 11 | PARENT_SCOPE 12 | ) 13 | ENDIF () 14 | 15 | # Need include and link directories for GST 16 | SET (INTF_INCLUDE_DIR 17 | ${INTF_INCLUDE_DIR} ${GLIB_PKG_INCLUDE_DIRS} ${GST_PKG_INCLUDE_DIRS} 18 | ${AVB_OSAL_DIR}/gst_al 19 | PARENT_SCOPE 20 | ) 21 | SET (INTF_LIBRARY_DIR ${INTF_LIBRARY_DIR} PARENT_SCOPE) 22 | SET (INTF_LIBRARY ${GLIB_PKG_LIBRARIES} ${GST_PKG_LIBRARIES} ${GSTRTP_PKG_LIBRARIES} PARENT_SCOPE) 23 | 24 | -------------------------------------------------------------------------------- /lib/avtp_pipeline/platform/Linux/intf_h264_gst/h264_gst_intf.md: -------------------------------------------------------------------------------- 1 | H264 with GStreamer interface {#h264_gst_intf} 2 | ========================= 3 | 4 | # Description 5 | 6 | H264 with gstreamer interface module. 7 | 8 |
9 | # Interface module configuration parameters 10 | 11 | Name | Description 12 | --------------------------|--------------------------- 13 | intf_nv_gst_pipeline |GStreamer pipeline that will be used 14 | intf_nv_async_rx |If set to 1 sets RX in async mode 15 | intf_nv_blocking_rx |If set to 1 switches gstreamer into blocking mode 16 | intf_nv_ignore_timestamp | If set to 1 timestamps will be ignored during \ 17 | processing of frames. This also means stale (old) \ 18 | Media Queue items will not be purged. 19 | -------------------------------------------------------------------------------- /lib/avtp_pipeline/platform/Linux/intf_mjpeg_gst/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | IF (NOT GSTREAMER_1_0) 2 | SET (SRC_FILES ${SRC_FILES} 3 | ${AVB_OSAL_DIR}/intf_mjpeg_gst/openavb_intf_mjpeg_gst.c 4 | ${AVB_OSAL_DIR}/gst_al/gst_al_01.c 5 | PARENT_SCOPE 6 | ) 7 | ELSE () 8 | SET (SRC_FILES ${SRC_FILES} 9 | ${AVB_OSAL_DIR}/intf_mjpeg_gst/openavb_intf_mjpeg_gst.c 10 | ${AVB_OSAL_DIR}/gst_al/gst_al_10.c 11 | PARENT_SCOPE 12 | ) 13 | ENDIF () 14 | 15 | # Need include and link directories for GST 16 | SET (INTF_INCLUDE_DIR 17 | ${INTF_INCLUDE_DIR} ${GLIB_PKG_INCLUDE_DIRS} ${GST_PKG_INCLUDE_DIRS} 18 | ${AVB_OSAL_DIR}/gst_al 19 | PARENT_SCOPE 20 | ) 21 | SET (INTF_LIBRARY_DIR ${INTF_LIBRARY_DIR} PARENT_SCOPE) 22 | SET (INTF_LIBRARY ${GLIB_PKG_LIBRARIES} ${GST_PKG_LIBRARIES} ${GSTRTP_PKG_LIBRARIES} PARENT_SCOPE) 23 | 24 | -------------------------------------------------------------------------------- /lib/avtp_pipeline/platform/Linux/intf_mjpeg_gst/mjpeg_camera_intf.md: -------------------------------------------------------------------------------- 1 | MJPEG GStreamer interface {#mjpeg_gst_intf} 2 | ========================= 3 | 4 | # Description 5 | 6 | MJPEG gstreamer interface module. 7 | 8 |
9 | # Interface module configuration parameters 10 | 11 | Name | Description 12 | --------------------------|--------------------------- 13 | intf_nv_gst_pipeline |GStreamer pipeline that will be used 14 | intf_nv_async_rx |If set to 1 sets RX in async mode 15 | intf_nv_blocking_rx |If set to 1 switches gstreamer into blocking mode 16 | intf_nv_ignore_timestamp | If set to 1 timestamps will be ignored during \ 17 | processing of frames. This also means stale (old) \ 18 | Media Queue items will not be purged. 19 | -------------------------------------------------------------------------------- /lib/avtp_pipeline/platform/Linux/intf_mpeg2ts_file/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | SET (SRC_FILES ${SRC_FILES} 2 | ${AVB_OSAL_DIR}/intf_mpeg2ts_file/openavb_intf_mpeg2ts_file.c 3 | PARENT_SCOPE 4 | ) 5 | -------------------------------------------------------------------------------- /lib/avtp_pipeline/platform/Linux/intf_mpeg2ts_file/mpeg2ts_file_intf.md: -------------------------------------------------------------------------------- 1 | MPEG2TS file interface {#mpeg2ts_file_intf} 2 | ======================= 3 | 4 | # Description 5 | 6 | Mpeg2 TS File interface module. 7 | Computation of TS packet duration copied from Live555 application 8 | (www.live555.com). 9 | 10 |
11 | # Interface module configuration parameters 12 | 13 | Name | Description 14 | --------------------------|--------------------------- 15 | intf_nv_file_name |The fully qualified file name. Used on **talker** \ 16 | and on **listener** side 17 | intf_nv_repeat |If set to 1 it will continually repeat the file \ 18 | stream when running as a talker 19 | intf_nv_repeat_seconds |Delay in seconds which will be skipped when repeating 20 | intf_nv_enable_proper_bitrate_streaming|Setting to 1 will enable tracking of \ 21 | the bitrate 22 | intf_nv_ignore_timestamp | If set to 1 timestamps will be ignored during \ 23 | processing of frames. This also means stale (old) \ 24 | Media Queue items will not be purged. 25 | 26 |
27 | # Notes 28 | 29 | Additionally the @ref openavb_intf_cb_t::intf_get_src_bitrate_cb callback function 30 | can be used to calculate the maximum bitrate of the source. 31 | 32 | **Note**: To make those calculations 33 | **intf_nv_enable_proper_bitrate_streaming** has to be enabled. 34 | 35 | If this callback is registered (not NULL) it will trigger several actions: 36 | * calculated maximum bitrate will be passed to the maping module via the 37 | function @ref openavb_map_cb_t::map_set_src_bitrate_cb 38 | * callback @ref openavb_map_cb_t::map_get_max_interval_frames_cb will be 39 | called to calculate the **maximum interval frames** 40 | * **maximum frame size** is calculated by calling 41 | @ref openavb_map_cb_t::map_max_data_size_cb. 42 | 43 | If this callback function is not registered (is NULL), values taken from 44 | the configuration file for **maximum frame size** and **maximum interval frames** 45 | will be used for calculations. 46 | 47 | **maximum frame size** and **maximum interval frames** values are used by 48 | * SRP to calculate bandwidth, 49 | * FQTSS to calculate queueing discipline parameters. 50 | 51 | -------------------------------------------------------------------------------- /lib/avtp_pipeline/platform/Linux/intf_mpeg2ts_gst/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | IF (NOT GSTREAMER_1_0) 2 | SET (SRC_FILES ${SRC_FILES} 3 | ${AVB_OSAL_DIR}/intf_mpeg2ts_gst/openavb_intf_mpeg2ts_gst.c 4 | ${AVB_OSAL_DIR}/gst_al/gst_al_01.c 5 | PARENT_SCOPE 6 | ) 7 | ELSE () 8 | SET (SRC_FILES ${SRC_FILES} 9 | ${AVB_OSAL_DIR}/intf_mpeg2ts_gst/openavb_intf_mpeg2ts_gst.c 10 | ${AVB_OSAL_DIR}/gst_al/gst_al_10.c 11 | PARENT_SCOPE 12 | ) 13 | ENDIF () 14 | 15 | # Need include and link directories for gstreamer 16 | SET (INTF_INCLUDE_DIR 17 | ${INTF_INCLUDE_DIR} ${GLIB_PKG_INCLUDE_DIRS} ${GST_PKG_INCLUDE_DIRS} 18 | ${AVB_OSAL_DIR}/gst_al 19 | PARENT_SCOPE 20 | ) 21 | SET (INTF_LIBRARY_DIR ${INTF_LIBRARY_DIR} PARENT_SCOPE) 22 | SET (INTF_LIBRARY ${GLIB_PKG_LIBRARIES} ${GST_PKG_LIBRARIES} PARENT_SCOPE) 23 | -------------------------------------------------------------------------------- /lib/avtp_pipeline/platform/Linux/intf_mpeg2ts_gst/mpeg2ts_gst_intf.md: -------------------------------------------------------------------------------- 1 | MPEG2TS GStreamer interface {#mpeg2ts_gst_intf} 2 | ============================ 3 | 4 | # Description 5 | 6 | Mpeg2 TS GStreamer interface module. 7 | 8 |
9 | # Interface module configuration parameters 10 | 11 | Name | Description 12 | --------------------------|--------------------------- 13 | intf_nv_gst_pipeline |GStreamer pipeline to be used 14 | intf_nv_ignore_timestamp | If set to 1 timestamps will be ignored during \ 15 | processing of frames. This also means stale (old) \ 16 | Media Queue items will not be purged. 17 | -------------------------------------------------------------------------------- /lib/avtp_pipeline/platform/Linux/intf_wav_file/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | SET (SRC_FILES ${SRC_FILES} 2 | ${AVB_OSAL_DIR}/intf_wav_file/openavb_intf_wav_file.c 3 | PARENT_SCOPE 4 | ) 5 | 6 | # Need include and link directories 7 | SET (INTF_INCLUDE_DIR ${INTF_INCLUDE_DIR} PARENT_SCOPE) 8 | SET (INTF_LIBRARY_DIR ${INTF_LIBRARY_DIR} PARENT_SCOPE) 9 | SET (INTF_LIBRARY ${INTF_LIBRARY} PARENT_SCOPE) 10 | -------------------------------------------------------------------------------- /lib/avtp_pipeline/platform/Linux/intf_wav_file/wav_file_intf.md: -------------------------------------------------------------------------------- 1 | WAV file interface {#wav_file_intf} 2 | ================== 3 | 4 | # Description 5 | 6 | WAV file interface module. 7 | 8 | This interface module is narrowly focused to read a common wav file format 9 | and send the data samples to mapping modules. 10 | 11 |
12 | # Interface module configuration parameters 13 | 14 | Name | Description 15 | --------------------------|--------------------------- 16 | intf_nv_file_name |Name of the file to be read 17 | intf_nv_file_name_rx |Name of wav file where received data will be stored 18 | intf_nv_audio_rate |Audio rate, numberic values defined by \ 19 | @ref avb_audio_rate_t 20 | intf_nv_audio_bit_depth |Bit depth of audio, numeric values defined by \ 21 | @ref avb_audio_bit_depth_t 22 | intf_nv_audio_channels |Number of audio channels, numeric values should be \ 23 | within range of values in @ref avb_audio_channels_t 24 | intf_nv_number_of_data_bytes|Size of sample data counted in bytes. This size \ 25 | should be equal to Subchunk2Size field in wav file\ 26 | to be transferred. The data is printed out by \ 27 | talker when started (INFO: Number of data bytes) 28 | 29 |
30 | # Notes 31 | 32 | There are some parameters that have to be set during configuration of this 33 | interface module and before configuring mapping: 34 | * [AAF audio mapping](@ref aaf_audio_map) 35 | * [Uncompressed audio mapping](@ref uncmp_audio_map) 36 | 37 | These parameters can be set in either: 38 | * in the ini file (or available configuration system), so values will be parsed 39 | in the intf_cfg_cb function, 40 | * in the interface module initialization function where valid values can be 41 | assigned directly 42 | 43 | Values assigned in the intf_cfg_cb function will override any values set in the 44 | initialization function. 45 | 46 | -------------------------------------------------------------------------------- /lib/avtp_pipeline/platform/Linux/openavb_grandmaster_osal.h: -------------------------------------------------------------------------------- 1 | /************************************************************************************************************* 2 | Copyright (c) 2012-2015, Symphony Teleca Corporation, a Harman International Industries, Incorporated company 3 | Copyright (c) 2016-2017, Harman International Industries, Incorporated 4 | All rights reserved. 5 | 6 | Redistribution and use in source and binary forms, with or without 7 | modification, are permitted provided that the following conditions are met: 8 | 9 | 1. Redistributions of source code must retain the above copyright notice, this 10 | list of conditions and the following disclaimer. 11 | 2. Redistributions in binary form must reproduce the above copyright notice, 12 | this list of conditions and the following disclaimer in the documentation 13 | and/or other materials provided with the distribution. 14 | 15 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS LISTED "AS IS" AND 16 | ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 17 | WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 18 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS LISTED BE LIABLE FOR 19 | ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 20 | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 21 | LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 22 | ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 23 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 24 | SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25 | 26 | Attributions: The inih library portion of the source code is licensed from 27 | Brush Technology and Ben Hoyt - Copyright (c) 2009, Brush Technology and Copyright (c) 2009, Ben Hoyt. 28 | Complete license and copyright information can be found at 29 | https://github.com/benhoyt/inih/commit/74d2ca064fb293bc60a77b0bd068075b293cf175. 30 | *************************************************************************************************************/ 31 | 32 | #ifndef _OPENAVB_GRANDMASTER_OSAL_H 33 | #define _OPENAVB_GRANDMASTER_OSAL_H 34 | 35 | #include "openavb_grandmaster_osal_pub.h" 36 | 37 | #endif // _OPENAVB_GRANDMASTER_OSAL_H 38 | -------------------------------------------------------------------------------- /lib/avtp_pipeline/platform/Linux/openavb_osal.h: -------------------------------------------------------------------------------- 1 | /************************************************************************************************************* 2 | Copyright (c) 2012-2015, Symphony Teleca Corporation, a Harman International Industries, Incorporated company 3 | Copyright (c) 2016-2017, Harman International Industries, Incorporated 4 | All rights reserved. 5 | 6 | Redistribution and use in source and binary forms, with or without 7 | modification, are permitted provided that the following conditions are met: 8 | 9 | 1. Redistributions of source code must retain the above copyright notice, this 10 | list of conditions and the following disclaimer. 11 | 2. Redistributions in binary form must reproduce the above copyright notice, 12 | this list of conditions and the following disclaimer in the documentation 13 | and/or other materials provided with the distribution. 14 | 15 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS LISTED "AS IS" AND 16 | ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 17 | WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 18 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS LISTED BE LIABLE FOR 19 | ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 20 | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 21 | LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 22 | ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 23 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 24 | SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25 | 26 | Attributions: The inih library portion of the source code is licensed from 27 | Brush Technology and Ben Hoyt - Copyright (c) 2009, Brush Technology and Copyright (c) 2009, Ben Hoyt. 28 | Complete license and copyright information can be found at 29 | https://github.com/benhoyt/inih/commit/74d2ca064fb293bc60a77b0bd068075b293cf175. 30 | *************************************************************************************************************/ 31 | 32 | #ifndef _OPENAVB_OSAL_H 33 | #define _OPENAVB_OSAL_H 34 | 35 | #include "openavb_hal.h" 36 | #include "openavb_os_services_osal.h" 37 | #include "openavb_tasks.h" 38 | #include "openavb_osal_pub.h" 39 | 40 | 41 | #endif // _OPENAVB_OSAL_H 42 | 43 | -------------------------------------------------------------------------------- /lib/avtp_pipeline/platform/Linux/openavb_time_osal.h: -------------------------------------------------------------------------------- 1 | /************************************************************************************************************* 2 | Copyright (c) 2012-2015, Symphony Teleca Corporation, a Harman International Industries, Incorporated company 3 | Copyright (c) 2016-2017, Harman International Industries, Incorporated 4 | All rights reserved. 5 | 6 | Redistribution and use in source and binary forms, with or without 7 | modification, are permitted provided that the following conditions are met: 8 | 9 | 1. Redistributions of source code must retain the above copyright notice, this 10 | list of conditions and the following disclaimer. 11 | 2. Redistributions in binary form must reproduce the above copyright notice, 12 | this list of conditions and the following disclaimer in the documentation 13 | and/or other materials provided with the distribution. 14 | 15 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS LISTED "AS IS" AND 16 | ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 17 | WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 18 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS LISTED BE LIABLE FOR 19 | ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 20 | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 21 | LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 22 | ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 23 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 24 | SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25 | 26 | Attributions: The inih library portion of the source code is licensed from 27 | Brush Technology and Ben Hoyt - Copyright (c) 2009, Brush Technology and Copyright (c) 2009, Ben Hoyt. 28 | Complete license and copyright information can be found at 29 | https://github.com/benhoyt/inih/commit/74d2ca064fb293bc60a77b0bd068075b293cf175. 30 | *************************************************************************************************************/ 31 | 32 | #ifndef _OPENAVB_TIME_OSAL_H 33 | #define _OPENAVB_TIME_OSAL_H 34 | 35 | #include "openavb_time_osal_pub.h" 36 | 37 | #endif // _OPENAVB_TIME_OSAL_H 38 | -------------------------------------------------------------------------------- /lib/avtp_pipeline/platform/Linux/x86_i210_linux.cmake: -------------------------------------------------------------------------------- 1 | 2 | if (AVB_FEATURE_AVDECC) 3 | set ( AVB_FEATURE_GSTREAMER 0 ) 4 | set ( AVB_FEATURE_PCAP 0 ) 5 | set ( AVB_FEATURE_IGB 0 ) 6 | else () 7 | set ( AVB_FEATURE_PCAP 1 ) 8 | set ( AVB_FEATURE_IGB 1 ) 9 | 10 | set ( GSTREAMER_1_0 0 ) 11 | endif () 12 | 13 | 14 | # and another kernel sources 15 | #set ( LINUX_KERNEL_DIR "/usr/src/kernel" ) 16 | 17 | # build configuration 18 | set ( OPENAVB_HAL "x86_i210" ) 19 | set ( OPENAVB_OSAL "Linux" ) 20 | set ( OPENAVB_TCAL "GNU" ) 21 | set ( OPENAVB_PLATFORM "${OPENAVB_HAL}-${OPENAVB_OSAL}" ) 22 | 23 | # Platform Additions 24 | set ( PLATFORM_INCLUDE_DIRECTORIES 25 | ${CMAKE_SOURCE_DIR}/platform/x86_i210/include 26 | if (AVB_FEATURE_IGB) 27 | ${CMAKE_SOURCE_DIR}/../igb 28 | endif () 29 | ${CMAKE_SOURCE_DIR}/openavb_common 30 | ${CMAKE_SOURCE_DIR}/../../daemons/common 31 | ${CMAKE_SOURCE_DIR}/../../daemons/mrpd 32 | ${CMAKE_SOURCE_DIR}/../../daemons/maap/common 33 | ) 34 | 35 | if (AVB_FEATURE_IGB) 36 | set ( PLATFORM_LINK_DIRECTORIES 37 | ${CMAKE_SOURCE_DIR}/../igb 38 | ) 39 | endif () 40 | 41 | if (AVB_FEATURE_IGB) 42 | set ( PLATFORM_LINK_LIBRARIES 43 | igb 44 | pci 45 | ) 46 | endif () 47 | 48 | # TODO_OPENAVB : need this? 49 | # Set platform specific define 50 | #set ( PLATFORM_DEFINE "AVB_DELAY_TWEAK_USEC=15" ) 51 | -------------------------------------------------------------------------------- /lib/avtp_pipeline/platform/generic/mcr/openavb_mcr_hal.h: -------------------------------------------------------------------------------- 1 | /************************************************************************************************************* 2 | Copyright (c) 2012-2015, Symphony Teleca Corporation, a Harman International Industries, Incorporated company 3 | Copyright (c) 2016-2017, Harman International Industries, Incorporated 4 | All rights reserved. 5 | 6 | Redistribution and use in source and binary forms, with or without 7 | modification, are permitted provided that the following conditions are met: 8 | 9 | 1. Redistributions of source code must retain the above copyright notice, this 10 | list of conditions and the following disclaimer. 11 | 2. Redistributions in binary form must reproduce the above copyright notice, 12 | this list of conditions and the following disclaimer in the documentation 13 | and/or other materials provided with the distribution. 14 | 15 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS LISTED "AS IS" AND 16 | ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 17 | WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 18 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS LISTED BE LIABLE FOR 19 | ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 20 | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 21 | LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 22 | ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 23 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 24 | SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25 | 26 | Attributions: The inih library portion of the source code is licensed from 27 | Brush Technology and Ben Hoyt - Copyright (c) 2009, Brush Technology and Copyright (c) 2009, Ben Hoyt. 28 | Complete license and copyright information can be found at 29 | https://github.com/benhoyt/inih/commit/74d2ca064fb293bc60a77b0bd068075b293cf175. 30 | *************************************************************************************************************/ 31 | 32 | #ifndef OPENAVB_MCR_HAL_H 33 | #define OPENAVB_MCR_HAL_H 34 | 35 | #include "openavb_platform.h" 36 | #include "openavb_mcr_hal_pub.h" 37 | 38 | #endif // OPENAVB_MCR_HAL_H 39 | -------------------------------------------------------------------------------- /lib/avtp_pipeline/platform/generic/openavb_hal.h: -------------------------------------------------------------------------------- 1 | /************************************************************************************************************* 2 | Copyright (c) 2012-2015, Symphony Teleca Corporation, a Harman International Industries, Incorporated company 3 | Copyright (c) 2016-2017, Harman International Industries, Incorporated 4 | All rights reserved. 5 | 6 | Redistribution and use in source and binary forms, with or without 7 | modification, are permitted provided that the following conditions are met: 8 | 9 | 1. Redistributions of source code must retain the above copyright notice, this 10 | list of conditions and the following disclaimer. 11 | 2. Redistributions in binary form must reproduce the above copyright notice, 12 | this list of conditions and the following disclaimer in the documentation 13 | and/or other materials provided with the distribution. 14 | 15 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS LISTED "AS IS" AND 16 | ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 17 | WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 18 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS LISTED BE LIABLE FOR 19 | ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 20 | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 21 | LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 22 | ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 23 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 24 | SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25 | 26 | Attributions: The inih library portion of the source code is licensed from 27 | Brush Technology and Ben Hoyt - Copyright (c) 2009, Brush Technology and Copyright (c) 2009, Ben Hoyt. 28 | Complete license and copyright information can be found at 29 | https://github.com/benhoyt/inih/commit/74d2ca064fb293bc60a77b0bd068075b293cf175. 30 | *************************************************************************************************************/ 31 | 32 | #ifndef _OPENAVB_HAL_H 33 | #define _OPENAVB_HAL_H 34 | 35 | // halPushMCR() API not defined 36 | #define HAL_PUSH_MCR(mcrTimeStampPtr) FALSE 37 | 38 | #endif // _OPENAVB_HAL_H 39 | -------------------------------------------------------------------------------- /lib/avtp_pipeline/platform/platHAL/readme.txt: -------------------------------------------------------------------------------- 1 | Consider migration of HAL implements into this folder. -------------------------------------------------------------------------------- /lib/avtp_pipeline/platform/platOSAL/readme.txt: -------------------------------------------------------------------------------- 1 | Consider migration of OSAL implements into this folder. -------------------------------------------------------------------------------- /lib/avtp_pipeline/platform/platTCAL/GNU/openavb_mem_tcal.c: -------------------------------------------------------------------------------- 1 | /************************************************************************************************************* 2 | Copyright (c) 2012-2015, Symphony Teleca Corporation, a Harman International Industries, Incorporated company 3 | Copyright (c) 2016-2017, Harman International Industries, Incorporated 4 | All rights reserved. 5 | 6 | Redistribution and use in source and binary forms, with or without 7 | modification, are permitted provided that the following conditions are met: 8 | 9 | 1. Redistributions of source code must retain the above copyright notice, this 10 | list of conditions and the following disclaimer. 11 | 2. Redistributions in binary form must reproduce the above copyright notice, 12 | this list of conditions and the following disclaimer in the documentation 13 | and/or other materials provided with the distribution. 14 | 15 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS LISTED "AS IS" AND 16 | ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 17 | WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 18 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS LISTED BE LIABLE FOR 19 | ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 20 | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 21 | LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 22 | ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 23 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 24 | SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25 | 26 | Attributions: The inih library portion of the source code is licensed from 27 | Brush Technology and Ben Hoyt - Copyright (c) 2009, Brush Technology and Copyright (c) 2009, Ben Hoyt. 28 | Complete license and copyright information can be found at 29 | https://github.com/benhoyt/inih/commit/74d2ca064fb293bc60a77b0bd068075b293cf175. 30 | *************************************************************************************************************/ 31 | 32 | #include 33 | 34 | void tcalGetHeapInfo(unsigned int *ttlMallocHeap, unsigned int *freeMallocHeap) 35 | { 36 | struct mallinfo minfo = mallinfo(); 37 | 38 | *ttlMallocHeap = (minfo.arena + minfo.fordblks); 39 | *freeMallocHeap = minfo.fordblks; 40 | } 41 | -------------------------------------------------------------------------------- /lib/avtp_pipeline/platform/platTCAL/GNU/openavb_mem_tcal.h: -------------------------------------------------------------------------------- 1 | /************************************************************************************************************* 2 | Copyright (c) 2012-2015, Symphony Teleca Corporation, a Harman International Industries, Incorporated company 3 | Copyright (c) 2016-2017, Harman International Industries, Incorporated 4 | All rights reserved. 5 | 6 | Redistribution and use in source and binary forms, with or without 7 | modification, are permitted provided that the following conditions are met: 8 | 9 | 1. Redistributions of source code must retain the above copyright notice, this 10 | list of conditions and the following disclaimer. 11 | 2. Redistributions in binary form must reproduce the above copyright notice, 12 | this list of conditions and the following disclaimer in the documentation 13 | and/or other materials provided with the distribution. 14 | 15 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS LISTED "AS IS" AND 16 | ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 17 | WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 18 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS LISTED BE LIABLE FOR 19 | ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 20 | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 21 | LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 22 | ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 23 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 24 | SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25 | 26 | Attributions: The inih library portion of the source code is licensed from 27 | Brush Technology and Ben Hoyt - Copyright (c) 2009, Brush Technology and Copyright (c) 2009, Ben Hoyt. 28 | Complete license and copyright information can be found at 29 | https://github.com/benhoyt/inih/commit/74d2ca064fb293bc60a77b0bd068075b293cf175. 30 | *************************************************************************************************************/ 31 | 32 | #ifndef OPENAVB_MEM_TCAL_H 33 | #define OPENAVB_MEM_TCAL_H 1 34 | 35 | void tcalGetHeapInfo(unsigned int *ttlMallocHeap, unsigned int *freeMallocHeap); 36 | 37 | #endif // OPENAVB_MEM_TCAL_H 38 | 39 | -------------------------------------------------------------------------------- /lib/avtp_pipeline/platform/platTCAL/GNU/openavb_mem_tcal_pub.h: -------------------------------------------------------------------------------- 1 | /************************************************************************************************************* 2 | Copyright (c) 2012-2015, Symphony Teleca Corporation, a Harman International Industries, Incorporated company 3 | Copyright (c) 2016-2017, Harman International Industries, Incorporated 4 | All rights reserved. 5 | 6 | Redistribution and use in source and binary forms, with or without 7 | modification, are permitted provided that the following conditions are met: 8 | 9 | 1. Redistributions of source code must retain the above copyright notice, this 10 | list of conditions and the following disclaimer. 11 | 2. Redistributions in binary form must reproduce the above copyright notice, 12 | this list of conditions and the following disclaimer in the documentation 13 | and/or other materials provided with the distribution. 14 | 15 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS LISTED "AS IS" AND 16 | ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 17 | WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 18 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS LISTED BE LIABLE FOR 19 | ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 20 | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 21 | LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 22 | ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 23 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 24 | SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25 | 26 | Attributions: The inih library portion of the source code is licensed from 27 | Brush Technology and Ben Hoyt - Copyright (c) 2009, Brush Technology and Copyright (c) 2009, Ben Hoyt. 28 | Complete license and copyright information can be found at 29 | https://github.com/benhoyt/inih/commit/74d2ca064fb293bc60a77b0bd068075b293cf175. 30 | *************************************************************************************************************/ 31 | 32 | #ifndef OPENAVB_MEM_TCAL_PUB_H 33 | #define OPENAVB_MEM_TCAL_PUB_H 1 34 | 35 | #include 36 | #include 37 | 38 | #endif // OPENAVB_MEM_TCAL_PUB_H 39 | 40 | -------------------------------------------------------------------------------- /lib/avtp_pipeline/platform/platTCAL/GNU/openavb_tcal_pub.h: -------------------------------------------------------------------------------- 1 | /************************************************************************************************************* 2 | Copyright (c) 2012-2015, Symphony Teleca Corporation, a Harman International Industries, Incorporated company 3 | Copyright (c) 2016-2017, Harman International Industries, Incorporated 4 | All rights reserved. 5 | 6 | Redistribution and use in source and binary forms, with or without 7 | modification, are permitted provided that the following conditions are met: 8 | 9 | 1. Redistributions of source code must retain the above copyright notice, this 10 | list of conditions and the following disclaimer. 11 | 2. Redistributions in binary form must reproduce the above copyright notice, 12 | this list of conditions and the following disclaimer in the documentation 13 | and/or other materials provided with the distribution. 14 | 15 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS LISTED "AS IS" AND 16 | ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 17 | WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 18 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS LISTED BE LIABLE FOR 19 | ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 20 | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 21 | LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 22 | ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 23 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 24 | SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25 | 26 | Attributions: The inih library portion of the source code is licensed from 27 | Brush Technology and Ben Hoyt - Copyright (c) 2009, Brush Technology and Copyright (c) 2009, Ben Hoyt. 28 | Complete license and copyright information can be found at 29 | https://github.com/benhoyt/inih/commit/74d2ca064fb293bc60a77b0bd068075b293cf175. 30 | *************************************************************************************************************/ 31 | 32 | #ifndef OPENAVB_TCAL_PUB_H 33 | #define OPENAVB_TCAL_PUB_H 1 34 | 35 | // Logging Extra Newline. Some platforms libraries require an extra newline 36 | static const bool OPENAVB_TCAL_LOG_EXTRA_NEWLINE = TRUE; 37 | 38 | #endif // OPENAVB_TCAL_PUB_H 39 | 40 | -------------------------------------------------------------------------------- /lib/avtp_pipeline/platform/platTCAL/GNU/openavb_warnings_tcal.h: -------------------------------------------------------------------------------- 1 | /************************************************************************************************************* 2 | Copyright (c) 2012-2015, Symphony Teleca Corporation, a Harman International Industries, Incorporated company 3 | Copyright (c) 2016-2017, Harman International Industries, Incorporated 4 | All rights reserved. 5 | 6 | Redistribution and use in source and binary forms, with or without 7 | modification, are permitted provided that the following conditions are met: 8 | 9 | 1. Redistributions of source code must retain the above copyright notice, this 10 | list of conditions and the following disclaimer. 11 | 2. Redistributions in binary form must reproduce the above copyright notice, 12 | this list of conditions and the following disclaimer in the documentation 13 | and/or other materials provided with the distribution. 14 | 15 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS LISTED "AS IS" AND 16 | ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 17 | WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 18 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS LISTED BE LIABLE FOR 19 | ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 20 | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 21 | LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 22 | ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 23 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 24 | SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25 | 26 | Attributions: The inih library portion of the source code is licensed from 27 | Brush Technology and Ben Hoyt - Copyright (c) 2009, Brush Technology and Copyright (c) 2009, Ben Hoyt. 28 | Complete license and copyright information can be found at 29 | https://github.com/benhoyt/inih/commit/74d2ca064fb293bc60a77b0bd068075b293cf175. 30 | *************************************************************************************************************/ 31 | 32 | #ifndef OPENAVB_WARNINGS_TCAL_H 33 | #define OPENAVB_WARNINGS_TCAL_H 1 34 | 35 | #define OPENAVB_SUPPRESS_WARNING_UNREACHABLE_CODE() 36 | 37 | #endif // OPENAVB_WARNINGS_TCAL_H 38 | 39 | -------------------------------------------------------------------------------- /lib/avtp_pipeline/platform/x86_i210/mcr/openavb_mcr_hal.h: -------------------------------------------------------------------------------- 1 | /************************************************************************************************************* 2 | Copyright (c) 2012-2015, Symphony Teleca Corporation, a Harman International Industries, Incorporated company 3 | Copyright (c) 2016-2017, Harman International Industries, Incorporated 4 | All rights reserved. 5 | 6 | Redistribution and use in source and binary forms, with or without 7 | modification, are permitted provided that the following conditions are met: 8 | 9 | 1. Redistributions of source code must retain the above copyright notice, this 10 | list of conditions and the following disclaimer. 11 | 2. Redistributions in binary form must reproduce the above copyright notice, 12 | this list of conditions and the following disclaimer in the documentation 13 | and/or other materials provided with the distribution. 14 | 15 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS LISTED "AS IS" AND 16 | ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 17 | WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 18 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS LISTED BE LIABLE FOR 19 | ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 20 | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 21 | LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 22 | ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 23 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 24 | SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25 | 26 | Attributions: The inih library portion of the source code is licensed from 27 | Brush Technology and Ben Hoyt - Copyright (c) 2009, Brush Technology and Copyright (c) 2009, Ben Hoyt. 28 | Complete license and copyright information can be found at 29 | https://github.com/benhoyt/inih/commit/74d2ca064fb293bc60a77b0bd068075b293cf175. 30 | *************************************************************************************************************/ 31 | 32 | #ifndef OPENAVB_MCR_HAL_H 33 | #define OPENAVB_MCR_HAL_H 34 | 35 | #include "openavb_platform.h" 36 | #include "openavb_mcr_hal_pub.h" 37 | 38 | #endif // OPENAVB_MCR_HAL_H 39 | -------------------------------------------------------------------------------- /lib/avtp_pipeline/platform/x86_i210/openavb_hal.h: -------------------------------------------------------------------------------- 1 | /************************************************************************************************************* 2 | Copyright (c) 2012-2015, Symphony Teleca Corporation, a Harman International Industries, Incorporated company 3 | Copyright (c) 2016-2017, Harman International Industries, Incorporated 4 | All rights reserved. 5 | 6 | Redistribution and use in source and binary forms, with or without 7 | modification, are permitted provided that the following conditions are met: 8 | 9 | 1. Redistributions of source code must retain the above copyright notice, this 10 | list of conditions and the following disclaimer. 11 | 2. Redistributions in binary form must reproduce the above copyright notice, 12 | this list of conditions and the following disclaimer in the documentation 13 | and/or other materials provided with the distribution. 14 | 15 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS LISTED "AS IS" AND 16 | ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 17 | WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 18 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS LISTED BE LIABLE FOR 19 | ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 20 | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 21 | LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 22 | ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 23 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 24 | SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25 | 26 | Attributions: The inih library portion of the source code is licensed from 27 | Brush Technology and Ben Hoyt - Copyright (c) 2009, Brush Technology and Copyright (c) 2009, Ben Hoyt. 28 | Complete license and copyright information can be found at 29 | https://github.com/benhoyt/inih/commit/74d2ca064fb293bc60a77b0bd068075b293cf175. 30 | *************************************************************************************************************/ 31 | 32 | #ifndef _OPENAVB_HAL_H 33 | #define _OPENAVB_HAL_H 34 | 35 | // Note this remains for backwards compatabilty with older prots. See openavb_mcr_hall_pub.h for newer APIs 36 | // halPushMCR() API not defined 37 | #define HAL_PUSH_MCR(mcrTimeStampPtr) FALSE 38 | 39 | #endif // _OPENAVB_HAL_H 40 | -------------------------------------------------------------------------------- /lib/avtp_pipeline/qmgr/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | SET (SRC_FILES ${SRC_FILES} 2 | ${AVB_SRC_DIR}/qmgr/openavb_qmgr.c 3 | PARENT_SCOPE 4 | ) 5 | 6 | -------------------------------------------------------------------------------- /lib/avtp_pipeline/rawsock/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | if (AVB_FEATURE_PCAP) 2 | message("-- Rawsock PCAP enabled") 3 | SET (PCAP_FILES 4 | ${AVB_OSAL_DIR}/rawsock/pcap_rawsock.c 5 | ) 6 | if (AVB_FEATURE_IGB) 7 | message("-- Rawsock IGB enabled") 8 | SET (IGB_FILES 9 | ${AVB_OSAL_DIR}/rawsock/igb_rawsock.c 10 | ${AVB_HAL_DIR}/openavb_igb.c 11 | ) 12 | endif () 13 | endif () 14 | SET (SRC_FILES ${SRC_FILES} 15 | ${AVB_SRC_DIR}/rawsock/rawsock_impl.c 16 | ${AVB_OSAL_DIR}/rawsock/openavb_rawsock.c 17 | ${AVB_OSAL_DIR}/rawsock/simple_rawsock.c 18 | ${AVB_OSAL_DIR}/rawsock/ring_rawsock.c 19 | ${AVB_OSAL_DIR}/rawsock/sendmmsg_rawsock.c 20 | ${PCAP_FILES} 21 | ${IGB_FILES} 22 | PARENT_SCOPE 23 | ) 24 | -------------------------------------------------------------------------------- /lib/avtp_pipeline/tl/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | SET (SRC_FILES_TL 2 | ${AVB_SRC_DIR}/tl/openavb_tl.c 3 | ${AVB_OSAL_DIR}/tl/openavb_tl_osal.c 4 | ${AVB_SRC_DIR}/tl/openavb_listener.c 5 | ${AVB_SRC_DIR}/tl/openavb_talker.c 6 | ${AVB_SRC_DIR}/avdecc_msg/openavb_avdecc_msg_client.c 7 | ) 8 | 9 | if(AVB_FEATURE_ENDPOINT) 10 | #Additional Files for Endpoint 11 | MESSAGE ("-- TL with Endpoint") 12 | SET (SRC_FILES_TL_EXTRA 13 | ${AVB_SRC_DIR}/endpoint/openavb_endpoint_client.c 14 | ${AVB_SRC_DIR}/tl/openavb_tl_endpoint.c 15 | ${AVB_SRC_DIR}/tl/openavb_talker_endpoint.c 16 | ${AVB_SRC_DIR}/tl/openavb_listener_endpoint.c 17 | ${AVB_OSAL_DIR}/openavb_osal_endpoint.c 18 | ) 19 | else() 20 | #Additional Files for No Endpoint 21 | MESSAGE ("-- TL without Endpoint") 22 | SET (SRC_FILES_TL_EXTRA 23 | ${AVB_SRC_DIR}/tl/openavb_tl_no_endpoint.c 24 | ${AVB_SRC_DIR}/tl/openavb_talker_no_endpoint.c 25 | ${AVB_SRC_DIR}/tl/openavb_listener_no_endpoint.c 26 | ${AVB_OSAL_DIR}/openavb_osal.c 27 | ) 28 | endif() 29 | 30 | SET ( SRC_FILES ${SRC_FILES} ${SRC_FILES_TL} ${SRC_FILES_TL_EXTRA} PARENT_SCOPE) 31 | 32 | 33 | -------------------------------------------------------------------------------- /lib/avtp_pipeline/tl/NOTES.TXT: -------------------------------------------------------------------------------- 1 | The TL (talker/listener) modules manages the talker and listener functionality 2 | and the stream associated with them. 3 | 4 | The functionality is exposed via a public API as declared in openavb_tl_pub.h. 5 | These details of this API are described in the EAVB SDK Developer Guide. 6 | 7 | The general flow is as follows. The hosting application dynamically links in the 8 | TL functional. These TL API are implemented in openavb_tl.c. openavbTLInitialize() is 9 | called first to initialize the TL lists. openavbTLOpen() is called after that with 10 | the ini file name. There will be one call to openavbTLOpen for each talker or listener. 11 | openavbTLRun() is used to start the stream for the talker or listener. openavbTLClose() 12 | will stop the stream for the talker or listener. Finally the openavbTLShutdown() is 13 | used to cleanup the TL functionality. 14 | 15 | There are two hosting applications included with our AVB stack primarily as 16 | samples. These are openavb_tl_host and openavb_tl_harness. It is expected that most 17 | solutions will replace these with a customer specific application. 18 | 19 | At a lower level most things happen as a result of the stTLOpen() call. A thread 20 | is created for each talker and listener. So this means every stream has it's own 21 | thread. The main thread entry point is openavbTLThreadFn(). From there the detailed 22 | talker or listener functionality is called with openavbTLRunTalker() or 23 | openavbTLRunListener() respectively. It is in these talker and listener run functions 24 | the talker registers to the endpoint and the listener attaches to the endpoint. 25 | The endpoint will call back into the talker and listener with details of streams 26 | coming and going so that the talker and listener can determine when to send or not 27 | send and when to listen or not listen. 28 | 29 | -------------------------------------------------------------------------------- /lib/avtp_pipeline/util/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | SET (SRC_FILES ${SRC_FILES} 2 | ${AVB_SRC_DIR}/util/openavb_result_codes.c 3 | ${AVB_SRC_DIR}/util/openavb_list.c 4 | ${AVB_SRC_DIR}/util/openavb_array.c 5 | ${AVB_SRC_DIR}/util/openavb_debug.c 6 | ${AVB_SRC_DIR}/util/openavb_plugin.c 7 | ${AVB_SRC_DIR}/util/openavb_log.c 8 | ${AVB_SRC_DIR}/util/openavb_queue.c 9 | ${AVB_SRC_DIR}/util/openavb_time.c 10 | ${AVB_OSAL_DIR}/openavb_time_osal.c 11 | ${AVB_SRC_DIR}/util/openavb_timestamp.c 12 | ${AVB_SRC_DIR}/util/openavb_printbuf.c 13 | PARENT_SCOPE 14 | ) 15 | 16 | -------------------------------------------------------------------------------- /lib/common/Makefile: -------------------------------------------------------------------------------- 1 | AVB_FEATURE_IGB ?= 1 2 | 3 | ifeq ($(AVB_FEATURE_IGB),1) 4 | AVB_IGB_OBJ = avb_igb.o 5 | EXTRA_CFLAGS = -DAVB_FEATURE_IGB=1 6 | endif 7 | 8 | CC ?= gcc 9 | OPT = -O2 -g 10 | WARN = -Wall -Wextra -Wno-parentheses 11 | CFLAGS = $(OPT) $(WARN) $(EXTRA_CFLAGS) 12 | ALL_OBJS = avb_avtp.o avb_gptp.o $(AVB_IGB_OBJ) 13 | 14 | .PHONY: all clean 15 | 16 | all: $(ALL_OBJS) 17 | 18 | avb_igb.o: CPPFLAGS = -I../igb_avb/lib 19 | avb_igb.o: avb_igb.c avb_igb.h 20 | avb_avtp.o: avb_avtp.c avb_avtp.h 21 | avb_gptp.o: avb_gptp.c avb_gptp.h 22 | 23 | clean: 24 | $(RM) $(ALL_OBJS) 25 | $(RM) `find . -name "*~" -o -name "*.[oa]" -o -name "\#*\#" -o -name TAGS -o -name core -o -name "*.orig"` 26 | -------------------------------------------------------------------------------- /lib/common/avb.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) <2013>, Intel Corporation. 3 | * 4 | * This program is free software; you can redistribute it and/or modify it 5 | * under the terms and conditions of the GNU Lesser General Public License, 6 | * version 2.1, as published by the Free Software Foundation. 7 | * 8 | * This program is distributed in the hope it will be useful, but WITHOUT 9 | * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 10 | * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for 11 | * more details. 12 | * 13 | * You should have received a copy of the GNU Lesser General Public License along with 14 | * this program; if not, write to the Free Software Foundation, Inc., 15 | * 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA. 16 | * 17 | */ 18 | 19 | #ifndef __AVB_H__ 20 | #define __AVB_H__ 21 | 22 | #include "avb_gptp.h" 23 | #include "avb_srp.h" 24 | #include "avb_avtp.h" 25 | #ifndef AVB_FEATURE_IGB 26 | /* IGB has not been disabled, so assume it is enabled. */ 27 | #define AVB_FEATURE_IGB 1 28 | #include "avb_igb.h" 29 | #endif 30 | 31 | #endif /* __AVB_H__ */ 32 | -------------------------------------------------------------------------------- /lib/common/avb_igb.c: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) <2013>, Intel Corporation. 3 | * 4 | * This program is free software; you can redistribute it and/or modify it 5 | * under the terms and conditions of the GNU Lesser General Public License, 6 | * version 2.1, as published by the Free Software Foundation. 7 | * 8 | * This program is distributed in the hope it will be useful, but WITHOUT 9 | * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 10 | * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for 11 | * more details. 12 | * 13 | * You should have received a copy of the GNU Lesser General Public License along with 14 | * this program; if not, write to the Free Software Foundation, Inc., 15 | * 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA. 16 | * 17 | */ 18 | 19 | #include "avb_igb.h" 20 | 21 | #include 22 | #include 23 | #include 24 | #include 25 | 26 | /** 27 | * @brief Connect to the network card 28 | * @param igb_dev [inout] Device handle 29 | * @return 0 for success, ENXIO for failure 30 | */ 31 | 32 | int pci_connect(device_t *igb_dev) 33 | { 34 | char devpath[IGB_BIND_NAMESZ]; 35 | struct pci_access *pacc; 36 | struct pci_dev *dev; 37 | int err; 38 | 39 | memset(igb_dev, 0, sizeof(device_t)); 40 | pacc = pci_alloc(); 41 | pci_init(pacc); 42 | pci_scan_bus(pacc); 43 | 44 | for (dev = pacc->devices; dev; dev = dev->next) { 45 | pci_fill_info(dev, PCI_FILL_IDENT | PCI_FILL_BASES | PCI_FILL_CLASS); 46 | igb_dev->pci_vendor_id = dev->vendor_id; 47 | igb_dev->pci_device_id = dev->device_id; 48 | igb_dev->domain = dev->domain; 49 | igb_dev->bus = dev->bus; 50 | igb_dev->dev = dev->dev; 51 | igb_dev->func = dev->func; 52 | snprintf(devpath, IGB_BIND_NAMESZ, "%04x:%02x:%02x.%d", 53 | dev->domain, dev->bus, dev->dev, dev->func); 54 | err = igb_probe(igb_dev); 55 | if (err) { 56 | continue; 57 | } 58 | printf("attaching to %s\n", devpath); 59 | err = igb_attach(devpath, igb_dev); 60 | if (err) { 61 | printf("attach failed! (%s)\n", strerror(err)); 62 | continue; 63 | } 64 | err = igb_attach_tx(igb_dev); 65 | if (err) { 66 | printf("attach_tx failed! (%s)\n", strerror(err)); 67 | igb_detach(igb_dev); 68 | continue; 69 | } 70 | goto out; 71 | } 72 | pci_cleanup(pacc); 73 | return ENXIO; 74 | out: 75 | pci_cleanup(pacc); 76 | return 0; 77 | } 78 | -------------------------------------------------------------------------------- /lib/common/avb_igb.h: -------------------------------------------------------------------------------- 1 | #ifndef __AVB_IGB_H__ 2 | #define __AVB_IGB_H__ 3 | 4 | #include 5 | 6 | #define IGB_BIND_NAMESZ 24 7 | 8 | int pci_connect(device_t * igb_dev); 9 | 10 | #endif 11 | -------------------------------------------------------------------------------- /lib/common/avb_srp.h: -------------------------------------------------------------------------------- 1 | #ifndef __AVB_SRP_H__ 2 | #define __AVB_SRP_H__ 3 | 4 | #define MRPD_PORT_DEFAULT 7500 5 | 6 | #endif 7 | -------------------------------------------------------------------------------- /run_avtp_pipeline.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Script to start the AVTP Pipeline talker/listener with 8-channel, 48K/24-bit IEC 61883-6 audio. 4 | # For more details, refer to the lib/avtp_pipeline/README.md file. 5 | 6 | if [ "$#" -eq "0" ]; then 7 | echo "Please enter network interface name as parameter. For example:" 8 | echo "sudo $0 eth1" 9 | echo "" 10 | exit -1 11 | fi 12 | 13 | nic=$1 14 | echo "Starting AVTP Pipeline on "$nic 15 | 16 | scriptdir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" 17 | 18 | pushd . 19 | cd $scriptdir/lib/avtp_pipeline/build/bin 20 | ./openavb_avdecc -I pcap:$nic example_talker.ini example_listener.ini & 21 | sleep 5 22 | ./openavb_host -I pcap:$nic example_talker.ini example_listener.ini & 23 | popd 24 | 25 | -------------------------------------------------------------------------------- /run_daemons.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # Start all daemons 3 | 4 | if [ "$1" == "-h" ]; then 5 | echo "Usage: $0 " 6 | echo " eg: $0 eth1" 7 | echo "" 8 | echo "If you are using IGB, call \"sudo ./run_igb.sh\" before running this script." 9 | echo "" 10 | exit 11 | fi 12 | 13 | if [ "$1" == "" ]; then 14 | echo "Please enter network interface name as parameter. For example:" 15 | echo "sudo $0 eth1" 16 | echo "" 17 | echo "If you are using IGB, call \"sudo ./run_igb.sh\" before running this script." 18 | echo "" 19 | exit -1 20 | fi 21 | 22 | nic=$1 23 | echo "Starting daemons on "$nic 24 | 25 | groupadd ptp > /dev/null 2>&1 26 | daemons/gptp/linux/build/obj/daemon_cl $nic & 27 | daemons/mrpd/mrpd -mvs -i $nic & 28 | daemons/maap/linux/build/maap_daemon -i $nic -d /dev/null 29 | daemons/shaper/shaper_daemon -d & 30 | -------------------------------------------------------------------------------- /run_echo_listener.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # Simple script to run echo_listener 3 | 4 | if [ "$#" -eq "0" ]; then 5 | echo "please enter network interface name as parameter. For example:" 6 | echo "sudo ./run_echo_talker eth1" 7 | exit -1 8 | fi 9 | 10 | cd lib/avtp_pipeline/build/bin 11 | exec ./openavb_host -I $1 echo_listener.ini,stream_addr=ba:bc:1a:ba:bc:1a 12 | -------------------------------------------------------------------------------- /run_echo_talker.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # Simple script to run echo_talker 3 | 4 | if [ "$#" -eq "0" ]; then 5 | echo "please enter network interface name as parameter. For example:" 6 | echo "sudo ./run_echo_talker eth1" 7 | exit -1 8 | fi 9 | 10 | cd lib/avtp_pipeline/build/bin 11 | exec ./openavb_host -I $1 echo_talker.ini,stream_addr=ba:bc:1a:ba:bc:1a 12 | -------------------------------------------------------------------------------- /run_gptp.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # Simple script to run gptp 3 | 4 | if [ "$#" -eq "0" ]; then 5 | echo "please enter network interface name as parameter. For example:" 6 | echo "sudo ./run_gptp.sh eth1" 7 | exit -1 8 | fi 9 | 10 | groupadd ptp 11 | daemons/gptp/linux/build/obj/daemon_cl $1 $2 $3 $4 $5 $6 $7 $8 12 | -------------------------------------------------------------------------------- /run_igb.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # Simple script to run igb_avb 3 | 4 | if [ "$#" -eq "0" ]; then 5 | echo "please enter network interface name as parameter. For example:" 6 | echo "sudo ./run_igb.sh eth1" 7 | exit -1 8 | fi 9 | 10 | rmmod igb 11 | modprobe i2c_algo_bit 12 | modprobe dca 13 | modprobe ptp 14 | insmod kmod/igb/igb_avb.ko 15 | 16 | ethtool -i $1 17 | -------------------------------------------------------------------------------- /run_maap.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # Simple script to run MAAP 3 | 4 | if [ "$#" -eq "0" ]; then 5 | echo "please enter network interface name as parameter. For example:" 6 | echo "sudo ./run_maap.sh eth1" 7 | exit -1 8 | fi 9 | 10 | ./daemons/maap/linux/build/maap_daemon -i $1 11 | -------------------------------------------------------------------------------- /run_shaper.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # Simple script to run the shaper daemon 3 | 4 | ./daemons/shaper/shaper_daemon 5 | -------------------------------------------------------------------------------- /run_simple_talker.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # Simple script to the simple_talker 3 | 4 | if [ "$#" -eq "0" ]; then 5 | echo "please enter network interface name as parameter. For example:" 6 | echo "sudo ./run_simple_talker.sh eth1" 7 | exit -1 8 | fi 9 | 10 | examples/simple_talker/simple_talker -i $1 -t 2 11 | -------------------------------------------------------------------------------- /run_srp.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # Simple script to run srp 3 | 4 | if [ "$#" -eq "0" ]; then 5 | echo "please enter network interface name as parameter. For example:" 6 | echo "sudo ./run_srp.sh eth1" 7 | exit -1 8 | fi 9 | 10 | daemons/mrpd/mrpd -mvs -i $1 11 | -------------------------------------------------------------------------------- /stop_avtp_pipeline.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | killall -2 openavb_host 4 | sleep 1 5 | killall -2 openavb_avdecc 6 | 7 | # Code below this point is to recover in case one of the applications crashes. 8 | 9 | sleep 5 10 | 11 | killall -9 openavb_host 12 | killall -9 openavb_avdecc 13 | sleep 1 14 | 15 | scriptdir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" 16 | 17 | $scriptdir/lib/avtp_pipeline/build/bin/shutdown_openavb_endpoint.sh 18 | $scriptdir/lib/avtp_pipeline/build/bin/shutdown_openavb_avdecc.sh 19 | 20 | -------------------------------------------------------------------------------- /stop_daemons.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # Stop all daemons 3 | 4 | killall shaper_daemon 5 | killall maap_daemon 6 | killall mrpd 7 | killall daemon_cl 8 | 9 | # possibly add rmmod igb_avb here 10 | 11 | -------------------------------------------------------------------------------- /travis.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -ev 3 | 4 | make daemons_all 5 | make examples_all 6 | make avtp_pipeline 7 | make avtp_avdecc 8 | mkdir build 9 | cd build 10 | cmake .. -G "Unix Makefiles" 11 | make 12 | export ARGS=--output-on-failure 13 | make test 14 | --------------------------------------------------------------------------------