<?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>How to read manufacturer specific data</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/21254/how-to-read-manufacturer-specific-data</link><description>Hi, i&amp;#39;m working a BLE gateway with NRF52DK and S132 by using the demo example central uart. 
 The peripheral equipement advertise manufacturer data like this:
0x0001 during 5sec then 0x0002 during 5 sec and stop advertise. 
 But I want my gateway can</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Mon, 08 Jul 2019 15:16:13 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/21254/how-to-read-manufacturer-specific-data" /><item><title>RE: How to read manufacturer specific data</title><link>https://devzone.nordicsemi.com/thread/197191?ContentTypeID=1</link><pubDate>Mon, 08 Jul 2019 15:16:13 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:28a09348-3590-4def-a87f-56b3e6a8f893</guid><dc:creator>hmolesworth</dc:creator><description>&lt;p&gt;This is for 15.3.0, but you might find it helpful:&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;// Scan Events
static char * ble_scan_event_description[] =
{
/* NRF_BLE_SCAN_EVT_FILTER_MATCH&amp;quot;,        */ &amp;quot; 0 Filter matched in the multifilter mode&amp;quot;,
/* NRF_BLE_SCAN_EVT_WHITELIST_REQUEST:    */ &amp;quot; 1 Request the whitelist from the main application&amp;quot;,
/* NRF_BLE_SCAN_EVT_WHITELIST_ADV_REPORT: */ &amp;quot; 2 Device from the whitelist is found&amp;quot;,
/* NRF_BLE_SCAN_EVT_NOT_FOUND:            */ &amp;quot; 3 Filter not matched for the scan data&amp;quot;,
/* NRF_BLE_SCAN_EVT_SCAN_TIMEOUT:         */ &amp;quot; 4 Scan timeout&amp;quot;,
/* NRF_BLE_SCAN_EVT_SCAN_REQ_REPORT:      */ &amp;quot; 5 Scan request report&amp;quot;,
/* NRF_BLE_SCAN_EVT_CONNECTING_ERROR:     */ &amp;quot; 6 Error occurred when establishing the connection from sd_ble_gap_connect&amp;quot;,
/* NRF_BLE_SCAN_EVT_CONNECTED:            */ &amp;quot; 7 Connected to device&amp;quot;
};
#define NUM_BLE_SCAN_EVENTS (sizeof(ble_scan_event_description)/sizeof(ble_scan_event_description[0]))
/**@brief Function for handling Scanning Module events.
 */
