<?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 discover custom service of peripheral</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/69789/how-to-discover-custom-service-of-peripheral</link><description>Hi, Nordic staff. 
 
 I&amp;#39;m working with Central device using S132. 
 
 There is a peripheral device using S112 in Nordic. I didn&amp;#39;t make this peripheral. 
 
 My question is that is it possible to discover above service and some characteristics uuid from</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Tue, 22 Dec 2020 10:01:16 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/69789/how-to-discover-custom-service-of-peripheral" /><item><title>RE: How to discover custom service of peripheral</title><link>https://devzone.nordicsemi.com/thread/286251?ContentTypeID=1</link><pubDate>Tue, 22 Dec 2020 10:01:16 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:54e14094-34f4-4795-aea5-3479abebe5fd</guid><dc:creator>mjr</dc:creator><description>&lt;p&gt;&lt;span&gt;Defined as &amp;quot;&lt;/span&gt;ble_nus_c_evt_handler&lt;span&gt;&amp;quot;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;static void ble_nus_c_evt_handler(ble_nus_c_t * p_ble_nus_c, ble_nus_c_evt_t const * p_ble_nus_evt)
{
    ret_code_t err_code;

    switch (p_ble_nus_evt-&amp;gt;evt_type)
    {
         
        case BLE_NUS_C_EVT_DISCOVERY_COMPLETE:
            printf(&amp;quot;Discovery complete.&amp;quot;);
            err_code = ble_nus_c_handles_assign(p_ble_nus_c, p_ble_nus_evt-&amp;gt;conn_handle, &amp;amp;p_ble_nus_evt-&amp;gt;handles);
            APP_ERROR_CHECK(err_code);

            err_code = ble_nus_c_tx_notif_enable(p_ble_nus_c);
            APP_ERROR_CHECK(err_code);
            printf(&amp;quot;Connected to device with Nordic UART Service.&amp;quot;);
            break;

        case BLE_NUS_C_EVT_NUS_TX_EVT:
            ble_nus_chars_received_uart_print(p_ble_nus_evt-&amp;gt;p_data, p_ble_nus_evt-&amp;gt;data_len);
            printf(&amp;quot;BLE_NUS_C_EVT_NUS_TX_EVT\n&amp;quot;);
            break;

        case BLE_NUS_C_EVT_DISCONNECTED:
            printf(&amp;quot;Disconnected.&amp;quot;);
            scan_start();
            break;
        default:
            printf(&amp;quot;client evt handler\r&amp;quot;);
            break;
    }
}&lt;/pre&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&amp;quot;nus_c_evt_handler&amp;quot; is used in &amp;quot;nus_c_init&amp;quot;.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;static void nus_c_init(void)
{
    ret_code_t       err_code;
    ble_nus_c_init_t init;

    memset(&amp;amp;init, 0, sizeof(init));

    init.evt_handler   = ble_nus_c_evt_handler;
    init.error_handler = nus_error_handler;
    init.p_gatt_queue  = &amp;amp;m_ble_gatt_queue;

    
    err_code = ble_nus_c_init(&amp;amp;m_ble_nus_c, &amp;amp;init);
    APP_ERROR_CHECK(err_code);
}&lt;/pre&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: How to discover custom service of peripheral</title><link>https://devzone.nordicsemi.com/thread/286246?ContentTypeID=1</link><pubDate>Tue, 22 Dec 2020 09:44:38 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:805364d8-4ce9-414b-ad98-380163e638eb</guid><dc:creator>Henry_Chou</dc:creator><description>&lt;p&gt;And your ble_evt_handler ()&amp;nbsp; should be ex:&lt;/p&gt;
&lt;p&gt;Depend on your case&lt;/p&gt;
&lt;p&gt;static void gatt_c_evt_handler(ble_gatt_c_t * p_gatt_c, ble_gatt_c_evt_t * p_gatt_c_evt)&lt;br /&gt;{&lt;br /&gt; switch (p_gatt_c_evt-&amp;gt;evt_type)&lt;br /&gt; {&lt;br /&gt; case BLE_GATT_C_EVT_DISCOVERY_COMPLETE:&lt;br /&gt; {&lt;br /&gt; ret_code_t err_code;&lt;/p&gt;
&lt;p&gt;NRF_LOG_INFO(&amp;quot;BBQ BLE probe service discovered on conn_handle 0x%x\r\n&amp;quot;,&lt;br /&gt; p_gatt_c_evt-&amp;gt;conn_handle);&lt;/p&gt;
&lt;p&gt;err_code = app_button_enable();&lt;br /&gt; APP_ERROR_CHECK(err_code);&lt;/p&gt;
&lt;p&gt;// GATT service discovered. Enable notification of Read.&lt;br /&gt; err_code = ble_gatt_c_read1_notif_enable(p_gatt_c);&lt;br /&gt; APP_ERROR_CHECK(err_code);&lt;br /&gt; err_code = ble_gatt_c_read2_notif_enable(p_gatt_c);&lt;br /&gt; APP_ERROR_CHECK(err_code);&lt;br /&gt; &lt;br /&gt; } break; // BLE_GATT_C_EVT_DISCOVERY_COMPLETE&lt;br /&gt; &lt;br /&gt; case BLE_GATT_C_EVT_TEMPERATURE_NOTIFICATION:&lt;br /&gt; {&lt;br /&gt; data_state ^= p_gatt_c_evt-&amp;gt;params.button.button_state;&lt;br /&gt; NRF_LOG_INFO(&amp;quot;Link 0x%x, Data state changed on peer to 0x%x\r\n&amp;quot;,&lt;br /&gt; p_gatt_c_evt-&amp;gt;conn_handle,&lt;br /&gt; data_state);&lt;br /&gt; if (temp_T1&amp;gt;=0)&lt;br /&gt; { &lt;br /&gt; BLE_probe[p_gatt_c_evt-&amp;gt;conn_handle].probe_T1 = temp_T1*10;&lt;br /&gt; }&lt;br /&gt; else&lt;br /&gt; {&lt;br /&gt; BLE_probe[p_gatt_c_evt-&amp;gt;conn_handle].probe_T1 = 4000+abs(temp_T1)*10;&lt;br /&gt; } &lt;br /&gt; if (temp_T2&amp;gt;=0)&lt;br /&gt; { &lt;br /&gt; BLE_probe[p_gatt_c_evt-&amp;gt;conn_handle].probe_T2 = temp_T2*10;&lt;br /&gt; }&lt;br /&gt; else&lt;br /&gt; {&lt;br /&gt; BLE_probe[p_gatt_c_evt-&amp;gt;conn_handle].probe_T2 = 4000+abs(temp_T2)*10;&lt;br /&gt; } &lt;br /&gt; BLE_probe[p_gatt_c_evt-&amp;gt;conn_handle].respon_time = temp_respon_time;&lt;br /&gt; if (data_state==0xff)&lt;br /&gt; {&lt;br /&gt; bsp_board_led_on(LEDBUTTON_LED);&lt;br /&gt; }&lt;br /&gt; else&lt;br /&gt; {&lt;br /&gt; bsp_board_led_off(LEDBUTTON_LED);&lt;br /&gt; }&lt;/p&gt;
&lt;p&gt;} break; // BLE_GATT_C_EVT_BUTTON_NOTIFICATION&lt;/p&gt;
&lt;p&gt;case BLE_GATT_C_EVT_STATUS_NOTIFICATION:&lt;br /&gt; {&lt;br /&gt; char temp_str[64]={0};&lt;br /&gt; if (p_gatt_c_evt-&amp;gt;params.button.button_state==0)&lt;br /&gt; { &lt;br /&gt; strcpy(temp_str,&amp;quot;Battery good.&amp;quot;);&lt;br /&gt; BLE_probe[p_gatt_c_evt-&amp;gt;conn_handle].batt_status = 0xff;&lt;br /&gt; } &lt;br /&gt; else &lt;br /&gt; { &lt;br /&gt; strcpy(temp_str,&amp;quot;Low Battery.&amp;quot;);&lt;br /&gt; BLE_probe[p_gatt_c_evt-&amp;gt;conn_handle].batt_status = 0x00;&lt;br /&gt; } &lt;br /&gt; NRF_LOG_INFO(&amp;quot;Link 0x%x, Battery status: %s\r\n&amp;quot;,&lt;br /&gt; p_gatt_c_evt-&amp;gt;conn_handle,&lt;br /&gt; (uint32_t)temp_str);&lt;br /&gt; check_sum=0;&lt;br /&gt; check_sum = BLE_probe[p_gatt_c_evt-&amp;gt;conn_handle].ble_mac[5]+BLE_probe[p_gatt_c_evt-&amp;gt;conn_handle].ble_mac[4]+BLE_probe[p_gatt_c_evt-&amp;gt;conn_handle].ble_mac[3]&lt;br /&gt; +BLE_probe[p_gatt_c_evt-&amp;gt;conn_handle].ble_mac[2]+BLE_probe[p_gatt_c_evt-&amp;gt;conn_handle].ble_mac[1]+BLE_probe[p_gatt_c_evt-&amp;gt;conn_handle].ble_mac[0]&lt;br /&gt; +BLE_probe[p_gatt_c_evt-&amp;gt;conn_handle].ble_name[0]+BLE_probe[p_gatt_c_evt-&amp;gt;conn_handle].ble_name[1]+BLE_probe[p_gatt_c_evt-&amp;gt;conn_handle].ble_name[2]&lt;br /&gt; +BLE_probe[p_gatt_c_evt-&amp;gt;conn_handle].ble_name[3]+BLE_probe[p_gatt_c_evt-&amp;gt;conn_handle].ble_name[4]+BLE_probe[p_gatt_c_evt-&amp;gt;conn_handle].connect_ID&lt;br /&gt; +BLE_probe[p_gatt_c_evt-&amp;gt;conn_handle].disconn_code+(BLE_probe[p_gatt_c_evt-&amp;gt;conn_handle].probe_T1&amp;gt;&amp;gt;8)+(BLE_probe[p_gatt_c_evt-&amp;gt;conn_handle].probe_T1&amp;amp;0xff)&lt;br /&gt; +(BLE_probe[p_gatt_c_evt-&amp;gt;conn_handle].probe_T2&amp;gt;&amp;gt;8)+(BLE_probe[p_gatt_c_evt-&amp;gt;conn_handle].probe_T2&amp;amp;0xff)+BLE_probe[p_gatt_c_evt-&amp;gt;conn_handle].batt_status&lt;br /&gt; +BLE_probe[p_gatt_c_evt-&amp;gt;conn_handle].respon_time;&lt;br /&gt; sprintf(uart_tx_buff,&amp;quot;CT probe%d=%02x%02x%02x%02x%02x%02x,%s,%d,%x,%x,%x,%x,%x,%x\r\n&amp;quot;,p_gatt_c_evt-&amp;gt;conn_handle+1,BLE_probe[p_gatt_c_evt-&amp;gt;conn_handle].ble_mac[5],&lt;br /&gt; BLE_probe[p_gatt_c_evt-&amp;gt;conn_handle].ble_mac[4],BLE_probe[p_gatt_c_evt-&amp;gt;conn_handle].ble_mac[3],BLE_probe[p_gatt_c_evt-&amp;gt;conn_handle].ble_mac[2],BLE_probe[p_gatt_c_evt-&amp;gt;conn_handle].ble_mac[1],BLE_probe[p_gatt_c_evt-&amp;gt;conn_handle].ble_mac[0],&lt;br /&gt; BLE_probe[p_gatt_c_evt-&amp;gt;conn_handle].ble_name,BLE_probe[p_gatt_c_evt-&amp;gt;conn_handle].connect_ID,BLE_probe[p_gatt_c_evt-&amp;gt;conn_handle].disconn_code,BLE_probe[p_gatt_c_evt-&amp;gt;conn_handle].probe_T1,BLE_probe[p_gatt_c_evt-&amp;gt;conn_handle].probe_T2,&lt;br /&gt; BLE_probe[p_gatt_c_evt-&amp;gt;conn_handle].batt_status,BLE_probe[p_gatt_c_evt-&amp;gt;conn_handle].respon_time,check_sum);&lt;br /&gt; uart_serial_tx((uint8_t *)uart_tx_buff,strlen(uart_tx_buff));&lt;br /&gt; //dbt_printf(&amp;quot;%s&amp;quot;,uart_tx_buff);&lt;br /&gt; } break; // BLE_GATT_C_EVT_STATUS_NOTIFICATION&lt;/p&gt;
&lt;p&gt;default:&lt;br /&gt; // No implementation needed.&lt;br /&gt; break;&lt;br /&gt; }&lt;br /&gt;}&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: How to discover custom service of peripheral</title><link>https://devzone.nordicsemi.com/thread/286239?ContentTypeID=1</link><pubDate>Tue, 22 Dec 2020 09:27:54 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:7c6bd795-cfa2-4acf-8a46-45e27967e385</guid><dc:creator>mjr</dc:creator><description>&lt;p&gt;&lt;span&gt;Thank you. That&amp;#39;s why I made it separately.&lt;/span&gt;&lt;br /&gt;&lt;span&gt;Is this the right way to do it?&lt;/span&gt;&lt;br /&gt;&lt;span&gt;But it hasn&amp;#39;t been resolved...&lt;/span&gt;&lt;br /&gt;&lt;span&gt;What should I do... ...TT.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;void MJR_c_on_db_disc_evt(ble_nus_c_t * p_ble_nus_c, ble_db_discovery_evt_t * p_evt)
{
    ble_nus_c_evt_t nus_c_evt;
    memset(&amp;amp;nus_c_evt,0,sizeof(ble_nus_c_evt_t));

    ble_gatt_db_char_t * p_chars = p_evt-&amp;gt;params.discovered_db.charateristics;

    // Check if the NUS was discovered.
    if (    (p_evt-&amp;gt;evt_type == BLE_DB_DISCOVERY_COMPLETE)
        &amp;amp;&amp;amp;  (p_evt-&amp;gt;params.discovered_db.srv_uuid.uuid == MJR_LE_SERVICE_UUID)
        &amp;amp;&amp;amp;  (p_evt-&amp;gt;params.discovered_db.srv_uuid.type == NUS_SERVICE_UUID_TYPE))
    {
        uint32_t i;
        for (i = 0; i &amp;lt; p_evt-&amp;gt;params.discovered_db.char_count; i++)
        {
            switch (p_chars[i].characteristic.uuid.uuid)
            {
                case MJR_LE_NOTIFYCATION_UUID:

                    nus_c_evt.handles.nus_rx_handle = p_chars[i].characteristic.handle_value;
                    break;

                case MJR_LE_WRITE_NO_RESPONSE_UUID:

                    nus_c_evt.handles.nus_tx_handle = p_chars[i].characteristic.handle_value;
                    nus_c_evt.handles.nus_tx_cccd_handle = p_chars[i].cccd_handle;
                    break;

                default:
                    break;
            }
        }
        if (p_ble_nus_c-&amp;gt;evt_handler != NULL)
        {
            nus_c_evt.conn_handle = p_evt-&amp;gt;conn_handle;
            nus_c_evt.evt_type    = BLE_NUS_C_EVT_DISCOVERY_COMPLETE;
            p_ble_nus_c-&amp;gt;evt_handler(p_ble_nus_c, &amp;amp;nus_c_evt);
        }
    }
}&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;static void db_disc_handler(ble_db_discovery_evt_t * p_evt)
{
    
    // ble_nus_c_on_db_disc_evt(&amp;amp;m_ble_nus_c, p_evt);
    MJR_c_on_db_disc_evt(&amp;amp;m_ble_nus_c, p_evt);

}&lt;/pre&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: How to discover custom service of peripheral</title><link>https://devzone.nordicsemi.com/thread/286236?ContentTypeID=1</link><pubDate>Tue, 22 Dec 2020 09:14:22 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:76f3a986-cc00-487a-adf2-00c30eb7a161</guid><dc:creator>Henry_Chou</dc:creator><description>&lt;p&gt;That&amp;#39;s my project code. I think the example code should be ble_nus_c_t &amp;amp; ble_nus_c_evt_t&lt;/p&gt;
&lt;p&gt;The word meaning is the same.&lt;/p&gt;
&lt;p&gt;Because my application is the thermal meter with GATT client service. Make some miss-understand. Sorry for that.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: How to discover custom service of peripheral</title><link>https://devzone.nordicsemi.com/thread/286219?ContentTypeID=1</link><pubDate>Tue, 22 Dec 2020 07:29:31 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:96f7ea47-6e01-48aa-bfee-3d8281cd92a4</guid><dc:creator>mjr</dc:creator><description>&lt;p&gt;&lt;span&gt;Thank you for your answer.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;I&amp;#39;m using SDK17.&lt;/p&gt;
&lt;p&gt;Could you tell me the location of &amp;quot;ble_gatt_c_t&amp;quot; and &amp;quot;ble_gatt_c_evt_t&amp;quot;???&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: How to discover custom service of peripheral</title><link>https://devzone.nordicsemi.com/thread/286213?ContentTypeID=1</link><pubDate>Tue, 22 Dec 2020 06:39:20 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:ebb482ae-7bff-4374-9914-777df970fe5e</guid><dc:creator>Henry_Chou</dc:creator><description>&lt;p&gt;For example discovery side:&lt;/p&gt;
&lt;p&gt;static ble_uuid_t const m_nus_uuid =&lt;br /&gt;{&lt;br /&gt; .uuid = BLE_UUID_NUS_SERVICE,&lt;br /&gt; .type = NUS_SERVICE_UUID_TYPE&lt;br /&gt;};&lt;/p&gt;
&lt;p&gt;err_code = nrf_ble_scan_filter_set(&amp;amp;m_scan, SCAN_UUID_FILTER, &amp;amp;m_nus_uuid);&lt;/p&gt;
&lt;p&gt;if the notify char. enable notify in your code&lt;/p&gt;
&lt;p&gt;Then in your gatt discovery event add on char.&lt;/p&gt;
&lt;p&gt;void ble_gatt_on_db_disc_evt(ble_gatt_c_t * p_ble_gatt_c, const ble_db_discovery_evt_t * p_evt)&lt;br /&gt;{&lt;br /&gt; // Check if the GATT Service was discovered.&lt;br /&gt; if (p_evt-&amp;gt;evt_type == BLE_DB_DISCOVERY_COMPLETE &amp;amp;&amp;amp;&lt;br /&gt; p_evt-&amp;gt;params.discovered_db.srv_uuid.uuid ==&amp;nbsp;&lt;span&gt;BLE_UUID_NUS_SERVICE,&lt;/span&gt; &amp;amp;&amp;amp;&lt;br /&gt; p_evt-&amp;gt;params.discovered_db.srv_uuid.type == &lt;span&gt;NUS_SERVICE_UUID_TYPE&lt;/span&gt;) //p_ble_gatt_c-&amp;gt;uuid_type)&lt;br /&gt; {&lt;br /&gt; ble_gatt_c_evt_t evt;&lt;/p&gt;
&lt;p&gt;evt.evt_type = BLE_GATT_C_EVT_DISCOVERY_COMPLETE;&lt;br /&gt; evt.conn_handle = p_evt-&amp;gt;conn_handle;&lt;/p&gt;
&lt;p&gt;uint32_t i;&lt;br /&gt; for (i = 0; i &amp;lt; p_evt-&amp;gt;params.discovered_db.char_count; i++)&lt;br /&gt; {&lt;br /&gt; const ble_gatt_db_char_t * p_char = &amp;amp;(p_evt-&amp;gt;params.discovered_db.charateristics[i]);&lt;br /&gt; switch (p_char-&amp;gt;characteristic.uuid.uuid)&lt;br /&gt; {&lt;br /&gt; case UUID1_STATUS_CHAR:&lt;br /&gt; evt.params.peer_db.read2_handle = p_char-&amp;gt;characteristic.handle_value;&lt;br /&gt; evt.params.peer_db.read2_cccd_handle = p_char-&amp;gt;cccd_handle;&lt;br /&gt; ; &lt;br /&gt; break;&lt;br /&gt; case UUID2_STATUS_CHAR:&lt;br /&gt; evt.params.peer_db.read1_handle = p_char-&amp;gt;characteristic.handle_value;&lt;br /&gt; evt.params.peer_db.read1_cccd_handle = p_char-&amp;gt;cccd_handle;&lt;br /&gt; break;&lt;/p&gt;
&lt;p&gt;default:&lt;br /&gt; break;&lt;br /&gt; }&lt;br /&gt; }&lt;/p&gt;
&lt;p&gt;NRF_LOG_DEBUG(&amp;quot;GATT Service discovered at peer.\r\n&amp;quot;);&lt;br /&gt; //If the instance has been assigned prior to db_discovery, assign the db_handles&lt;br /&gt; if (p_ble_gatt_c-&amp;gt;conn_handle != BLE_CONN_HANDLE_INVALID)&lt;br /&gt; {&lt;br /&gt; if ((p_ble_gatt_c-&amp;gt;peer_gatt_db.write_handle == BLE_GATT_HANDLE_INVALID)&amp;amp;&amp;amp;&lt;br /&gt; (p_ble_gatt_c-&amp;gt;peer_gatt_db.read1_handle == BLE_GATT_HANDLE_INVALID)&amp;amp;&amp;amp;&lt;br /&gt; (p_ble_gatt_c-&amp;gt;peer_gatt_db.read1_cccd_handle == BLE_GATT_HANDLE_INVALID)&amp;amp;&amp;amp;&lt;br /&gt; (p_ble_gatt_c-&amp;gt;peer_gatt_db.read2_handle == BLE_GATT_HANDLE_INVALID)&amp;amp;&amp;amp;&lt;br /&gt; (p_ble_gatt_c-&amp;gt;peer_gatt_db.read2_cccd_handle == BLE_GATT_HANDLE_INVALID)) &lt;br /&gt; {&lt;br /&gt; p_ble_gatt_c-&amp;gt;peer_gatt_db = evt.params.peer_db;&lt;br /&gt; }&lt;br /&gt; }&lt;/p&gt;
&lt;p&gt;p_ble_gatt_c-&amp;gt;evt_handler(p_ble_gatt_c, &amp;amp;evt);&lt;/p&gt;
&lt;p&gt;}&lt;br /&gt;}&lt;/p&gt;
&lt;p&gt;Get read or write char. in ble event&amp;nbsp; handler.&lt;/p&gt;
&lt;p&gt;static void ble_nus_c_evt_handler(ble_nus_c_t * p_ble_nus_c, ble_nus_c_evt_t const * p_ble_nus_evt)&lt;/p&gt;
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: How to discover custom service of peripheral</title><link>https://devzone.nordicsemi.com/thread/286209?ContentTypeID=1</link><pubDate>Tue, 22 Dec 2020 06:20:12 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:80644da6-fc01-4fc9-b243-af3e56036a10</guid><dc:creator>mjr</dc:creator><description>&lt;p&gt;&lt;span&gt;Thank you for your prompt reply.&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;I know the uuid value. Can you tell me how to define it?&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: How to discover custom service of peripheral</title><link>https://devzone.nordicsemi.com/thread/286207?ContentTypeID=1</link><pubDate>Tue, 22 Dec 2020 06:17:16 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:335b2ad5-3e2a-4fa9-8f74-de2fa70315bf</guid><dc:creator>Henry_Chou</dc:creator><description>&lt;p&gt;Do you know the service UUID &amp;amp; char. in peripheral side? If yes, you may define it in your code. If not, you may sniff the peripheral and try the service UUID and the&amp;nbsp;&lt;span&gt;characteristics data format.&lt;/span&gt;&amp;nbsp;Sometimes the service UUID will be in advertisement data package.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>