<?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>(Libuartes) Reset nRF when receive RX buffer from computer</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/84192/libuartes-reset-nrf-when-receive-rx-buffer-from-computer</link><description>Hi, I&amp;#39;m using the example libuartes of nrf5 sdk ver16. This example worked (receive data from computer(Hercules) and send it to back) I have some customize that is when nRF received data from computer, it will send any data I want back to the computer</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Mon, 28 Feb 2022 09:22:12 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/84192/libuartes-reset-nrf-when-receive-rx-buffer-from-computer" /><item><title>RE: (Libuartes) Reset nRF when receive RX buffer from computer</title><link>https://devzone.nordicsemi.com/thread/355199?ContentTypeID=1</link><pubDate>Mon, 28 Feb 2022 09:22:12 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:5296ade0-5fab-4ffd-a27d-6d1dfbd3545e</guid><dc:creator>Vidar Berg</dc:creator><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;It frees the current buffer so that it can be reused for a later transaction. But is there are reason you don&amp;#39;t allocate larger buffers? &lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: (Libuartes) Reset nRF when receive RX buffer from computer</title><link>https://devzone.nordicsemi.com/thread/355139?ContentTypeID=1</link><pubDate>Sun, 27 Feb 2022 12:50:57 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:1b92cb29-ab04-45aa-afde-b93f33cf75b2</guid><dc:creator>Pham Tam</dc:creator><description>&lt;p&gt;Hi Vidar,&amp;nbsp; what rx_buffer&amp;nbsp;&lt;span&gt;nrf_libuarte_async_rx_free() actually free&amp;nbsp; &amp;nbsp;?&lt;br /&gt;NRF_LIBUARTE_ASYNC_DEFINE(libuarte1, 0, 0, 0, NRF_LIBUARTE_PERIPHERAL_NOT_USED, 10, 3);&lt;br /&gt;I define my _rx_buf_size =10 and I got it overflow.&lt;br /&gt;It not reported the errors like above. It just clear the rx_buffer when overflow and add the next character it received to start of buffer&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: (Libuartes) Reset nRF when receive RX buffer from computer</title><link>https://devzone.nordicsemi.com/thread/352360?ContentTypeID=1</link><pubDate>Thu, 10 Feb 2022 13:48:59 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:387dd976-36b9-4612-b08d-0481ee2c9ede</guid><dc:creator>Pham Tam</dc:creator><description>&lt;p&gt;Thank for your support Vidar. Thank you so much !&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: (Libuartes) Reset nRF when receive RX buffer from computer</title><link>https://devzone.nordicsemi.com/thread/351758?ContentTypeID=1</link><pubDate>Tue, 08 Feb 2022 11:31:51 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:0b08998b-7fa0-4fba-96d6-8fbe47431c59</guid><dc:creator>Vidar Berg</dc:creator><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;I&amp;#39;m glad to hear that it solved the problem.&lt;/p&gt;
[quote user="pham_tam"]to check length of buffer before and after free but the length not change. I don&amp;#39;t know what buffer which is freed&amp;nbsp; by [/quote]
&lt;p&gt;&amp;quot;free&amp;quot; makes it so that the same memory can be re-used for the next transaction. You will eventually run out of buffers if you don&amp;#39;t this. The event data (p_evt-&amp;gt;data.rxtx.p_data and p_evt-&amp;gt;data.rxtx.length) is however not updated after nrf_libuarte_async_rx_free();&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: (Libuartes) Reset nRF when receive RX buffer from computer</title><link>https://devzone.nordicsemi.com/thread/351604?ContentTypeID=1</link><pubDate>Mon, 07 Feb 2022 15:31:14 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:9f19bd23-7b31-4f03-adc2-cf750a3d97d2</guid><dc:creator>Pham Tam</dc:creator><description>&lt;p&gt;Hi Vidar,&lt;br /&gt;Thank for your reply. You are such a good guide ^^.&lt;br /&gt;My problem was solved. Just move nrf_libuarte_async_rx_free function&amp;nbsp;as soon as NRF_LIBUARTE_ASYNC_EVT_RX_DATA event is called.&lt;/p&gt;
&lt;p&gt;For another small question&lt;br /&gt;&lt;span&gt;I tried to call NRF_LOG_INFO(&amp;quot;%d&amp;quot;,&amp;nbsp;p_evt-&amp;gt;data.rxtx.length); &lt;pre class="ui-code" data-mode="c_cpp"&gt;NRF_LOG_INFO(&amp;quot;before freed%d&amp;quot;, p_evt-&amp;gt;data.rxtx.length); 
nrf_libuarte_async_rx_free(p_libuarte, p_evt-&amp;gt;data.rxtx.p_data, p_evt-&amp;gt;data.rxtx.length);
NRF_LOG_INFO(&amp;quot;after freed%d&amp;quot;, p_evt-&amp;gt;data.rxtx.length); &lt;/pre&gt;to check length of buffer before and after free but the length not change. I don&amp;#39;t know what buffer which is freed&amp;nbsp; by nrf_libuarte_async_rx_free function ?&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: (Libuartes) Reset nRF when receive RX buffer from computer</title><link>https://devzone.nordicsemi.com/thread/351582?ContentTypeID=1</link><pubDate>Mon, 07 Feb 2022 14:45:59 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:84159787-b0e0-4e35-aa04-db915492d743</guid><dc:creator>Vidar Berg</dc:creator><description>&lt;p&gt;Hello,&lt;/p&gt;
&lt;p&gt;I am not able to replicate the issue when here when I only free the RX buffer on NRF_LIBUARTE_ASYNC_EVT_RX_DATA.&lt;/p&gt;
&lt;p&gt;Attached below is the test code I used. Can you test it and see if you get the same result?&lt;/p&gt;
&lt;p&gt;libuarte_hello example based on nRF5 SDK 16.0.0:&lt;/p&gt;
&lt;p&gt;&lt;a href="https://devzone.nordicsemi.com/cfs-file/__key/communityserver-discussions-components-files/4/libuarte_5F00_hello.zip"&gt;devzone.nordicsemi.com/.../libuarte_5F00_hello.zip&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: (Libuartes) Reset nRF when receive RX buffer from computer</title><link>https://devzone.nordicsemi.com/thread/351428?ContentTypeID=1</link><pubDate>Sun, 06 Feb 2022 03:19:57 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:c9c582de-bdae-4bbd-97c8-e63c02e9135e</guid><dc:creator>Pham Tam</dc:creator><description>&lt;p&gt;&lt;span&gt;Does any suggestions please?&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: (Libuartes) Reset nRF when receive RX buffer from computer</title><link>https://devzone.nordicsemi.com/thread/351145?ContentTypeID=1</link><pubDate>Thu, 03 Feb 2022 14:15:51 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:0b15b667-5c0e-4c76-8f63-81018981b76f</guid><dc:creator>John12</dc:creator><description>&lt;p&gt;Hi Vidar&lt;br /&gt;I tried to move nrf_libuarte_async_rx_free() to the end NRF_LIBUARTE_ASYNC_EVT_RX_DATA and this problem still occurs like this (nothing changed from befroe moving libuarte_async_rx_free())&lt;br /&gt;&lt;br /&gt;&lt;img style="cursor:zoom-in;" alt=" " src="https://devzone.nordicsemi.com/resized-image/__size/640x480/__key/communityserver-discussions-components-files/4/pastedimage1643778889577v1.png" /&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: (Libuartes) Reset nRF when receive RX buffer from computer</title><link>https://devzone.nordicsemi.com/thread/351137?ContentTypeID=1</link><pubDate>Thu, 03 Feb 2022 13:59:56 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:c9f9908f-dc25-4155-a8b9-168531829b9d</guid><dc:creator>Vidar Berg</dc:creator><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;The &amp;#39;m_loopback_phase&amp;#39; flag is never cleared which will cause the nrf_libuarte_async_rx_free() to be called on every NRF_LIBUARTE_ASYNC_EVT_TX_DONE event even if there is no data in the RX buffer.&lt;/p&gt;
&lt;p&gt;You can move nrf_libuarte_async_rx_free() to the end NRF_LIBUARTE_ASYNC_EVT_RX_DATA event if you are not doing loopback testing.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: (Libuartes) Reset nRF when receive RX buffer from computer</title><link>https://devzone.nordicsemi.com/thread/351133?ContentTypeID=1</link><pubDate>Thu, 03 Feb 2022 13:54:17 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:208e9959-4e4e-42ce-b6d7-70dd68dca9a5</guid><dc:creator>John12</dc:creator><description>&lt;p&gt;Hi, I just call nrf_libuarte_async_rx_free() once in line 59.&lt;br /&gt;As I mentioned above on my question, here is my code just edit line 37 (libuarte example) into 38.&lt;/p&gt;
&lt;p&gt;Here is my project sequence&lt;br /&gt;step 1. I receive any text from my computer&lt;br /&gt;step 2. my nRF will save it to the buffer&amp;nbsp;textReceived in line 35 =&amp;gt; sprintf(textReceived, &amp;quot;%s&amp;quot;, p_evt-&amp;gt;data.rxtx.p_data);&lt;br /&gt;step 3. my nRF will send textAT1 back to computer in line 38 =&amp;gt; nrf_libuarte_async_tx(p_libuarte, textAT1_Uart1, sizeof(textAT1_Uart1));&lt;br /&gt;step 4. NRF_LIBUARTE_ASYNC_EVT_TX_DONE will be call when I send textAT1 in step 3 in this event I call nrf_libuarte_async_rx_free(p_libuarte, p_evt-&amp;gt;data.rxtx.p_data, p_evt-&amp;gt;data.rxtx.length); in line 59&lt;br /&gt;but I don&amp;#39;t know p_evt-&amp;gt;data.rxtx.p_data, p_evt-&amp;gt;data.rxtx.length correctly ? so Can you help me at this point ? I think this is the main reason caused my prolem&lt;br /&gt;&lt;br /&gt;In the libuates example, this is different from my project at step 3 =&amp;gt; instead of calling nrf_libuarte_async_tx(p_libuarte, textAT1_Uart1, sizeof(textAT1_Uart1)); the example call nrf_libuarte_async_tx(p_libuarte, p_evt-&amp;gt;data.rxtx.p_data, p_evt-&amp;gt;data.rxtx.length); and the code work well it has no any problems.&lt;br /&gt;&lt;br /&gt;In my case I used this function&amp;nbsp;nrf_libuarte_async_tx(p_libuarte, textAT1_Uart1, sizeof(textAT1_Uart1)) but I&amp;#39;m not sure if I free correctly buffer name and its length in this call nrf_libuarte_async_rx_free(p_libuarte, p_evt-&amp;gt;data.rxtx.p_data, p_evt-&amp;gt;data.rxtx.length);&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;NRF_LIBUARTE_ASYNC_DEFINE(libuarte1, 0, 0, 0, NRF_LIBUARTE_PERIPHERAL_NOT_USED, 100, 3);
NRF_LIBUARTE_ASYNC_DEFINE(libuarte2, 1, 2, 2, NRF_LIBUARTE_PERIPHERAL_NOT_USED, 100, 3);

