{"id":4515,"date":"2019-06-16T19:56:28","date_gmt":"2019-06-16T17:56:28","guid":{"rendered":"https:\/\/demdlx704as001.ad.harman.com\/?p=4515"},"modified":"2021-12-15T21:51:35","modified_gmt":"2021-12-15T20:51:35","slug":"multiple-instance-multiple-core-support-for-dynamic-sfd-with-gtt","status":"publish","type":"post","link":"https:\/\/audioworx.transfunnel.co\/old\/?p=4515","title":{"rendered":"Multiple Instance Multiple Core support for dynamic SFD with GTT"},"content":{"rendered":"<p class=\"text\">In order to be able to use dynamic signal flow, a flash\/file I\/O scheme needs to be implemented on the desired target device. Please refer to Section &#8220;Tuning Sets (SETi) implemented&#8221; of this document. The way dynamic signal flow works is explained in the sections below.<\/p>\n<p><img fetchpriority=\"high\" decoding=\"async\" class=\"alignnone size-full wp-image-4516\" src=\"https:\/\/audioworx.transfunnel.co\/old\/wp-content\/uploads\/2019\/06\/014.jpg\" alt=\"\" width=\"802\" height=\"376\" \/><\/p>\n<h4 class=\"text\">Signal Design<\/h4>\n<p class=\"text\">The signal flow is designed in the GTT. Once completed, it is sent through an xTP message to the xAF. Refer to the GTT documentation for more information regarding how to design the signal flow in the SFD.<\/p>\n<h4 class=\"text\">Saving the signal flow on target device<\/h4>\n<p class=\"text\">On the target device, the xTP layer should have a way to use an instance of <em>InitializationMsgParser<\/em> class. This class is available in the interface library that is delivered with xAF. Below is an example of instantiating an instance:<\/p>\n<p class=\"text\">Note: initializationParser is initialized in platform code.<\/p>\n<p class=\"text\">When an instance command is received, the reference below should be used to parse the xTP message and store it in flash or where the target device choses. In the file where the xTP message parsing takes place, you should see the following:<\/p>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-4517\" src=\"https:\/\/audioworx.transfunnel.co\/old\/wp-content\/uploads\/2019\/06\/015.jpg\" alt=\"\" width=\"842\" height=\"230\" \/><\/p>\n<h4 class=\"text\">Instantiating the Signal Flow from the signal flow stored on the device<\/h4>\n<p class=\"text\">Once the step above is complete, the signal flow can be instantiated by rebooting the system. To do this, the following code should be implemented along with the initialization of the framework. You can use the <em>DSFDParser<\/em> class, which is also included in the xAF interface library. Below is a brief example of how to load one instance onto a given core.<\/p>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-4519\" src=\"https:\/\/audioworx.transfunnel.co\/old\/wp-content\/uploads\/2019\/06\/016-1.jpg\" alt=\"\" width=\"777\" height=\"760\" \/><\/p>\n<h4 class=\"text\">Example Implementation<\/h4>\n<p class=\"text\">In current release, examples are available for IVP and Summit. For IVP, the signal flow file, <em>sectXX.flash<\/em>, is stored in the IVP Plugins folder indicated by user settings. You can find a reference implementation on the xAF repo in the <em>VirtualAmpEffect<\/em>\u00a0file at the following location:<\/p>\n<p class=\"text\"><a href=\"https:\/\/bitbucket.harman.com\/projects\/LSACCA\/repos\/extendable-audio-framework\/browse\/private\/utils\/xAFVirtualAmp\/VirtualAmpEffect.cpp?at=refs%2Fheads%2Fmaster\">https:\/\/bitbucket.harman.com\/projects\/LSACCA\/repos\/extendable-audio-framework\/browse\/private\/utils\/xAFVirtualAmp\/VirtualAmpEffect.cpp?at=refs%2Fheads%2Fmaster<\/a><\/p>\n<p class=\"text\">On Summit, the SD card is used as a storage medium. You can find a reference implementation on the Summit repo on the xAF_examples branch. The projects that have implemented this are:<\/p>\n<ul>\n<li class=\"text\"><em>reference\/xaf_reference_app\/a15_app<\/em><\/li>\n<li class=\"text\"><em>reference\/xaf_reference_app\/c66_app<\/em><\/li>\n<li class=\"text\"><em>reference\/xaf_reference_app\/multicore_app<\/em><\/li>\n<\/ul>\n<p class=\"text\">You need to be concerned about the <em>src\/audiorouter.cpp<\/em> file.<\/p>\n<p class=\"text\">Example Link: <a href=\"https:\/\/bitbucket.harman.com\/projects\/GST\/repos\/car-audio-global-repository\/browse?at=release%2FAwx_Journey_10.0.19.25\">https:\/\/bitbucket.harman.com\/projects\/GST\/repos\/car-audio-global-repository\/browse?at=release%2FAwx_Journey_10.0.19.25<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>In order to be able to use dynamic signal flow, a flash\/file I\/O scheme needs to be implemented on the desired target device. Please refer to Section &#8220;Tuning Sets (SETi) implemented&#8221; of this document. The way dynamic signal flow works is explained in the sections below. Signal Design The signal flow is designed in the [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"ocean_post_layout":"","ocean_both_sidebars_style":"","ocean_both_sidebars_content_width":0,"ocean_both_sidebars_sidebars_width":0,"ocean_sidebar":"","ocean_second_sidebar":"","ocean_disable_margins":"enable","ocean_add_body_class":"","ocean_shortcode_before_top_bar":"","ocean_shortcode_after_top_bar":"","ocean_shortcode_before_header":"","ocean_shortcode_after_header":"","ocean_has_shortcode":"","ocean_shortcode_after_title":"","ocean_shortcode_before_footer_widgets":"","ocean_shortcode_after_footer_widgets":"","ocean_shortcode_before_footer_bottom":"","ocean_shortcode_after_footer_bottom":"","ocean_display_top_bar":"default","ocean_display_header":"default","ocean_header_style":"","ocean_center_header_left_menu":"","ocean_custom_header_template":"","ocean_custom_logo":0,"ocean_custom_retina_logo":0,"ocean_custom_logo_max_width":0,"ocean_custom_logo_tablet_max_width":0,"ocean_custom_logo_mobile_max_width":0,"ocean_custom_logo_max_height":0,"ocean_custom_logo_tablet_max_height":0,"ocean_custom_logo_mobile_max_height":0,"ocean_header_custom_menu":"","ocean_menu_typo_font_family":"","ocean_menu_typo_font_subset":"","ocean_menu_typo_font_size":0,"ocean_menu_typo_font_size_tablet":0,"ocean_menu_typo_font_size_mobile":0,"ocean_menu_typo_font_size_unit":"px","ocean_menu_typo_font_weight":"","ocean_menu_typo_font_weight_tablet":"","ocean_menu_typo_font_weight_mobile":"","ocean_menu_typo_transform":"","ocean_menu_typo_transform_tablet":"","ocean_menu_typo_transform_mobile":"","ocean_menu_typo_line_height":0,"ocean_menu_typo_line_height_tablet":0,"ocean_menu_typo_line_height_mobile":0,"ocean_menu_typo_line_height_unit":"","ocean_menu_typo_spacing":0,"ocean_menu_typo_spacing_tablet":0,"ocean_menu_typo_spacing_mobile":0,"ocean_menu_typo_spacing_unit":"","ocean_menu_link_color":"","ocean_menu_link_color_hover":"","ocean_menu_link_color_active":"","ocean_menu_link_background":"","ocean_menu_link_hover_background":"","ocean_menu_link_active_background":"","ocean_menu_social_links_bg":"","ocean_menu_social_hover_links_bg":"","ocean_menu_social_links_color":"","ocean_menu_social_hover_links_color":"","ocean_disable_title":"default","ocean_disable_heading":"default","ocean_post_title":"","ocean_post_subheading":"","ocean_post_title_style":"","ocean_post_title_background_color":"","ocean_post_title_background":0,"ocean_post_title_bg_image_position":"","ocean_post_title_bg_image_attachment":"","ocean_post_title_bg_image_repeat":"","ocean_post_title_bg_image_size":"","ocean_post_title_height":0,"ocean_post_title_bg_overlay":0.5,"ocean_post_title_bg_overlay_color":"","ocean_disable_breadcrumbs":"default","ocean_breadcrumbs_color":"","ocean_breadcrumbs_separator_color":"","ocean_breadcrumbs_links_color":"","ocean_breadcrumbs_links_hover_color":"","ocean_display_footer_widgets":"default","ocean_display_footer_bottom":"default","ocean_custom_footer_template":"","footnotes":"","ocean_post_oembed":"","ocean_post_self_hosted_media":"","ocean_post_video_embed":"","ocean_link_format":"","ocean_link_format_target":"self","ocean_quote_format":"","ocean_quote_format_link":"post","ocean_gallery_link_images":"off","ocean_gallery_id":[]},"categories":[54,10],"tags":[],"coauthors":[165],"_links":{"self":[{"href":"https:\/\/audioworx.transfunnel.co\/old\/index.php?rest_route=\/wp\/v2\/posts\/4515"}],"collection":[{"href":"https:\/\/audioworx.transfunnel.co\/old\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/audioworx.transfunnel.co\/old\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/audioworx.transfunnel.co\/old\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/audioworx.transfunnel.co\/old\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=4515"}],"version-history":[{"count":6,"href":"https:\/\/audioworx.transfunnel.co\/old\/index.php?rest_route=\/wp\/v2\/posts\/4515\/revisions"}],"predecessor-version":[{"id":14374,"href":"https:\/\/audioworx.transfunnel.co\/old\/index.php?rest_route=\/wp\/v2\/posts\/4515\/revisions\/14374"}],"wp:attachment":[{"href":"https:\/\/audioworx.transfunnel.co\/old\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=4515"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/audioworx.transfunnel.co\/old\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=4515"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/audioworx.transfunnel.co\/old\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=4515"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/audioworx.transfunnel.co\/old\/index.php?rest_route=%2Fwp%2Fv2%2Fcoauthors&post=4515"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}