<?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>SDK15.0 BLE  host client</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/37749/sdk15-0-ble-host-client</link><description>Hi,Sir： 
 
 I am making a DEMO based on SDK15.0(SDK15.0\examples\ble_central\ble_app_hrs_c) and pca10056 for my one of important customs.I need to implement some extra software features as flowing: 
 
 implement BLE host client that can find a peripheral</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Thu, 02 Apr 2020 14:21:52 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/37749/sdk15-0-ble-host-client" /><item><title>RE: SDK15.0 BLE  host client</title><link>https://devzone.nordicsemi.com/thread/243225?ContentTypeID=1</link><pubDate>Thu, 02 Apr 2020 14:21:52 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:a9bbdec2-fabe-4a66-99aa-307a54899604</guid><dc:creator>run_ar</dc:creator><description>&lt;p&gt;Being followed up with same/similar information as in this case in &lt;a href="https://devzone.nordicsemi.com/f/nordic-q-a/59434/how-to-get-the-128-bit-uuid-of-a-peer-device-characteristic"&gt;https://devzone.nordicsemi.com/f/nordic-q-a/59434/how-to-get-the-128-bit-uuid-of-a-peer-device-characteristic&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: SDK15.0 BLE  host client</title><link>https://devzone.nordicsemi.com/thread/242596?ContentTypeID=1</link><pubDate>Tue, 31 Mar 2020 07:35:10 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:466a811a-fc96-4f38-9137-4ffbb1364f9b</guid><dc:creator>jimmy</dc:creator><description>&lt;p&gt;Hello run_ar:&lt;br /&gt;I encountered a question that you answered two years ago, but using the method you said, I tried and failed. I wonder if you can provide some examples. I tried to execute sd_ble_gattc_attr_info_discover () in BLE_GATTC_EVT_PRIM_SRM_SRVC_DISC_RSP and get BLE_GATTC_EVT_EVT_ATTR_INFO_DISC_RSP event, but the type (format) does not belong to 128-bit UUID, this is the last function to be completed. Can you provide a simple example.&lt;br /&gt;Thank you&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: SDK15.0 BLE  host client</title><link>https://devzone.nordicsemi.com/thread/242587?ContentTypeID=1</link><pubDate>Tue, 31 Mar 2020 07:07:32 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:ae63ced0-8850-4c14-ab90-643b4cd52b71</guid><dc:creator>jimmy</dc:creator><description>&lt;p&gt;Hello there:&lt;br /&gt;I have the same problem as you now, can you please tell me how to handle it, I tried to execute sd_ble_gattc_attr_info_discover () on BLE_GATTC_EVT_PRIM_SRVC_DISC_RSP, but the type returned by BLE_GATTC_EVT_EVT_ATTR_INFO_DISC_RSC is not 128 bits. How can I solve this problem?&lt;br /&gt;thanks!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: SDK15.0 BLE  host client</title><link>https://devzone.nordicsemi.com/thread/149173?ContentTypeID=1</link><pubDate>Tue, 18 Sep 2018 08:34:23 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:d3857619-7521-4a66-bd42-ff3e9c013f7d</guid><dc:creator>run_ar</dc:creator><description>&lt;p&gt;Good luck, let me know if you have any further questions.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: SDK15.0 BLE  host client</title><link>https://devzone.nordicsemi.com/thread/149172?ContentTypeID=1</link><pubDate>Tue, 18 Sep 2018 08:30:17 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:a3f6f432-9001-4284-8559-cad2a61ca128</guid><dc:creator>helen</dc:creator><description>&lt;p&gt;OK, I will retest that in SDK15.2，Thanks！&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: SDK15.0 BLE  host client</title><link>https://devzone.nordicsemi.com/thread/146793?ContentTypeID=1</link><pubDate>Fri, 31 Aug 2018 13:24:24 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:d5a156d1-c94a-4ab0-afca-9944d7945e3f</guid><dc:creator>run_ar</dc:creator><description>&lt;p&gt;Not sure why you are talking about BLE_GATTC_EVT_REL_DISC_RSP?&lt;/p&gt;