static void scan_evt_handler(scan_evt_t const * p_scan_evt)
{
    ret_code_t err_code;

    switch(p_scan_evt-&amp;gt;scan_evt_id)
    {
         case NRF_BLE_SCAN_EVT_CONNECTING_ERROR:     // Error occurred when establishing the connection. In this event, an error is passed from the function call @ref sd_ble_gap_connect
         {
              err_code = p_scan_evt-&amp;gt;params.connecting_err.err_code;
              APP_ERROR_CHECK(err_code);
         } break;

         case NRF_BLE_SCAN_EVT_CONNECTED:            // Connected to device
         {
              ble_gap_evt_connected_t const * p_connected = p_scan_evt-&amp;gt;params.connected.p_connected;
             // Scan is automatically stopped by the connection.
             NRF_LOG_INFO(&amp;quot;Connect to Id %02x%02x%02x%02x%02x%02x&amp;quot;,
                      p_connected-&amp;gt;peer_addr.addr[0],
                      p_connected-&amp;gt;peer_addr.addr[1],
                      p_connected-&amp;gt;peer_addr.addr[2],
                      p_connected-&amp;gt;peer_addr.addr[3],
                      p_connected-&amp;gt;peer_addr.addr[4],
                      p_connected-&amp;gt;peer_addr.addr[5]
                      );
         } break;

         case NRF_BLE_SCAN_EVT_SCAN_TIMEOUT:         // Scan timeout
         {
             NRF_LOG_INFO(&amp;quot;Scan timed out.&amp;quot;);
             scan_start();
         } break;

         case NRF_BLE_SCAN_EVT_FILTER_MATCH:         // A filter is matched or all filters are matched in the multifilter mode
             {
               ble_gap_evt_adv_report_t const *p_adv_report = p_scan_evt-&amp;gt;params.filter_match.p_adv_report;
               NRF_LOG_INFO(&amp;quot;Scan Match Id: %02x%02x%02x%02x%02x%02x&amp;quot;,
                      p_adv_report-&amp;gt;peer_addr.addr[0],
                      p_adv_report-&amp;gt;peer_addr.addr[1],
                      p_adv_report-&amp;gt;peer_addr.addr[2],
                      p_adv_report-&amp;gt;peer_addr.addr[3],
                      p_adv_report-&amp;gt;peer_addr.addr[4],
                      p_adv_report-&amp;gt;peer_addr.addr[5]
                      );
             }
             break;

         case NRF_BLE_SCAN_EVT_NOT_FOUND:            // The filter was not matched for the scan data
             {
               ble_gap_evt_adv_report_t const *p_not_found = p_scan_evt-&amp;gt;params.p_not_found;
               NRF_LOG_INFO(&amp;quot;Deny Id: %02x%02x%02x%02x%02x%02x&amp;quot;,
                      p_not_found-&amp;gt;peer_addr.addr[0],
                      p_not_found-&amp;gt;peer_addr.addr[1],
                      p_not_found-&amp;gt;peer_addr.addr[2],
                      p_not_found-&amp;gt;peer_addr.addr[3],
                      p_not_found-&amp;gt;peer_addr.addr[4],
                      p_not_found-&amp;gt;peer_addr.addr[5]
                      );
             }
             break;

         default:
//       case NRF_BLE_SCAN_EVT_FILTER_MATCH:         // A filter is matched or all filters are matched in the multifilter mode
         case NRF_BLE_SCAN_EVT_WHITELIST_REQUEST:    // Request the whitelist from the main application. For whitelist scanning to work, the whitelist must be set when this event occurs
         case NRF_BLE_SCAN_EVT_WHITELIST_ADV_REPORT: // Send notification to the main application when a device from the whitelist is found
//       case NRF_BLE_SCAN_EVT_NOT_FOUND:            // The filter was not matched for the scan data
         case NRF_BLE_SCAN_EVT_SCAN_REQ_REPORT:      // Scan request report
            if (p_scan_evt-&amp;gt;scan_evt_id &amp;lt; NUM_BLE_SCAN_EVENTS)
            {
               NRF_LOG_INFO(&amp;quot;scan_evt_id: %d %s&amp;quot;, p_scan_evt-&amp;gt;scan_evt_id, ble_scan_event_description[p_scan_evt-&amp;gt;scan_evt_id]);
            }
            else
            {
               NRF_LOG_INFO(&amp;quot;Unhandled scan_evt_id: %d&amp;quot;, p_scan_evt-&amp;gt;scan_evt_id);
            }
             break;
    }
}
&lt;/pre&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: How to read manufacturer specific data</title><link>https://devzone.nordicsemi.com/thread/197115?ContentTypeID=1</link><pubDate>Mon, 08 Jul 2019 11:58:30 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:70b5632e-0c68-4243-bd85-52f475bcfcb2</guid><dc:creator>J&amp;#248;rgen Holmefjord</dc:creator><description>&lt;p&gt;The filter feature only supports the following types:&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;/**@brief Types of filters.
 */
