<?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>Large data transfer over ble.</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/56232/large-data-transfer-over-ble</link><description>Hi, 
 I would like to have a system such as follows: 
 
 Taking sensor data storing it locally till around 100 samples (Once per second) 
 Log this data to the SD with a time stamp 
 Then storing this data to an external SD card. (Utilising the fatfs</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Wed, 15 Jan 2020 14:39:18 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/56232/large-data-transfer-over-ble" /><item><title>RE: Large data transfer over ble.</title><link>https://devzone.nordicsemi.com/thread/229241?ContentTypeID=1</link><pubDate>Wed, 15 Jan 2020 14:39:18 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:202fddba-b47e-4b0e-aa67-f5dbb2d2eb71</guid><dc:creator>Simonr</dc:creator><description>&lt;p&gt;Hi Thomas&lt;/p&gt;
&lt;p&gt;The error codes can be looked up using ble_err.h and nrf_error.h. Error 0x3002 is BLE_ERROR_INVALID_CONN_HANDLE and defined as being an invalid connect handle. NRF_ERROR_STK_BASE_NUM is defined as 0x3000 in nrf_error.h.&lt;/p&gt;
&lt;p&gt;Have you edited the ble_app_pwr_profiling example to be connectable or is it just advertising and not connecting to a central? I think it would be easier to avoid these connection errors if you based your project in an example that is already using connectable advertising by default.&lt;/p&gt;
&lt;p&gt;Best regards,&lt;/p&gt;
&lt;p&gt;Simon&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Large data transfer over ble.</title><link>https://devzone.nordicsemi.com/thread/229189?ContentTypeID=1</link><pubDate>Wed, 15 Jan 2020 10:42:58 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:dded27ec-f953-4975-96a6-83831ce37ff9</guid><dc:creator>Thomas</dc:creator><description>&lt;p&gt;I also sometimes get an error from&amp;nbsp;m_event_handler(&amp;amp;app_uart_event); within a uart event handler in app_uart_fifo.c. In the case of&amp;nbsp;NRF_DRV_UART_EVT_TX_DONE.&amp;nbsp; This error code is 1.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;I am thinking this is due to data being sent to the uart and it not being processed until the main loop is restarted.&lt;/p&gt;
&lt;p&gt;This error run from the:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;main: advertising_mod:&amp;nbsp;err_code = sd_ble_gap_adv_stop(m_adv_handle);&lt;/li&gt;
&lt;li&gt;ble_gap.h: SVCALL(SD_BLE_GAP_ADV_STOP, uint32_t, sd_ble_gap_adv_stop(uint8_t adv_handle));&lt;/li&gt;
&lt;li&gt;nrfx_uarte.c:&amp;nbsp;uarte_irq_handler :&amp;nbsp;p_cb-&amp;gt;handler(&amp;amp;event, p_cb-&amp;gt;p_context); //This is aborting the transfer&lt;/li&gt;
&lt;li&gt;&lt;span&gt;nrfx_uarte.c:&amp;nbsp;&lt;/span&gt;&lt;span&gt;uarte_evt_handler :&amp;nbsp;m_handlers[inst_idx](&amp;amp;event, m_contexts[inst_idx]);&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;app_uart_fifo.c : uart_event_handler: m_event_handler(&amp;amp;app_uart_event)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Then app error handler_bare&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span&gt;I do however get some data out before this error runs:&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: Large data transfer over ble.</title><link>https://devzone.nordicsemi.com/thread/229186?ContentTypeID=1</link><pubDate>Wed, 15 Jan 2020 10:33:06 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:542e9d87-7f4c-4b83-80bd-dc32467a524f</guid><dc:creator>Thomas</dc:creator><description>&lt;p&gt;I get an error code on sd_ble_gap_disconnect&lt;/p&gt;
&lt;p&gt;err_code 3002. Is there somewhere I can look up these error codes?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Large data transfer over ble.</title><link>https://devzone.nordicsemi.com/thread/229073?ContentTypeID=1</link><pubDate>Tue, 14 Jan 2020 14:17:22 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:fb433100-e97e-4c35-a04f-e1cbd6cf6e04</guid><dc:creator>Simonr</dc:creator><description>&lt;p&gt;Do you have any error code to go on this time around? I&amp;#39;m guessing that the UART events aren&amp;#39;t handled properly since your project isn&amp;#39;t using UART originally, but it&amp;#39;s hard to say what exactly is going wrong without any error code or log.&lt;/p&gt;
&lt;p&gt;Best regards,&lt;/p&gt;
&lt;p&gt;Simon&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Large data transfer over ble.</title><link>https://devzone.nordicsemi.com/thread/229005?ContentTypeID=1</link><pubDate>Tue, 14 Jan 2020 10:41:15 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:572956db-d336-48e6-9ea3-915a1658670d</guid><dc:creator>Thomas</dc:creator><description>&lt;p&gt;Hi Simon,&lt;/p&gt;
&lt;p&gt;Cheers for that, it makes perfect sense. So I have now changed, my ble_evt_handler with the disconnected case to:&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="text"&gt;case BLE_GAP_EVT_DISCONNECTED:
            err_code = sd_ble_gap_disconnect(m_conn_handle, BLE_HCI_REMOTE_USER_TERMINATED_CONNECTION);
            err_code = ble_advertising_restart_without_whitelist(&amp;amp;advertising_mod);
                if (err_code != NRF_ERROR_INVALID_STATE)
                {
                    APP_ERROR_CHECK(err_code);
                }
                GATT_CONNECTED = false;//Enable the live advertising
            break;&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;This is similar to the UART example you suggested. However, I changed the parameter to advertising_mod from&amp;nbsp;m_advertising. This was due to a compile error stating it was undefined and recommending advertising_mod.&lt;/p&gt;
&lt;p&gt;This still causes a fatal error on disconnect. This error comes from the&amp;nbsp;uarte_evt_handler going to the fifo&amp;nbsp;m_event_handler(&amp;amp;app_uart_event);&lt;/p&gt;
&lt;p&gt;This happens a few seconds after I press disconnect on the app.&lt;/p&gt;
&lt;p&gt;I have also tried using advertising_start();&lt;/p&gt;
&lt;p&gt;That functionality looks like below:&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="text"&gt;static void advertising_start(void)
{
    ret_code_t err_code;

    err_code = sd_ble_gap_adv_start(m_adv_handle, APP_BLE_CONN_CFG_TAG);
    APP_ERROR_CHECK(err_code);
}
&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;However, this does also not work.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Large data transfer over ble.</title><link>https://devzone.nordicsemi.com/thread/228972?ContentTypeID=1</link><pubDate>Tue, 14 Jan 2020 09:40:59 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:bbdec130-52a9-4135-84d3-a604f2bc0015</guid><dc:creator>Simonr</dc:creator><description>&lt;p&gt;Hi Thomas&lt;/p&gt;
&lt;p&gt;Seeing as you&amp;#39;re using the ble_app_pwr_profiling example, how are you handling the BLE_GAP_EVT_DISCONNECTED in your ble_evt_handler? By default, the&amp;nbsp;&lt;span&gt;ble_app_pwr_profiling&amp;nbsp;example is handling it by going to system OFF mode upon a disconnection, which might be why your device doesn&amp;#39;t start advertising upon a disconnect. Try handling the disconnect event like the ble_app_uart example does, as that example does start advertising automatically upon a disconnect.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Best regards,&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Simon&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Large data transfer over ble.</title><link>https://devzone.nordicsemi.com/thread/228867?ContentTypeID=1</link><pubDate>Mon, 13 Jan 2020 15:23:24 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:5b397ae5-9e87-46e6-ade0-2c32268a2c74</guid><dc:creator>Thomas</dc:creator><description>&lt;p&gt;Hi Simon,&lt;/p&gt;
&lt;p&gt;Sorry the confusion let me clarify.&lt;/p&gt;
&lt;p&gt;I can advertise whilst no connection is active and have changing adverts that works fine.&lt;/p&gt;
&lt;p&gt;Then from the main NRF connect screen when I see the list of devices I have the option to connect to the device as you would expect. From there I can see the services with the device.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;However, when I then disconnect from this my advert does not come back and I get the aforementioned fatal error.&lt;/p&gt;
&lt;p&gt;I want my advertising to restart on a disconnect. I am not sure why this is not the case.&lt;/p&gt;
&lt;p&gt;In my main code I have the following:&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="text"&gt; while (true)
    {
        if(GATT_CONNECTED == false)
        {
          // Get next gyte from FIFO
          while (app_uart_get(&amp;amp;c) != NRF_SUCCESS);
          string[pos] = c;

          // Assume that all strings end with \n. If end, print and start over.
          if (string[pos] == &amp;#39;\n&amp;#39;)
          {
              string[pos+1] = &amp;#39;\0&amp;#39;;
              NRF_LOG_INFO(&amp;quot;Received string: \&amp;quot;%s\&amp;quot;&amp;quot;, string);
              sscanf( string, &amp;quot;%*d , %d , %*d , %d &amp;quot;, &amp;amp;T1_data_1,&amp;amp;T2_data_1);
              NRF_LOG_INFO(&amp;quot;T1 is:\&amp;quot;%d\&amp;quot;&amp;quot;, T1_data_1);
              NRF_LOG_INFO(&amp;quot;T2 is:\&amp;quot;%d\&amp;quot;&amp;quot;, T2_data_1);
              pos = 0;
              counter++;
              idle_state_handle();
              data_changed = true;
              //converted_number =  toBinary(T1_data_1);
              if(data_changed==true)
              {
                advertising_mod(counter,T1_data_1,T2_data_1,00,00,70,80,70,80);//Only have two temperature sensors
                data_changed = false;
              }
          }
          else
          {
              pos++;
            
          }
       }
       else// GATT_CONNECTED = true
       {
           idle_state_handle();
       }
    }&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;GATT_CONNECTED is a boolean I have created. I set this to true in the ble_evt_handler within the case BLE_GAP_EVT_CONNECTED case. And I also set it to false on the disconnected case.&lt;/p&gt;
&lt;p&gt;I am not sure why the advert itself does not restart. Note I am using a modified ble_app_pwr_profiling example.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Large data transfer over ble.</title><link>https://devzone.nordicsemi.com/thread/228830?ContentTypeID=1</link><pubDate>Mon, 13 Jan 2020 14:22:08 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:18100c86-820b-4609-a402-8a6920de97f1</guid><dc:creator>Simonr</dc:creator><description>&lt;p&gt;Hi Thomas&lt;/p&gt;
[quote user="ThomasMorris"]Then when press connect nothing is populated within the services menu also, I am chucking the data out to a RTT viewer. When I press connect&amp;nbsp;I stop my live advertising Via a boolean that is set from the ble_evt_handler connected state. Then I can see the services.[/quote]
&lt;p&gt;I&amp;#39;m not entirely sure what you mean here. Do you have to press connect twice for the device to connect to your central properly? The fact that it stops advertising when you connect makes sense, as it is connecting and won&amp;#39;t be able to advertise during that process, as the nRF52 series only has one radio.&lt;/p&gt;
&lt;p&gt;As for the disconnect you are seeing, BLE_GATTS_EVT_TIMEOUT means that a peer failed to respond to an ATT request in time, and that makes the central disconnect from your peripheral. So somewhere your peripheral is ignoring an ATT request from the central which causes this disconnect. You can see &lt;a href="https://infocenter.nordicsemi.com/index.jsp?topic=%2Fcom.nordic.infocenter.s140.api.v7.0.1%2Fstructble__gatts__evt__timeout__t.html&amp;amp;cp=4_5_3_1_2_4_4_19"&gt;ble_gatts_evt_timeout_t &lt;/a&gt;for more information on this disconnect reason.&lt;/p&gt;
&lt;p&gt;Best regards,&lt;/p&gt;
&lt;p&gt;Simon&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Large data transfer over ble.</title><link>https://devzone.nordicsemi.com/thread/228770?ContentTypeID=1</link><pubDate>Mon, 13 Jan 2020 11:26:58 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:baed6b78-dbdd-4cf1-8182-14bf8d59eb13</guid><dc:creator>Thomas</dc:creator><description>&lt;p&gt;Hi Simon,&lt;/p&gt;
&lt;p&gt;I have looked through the ble_app_pwr_profiling example. I have gotten it to work with my advertising that updates once per second from data coming in via UART.&lt;/p&gt;
&lt;p&gt;However, whilst this works. Using the nordic semi conductor app (NRF connect). The device comes up with the live data and a connection is available.&lt;/p&gt;
&lt;p&gt;The way my code works at the moment is as follows:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;init the advert via button press (connectable)&lt;/li&gt;
&lt;li&gt;Wait for UART string data (received once per second)&lt;/li&gt;
&lt;li&gt;Update the advert (Run advertising_mod function see below)&lt;/li&gt;
&lt;li&gt;Loop&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Then when press connect nothing is populated within the services menu also, I am chucking the data out to a RTT viewer. When I press connect&amp;nbsp;I stop my live advertising Via a boolean that is set from the ble_evt_handler connected state. Then I can see the services. But, when I disconnect I get fatal error.&lt;/p&gt;
&lt;p&gt;This runs from BLE_GATTS_EVT_TIMEOUT APP&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Advertising Mod: Note m_beacon is just for storing my data values inside of.&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="text"&gt;static void advertising_mod(int count, int T1_value,int T2_value,
                                       int t3_value_1,int t3_value_2, int p1_value_1, int p1_value_2,
                                       int p2_value_1,int p2_value_2)
{
    uint32_t      err_code;
    ble_advdata_t advdata;
    uint8_t       flags = BLE_GAP_ADV_FLAG_BR_EDR_NOT_SUPPORTED;
    
    int t1_value_1 = (T1_value &amp;gt;&amp;gt;8) &amp;amp; 0XFF;//MSB shifting
    int t1_value_2 = T1_value &amp;amp; 0XFF;//LSB

    int t2_value_1 = (T2_value &amp;gt;&amp;gt; 8) &amp;amp; 0XFF;//MSB
    int t2_value_2 = T2_value &amp;amp; 0XFF;//LSB

    ble_advdata_manuf_data_t manuf_specific_data;
    m_beacon_info[0]=(unsigned char) count;
    m_beacon_info[1]=(unsigned char) t1_value_1;
    m_beacon_info[2]=(unsigned char) t1_value_2;
    m_beacon_info[3]=(unsigned char) t2_value_1;
    m_beacon_info[4]=(unsigned char) t2_value_2;
    m_beacon_info[5]=(unsigned char) t3_value_1;
    m_beacon_info[6]=(unsigned char) t3_value_2;
    m_beacon_info[7]=(unsigned char) p1_value_1;
    m_beacon_info[8]=(unsigned char) p1_value_2;
    m_beacon_info[9]=(unsigned char) p2_value_1;
    m_beacon_info[10]=(unsigned char) p2_value_2;
   
    manuf_specific_data.company_identifier = COMPANY_IDENTIFIER;
    manuf_specific_data.data.p_data = (uint8_t *) m_beacon_info;
    manuf_specific_data.data.size   = APP_BEACON_INFO_LENGTH;

    // Build and set advertising data.
    memset(&amp;amp;advdata, 0, sizeof(advdata));

    advdata.name_type             = BLE_ADVDATA_NO_NAME;
    advdata.flags                 = flags;
    advdata.p_manuf_specific_data = &amp;amp;manuf_specific_data;

    // Initialize advertising parameters (used when starting advertising).
    memset(&amp;amp;m_adv_params, 0, sizeof(m_adv_params));

    m_adv_params.properties.type = BLE_GAP_ADV_TYPE_CONNECTABLE_SCANNABLE_UNDIRECTED;
    //m_adv_params.properties.type = BLE_GAP_ADV_TYPE_NONCONNECTABLE_NONSCANNABLE_UNDIRECTED;
    m_adv_params.p_peer_addr     = NULL;    // Undirected advertisement.
    m_adv_params.filter_policy   = BLE_GAP_ADV_FP_ANY;
    m_adv_params.interval        = CONNECTABLE_ADV_INTERVAL;
    m_adv_params.duration        = APP_ADV_DURATION;       // 30 Second adverts
    m_adv_params.primary_phy     = BLE_GAP_PHY_1MBPS;

    err_code = ble_advdata_encode(&amp;amp;advdata, m_adv_data.adv_data.p_data, &amp;amp;m_adv_data.adv_data.len);
    APP_ERROR_CHECK(err_code);

    err_code = sd_ble_gap_adv_stop(m_adv_handle);
    APP_ERROR_CHECK(err_code);

    err_code = sd_ble_gap_adv_set_configure(&amp;amp;m_adv_handle, &amp;amp;m_adv_data, &amp;amp;m_adv_params);
    APP_ERROR_CHECK(err_code);

    err_code = sd_ble_gap_adv_start(m_adv_handle, APP_BLE_CONN_CFG_TAG);
    APP_ERROR_CHECK(err_code);
}&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;The error comes from&amp;nbsp;err_code = sd_ble_gap_disconnect(p_ble_evt-&amp;gt;evt.gatts_evt.conn_handle,&lt;br /&gt; BLE_HCI_REMOTE_USER_TERMINATED_CONNECTION);&lt;/p&gt;
&lt;p&gt;But, I am not sure why.&lt;/p&gt;
&lt;p&gt;Thanks,&lt;/p&gt;
&lt;p&gt;Thomas&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Large data transfer over ble.</title><link>https://devzone.nordicsemi.com/thread/228589?ContentTypeID=1</link><pubDate>Fri, 10 Jan 2020 14:13:55 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:a8187e68-9889-4049-81a5-f34ddee28b38</guid><dc:creator>Simonr</dc:creator><description>&lt;p&gt;Hi&lt;/p&gt;
&lt;p&gt;I believe the ble_app_pwr_profiling example uses the&lt;strong&gt;&amp;nbsp;sd_ble_gap_adv_set_configure&amp;nbsp;&lt;/strong&gt;function&amp;nbsp;in order to set up two different advertising buffers, however, we don&amp;#39;t have an example for&amp;nbsp;updating advertising data regularly like you want to.&lt;/p&gt;
&lt;p&gt;Best regards,&lt;/p&gt;
&lt;p&gt;Simon&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Large data transfer over ble.</title><link>https://devzone.nordicsemi.com/thread/228573?ContentTypeID=1</link><pubDate>Fri, 10 Jan 2020 13:19:48 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:01657322-2236-4943-a8a4-ea980e765396</guid><dc:creator>Thomas</dc:creator><description>&lt;p&gt;Also is there any example code where this is used?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Large data transfer over ble.</title><link>https://devzone.nordicsemi.com/thread/228387?ContentTypeID=1</link><pubDate>Thu, 09 Jan 2020 14:32:33 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:3de8ad97-f502-40b6-8484-0a7085967182</guid><dc:creator>Thomas</dc:creator><description>&lt;p&gt;Ok I&amp;#39;ll have a look.&lt;/p&gt;
&lt;p&gt;But the old way I did it was start an ad then stop and start another. I presume the :&amp;nbsp;SVCALL(SD_BLE_GAP_ADV_SET_CONFIGURE, uint32_t, sd_ble_gap_adv_set_configure(uint8_t *p_adv_handle, ble_gap_adv_data_t const *p_adv_data, ble_gap_adv_params_t const *p_adv_params));&lt;/p&gt;
&lt;p&gt;Is used to update it rather than stop and start it again.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Large data transfer over ble.</title><link>https://devzone.nordicsemi.com/thread/228385?ContentTypeID=1</link><pubDate>Thu, 09 Jan 2020 14:23:29 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:d478ec23-2c42-4680-a339-79ac0074554c</guid><dc:creator>Simonr</dc:creator><description>&lt;p&gt;Hi Thomas&lt;/p&gt;
&lt;p&gt;Okay, thank you for explaining what you want to do. I urge you to check out the sd_ble_gap_adv_set_configure function on line 1887 in &lt;em&gt;ble_gap.h&lt;/em&gt; at&amp;nbsp;&lt;strong&gt;C:\nordicsemi\SDK\nRF5_SDK_16.0.0_98a08e2\components\softdevice\s140\headers\&amp;nbsp;&lt;/strong&gt;where configuring an additional advertising set is described. In order to update advertising data while advertising, new advertising buffers must be provided, as you can&amp;#39;t change the one you&amp;#39;re using while advertising, which is likely what causes the error.&lt;/p&gt;
&lt;p&gt;So you&amp;#39;ll have to alternate between what advertising buffer you&amp;#39;re updating each time in order to keep up a continuous advertisement.&lt;/p&gt;
&lt;p&gt;Best regards,&lt;/p&gt;
&lt;p&gt;Simon&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Large data transfer over ble.</title><link>https://devzone.nordicsemi.com/thread/228278?ContentTypeID=1</link><pubDate>Thu, 09 Jan 2020 08:21:00 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:c8cd01ed-cf30-44ea-b966-b0b6a25ede14</guid><dc:creator>Thomas</dc:creator><description>&lt;p&gt;Hi Simon,&lt;/p&gt;
&lt;p&gt;Basically the app functionality I want is this:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Read sensor data which, in previous code uses RTT and UART(Working on other project)&lt;/li&gt;
&lt;li&gt;Store this sensor data to an external SD (not yet done)&lt;/li&gt;
&lt;li&gt;Output once per second an advertisement with the sensor data within the advertisement packet&lt;/li&gt;
&lt;li&gt;Be able to receive connections from a ble application to:
&lt;ul&gt;
&lt;li&gt;Set the time&lt;/li&gt;
&lt;li&gt;Request logged data from the board via sd card&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Also I am using s140 p10056&lt;/p&gt;
&lt;p&gt;I am now using the gatt example. I have got a fixed advertisement using the app_adv.c and passing in my fixed variables for the advertisement packet. Now I want to have this data update every second from data comming inform the UART.&lt;/p&gt;
&lt;p&gt;My first question is how do I update this? Below is my code&lt;/p&gt;
&lt;p&gt;main:&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="text"&gt;int main(void)
{
    //Int values
    T1_data_1 = 0;T1_data_2 = 0;T2_data_1 = 0;T2_data_2 = 0;T3_data_1 = 0;
    T3_data_2 = 0;P1_data_1 = 0;P1_data_2 = 0;P2_data_1 = 0;P2_data_2 = 0;
    // Initialize.
    modules_init();

    // Start execution.
    NRF_LOG_INFO(&amp;quot;GATT Service client started.&amp;quot;);
    advertising_start(m_erase_bonds);

    // Enter main loop.
  
    counter++;//Int value
    advertising_update(counter,T1_data_1,T2_data_1,00,00,70,80,70,80);
    for (;;)
    {
        idle_state_handle();
    }
    
}&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;Advertising Init:&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="text"&gt;void advertising_init(void)
{
    ret_code_t             err_code;
    ble_advertising_init_t init;

    memset(&amp;amp;init, 0, sizeof(init));
    //Manufacturer data
    ble_advdata_manuf_data_t                  manuf_data; //Variable to hold manufacturer specific data
    uint8_t data[]                            = &amp;quot;test&amp;quot;; //Our data to advertise
   
    manuf_data.company_identifier             =  0x0487; //Centricas company ID
    manuf_data.data.p_data                    = m_beacon_info;
    //manuf_data.data.p_data                    = data;
    //manuf_data.data.size = sizeof((uint8_t *) m_beacon_info);
    //manuf_data.data.size                      = sizeof(data);
    manuf_data.data.size                      = 11;
    
    init.advdata.p_manuf_specific_data = &amp;amp;manuf_data;
    //

    init.advdata.name_type            = BLE_ADVDATA_FULL_NAME;
    //init.advdata.short_name_len = 6; // Advertise only first 6 letters of name
    init.advdata.include_appearance   = true;
    init.advdata.flags                = BLE_GAP_ADV_FLAGS_LE_ONLY_GENERAL_DISC_MODE;
    

    init.config.ble_adv_fast_enabled  = true;
    init.config.ble_adv_fast_interval = ADV_INTERVAL;
    init.config.ble_adv_fast_timeout  = APP_ADV_DURATION;

    init.evt_handler = on_adv_evt;

    err_code = ble_advertising_init(&amp;amp;m_advertising, &amp;amp;init);
    APP_ERROR_CHECK(err_code);

    ble_advertising_conn_cfg_tag_set(&amp;amp;m_advertising, APP_BLE_CONN_CFG_TAG);
}&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;Finally my update code:&lt;/p&gt;
&lt;p&gt;When this code is run it goes to app error weak. I cant trace the error from debugging the error handler though. I happens after init.evt_handler = on_adv_evt;&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="text"&gt;void advertising_update(int count, int T1_value,int T2_value,
                                       int t3_value_1,int t3_value_2, int p1_value_1, int p1_value_2,
                                       int p2_value_1,int p2_value_2)
{
    ret_code_t             err_code;
    ble_advertising_init_t init;

    int t1_value_1 = (T1_value &amp;gt;&amp;gt;8) &amp;amp; 0XFF;//MSB shifting
    int t1_value_2 = T1_value &amp;amp; 0XFF;//LSB

    int t2_value_1 = (T2_value &amp;gt;&amp;gt; 8) &amp;amp; 0XFF;//MSB
    int t2_value_2 = T2_value &amp;amp; 0XFF;//LSB

    m_beacon_info[0]=(unsigned char) count;
    m_beacon_info[1]=(unsigned char) t1_value_1;
    m_beacon_info[2]=(unsigned char) t1_value_2;
    m_beacon_info[3]=(unsigned char) t2_value_1;
    m_beacon_info[4]=(unsigned char) t2_value_2;
    m_beacon_info[5]=(unsigned char) t3_value_1;
    m_beacon_info[6]=(unsigned char) t3_value_2;
    m_beacon_info[7]=(unsigned char) p1_value_1;
    m_beacon_info[8]=(unsigned char) p1_value_2;
    m_beacon_info[9]=(unsigned char) p2_value_1;
    m_beacon_info[10]=(unsigned char) p2_value_2;

    memset(&amp;amp;init, 0, sizeof(init));
    //Manufacturer data
    ble_advdata_manuf_data_t                  manuf_data; //Variable to hold manufacturer specific data
 
    manuf_data.company_identifier             =  0x0487; //Centricas company ID
    manuf_data.data.p_data                    = m_beacon_info;
    
    manuf_data.data.size                      = 11;
    
    init.advdata.p_manuf_specific_data = &amp;amp;manuf_data;

    init.advdata.name_type            = BLE_ADVDATA_FULL_NAME;
    //init.advdata.short_name_len = 6; // Advertise only first 6 letters of name
    init.advdata.include_appearance   = true;
    init.advdata.flags                = BLE_GAP_ADV_FLAGS_LE_ONLY_GENERAL_DISC_MODE;
    
    init.config.ble_adv_fast_enabled  = true;
    init.config.ble_adv_fast_interval = ADV_INTERVAL;
    init.config.ble_adv_fast_timeout  = APP_ADV_DURATION;

    init.evt_handler = on_adv_evt;

    err_code = ble_advertising_init(&amp;amp;m_advertising, &amp;amp;init);
    APP_ERROR_CHECK(err_code);   

    ble_advertising_conn_cfg_tag_set(&amp;amp;m_advertising, APP_BLE_CONN_CFG_TAG);
}
&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;Thanks,&lt;/p&gt;
&lt;p&gt;Thomas&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Large data transfer over ble.</title><link>https://devzone.nordicsemi.com/thread/228272?ContentTypeID=1</link><pubDate>Thu, 09 Jan 2020 07:56:17 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:9c5aec41-b35d-48a4-a839-b932bec17bf2</guid><dc:creator>Simonr</dc:creator><description>&lt;p&gt;Hi&lt;/p&gt;
&lt;p&gt;Errors from the sd_ble_gap_adv_start should be returning an error message, like NRF_ERROR_INVALID_STATE, etc. These can be seen in ble_gap.h in&amp;nbsp;&lt;em&gt;C:\nordicsemi\SDK\nRF5_SDK_16.0.0_98a08e2\components\softdevice\s132\headers\ble_gap.h.&amp;nbsp;&lt;/em&gt;I suggest you use the same advertising init function as in one of the examples already using connections in order to set up a &amp;quot;default&amp;quot; advertising that we know works.&lt;/p&gt;
&lt;p&gt;Do you want something like a service (for example the battery value) that updates between each advertisement as part of your advertising packet? To do so, you will likely have to use scan response packets, as the size of the advertisement itself is rather limited. You will then have to enable service data in both the advertisement packet and the scan response packet.&amp;nbsp;You can check out &lt;a href="https://devzone.nordicsemi.com/f/nordic-q-a/36365/scan-response-data-to-be-added-to-sdk-ble_app_beacon-example"&gt;this case&lt;/a&gt; and the guide Joakim links to for more information on how to use scan response packets.&lt;/p&gt;
&lt;p&gt;Best regards,&lt;/p&gt;
&lt;p&gt;Simon&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Large data transfer over ble.</title><link>https://devzone.nordicsemi.com/thread/228182?ContentTypeID=1</link><pubDate>Wed, 08 Jan 2020 14:34:06 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:c55862c4-f798-4964-993d-497ac5427447</guid><dc:creator>Thomas</dc:creator><description>&lt;p&gt;Oddly changing&amp;nbsp;BLE_GAP_ADV_TYPE_CONNECTABLE_SCANNABLE_UNDIRECTED to&amp;nbsp;BLE_GAP_ADV_TYPE_NONCONNECTABLE_NONSCANNABLE_UNDIRECTED&lt;/p&gt;
&lt;p&gt;Causes:&lt;/p&gt;
&lt;p&gt;err_code = sd_ble_gap_adv_start(m_adv_handle, APP_BLE_CONN_CFG_TAG);&lt;br /&gt; APP_ERROR_CHECK(err_code);&lt;/p&gt;
&lt;p&gt;To pass an error code 12.&lt;/p&gt;
&lt;p&gt;Also where is a look up table for error codes?&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Also is it possible to have a ble advert e.g. something that changes every second with data in it, whilst being connectable for other features?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Large data transfer over ble.</title><link>https://devzone.nordicsemi.com/thread/228162?ContentTypeID=1</link><pubDate>Wed, 08 Jan 2020 13:55:25 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:91bf9176-e183-4c86-8a7a-6fba318d867b</guid><dc:creator>Simonr</dc:creator><description>&lt;p&gt;Hi&lt;/p&gt;
&lt;p&gt;You need to change the advertising params to make the device connectable and (usually) scannable by changing the&amp;nbsp;&lt;strong&gt;m_adv_params.properties.type&amp;nbsp;&lt;/strong&gt;to something like&amp;nbsp;&lt;strong&gt;BLE_GAP_ADV_TYPE_CONNECTABLE_SCANNABLE_UNDIRECTED.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;You can check out the&amp;nbsp;&lt;strong&gt;ble_advertising_init&amp;nbsp;&lt;/strong&gt;function in&amp;nbsp;&lt;em&gt;ble_advertising.c&amp;nbsp;&lt;/em&gt;to see the default advertising parameters used in most of the connectable examples in the SDK. Note that the gatts example uses the &lt;em&gt;app_adv.c&lt;/em&gt;&amp;nbsp;file to set up the advertising (where it again calls &lt;strong&gt;ble_advertising_init&lt;/strong&gt;).&lt;/p&gt;
&lt;p&gt;Best regards,&lt;/p&gt;
&lt;p&gt;Simon&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Large data transfer over ble.</title><link>https://devzone.nordicsemi.com/thread/228149?ContentTypeID=1</link><pubDate>Wed, 08 Jan 2020 13:27:16 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:e68db2d4-82f5-490a-9424-f136d05ba02b</guid><dc:creator>Thomas</dc:creator><description>&lt;p&gt;Thanks SImon,&lt;/p&gt;
&lt;p&gt;I&amp;#39;ve resolved that issue now thanks.&lt;/p&gt;
&lt;p&gt;Another question. As my project previously advertises data how do I add the connect-ability functionality too this?&lt;/p&gt;
&lt;p&gt;This is my present advertisement init routine.&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="text"&gt;static void live_advertising_init(void)
{
    uint32_t      err_code;
    ble_advdata_t advdata;
    uint8_t       flags = BLE_GAP_ADV_FLAG_BR_EDR_NOT_SUPPORTED;

    ble_advdata_manuf_data_t manuf_specific_data;

    manuf_specific_data.company_identifier = APP_COMPANY_IDENTIFIER;
    manuf_specific_data.data.p_data = (uint8_t *) m_beacon_info;
    manuf_specific_data.data.size   = APP_BEACON_INFO_LENGTH;

    // Build and set advertising data.
    memset(&amp;amp;advdata, 0, sizeof(advdata));
    //Advertisement information

    advdata.name_type             = BLE_ADVDATA_NO_NAME;
    advdata.flags                 = flags;
    advdata.p_manuf_specific_data = &amp;amp;manuf_specific_data;
    /*Old setup

    advdata.name_type             = BLE_ADVDATA_NO_NAME;
    advdata.flags                 = flags;
    advdata.p_manuf_specific_data = &amp;amp;manuf_specific_data;
    */

    // Initialize advertising parameters (used when starting advertising).
    memset(&amp;amp;m_adv_params, 0, sizeof(m_adv_params));

    m_adv_params.properties.type = BLE_GAP_ADV_TYPE_NONCONNECTABLE_NONSCANNABLE_UNDIRECTED;
    m_adv_params.p_peer_addr     = NULL;    // Undirected advertisement.
    m_adv_params.filter_policy   = BLE_GAP_ADV_FP_ANY;
    m_adv_params.interval        = NON_CONNECTABLE_ADV_INTERVAL;
    m_adv_params.duration        = 0;       // Never time out.

    err_code = ble_advdata_encode(&amp;amp;advdata, m_adv_data.adv_data.p_data, &amp;amp;m_adv_data.adv_data.len);
    APP_ERROR_CHECK(err_code);

    err_code = sd_ble_gap_adv_set_configure(&amp;amp;m_adv_handle, &amp;amp;m_adv_data, &amp;amp;m_adv_params);
    APP_ERROR_CHECK(err_code);
}
&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;I want it so when I am connected I can connect to the Gatt services and then notifications after that.&lt;/p&gt;
&lt;p&gt;The advertising_init in the GATT example is&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="text"&gt;void advertising_init(void)
{
    ret_code_t             err_code;
    ble_advertising_init_t init;

    memset(&amp;amp;init, 0, sizeof(init));


    init.advdata.name_type            = BLE_ADVDATA_FULL_NAME;
    init.advdata.include_appearance   = true;
    init.advdata.flags                = BLE_GAP_ADV_FLAGS_LE_ONLY_GENERAL_DISC_MODE;

    init.config.ble_adv_fast_enabled  = true;
    init.config.ble_adv_fast_interval = ADV_INTERVAL;
    init.config.ble_adv_fast_timeout  = APP_ADV_DURATION;

    init.evt_handler = on_adv_evt;

    err_code = ble_advertising_init(&amp;amp;m_advertising, &amp;amp;init);
    APP_ERROR_CHECK(err_code);

    ble_advertising_conn_cfg_tag_set(&amp;amp;m_advertising, APP_BLE_CONN_CFG_TAG);
}&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;But, when I make the basic change of making the name from BLE_ADVDATA_NO_NAME to&amp;nbsp;BLE_ADVDATA_FULL_NAME it no longer advertises. As an error is thrown on ble_advdata_encode.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;I might therefore, start again with the GATT example and import my code over. But the underlying question is how do I have a dumb advertisement which broadcasts but, is connectable to the Gatt?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Large data transfer over ble.</title><link>https://devzone.nordicsemi.com/thread/228130?ContentTypeID=1</link><pubDate>Wed, 08 Jan 2020 12:48:03 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:69796306-e8b8-48a3-a08f-58c61a6b5001</guid><dc:creator>Simonr</dc:creator><description>&lt;p&gt;Hi&lt;/p&gt;
&lt;p&gt;In this case, SEGGER should give you an indication of what you should allocate your RAM to in the error message. To see how you do change the RAM and Flash memory start addresses and sizes, please check out &lt;a href="https://devzone.nordicsemi.com/nordic/short-range-guides/b/getting-started/posts/adjustment-of-ram-and-flash-memory"&gt;this guide&lt;/a&gt; on the matter.&lt;/p&gt;
&lt;p&gt;Best regards,&lt;/p&gt;
&lt;p&gt;Simon&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Large data transfer over ble.</title><link>https://devzone.nordicsemi.com/thread/228052?ContentTypeID=1</link><pubDate>Wed, 08 Jan 2020 09:03:06 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:2993f4e6-5a6a-42e4-9def-b923b094c51d</guid><dc:creator>Thomas</dc:creator><description>&lt;p&gt;Hi Simon,&lt;/p&gt;
&lt;p&gt;I&amp;#39;ve used my project as I feel it is more complex and, too a long time to set up.&lt;/p&gt;
&lt;p&gt;However, I have just debugged my program stepping through the main when it gets to ble_stack_init.&lt;/p&gt;
&lt;p&gt;It runs the line of code nrf_sdh_ble_enable. Running through this gives&lt;pre class="ui-code" data-mode="text"&gt;NRF_LOG_WARNING(&amp;quot;Insufficient RAM allocated for the SoftDevice.&amp;quot;);

        NRF_LOG_WARNING(&amp;quot;Change the RAM start location from 0x%x to 0x%x.&amp;quot;,
                        app_ram_start_link, *p_app_ram_start);
        NRF_LOG_WARNING(&amp;quot;Maximum RAM size for application is 0x%x.&amp;quot;,
                        ram_end_address_get() - (*p_app_ram_start));&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;Which I presume means the ram allocated is not large enough.&lt;/p&gt;
&lt;p&gt;How do I resolve this?&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Thanks,&lt;/p&gt;
&lt;p&gt;Thomas&lt;/p&gt;
&lt;p&gt;Edit note : I am using Segger error code is&amp;nbsp;0x00000004&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Large data transfer over ble.</title><link>https://devzone.nordicsemi.com/thread/228048?ContentTypeID=1</link><pubDate>Wed, 08 Jan 2020 08:59:44 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:78c73b0a-974d-4a5b-ae3d-fff215fb5a04</guid><dc:creator>Simonr</dc:creator><description>&lt;p&gt;Hi Thomas&lt;/p&gt;
&lt;p&gt;Here is the general approach to combine two projects:&lt;/p&gt;
&lt;p&gt;1. Start with the more complex one. If your project is very large, then that&amp;#39;s the right way to start, but if it&amp;#39;s just the beacon project with a few adjustments, I think starting out with the GATT example will be the best course of action.&lt;/p&gt;
&lt;p&gt;2. Add the required .c files and the necessary include paths to your project.&lt;/p&gt;
&lt;p&gt;3. Add required includes and code to your main.c file.&lt;/p&gt;
&lt;p&gt;4. Modify the sdk_config.h file to enable the necessary configurations. Refer to the other project and compare the sdk_config.h files to see what&amp;#39;s needed.&lt;/p&gt;
&lt;p&gt;5. Compile the application.&lt;br /&gt;&amp;nbsp; &amp;nbsp; a) If there are errors/warnings, go back to point 2 and resolve the errors before building again. This is very likely to repeat itself several times.&lt;/p&gt;
&lt;p&gt;6. Test application.&lt;/p&gt;
&lt;p&gt;Best regards,&lt;/p&gt;
&lt;p&gt;Simon&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Large data transfer over ble.</title><link>https://devzone.nordicsemi.com/thread/227949?ContentTypeID=1</link><pubDate>Tue, 07 Jan 2020 15:04:10 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:ad182166-e407-4068-9819-76e3453176d4</guid><dc:creator>Thomas</dc:creator><description>&lt;p&gt;Hi Simon,&lt;/p&gt;
&lt;p&gt;I am adding the nordic gatt example code to my own project. I am at the point of including the include files and when I build it complies however, my previous code does not work. At this point I have only included the includes and a few definitions non of the functions (within the main)&lt;/p&gt;
&lt;p&gt;My code (Previous functionality does this)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Takes in UART sensor data via RTT pin connections 26-29&lt;/li&gt;
&lt;li&gt;Creates a ble advertisement&lt;/li&gt;
&lt;li&gt;Each second modifies the ble advertisement and outputs last read data to the advert&lt;/li&gt;
&lt;li&gt;It also spits out the sensor values to the RTT terminal&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Now when I have added the GATT example includes, libraries, services, ble to the project and, changed the sdk_config.h so that no linker and compilation errors occur. Now my RTT viewer does&amp;nbsp; not get populated and, no advertisement is made.&lt;/p&gt;
&lt;p&gt;Could this be due to an issue in my sdk_config.h with some functionality for the GATT stopping my RTT and or, my adverts?&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;One definite change is that:&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="text"&gt;#define BLE_ADVERTISING_ENABLED 1//0&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;This line of code in my project is 0 and, in the GATT example it is 1. To compile it needs to be enabled.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Large data transfer over ble.</title><link>https://devzone.nordicsemi.com/thread/227830?ContentTypeID=1</link><pubDate>Tue, 07 Jan 2020 09:39:21 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:dbc64be6-69ee-4c37-9923-50d5b542b00b</guid><dc:creator>Simonr</dc:creator><description>&lt;p&gt;Hi&lt;/p&gt;
&lt;p&gt;Yes, the approach, although the thread is somewhat dated, is still the correct one. You might want to look at some of our newer examples (&lt;a href="https://infocenter.nordicsemi.com/index.jsp?topic=%2Fsdk_nrf5_v16.0.0%2Fble_sdk_app_nus_eval.html&amp;amp;cp=7_1_4_2_2_25"&gt;&lt;strong&gt;ble_app_uart&lt;/strong&gt; &lt;/a&gt;for example) as well as the blog post I linked to in my previous reply for some tips on how to optimize&amp;nbsp;the Bluetooth transfer to use the throughput and methods available in Bluetooth 5.0.&lt;/p&gt;
&lt;p&gt;Best regards,&lt;/p&gt;
&lt;p&gt;Simon&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Large data transfer over ble.</title><link>https://devzone.nordicsemi.com/thread/227716?ContentTypeID=1</link><pubDate>Mon, 06 Jan 2020 14:45:28 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:b5386a17-e09a-4dee-a1fd-38b34302c342</guid><dc:creator>Thomas</dc:creator><description>&lt;p&gt;Hi Simonr,&lt;/p&gt;
&lt;p&gt;I don&amp;#39;t think I am pushing the limits as I don&amp;#39;t need it to be all done in a single second. Although faster is better. Would you say my outlined approach is correct though?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Large data transfer over ble.</title><link>https://devzone.nordicsemi.com/thread/227698?ContentTypeID=1</link><pubDate>Mon, 06 Jan 2020 13:53:26 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:ea44e49b-57ac-4d08-8d0a-9aa13eee1f37</guid><dc:creator>Simonr</dc:creator><description>&lt;p&gt;Hi&lt;/p&gt;
&lt;p&gt;It seems to me like you might be pushing the upper limit of what you will be able to transfer using BLE here. I suggest you take a look at &lt;a href="https://www.novelbits.io/bluetooth-5-speed-maximum-throughput/"&gt;this blog post&lt;/a&gt;, which shows you how to achieve maximum throughput, and also provides source code for a project doing this.&lt;/p&gt;
&lt;p&gt;Best regards,&lt;/p&gt;
&lt;p&gt;Simon&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>