static uint8_t text[] = &amp;quot;nrf reset =============\r\n&amp;quot;;
static uint8_t textAT1_Uart1[] = &amp;quot;nice to meet you\r\n&amp;quot;;
static uint8_t textReceived[100];
static volatile bool m_loopback_phase;

typedef struct
{
    uint8_t *p_data;
    uint32_t length;
} buffer_t;

NRF_QUEUE_DEF(buffer_t, m_buf_queue, 10, NRF_QUEUE_MODE_NO_OVERFLOW);

//Function to send via UART1
void send_UART_1(char *sdata, int len)
{
    ret_code_t ret;
    ret = nrf_libuarte_async_tx(&amp;amp;libuarte1, sdata, len);
    APP_ERROR_CHECK(ret);
}

void uart_event_handler(void *context, nrf_libuarte_async_evt_t *p_evt)
{
    nrf_libuarte_async_t *p_libuarte = (nrf_libuarte_async_t *)context;
    ret_code_t ret;

    switch (p_evt-&amp;gt;type)
    {
    case NRF_LIBUARTE_ASYNC_EVT_ERROR:
        break;
    case NRF_LIBUARTE_ASYNC_EVT_RX_DATA:
        sprintf(textReceived, &amp;quot;%s&amp;quot;, p_evt-&amp;gt;data.rxtx.p_data);
        // send_UART_1(textAT1_Uart1, sizeof(textAT1_Uart1));
        // ret = nrf_libuarte_async_tx(p_libuarte, p_evt-&amp;gt;data.rxtx.p_data, p_evt-&amp;gt;data.rxtx.length);
        ret = nrf_libuarte_async_tx(p_libuarte, textAT1_Uart1, sizeof(textAT1_Uart1));
        if (ret == NRF_ERROR_BUSY)
        {
            buffer_t buf = {
                .p_data = p_evt-&amp;gt;data.rxtx.p_data,
                .length = p_evt-&amp;gt;data.rxtx.length,
            };

            ret = nrf_queue_push(&amp;amp;m_buf_queue, &amp;amp;buf);
            APP_ERROR_CHECK(ret);
        }
        else
        {
            APP_ERROR_CHECK(ret);
        }
        bsp_board_led_invert(1);
        m_loopback_phase = true;
        break;
    case NRF_LIBUARTE_ASYNC_EVT_TX_DONE:
        if (m_loopback_phase)
        {
            nrf_libuarte_async_rx_free(p_libuarte, p_evt-&amp;gt;data.rxtx.p_data, p_evt-&amp;gt;data.rxtx.length);
            if (!nrf_queue_is_empty(&amp;amp;m_buf_queue))
            {
                buffer_t buf;
                ret = nrf_queue_pop(&amp;amp;m_buf_queue, &amp;amp;buf);
                APP_ERROR_CHECK(ret);
                UNUSED_RETURN_VALUE(nrf_libuarte_async_tx(p_libuarte, buf.p_data, buf.length));
            }
        }
        bsp_board_led_invert(2);
        break;
    default:
        break;
    }
}

 int main(void)
  {
      bsp_board_init(BSP_INIT_LEDS);
      ret_code_t ret = nrf_drv_clock_init();
      APP_ERROR_CHECK(ret);
      nrf_drv_clock_lfclk_request(NULL);
      ret_code_t err_code = NRF_LOG_INIT(app_timer_cnt_get);
      APP_ERROR_CHECK(err_code);

      NRF_LOG_DEFAULT_BACKENDS_INIT();

      nrf_libuarte_async_config_t nrf_libuarte_async_config1 = {
          .tx_pin = TX_PIN_NUMBER1,
          .rx_pin = RX_PIN_NUMBER1,
          .baudrate = NRF_UARTE_BAUDRATE_115200,
          .parity = NRF_UARTE_PARITY_EXCLUDED,
          .hwfc = NRF_UARTE_HWFC_DISABLED,
          .timeout_us = 100,
          .int_prio = APP_IRQ_PRIORITY_LOW};

      nrf_libuarte_async_config_t nrf_libuarte_async_config2 = {
          .tx_pin = TX_PIN_NUMBER2,
          .rx_pin = RX_PIN_NUMBER2,
          .baudrate = NRF_UARTE_BAUDRATE_115200,
          .parity = NRF_UARTE_PARITY_EXCLUDED,
          .hwfc = NRF_UARTE_HWFC_DISABLED,
          .timeout_us = 100,
          .int_prio = APP_IRQ_PRIORITY_LOW};

      err_code = nrf_libuarte_async_init(&amp;amp;libuarte1, &amp;amp;nrf_libuarte_async_config1, uart_event_handler, (void *)&amp;amp;libuarte1);
      err_code = nrf_libuarte_async_init(&amp;amp;libuarte2, &amp;amp;nrf_libuarte_async_config2, uart_event_handler, (void *)&amp;amp;libuarte2);

      APP_ERROR_CHECK(err_code);
      nrf_libuarte_async_enable(&amp;amp;libuarte1);
      nrf_libuarte_async_enable(&amp;amp;libuarte2);
      APP_ERROR_CHECK(err_code);
      send_UART_1(text, sizeof(text));

      while (true)
      {
          NRF_LOG_FLUSH();
      }
  }&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: (Libuartes) Reset nRF when receive RX buffer from computer</title><link>https://devzone.nordicsemi.com/thread/351108?ContentTypeID=1</link><pubDate>Thu, 03 Feb 2022 13:03:09 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:e2937538-8cb4-4323-ac41-f64d946f3bf3</guid><dc:creator>Vidar Berg</dc:creator><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;Are you calling nrf_libuarte_async_rx_free() from multiple places, or only when you are done processing the UART RX DATA from NRF_LIBUARTE_ASYNC_EVT_RX_DATA? Can you post relevant code here?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: (Libuartes) Reset nRF when receive RX buffer from computer</title><link>https://devzone.nordicsemi.com/thread/350769?ContentTypeID=1</link><pubDate>Wed, 02 Feb 2022 05:14:53 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:2cce6887-2b8f-4f15-9a25-ddd5e8ce247e</guid><dc:creator>John12</dc:creator><description>&lt;p&gt;Hi Berg,&lt;/p&gt;