&lt;p&gt;1. You need to check the &lt;span&gt;&lt;a title="ble_gattc_evt_prim_srvc_disc_rsp_t" href="http://infocenter.nordicsemi.com/topic/com.nordic.infocenter.s140.api.v6.1.0/structble__gattc__evt__prim__srvc__disc__rsp__t.html?cp=2_3_2_1_0_2_2_4_9"&gt;ble_gattc_evt_prim_srvc_disc_rsp_t&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;This will contain a Count and a ble_gattc_services_t structure. If you look at this structure you see it contains a ble_uuid_t structure. if this type is &lt;a href="http://infocenter.nordicsemi.com/topic/com.nordic.infocenter.s140.api.v6.1.0/group___b_l_e___u_u_i_d___t_y_p_e_s.html#ga0dfc5e26324c8cd7226f3941acbf5b7e"&gt;BLE_UUID_TYPE_UNKNOWN&lt;/a&gt; you need to move on to 2, and provide the handle range provided as part of the &lt;span&gt;&lt;a title="ble_gattc_evt_prim_srvc_disc_rsp_t" href="http://infocenter.nordicsemi.com/topic/com.nordic.infocenter.s140.api.v6.1.0/structble__gattc__evt__prim__srvc__disc__rsp__t.html?cp=2_3_2_1_0_2_2_4_9"&gt;ble_gattc_evt_prim_srvc_disc_rsp_t&lt;/a&gt;&lt;/span&gt; event.&lt;/p&gt;
&lt;p&gt;2. You are not supposed to iterate through the all the handles. Please check the handle range that is returned together with the unknown UUID type.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: SDK15.0 BLE  host client</title><link>https://devzone.nordicsemi.com/thread/146218?ContentTypeID=1</link><pubDate>Wed, 29 Aug 2018 07:18:16 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:abb48c97-ce4e-4500-a53d-23df548c59c0</guid><dc:creator>helen</dc:creator><description>&lt;p&gt;Hi,Sir:&lt;/p&gt;
&lt;p&gt;Answer 1&lt;/p&gt;
&lt;p&gt;Sir,I would have to say &lt;span&gt;&lt;a href="http://infocenter.nordicsemi.com/topic/com.nordic.infocenter.s132.api.v6.1.0/structble__gattc__service__t.html"&gt;ble_gattc_service_t&lt;/a&gt;&lt;/span&gt;&amp;nbsp;-&amp;gt;&amp;nbsp;&lt;span&gt;&lt;a href="http://infocenter.nordicsemi.com/topic/com.nordic.infocenter.s132.api.v6.1.0/structble__uuid__t.html"&gt;ble_uuid_t&lt;/a&gt;&lt;/span&gt;&amp;nbsp;-&amp;gt;&amp;nbsp;&lt;span&gt;&lt;a href="#ae233c47cdd5f63de456f413a158bb16f"&gt;type&lt;/a&gt;&lt;/span&gt;&amp;nbsp;This function is only included in the ble_gattc_evt_rel_disc_rsp_t structure. It is valid when the BLE_GATTC_EVT_REL_DISC_RSP is returned.&amp;nbsp;I have tested again,there was no BLE_GATTC_EVT_REL_DISC_RSP&amp;nbsp;event. Still, I printed the information for ble_gattc_service_t -&amp;gt; ble_uuid_t -&amp;gt; type after receiving BLE_GATTC_EVT_REL_DISC_RSP&amp;nbsp;event&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;NRF_LOG_DEBUG(&amp;quot;includes a 0x%04X type service UUID 0x%04X&amp;quot;,&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;p_ble_gattc_evt-&amp;gt;params.rel_disc_rsp.includes[0].included_srvc.uuid.uuid,&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;p_ble_gattc_evt-&amp;gt;params.rel_disc_rsp.includes[0].included_srvc.uuid.type);&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;The result i s always not current:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;lt;debug&amp;gt; ble_db_disc: includes &amp;nbsp;0 service&lt;/p&gt;
&lt;p&gt;&amp;lt;debug&amp;gt; ble_db_disc: includes a 0x0520 type service UUID 0x0018&lt;/p&gt;
&lt;p&gt;Or&lt;/p&gt;
&lt;p&gt;&amp;lt;debug&amp;gt; ble_db_disc: includes &amp;nbsp;0 service&lt;/p&gt;
&lt;p&gt;&amp;lt;debug&amp;gt; ble_db_disc: includes a 0x2902 type service UUID 0x0001&lt;/p&gt;
&lt;p&gt;Do I need to call this function sd_ble_gattc_relationships_discover(....), how to call it to get the handle range of the correct unknown private service&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;I have some tests on this function sd_ble_gattc_primary_services_discover:&lt;/p&gt;
&lt;p&gt;This function has different results under different initialization conditions (sd_ble_uuid_vs_add() initialization) and input parameters. The following are the cases:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&amp;gt; add a 128bit based uuid by using sd_ble_uuid_vs_add, if the 128 bit base uuid of Client and peripheral is exactly the same, and the service UUID (12, 13byte) is the same, you can find the service and features normally when you call sd_ble_gattc_primary_services_discover(... When you get a normal BLE_GATTC_EVT_PRIM_SRVC_DISC_RSP &amp;nbsp;with BLE_GATT_STATUS_SUCCESS 0x0000 ;otherwise you get a normal BLE_GATTC_EVT_PRIM_SRVC_DISC_RSP with BLE_GATT_STATUS_ATTERR_ATTRIBUTE_NOT_FOUND &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x010A&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&amp;gt; &amp;nbsp;no &amp;nbsp;adding add a 128bit based uuid by using sd_ble_uuid_vs_add,call the function(uuid.type = BLE_UUID_TYPE_UNKNOWN &amp;nbsp;or uuid.type = 2),the function return an error code NRF_ERROR_INVALID_PARAM immediately without BLE_GATTC_EVT_PRIM_SRVC_DISC_RSP event.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Answer 2&lt;/p&gt;
&lt;p&gt;Since I don&amp;#39;t know the range of the &lt;span&gt;&lt;a href="http://infocenter.nordicsemi.com/topic/com.nordic.infocenter.s132.api.v6.1.0/structble__gattc__handle__range__t.html"&gt;ble_gattc_handle_range_t&lt;/a&gt;&lt;/span&gt;&amp;nbsp;handle (I mean when the Client host finds an unknown 128-bit private service),so my &lt;span&gt;&lt;a href="http://infocenter.nordicsemi.com/topic/com.nordic.infocenter.s132.api.v6.1.0/structble__gattc__handle__range__t.html"&gt;ble_gattc_handle_range_t&lt;/a&gt;&lt;/span&gt;&amp;nbsp;start with 0x0001,end with 0xFFFF; After calling &lt;span&gt;&lt;a href="#ga8b7ff74ff996da8340f69c208bfd0ec4"&gt;sd_ble_gattc_attr_info_discover&lt;/a&gt;&lt;/span&gt;&amp;nbsp;function multiple times in succession,every time this function is called, start_handle is incremented by 1; I finally goty attr_info_disc_rsp-&amp;gt;format =2 and I got 128 bit uuid.Even though I got the results I wanted, I don&amp;#39;t understand why, it seems to be a call, I can only get one Attritube (because format has one, and count returns more than one)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;In short, what I&amp;rsquo;d like to achieve is a complete discovery of an unknown private service with 128bit uuid and communication with this service (just support notify).Cloud you please give some suggestions and solutions for this function?&lt;/p&gt;
&lt;p&gt;&lt;a href="http://infocenter.nordicsemi.com/topic/com.nordic.infocenter.s132.api.v2.0.0/group___b_l_e___g_a_t_t_c___f_u_n_c_t_i_o_n_s.html#ga8b7ff74ff996da8340f69c208bfd0ec4" rel="noopener noreferrer" target="_blank"&gt;&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: SDK15.0 BLE  host client</title><link>https://devzone.nordicsemi.com/thread/146133?ContentTypeID=1</link><pubDate>Tue, 28 Aug 2018 13:12:41 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:b91930f6-3a92-4282-ade4-3f0f728f6777</guid><dc:creator>run_ar</dc:creator><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;So if I understand you correctly you do a sd_ble_gattc_primary_services_discover, and the return event is &lt;a href="http://infocenter.nordicsemi.com/topic/com.nordic.infocenter.s132.api.v6.1.0/group___b_l_e___g_a_t_t_c___e_n_u_m_e_r_a_t_i_o_n_s.html#ggafd9b8b42eeb832d688e33f4561f97efcaa4ebe118aada0a7d38163ea11492f020"&gt;BLE_GATTC_EVT_PRIM_SRVC_DISC_RSP&lt;/a&gt;. this contains a service where &lt;a href="http://infocenter.nordicsemi.com/topic/com.nordic.infocenter.s132.api.v6.1.0/structble__gattc__service__t.html"&gt;ble_gattc_service_t&lt;/a&gt; -&amp;gt; &lt;a href="http://infocenter.nordicsemi.com/topic/com.nordic.infocenter.s132.api.v6.1.0/structble__uuid__t.html"&gt;ble_uuid_t&lt;/a&gt; -&amp;gt; &lt;a href="http://infocenter.nordicsemi.com/topic/com.nordic.infocenter.s132.api.v6.1.0/structble__uuid__t.html#ae233c47cdd5f63de456f413a158bb16f"&gt;type&lt;/a&gt; is unknown?&lt;/p&gt;
&lt;p&gt;If that is the case you should call &lt;a href="http://infocenter.nordicsemi.com/topic/com.nordic.infocenter.s132.api.v2.0.0/group___b_l_e___g_a_t_t_c___f_u_n_c_t_i_o_n_s.html#ga8b7ff74ff996da8340f69c208bfd0ec4" target="_blank" rel="noopener noreferrer"&gt;sd_ble_gattc_attr_info_discover&lt;/a&gt; and provide the &lt;a href="http://infocenter.nordicsemi.com/topic/com.nordic.infocenter.s132.api.v6.1.0/structble__gattc__service__t.html"&gt;ble_gattc_service_t&lt;/a&gt; -&amp;gt; &lt;a href="http://infocenter.nordicsemi.com/topic/com.nordic.infocenter.s132.api.v6.1.0/structble__gattc__handle__range__t.html"&gt;ble_gattc_handle_range_t&lt;/a&gt; to this function.&lt;/p&gt;
&lt;p&gt;If you do this correctly you should get an event called &lt;a href="http://infocenter.nordicsemi.com/topic/com.nordic.infocenter.s132.api.v6.1.0/group___b_l_e___g_a_t_t_c___e_n_u_m_e_r_a_t_i_o_n_s.html#ggafd9b8b42eeb832d688e33f4561f97efca2ad65b05c79182d62f953294cde143dc"&gt;BLE_GATTC_EVT_ATTR_INFO_DISC_RSP&lt;/a&gt;. This will have the structure &lt;span&gt;&lt;a title="ble_gattc_evt_attr_info_disc_rsp_t" href="http://infocenter.nordicsemi.com/topic/com.nordic.infocenter.s132.api.v6.1.0/structble__gattc__evt__attr__info__disc__rsp__t.html?cp=2_3_1_1_0_2_2_4_13"&gt;ble_gattc_evt_attr_info_disc_rsp_t&lt;/a&gt;&lt;/span&gt;. In this case the format should be&lt;/p&gt;
&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td colspan="1" rowspan="1" align="right" valign="top"&gt;#define&amp;nbsp;&lt;/td&gt;
&lt;td colspan="1" rowspan="1" valign="bottom"&gt;&lt;a href="http://infocenter.nordicsemi.com/topic/com.nordic.infocenter.s132.api.v6.1.0/group___b_l_e___g_a_t_t_c___a_t_t_r___i_n_f_o___f_o_r_m_a_t.html#ga5f7dd0e9677bac47c656610407b2ba44"&gt;BLE_GATTC_ATTR_INFO_FORMAT_128BIT&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;2&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Based on the format and the count you can parse the UUID.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: SDK15.0 BLE  host client</title><link>https://devzone.nordicsemi.com/thread/146100?ContentTypeID=1</link><pubDate>Tue, 28 Aug 2018 12:16:57 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:400aca88-bd13-45ee-9153-b2ad25d255df</guid><dc:creator>helen</dc:creator><description>&lt;p&gt;Hi ,Sir&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;I &amp;nbsp;did more tests about finding a private service with 128-bit uuid which are not present in the table provided to ble_vs_uuids_assign.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;I saw sd_ble_gattc_primary_services_discover(...) function. I saw the instructions for using this function. I found the following @note;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; * @note If any of the discovered services have 128-bit UUIDs which are not present in the table provided to ble_vs_uuids_assign, a UUID structure with&lt;/p&gt;
&lt;p&gt;&amp;nbsp; * type @ref BLE_UUID_TYPE_UNKNOWN will be received in the corresponding event.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;The meaning here seems to be that this function is a 128-bit service that can be found without being registered in advance. &amp;nbsp;I tired to call the function to find the service mentioned earlier,but&lt;/p&gt;
&lt;p&gt;Always back a error NRF_ERROR_INVALID_PARAM,I don&amp;rsquo;t whyt,&lt;/p&gt;
&lt;p&gt;So please give some help ,what am i supposed to do for finding a private service with 128-bit uuid which are not present in the table provided to ble_vs_uuids_assign?&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Best wishes!&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Helen&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: SDK15.0 BLE  host client</title><link>https://devzone.nordicsemi.com/thread/145902?ContentTypeID=1</link><pubDate>Mon, 27 Aug 2018 11:05:43 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:b953b65a-d3c3-4be2-83a4-99f8e3f9514f</guid><dc:creator>helen</dc:creator><description>&lt;p&gt;Hi,run_ar&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;sd_ble_gattc_attr_info_discover(p_gattc_evt-&amp;gt;conn_handle ,&amp;amp;ble_gattc_handle_range);&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;I have tested the solution you gave,I simulated a way to find an unknown 128-bit uuid using function sd_ble_gattc_attr_info_discover(......)&amp;nbsp;as following:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;I used SDK15\examples\ble_central\ble_app_hrs_c\pca10056&amp;nbsp;to find&lt;/p&gt;
&lt;p&gt;SDK15\examples\ble_peripheral\ble_app_uart\pca10056;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;I made some modifications to the filter condition of ble_app_hrs_c&amp;#39;s function on_adv_report(.....), so that ble_app_hrs_c can be connected to ble_app_uart and at the same time, I added a new characteristic to ble_app_uart, so this ble_app_uart has a total of three characteristics.&lt;/p&gt;
&lt;p&gt;I added the function sd_ble_gattc_attr_info_discover(conn_handle , &amp;amp;ble_gattc_handle_range) to discovery_complete_evt_trigger() as follows:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;static void discovery_complete_evt_trigger(ble_db_discovery_t * p_db_discovery,&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;bool &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;is_srv_found,&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;uint16_t &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;conn_handle)&lt;/p&gt;
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;.......&lt;/p&gt;
&lt;p&gt;.......&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (m_pending_usr_evt_index == m_num_of_handlers_reg)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// All registered modules have pending events. Send all pending events to the user&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// modules.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pending_user_evts_send();&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong&gt;&lt;b&gt;err_code = sd_ble_gattc_attr_info_discover(conn_handle , &amp;amp;ble_gattc_handle_range);&lt;/b&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;else&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// Too many events pending. Do nothing. (Ideally this should not happen.)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/p&gt;
&lt;p&gt;........&lt;/p&gt;
&lt;p&gt;.........&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;Ble_gattc_handle_range is defined as&lt;/p&gt;
&lt;p&gt;ble_gattc_handle_range_t ble_gattc_handle_range =&lt;/p&gt;
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;&amp;nbsp;0x0001,&lt;/p&gt;
&lt;p&gt;&amp;nbsp;0xFFFF &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;};&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;After that I got &amp;nbsp;BLE_GATTC_EVT_ATTR_INFO_DISC_RSP event ,I know I need to parse the pointer of type ble_gattc_evt_attr_info_disc_rsp_t (const ble_gattc_evt_attr_info_disc_rsp_t *attr_info_disc_rsp = &amp;amp;p_ble_evt-&amp;gt;evt.gattc_evt.params.attr_info_disc_rsp;)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;But I don&amp;rsquo;t know how to parse attr_info_disc_rsp;I printed it after receiving&lt;span&gt;&amp;nbsp;BLE_GATTC_EVT_ATTR_INFO_DISC_RSP&lt;/span&gt;:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;NRF_LOG_DEBUG(&amp;quot;BLE_GATTC_EVT_ATTR_INFO_DISC_RSP event&amp;quot;);&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;NRF_LOG_DEBUG(&amp;quot;attr info discovery rsp count =%d&amp;quot;,attr_info_disc_rsp-&amp;gt;count);&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;NRF_LOG_DEBUG(&amp;quot;attr info discovery rsp format =%d&amp;quot;,attr_info_disc_rsp-&amp;gt;format);&lt;/p&gt;
&lt;p&gt;The result is confusing:&lt;/p&gt;
&lt;p&gt;&amp;lt;debug&amp;gt; ble_db_disc: BLE_GATTC_EVT_ATTR_INFO_DISC_RSP event&lt;/p&gt;
&lt;p&gt;&amp;lt;debug&amp;gt; ble_db_disc: attr info discovery rsp count =12&lt;/p&gt;
&lt;p&gt;&amp;lt;debug&amp;gt; ble_db_disc: attr info discovery rsp format =1&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;attr_info_disc_rsp-&amp;gt;count is 12,attr_info_disc_rsp-&amp;gt;format =1,How to use the two parameters?&lt;/p&gt;
&lt;p&gt;In fact, the final feature I want to implement is to use the client to discover an unknown private service(unknown vendor UUID) (like nrf connect, there is no need to register uuid in advance).&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: SDK15.0 BLE  host client</title><link>https://devzone.nordicsemi.com/thread/145676?ContentTypeID=1</link><pubDate>Fri, 24 Aug 2018 12:21:39 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:f24e65ff-ca8a-4db7-94e4-097922a40b3f</guid><dc:creator>run_ar</dc:creator><description>&lt;p&gt;Ok. Let me know if you have any further questions.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: SDK15.0 BLE  host client</title><link>https://devzone.nordicsemi.com/thread/145593?ContentTypeID=1</link><pubDate>Fri, 24 Aug 2018 03:35:11 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:2a3013e3-887b-45c9-b64d-b731d9e5038d</guid><dc:creator>helen</dc:creator><description>&lt;p&gt;let me try this,thanks&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: SDK15.0 BLE  host client</title><link>https://devzone.nordicsemi.com/thread/145505?ContentTypeID=1</link><pubDate>Thu, 23 Aug 2018 11:54:48 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:cd6799d6-2edd-4325-a68e-dc5c7511fa8d</guid><dc:creator>run_ar</dc:creator><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;For most applications the 128 bit UUID is known, so you would simply add it to your list of known vendor specific UUID&amp;#39;s. The returned&amp;nbsp;&lt;em&gt;uuid.type&lt;/em&gt; will match one of your entries in the UUID table in this case. In case the 128 bit UUID is unknown,&amp;nbsp;&lt;em&gt;BLE_UUID_TYPE_UNKNOWN&lt;/em&gt;, you can use &lt;a href="http://infocenter.nordicsemi.com/topic/com.nordic.infocenter.s132.api.v2.0.0/group___b_l_e___g_a_t_t_c___f_u_n_c_t_i_o_n_s.html#ga8b7ff74ff996da8340f69c208bfd0ec4" target="_blank" rel="noopener noreferrer"&gt;sd_ble_gattc_attr_info_discover&lt;/a&gt; to discover the 128bit UUID.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>