<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="https://devzone.nordicsemi.com/cfs-file/__key/system/syndication/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>MPSL assert 112, 2235 after starting DTM TX test using custom rpmsg endpoint</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/92951/mpsl-assert-112-2235-after-starting-dtm-tx-test-using-custom-rpmsg-endpoint</link><description>I have made a second rpmsg endpoint to hci_rpmsg sample and integrated direct test mode sample functionality behind that second endpoint. Application has dedicated test mode to prevent starting normal Bluetooth using HCI when DTM is needed. After starting</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Wed, 19 Oct 2022 06:13:24 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/92951/mpsl-assert-112-2235-after-starting-dtm-tx-test-using-custom-rpmsg-endpoint" /><item><title>RE: MPSL assert 112, 2235 after starting DTM TX test using custom rpmsg endpoint</title><link>https://devzone.nordicsemi.com/thread/391325?ContentTypeID=1</link><pubDate>Wed, 19 Oct 2022 06:13:24 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:f9ab5493-4ea5-48ab-8ce7-3a750bf0a06a</guid><dc:creator>artop</dc:creator><description>&lt;p&gt;Thanks,&lt;/p&gt;
&lt;p&gt;Seems that the needed CONFIG_DYNAMIC_DIRECT_INTERRUPTS is not giving directly compatible interface with 1.7.0 version of SDK so have to go with that hack version.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: MPSL assert 112, 2235 after starting DTM TX test using custom rpmsg endpoint</title><link>https://devzone.nordicsemi.com/thread/391217?ContentTypeID=1</link><pubDate>Tue, 18 Oct 2022 13:47:40 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:3399010b-e6a2-458d-92e2-5c9aa10d60d9</guid><dc:creator>Sigurd</dc:creator><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;&lt;span&gt;This assert in MPSL happens because radio interrupts are only expected within a MPSL radio event (when MPSL have been initialized).&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;
[quote user="artop"]Is there some some elegant way to disable or&amp;nbsp;replace already registered IRQ handler?[/quote]
&lt;p&gt;Yes, we recently added support for that on the main branch. See this PR:&amp;nbsp;&lt;a href="https://github.com/nrfconnect/sdk-nrf/pull/8613"&gt;https://github.com/nrfconnect/sdk-nrf/pull/8613&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: MPSL assert 112, 2235 after starting DTM TX test using custom rpmsg endpoint</title><link>https://devzone.nordicsemi.com/thread/391183?ContentTypeID=1</link><pubDate>Tue, 18 Oct 2022 12:05:13 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:72a38015-0fce-4339-9737-a6d0c7ed3c35</guid><dc:creator>artop</dc:creator><description>&lt;p&gt;Seems that&amp;nbsp;mpsl_lib_init always inits&amp;nbsp;RADIO_IRQn at startup and that handler should not be executed in case of running DTM.&amp;nbsp;DTM registers it own interrupt handler, but it is not replacing mpsl version. Is there some some elegant way to disable or&amp;nbsp;replace already registered IRQ handler?&lt;br /&gt;&lt;br /&gt;Hack like this to mpsl interrupt handler does the job, but is not quite elegant:&lt;br /&gt;&lt;code&gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;bool mpsl_init_dtm_is_on = false;

ISR_DIRECT_DECLARE(mpsl_radio_isr_wrapper)
{
	if (!mpsl_init_dtm_is_on) {
		MPSL_IRQ_RADIO_Handler();

		ISR_DIRECT_PM();

		/* We may need to reschedule in case a radio timeslot callback
		* accesses zephyr primitives.
		*/
		return 1;
	}
	extern int dtm_radio_wrapper(void);
	return dtm_radio_wrapper();
}&lt;/pre&gt;&lt;code&gt;&lt;/code&gt;&lt;code&gt;&lt;span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/p&gt;
&lt;div&gt;&lt;/div&gt;
&lt;p&gt;&lt;code&gt;&lt;/code&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>