typedef enum
{
    SCAN_NAME_FILTER,       /**&amp;lt; Filter for names. */
    SCAN_SHORT_NAME_FILTER, /**&amp;lt; Filter for short names. */
    SCAN_ADDR_FILTER,       /**&amp;lt; Filter for addresses. */
    SCAN_UUID_FILTER,       /**&amp;lt; Filter for UUIDs. */
    SCAN_APPEARANCE_FILTER, /**&amp;lt; Filter for appearances. */
} nrf_ble_scan_filter_type_t;&lt;/pre&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: How to read manufacturer specific data</title><link>https://devzone.nordicsemi.com/thread/196980?ContentTypeID=1</link><pubDate>Mon, 08 Jul 2019 02:38:15 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:8bed0319-d23a-48d5-8015-4c895142bcab</guid><dc:creator>neosarchizo</dc:creator><description>&lt;p&gt;Do you mean that there is not API that can parse a scan data in new SDK like SDK 15.3 for a manufacturer data ?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: How to read manufacturer specific data</title><link>https://devzone.nordicsemi.com/thread/160004?ContentTypeID=1</link><pubDate>Mon, 03 Dec 2018 14:36:21 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:344079bd-9f53-4fa1-bc08-69cdea48ac7b</guid><dc:creator>J&amp;#248;rgen Holmefjord</dc:creator><description>&lt;p&gt;There was a new scanner module introduced in SDK 15.2.0, that use filters to only pass devices that fit the filter parameter to the handler. You will have to remove the scanner module and use the old method if you want to display any Manufacturer specific data. You might be better off with porting the example from SDK 15.0.0, where the module was not used.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: How to read manufacturer specific data</title><link>https://devzone.nordicsemi.com/thread/159823?ContentTypeID=1</link><pubDate>Sat, 01 Dec 2018 21:57:38 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:f44ca354-0869-4ea8-9e48-0e172cbcfd7b</guid><dc:creator>Abhishek</dc:creator><description>&lt;p&gt;Hi Jorgen,&lt;/p&gt;
&lt;p&gt;I am using SDK 15.2.0, and I have the same query to display the manufacturer specific data.&lt;/p&gt;
&lt;p&gt;I could not find the function&amp;nbsp;&lt;span&gt;adv_report_parse(BLE_GAP_AD_TYPE_MANUFACTURER_SPECIFIC_DATA,&amp;amp;adv_data, &amp;amp;dev_name in the Multi-link example.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Thanks&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: How to read manufacturer specific data</title><link>https://devzone.nordicsemi.com/thread/159822?ContentTypeID=1</link><pubDate>Sat, 01 Dec 2018 21:51:59 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:30edb3f2-a301-4ba5-a6ff-3bbf4b5a34c3</guid><dc:creator>Abhishek</dc:creator><description>&lt;p&gt;Hi Maxim/Jorgen&lt;/p&gt;
&lt;p&gt;I have the same query as yours but could not locate the is_uuid_present function in the whole code ( central/ multilink ) example.&lt;/p&gt;
&lt;p&gt;Thanks&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: How to read manufacturer specific data</title><link>https://devzone.nordicsemi.com/thread/83196?ContentTypeID=1</link><pubDate>Mon, 10 Apr 2017 12:35:30 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:fdb436f4-9b5c-48d8-81a4-5f16bd0b2bda</guid><dc:creator>Maxim</dc:creator><description>&lt;p&gt;Yes it works, i have add in the central example in the function is_uuid_present this code:&lt;/p&gt;
&lt;p&gt;while...&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;else if (field_type == BLE_GAP_AD_TYPE_MANUFACTURER_SPECIFIC_DATA)
        {
		         SEGGER_RTT_printf(0,&amp;quot;type: 0xFF\n&amp;quot;);
                 SEGGER_RTT_printf(0,&amp;quot;data: %02x:%02x\r\n&amp;quot;, p_adv_report-&amp;gt;data[index+2],p_adv_report-&amp;gt;data[index+3]);
        }
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Thanks a lot !&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: How to read manufacturer specific data</title><link>https://devzone.nordicsemi.com/thread/83195?ContentTypeID=1</link><pubDate>Mon, 10 Apr 2017 12:29:21 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:2cc8ca9d-32c9-4be1-97fd-8edc87f3cc17</guid><dc:creator>J&amp;#248;rgen Holmefjord</dc:creator><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;You can check if manufacturer specific data is present in the advertising report using the function &lt;code&gt;adv_report_parse(BLE_GAP_AD_TYPE_MANUFACTURER_SPECIFIC_DATA,&amp;amp;adv_data, &amp;amp;dev_name)&lt;/code&gt;, which is defined in the &lt;a href="http://infocenter.nordicsemi.com/topic/com.nordic.infocenter.sdk5.v13.0.0/ble_sdk_app_multilink.html?cp=4_0_0_4_1_0_1"&gt;BLE Multi-link example&lt;/a&gt;. If found, the length and pointer to data will be stored in the argument &lt;code&gt;dev_name&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Best regards,&lt;/p&gt;
&lt;p&gt;Jørgen&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: How to read manufacturer specific data</title><link>https://devzone.nordicsemi.com/thread/83194?ContentTypeID=1</link><pubDate>Mon, 10 Apr 2017 12:20:33 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:e39761dd-abd1-4e14-a0b9-683c26585c36</guid><dc:creator>Alex</dc:creator><description>&lt;p&gt;May be &lt;code&gt;m_scan_param.active = 1;&lt;/code&gt; will help?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: How to read manufacturer specific data</title><link>https://devzone.nordicsemi.com/thread/83193?ContentTypeID=1</link><pubDate>Mon, 10 Apr 2017 12:17:48 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:139e04ab-45f9-4d02-b4c1-a3e3257a7297</guid><dc:creator>Maxim</dc:creator><description>&lt;p&gt;Yes it&amp;#39;s the same device, there is only one peripheral.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: How to read manufacturer specific data</title><link>https://devzone.nordicsemi.com/thread/83192?ContentTypeID=1</link><pubDate>Mon, 10 Apr 2017 12:11:02 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:e2f60ee6-8a2d-4bae-99de-3baa821a97c1</guid><dc:creator>Alex</dc:creator><description>&lt;p&gt;Sorry for silly question, but are you sure you see the same peripheral in your program and in nRF Connect? MAC address the same?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: How to read manufacturer specific data</title><link>https://devzone.nordicsemi.com/thread/83191?ContentTypeID=1</link><pubDate>Mon, 10 Apr 2017 12:00:21 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:622c8664-76ad-4faf-93e2-e2d04cca17c9</guid><dc:creator>Maxim</dc:creator><description>&lt;p&gt;I can see manufacturer data in NRF connect, not in the type 0x07 data, but in the type 0xFF manufacturer specific but i dont know how to retreive this type in my program&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: How to read manufacturer specific data</title><link>https://devzone.nordicsemi.com/thread/83190?ContentTypeID=1</link><pubDate>Mon, 10 Apr 2017 11:17:20 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:1d4d9deb-4d92-4783-ba51-9f685e447bca</guid><dc:creator>Alex</dc:creator><description>&lt;p&gt;If you don&amp;#39;t see it in nRF Connect then your peripheral doesn&amp;#39;t send manufacturer specific data. what is peripherial device? Is it nRF as well?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: How to read manufacturer specific data</title><link>https://devzone.nordicsemi.com/thread/83189?ContentTypeID=1</link><pubDate>Mon, 10 Apr 2017 11:15:31 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:40565e8d-4156-4044-8e82-3413b33168ed</guid><dc:creator>Maxim</dc:creator><description>&lt;p&gt;p_adv_report -&amp;gt; dlen returns 18, the same as raw data in nRF connect (android app).
So p_adv_report-&amp;gt;data contains only one type.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: How to read manufacturer specific data</title><link>https://devzone.nordicsemi.com/thread/83188?ContentTypeID=1</link><pubDate>Mon, 10 Apr 2017 10:19:06 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:5e2abc02-090d-4193-ae43-3b1f730d6095</guid><dc:creator>Alex</dc:creator><description>&lt;p&gt;How many types are in p_adv_report-&amp;gt;data? p_adv_report-&amp;gt;data is a raw array. Length is p_adv_report-&amp;gt;dlen. Each record in the array has byte of length (0), byte of type (1) then &amp;#39;length&amp;#39; bytes of data (3), then next record. May be 0xFF type is further in array?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: How to read manufacturer specific data</title><link>https://devzone.nordicsemi.com/thread/83187?ContentTypeID=1</link><pubDate>Mon, 10 Apr 2017 10:02:35 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:8858863d-262e-4001-9581-e93980b907fd</guid><dc:creator>Maxim</dc:creator><description>&lt;p&gt;Ty for your answer but it&amp;#39;s not p_adv_report-&amp;gt;data, p_data is type 0x07 &lt;a href="https://www.bluetooth.com/specifications/assigned-numbers/generic-access-profile"&gt;link text&lt;/a&gt; and i want to get type 0xFF, i&amp;#39;m continue searching how to do this.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: How to read manufacturer specific data</title><link>https://devzone.nordicsemi.com/thread/83186?ContentTypeID=1</link><pubDate>Mon, 10 Apr 2017 08:55:24 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:48827917-56fa-41d0-937c-091e56bcb968</guid><dc:creator>Alex</dc:creator><description>&lt;p&gt;Is it not in p_adv_report-&amp;gt;data?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>