&lt;p&gt;Here is the full error log. I researched for this error and I found a soulution that is&amp;nbsp; add &lt;strong&gt;nrf_libuarte_async_rx_free()&amp;nbsp;&lt;/strong&gt;in the UART callback handler to free RX buffer, but in my case I used this function but I&amp;#39;m not sure if I free correctly buffer name and its length&lt;br /&gt;&lt;img alt=" " src="https://devzone.nordicsemi.com/resized-image/__size/640x480/__key/communityserver-discussions-components-files/4/pastedimage1643778889577v1.png" /&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: (Libuartes) Reset nRF when receive RX buffer from computer</title><link>https://devzone.nordicsemi.com/thread/350768?ContentTypeID=1</link><pubDate>Wed, 02 Feb 2022 05:06:50 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:86ebeb7a-e0b3-40c4-8e95-1077140ec52d</guid><dc:creator>Vidar Berg</dc:creator><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;You are doing it correctly, but I can&amp;#39;t see the full error log here:&lt;/p&gt;
&lt;p&gt;&lt;img src="https://devzone.nordicsemi.com/resized-image/__size/320x240/__key/communityserver-discussions-components-files/4/pastedimage1643778367725v1.png" alt=" " /&gt;&lt;/p&gt;
&lt;p&gt;This line includes the file name and line number of where the error occured.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: (Libuartes) Reset nRF when receive RX buffer from computer</title><link>https://devzone.nordicsemi.com/thread/350766?ContentTypeID=1</link><pubDate>Wed, 02 Feb 2022 04:55:38 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:6237af55-84e1-4faf-958b-e86e064a2847</guid><dc:creator>John12</dc:creator><description>&lt;p&gt;Hi Berg, &lt;br /&gt;Thanks for your suggestion. But I don&amp;#39;t know how to test UART in Debug mode. Can you give me some hints ?&lt;br /&gt;Debug-&amp;gt;Go-&amp;gt;Continue Excution that is all I did and I got this problem when I get the error&lt;br /&gt;&lt;img src="https://devzone.nordicsemi.com/resized-image/__size/640x480/__key/communityserver-discussions-components-files/4/pastedimage1643777722424v1.png" alt=" " /&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: (Libuartes) Reset nRF when receive RX buffer from computer</title><link>https://devzone.nordicsemi.com/thread/350410?ContentTypeID=1</link><pubDate>Mon, 31 Jan 2022 12:13:57 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:7ab70432-51b6-42d7-9954-9a0b165502cd</guid><dc:creator>Vidar Berg</dc:creator><description>&lt;p&gt;Hello Tam,&lt;/p&gt;
&lt;p&gt;Resets are almost always done by the app error handler when a runtime error has been detected (see &lt;span&gt;&lt;a title="Error module" href="https://infocenter.nordicsemi.com/topic/sdk_nrf5_v17.1.0/lib_error.html?cp=8_1_3_13"&gt;Error module&lt;/a&gt;&lt;/span&gt;). Can you try to set the DEBUG flag and see where the error occurred?&lt;/p&gt;
&lt;p&gt;Note: if you use segger embedded studio, it&amp;#39;s sufficient to select the &amp;quot;Debug&amp;quot; build configuration. This will set the flag and make the error handler print a crash log containing the filename and line number of where the error occurred.&lt;/p&gt;
&lt;p&gt;Debug configuration selected from the drop-down menu in the project explorer view:&lt;/p&gt;
&lt;p&gt;&lt;img src="https://devzone.nordicsemi.com/resized-image/__size/320x240/__key/communityserver-discussions-components-files/4/pastedimage1643631159991v1.png" alt=" " /&gt;&lt;/p&gt;
&lt;p&gt;Best regards,&lt;/p&gt;
&lt;p&gt;Vidar&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>