<?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 a characteristic - just read, not get a notification. As a client</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/117175/how-to-read-a-characteristic---just-read-not-get-a-notification-as-a-client</link><description>After a lot of help, I&amp;#39;ve managed to get a central_uart with custom UUIDs going. After stripping out as much unwanted code and callback functions as possible, moving UART and BLE code into their own files, getting rid of all mallocs and unnecessary queues</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Thu, 12 Dec 2024 13:35:28 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/117175/how-to-read-a-characteristic---just-read-not-get-a-notification-as-a-client" /><item><title>RE: How to read a characteristic - just read, not get a notification. As a client</title><link>https://devzone.nordicsemi.com/thread/514754?ContentTypeID=1</link><pubDate>Thu, 12 Dec 2024 13:35:28 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:19331455-0f21-41ac-b430-c7acb305f7aa</guid><dc:creator>DiBosco</dc:creator><description>&lt;p&gt;OK, I have got it going. Out of desperation I made a custom struct up with only a handle and &lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;div style="background-color:#ffffff;color:#000000;font-family:&amp;#39;Droid Sans Mono&amp;#39;, &amp;#39;monospace&amp;#39;, monospace;font-size:14px;font-weight:normal;line-height:19px;white-space:pre;"&gt;
&lt;div&gt;&lt;span style="color:#0000ff;"&gt;struct&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#267f99;"&gt;bt_gatt_read_params&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#001080;"&gt;read_params&lt;/span&gt;&lt;span style="color:#000000;"&gt;;&lt;br /&gt;&lt;br /&gt;And that now works; I can read the value. There&amp;#39;s still bits &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="color:#000000;"&gt;I don&amp;#39;t understand, but if it works I shouldn&amp;#39;t worry too much &lt;br /&gt;about it.&lt;br /&gt;&lt;br /&gt;I&amp;#39;m not too far off having the whole thing &lt;br /&gt;working now I think. (Famous last words!) &lt;br /&gt;&lt;br /&gt;Many thanks again for the patience and the help. &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: How to read a characteristic - just read, not get a notification. As a client</title><link>https://devzone.nordicsemi.com/thread/514700?ContentTypeID=1</link><pubDate>Thu, 12 Dec 2024 10:41:09 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:05edcef2-bc71-4eb3-a399-c8976390dc42</guid><dc:creator>Vidar Berg</dc:creator><description>&lt;p&gt;You can use the &amp;quot;insert&amp;quot; option in the editor to insert a code snippet. This provides better&amp;nbsp;code formatting.&lt;/p&gt;
&lt;p&gt;&lt;img style="max-height:240px;max-width:320px;" src="https://devzone.nordicsemi.com/resized-image/__size/640x480/__key/communityserver-discussions-components-files/4/pastedimage1733997566648v1.png" alt=" " /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img style="max-height:240px;max-width:320px;" src="https://devzone.nordicsemi.com/resized-image/__size/640x480/__key/communityserver-discussions-components-files/4/pastedimage1733997583378v2.png" alt=" " /&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
[quote userid="79197" url="~/f/nordic-q-a/117175/how-to-read-a-characteristic---just-read-not-get-a-notification-as-a-client/514578"]These looko like system structs as opposed to the heart &lt;br /&gt;rate which look like custom ones[/quote]
&lt;p&gt;The bt_hrs_client_body_sensor_location struct&amp;nbsp;defined by the hrs client contains elements relevant to the body sensor location characteristic for this implementation. This includes the&amp;nbsp;&lt;span&gt;bt_gatt_read_params struct and&lt;/span&gt;&amp;nbsp;a callback function which is registered by the application to receive read responses.&lt;/p&gt;
&lt;p&gt;&lt;img style="max-height:240px;max-width:320px;" src="https://devzone.nordicsemi.com/resized-image/__size/640x480/__key/communityserver-discussions-components-files/4/pastedimage1733998711554v3.png" alt=" " /&gt;&lt;/p&gt;
&lt;p&gt;Are you able to share your current project here or in a private ticket so I can have a look? If so, please zip the project directory and upload the zip file.&lt;/p&gt;
&lt;p&gt;&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 read a characteristic - just read, not get a notification. As a client</title><link>https://devzone.nordicsemi.com/thread/514579?ContentTypeID=1</link><pubDate>Wed, 11 Dec 2024 15:54:50 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:930e1750-29fe-485f-9bee-d53928f1c6ee</guid><dc:creator>DiBosco</dc:creator><description>&lt;p&gt;I also don&amp;#39;t get why when I put things in an inline code block on this forum it looks so wrong.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: How to read a characteristic - just read, not get a notification. As a client</title><link>https://devzone.nordicsemi.com/thread/514578?ContentTypeID=1</link><pubDate>Wed, 11 Dec 2024 15:54:00 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:cfced24e-526f-4fb0-b28a-a7811778ef03</guid><dc:creator>DiBosco</dc:creator><description>&lt;p&gt;I&amp;#39;m still not getting this I&amp;#39;m afraid:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;My code:&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;div style="background-color:#ffffff;color:#000000;font-family:&amp;#39;Droid Sans Mono&amp;#39;, &amp;#39;monospace&amp;#39;, monospace;font-size:14px;font-weight:normal;line-height:19px;white-space:pre;"&gt;
&lt;div&gt;&lt;code&gt;&lt;span style="color:#008000;"&gt;/** &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;@brief&lt;/span&gt;&lt;span style="color:#008000;"&gt; CUSTOM Client structure. */&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;&lt;span style="color:#0000ff;"&gt;struct&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#267f99;"&gt;bt_custom_client&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;&lt;span style="color:#000000;"&gt;{&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;struct&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#267f99;"&gt;bt_conn&lt;/span&gt;&lt;span style="color:#000000;"&gt; *&lt;/span&gt;&lt;span style="color:#001080;"&gt;conn&lt;/span&gt;&lt;span style="color:#000000;"&gt;;&lt;/span&gt;&lt;span style="color:#008000;"&gt; // Connection object. &lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#267f99;"&gt;atomic_t&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#001080;"&gt;state&lt;/span&gt;&lt;span style="color:#000000;"&gt;;&lt;/span&gt;&lt;span style="color:#008000;"&gt; // Internal state.&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;&lt;span style="color:#008000;"&gt; /** Handles on the connected peer device that are needed&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;&lt;span style="color:#008000;"&gt; * to interact with the device.&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;&lt;span style="color:#008000;"&gt; */&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;struct&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#267f99;"&gt;bt_custom_client_handles&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#001080;"&gt;handles&lt;/span&gt;&lt;span style="color:#000000;"&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;code&gt;&lt;span style="color:#008000;"&gt; /** GATT subscribe parameters for CUSTOM TX Characteristic. */&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;struct&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#267f99;"&gt;bt_gatt_subscribe_params&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#001080;"&gt;tx_notif_params&lt;/span&gt;&lt;span style="color:#000000;"&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;code&gt;&lt;span style="color:#008000;"&gt; /** GATT write parameters for CUSTOM RX Characteristic. */&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;struct&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#267f99;"&gt;bt_gatt_subscribe_params&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#001080;"&gt;rx_notif_params&lt;/span&gt;&lt;span style="color:#000000;"&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;struct&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#267f99;"&gt;bt_gatt_write_params&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#001080;"&gt;tx_write_params&lt;/span&gt;&lt;span style="color:#000000;"&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;code&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#008000;"&gt;// GATT discovery&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;struct&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#267f99;"&gt;bt_gatt_subscribe_params&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#000000;"&gt;association&lt;span style="color:#001080;"&gt;_parameters&lt;/span&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;code&gt;&lt;span style="color:#000000;"&gt;};&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;&lt;code&gt;&lt;span style="color:#000000;"&gt;The heart rate demo:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/code&gt;
&lt;div style="background-color:#ffffff;color:#000000;font-family:&amp;#39;Droid Sans Mono&amp;#39;, &amp;#39;monospace&amp;#39;, monospace;font-size:14px;font-weight:normal;line-height:19px;white-space:pre;"&gt;
&lt;div&gt;&lt;code&gt;&lt;span style="color:#008000;"&gt;/**@brief Heart Rate Service Client instance structure.&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;&lt;span style="color:#008000;"&gt; * This structure contains status information for the client.&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;&lt;span style="color:#008000;"&gt; */&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;&lt;span style="color:#0000ff;"&gt;struct&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#267f99;"&gt;bt_hrs_client&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;&lt;span style="color:#000000;"&gt;{&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;&lt;span style="color:#008000;"&gt; /** Connection object. */&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;struct&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#267f99;"&gt;bt_conn&lt;/span&gt;&lt;span style="color:#000000;"&gt; *&lt;/span&gt;&lt;span style="color:#001080;"&gt;conn&lt;/span&gt;&lt;span style="color:#000000;"&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;code&gt;&lt;span style="color:#008000;"&gt; /** Heart Rate Measurement characteristic. */&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;struct&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#267f99;"&gt;bt_hrs_client_hr_meas&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#001080;"&gt;measurement_char&lt;/span&gt;&lt;span style="color:#000000;"&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;code&gt;&lt;span style="color:#008000;"&gt; /** Sensor Body Location characteristic. */&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;struct&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#267f99;"&gt;bt_hrs_client_body_sensor_location&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#001080;"&gt;sensor_location_char&lt;/span&gt;&lt;span style="color:#000000;"&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;code&gt;&lt;span style="color:#008000;"&gt; /** Heart Rate Control Point characteristic. */&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;struct&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#267f99;"&gt;bt_hrs_client_control_point&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#001080;"&gt;cp_char&lt;/span&gt;&lt;span style="color:#000000;"&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;code&gt;&lt;span style="color:#008000;"&gt; /** Internal state. */&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#267f99;"&gt;atomic_t&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#001080;"&gt;state&lt;/span&gt;&lt;span style="color:#000000;"&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;&lt;span style="color:#000000;"&gt;};&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;In hrd_client.c&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;div style="background-color:#ffffff;color:#000000;font-family:&amp;#39;Droid Sans Mono&amp;#39;, &amp;#39;monospace&amp;#39;, monospace;font-size:14px;font-weight:normal;line-height:19px;white-space:pre;"&gt;
&lt;div&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#001080;"&gt;params&lt;/span&gt;&lt;span style="color:#000000;"&gt; = &amp;amp;&lt;/span&gt;&lt;span style="color:#001080;"&gt;hrs_c&lt;/span&gt;&lt;span style="color:#000000;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color:#001080;"&gt;sensor_location_char&lt;/span&gt;&lt;span style="color:#000000;"&gt;.&lt;/span&gt;&lt;span style="color:#001080;"&gt;read_params&lt;/span&gt;&lt;span style="color:#000000;"&gt;;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div style="background-color:#ffffff;color:#000000;font-family:&amp;#39;Droid Sans Mono&amp;#39;, &amp;#39;monospace&amp;#39;, monospace;font-size:14px;font-weight:normal;line-height:19px;white-space:pre;"&gt;
&lt;div&gt;&lt;span style="color:#000000;"&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&lt;br /&gt;So the demo has this &lt;code&gt;&lt;span style="color:#001080;"&gt;sensor_location_char&lt;/span&gt;&lt;/code&gt; which is of type &lt;br /&gt;&lt;br /&gt;&lt;code&gt; &lt;span style="color:#0000ff;"&gt;struct&lt;/span&gt; &lt;span style="color:#267f99;"&gt;bt_hrs_client_body_sensor_location&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Whereas my code has structs &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;
&lt;div style="background-color:#ffffff;color:#000000;font-family:&amp;#39;Droid Sans Mono&amp;#39;, &amp;#39;monospace&amp;#39;, monospace;font-size:14px;font-weight:normal;line-height:19px;white-space:pre;"&gt;
&lt;div&gt;&lt;span style="color:#267f99;"&gt;&lt;span style="color:#267f99;"&gt;bt_gatt_subscribe_params&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;
&lt;div style="background-color:#ffffff;color:#000000;font-family:&amp;#39;Droid Sans Mono&amp;#39;, &amp;#39;monospace&amp;#39;, monospace;font-size:14px;font-weight:normal;line-height:19px;white-space:pre;"&gt;
&lt;div&gt;&lt;span style="color:#267f99;"&gt;&lt;span style="color:#267f99;"&gt;bt_gatt_write_params&lt;br /&gt;&lt;br /&gt;These looko like system structs as opposed to the heart &lt;br /&gt;rate which look like custom ones&lt;br /&gt;&lt;br /&gt;The one I want to read is:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;
&lt;div style="background-color:#ffffff;color:#000000;font-family:&amp;#39;Droid Sans Mono&amp;#39;, &amp;#39;monospace&amp;#39;, monospace;font-size:14px;font-weight:normal;line-height:19px;white-space:pre;"&gt;
&lt;div&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;struct&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#267f99;"&gt;bt_gatt_subscribe_params&lt;/span&gt;&lt;span style="color:#000000;"&gt; association&lt;/span&gt;&lt;span style="color:#001080;"&gt;_parameters&lt;/span&gt;&lt;span style="color:#000000;"&gt;&lt;span style="color:#000000;"&gt;;&lt;br /&gt;&lt;br /&gt;But I&amp;#39;ve realised that &lt;span style="color:#267f99;"&gt;bt_gatt_subscribe_params&lt;/span&gt; &lt;br /&gt;is almost definitely wrong. Also it&amp;#39;s surely not:&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#267f99;"&gt;bt_gatt_write_params&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;So am I needing to create a custom struct like this:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;
&lt;div style="background-color:#ffffff;color:#000000;font-family:&amp;#39;Droid Sans Mono&amp;#39;, &amp;#39;monospace&amp;#39;, monospace;font-size:14px;font-weight:normal;line-height:19px;white-space:pre;"&gt;
&lt;div&gt;&lt;span style="color:#0000ff;"&gt;struct&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#267f99;"&gt;bt_custom_association_struct&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="color:#000000;"&gt;{&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="color:#008000;"&gt; /** Value handle. */&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#267f99;"&gt;uint16_t&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#001080;"&gt;handle&lt;/span&gt;&lt;span style="color:#000000;"&gt;;&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style="color:#008000;"&gt; /** Read parameters. */&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;struct&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#267f99;"&gt;bt_gatt_read_params&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#001080;"&gt;read_params&lt;/span&gt;&lt;span style="color:#000000;"&gt;;&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style="color:#008000;"&gt; /** Read complete callback. */&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#267f99;"&gt;bt_hrs_client_read_sensor_location_cb&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#001080;"&gt;read_cb&lt;/span&gt;&lt;span style="color:#000000;"&gt;;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="color:#000000;"&gt;};&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;span style="color:#000000;"&gt;&lt;span style="color:#000000;"&gt;&lt;br /&gt;But with a different callback. Maybe this:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;
&lt;div style="background-color:#ffffff;color:#000000;font-family:&amp;#39;Droid Sans Mono&amp;#39;, &amp;#39;monospace&amp;#39;, monospace;font-size:14px;font-weight:normal;line-height:19px;white-space:pre;"&gt;
&lt;div&gt;&lt;span style="color:#0000ff;"&gt;typedef&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#267f99;"&gt;uint8_t&lt;/span&gt;&lt;span style="color:#000000;"&gt; (*&lt;/span&gt;&lt;span style="color:#795e26;"&gt;on_association_value_read)&lt;/span&gt;&lt;span style="color:#000000;"&gt;(&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;struct&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#267f99;"&gt;bt_conn&lt;/span&gt;&lt;span style="color:#000000;"&gt; *&lt;/span&gt;&lt;span style="color:#001080;"&gt;conn&lt;/span&gt;&lt;span style="color:#000000;"&gt;, &lt;/span&gt;&lt;span style="color:#267f99;"&gt;uint8_t&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#001080;"&gt;err&lt;/span&gt;&lt;span style="color:#000000;"&gt;,&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;struct&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#267f99;"&gt;bt_gatt_read_params&lt;/span&gt;&lt;span style="color:#000000;"&gt; *&lt;/span&gt;&lt;span style="color:#001080;"&gt;params&lt;/span&gt;&lt;span style="color:#000000;"&gt;,&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;const&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;void&lt;/span&gt;&lt;span style="color:#000000;"&gt; *&lt;/span&gt;&lt;span style="color:#001080;"&gt;data&lt;/span&gt;&lt;span style="color:#000000;"&gt;, &lt;/span&gt;&lt;span style="color:#267f99;"&gt;uint16_t&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#001080;"&gt;length&lt;/span&gt;&lt;span style="color:#000000;"&gt;); &lt;br /&gt;&lt;br /&gt;I don&amp;#39;t understand what &lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;span style="color:#267f99;"&gt;bt_gatt_subscribe_params&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&lt;span style="color:#267f99;"&gt;bt_gatt_write_params&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Are for and why they are different to the &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="color:#000000;"&gt;heart rate one which seems to have all custom structs&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="color:#000000;"&gt;&lt;br /&gt;I&amp;#39;m not at all sure I&amp;#39;ve asked a good question here.&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;span style="color:#000000;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;span style="color:#267f99;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: How to read a characteristic - just read, not get a notification. As a client</title><link>https://devzone.nordicsemi.com/thread/514366?ContentTypeID=1</link><pubDate>Tue, 10 Dec 2024 19:02:15 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:154967b9-492c-4b6a-bd45-a9cb839807aa</guid><dc:creator>Vidar Berg</dc:creator><description>[quote user="DiBosco"]I still need the previous, long post answering please, the second one, I altered because I realised what had happened and didn&amp;#39;t need it answering![/quote]
&lt;p&gt;Thanks, I just&amp;nbsp;had&amp;nbsp;to make sure &lt;span class="emoticon" data-url="https://devzone.nordicsemi.com/cfs-file/__key/system/emoji/1f642.svg" title="Slight smile"&gt;&amp;#x1f642;&lt;/span&gt;&lt;/p&gt;
[quote user="DiBosco"]Before we get to that though, how do I get this SDK tree? I can&amp;#39;t find anything like that in my VSC.[/quote]
&lt;p&gt;You can press Ctrl+Shift+f to open the search window and search across all files. Make sure the SDK folder is included in your VS Code workspace and not only your project for this to work.&lt;/p&gt;
[quote user="DiBosco"]int bt_hrs_client_sensor_location_read(struct bt_hrs_client *hrs_c,&lt;br /&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; bt_hrs_client_read_sensor_location_cb read_cb)&lt;br /&gt;&lt;br /&gt;I think this isn&amp;#39;t actually reading, it&amp;#39;s just setting up yet another callback function to be called once the read has been done?[/quote]
&lt;p&gt;&lt;span&gt;Like with&amp;nbsp;the nus_client.c implementation, the &lt;a href="https://docs.nordicsemi.com/bundle/ncs-latest/page/nrf/libraries/bluetooth/services/hrs_client.html"&gt;heart rate client&lt;/a&gt;&amp;nbsp; also provides callbacks that can be registered by an application to receive data and events from the service. This part is not relevant in your case, what is relevant to look at is what parameters are passed to bt_gatt_read() and how the attribute handle for this characteristic is&amp;nbsp;found through service discovery.&amp;nbsp;The other parts of the code is mostly specific to interfacing with the standard Heart Rate service.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;a href="https://docs.nordicsemi.com/bundle/zephyr-apis-2.8.0/page/structbt_gatt_read_params.html"&gt;bt_gatt_read_params&lt;/a&gt;&amp;nbsp;struct that needs to be passed to bt_gatt_read():&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;img style="max-height:240px;max-width:320px;" src="https://devzone.nordicsemi.com/resized-image/__size/640x480/__key/communityserver-discussions-components-files/4/pastedimage1733857019696v1.png" alt=" " /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&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 read a characteristic - just read, not get a notification. As a client</title><link>https://devzone.nordicsemi.com/thread/514360?ContentTypeID=1</link><pubDate>Tue, 10 Dec 2024 18:39:38 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:b5074d3d-c608-420f-8ece-f3a1caea032a</guid><dc:creator>DiBosco</dc:creator><description>[quote userid="4240" url="~/f/nordic-q-a/117175/how-to-read-a-characteristic---just-read-not-get-a-notification-as-a-client/514359"]Should I&amp;nbsp;ignore&amp;nbsp;your previous comment, or&amp;nbsp;are you referring to an edit you made[/quote]
&lt;p&gt;&lt;span class="emoticon" data-url="https://devzone.nordicsemi.com/cfs-file/__key/system/emoji/1f603.svg" title="Smiley"&gt;&amp;#x1f603;&lt;/span&gt; I still need the previous, long post answering please, the second one, I altered because I realised what had happened and didn&amp;#39;t need it answering! &lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: How to read a characteristic - just read, not get a notification. As a client</title><link>https://devzone.nordicsemi.com/thread/514359?ContentTypeID=1</link><pubDate>Tue, 10 Dec 2024 18:37:01 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:0a0fed31-a688-4a93-9424-44b30d6cd80d</guid><dc:creator>Vidar Berg</dc:creator><description>&lt;p&gt;&lt;span&gt;...&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Should I&amp;nbsp;ignore&amp;nbsp;your previous comment, or&amp;nbsp;are you referring to an edit you made?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: How to read a characteristic - just read, not get a notification. As a client</title><link>https://devzone.nordicsemi.com/thread/514342?ContentTypeID=1</link><pubDate>Tue, 10 Dec 2024 17:03:34 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:c278d105-8525-4c4e-9b8b-d5fb1622b06c</guid><dc:creator>DiBosco</dc:creator><description>&lt;p&gt;Ignore this&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: How to read a characteristic - just read, not get a notification. As a client</title><link>https://devzone.nordicsemi.com/thread/514338?ContentTypeID=1</link><pubDate>Tue, 10 Dec 2024 16:32:05 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:851ed9cb-a82e-4a3c-9e6a-9127b273a17e</guid><dc:creator>DiBosco</dc:creator><description>&lt;p&gt;Hi, thanks for that. &lt;br /&gt;&lt;br /&gt;Like all this code I just find it impossible to follow. &lt;br /&gt;&lt;br /&gt;Before we get to that though, how do I get this SDK tree? I can&amp;#39;t find anything like that in my VSC. &lt;br /&gt;&lt;br /&gt;So, let&amp;#39;s go look at that function:&lt;br /&gt;&lt;br /&gt;int bt_hrs_client_sensor_location_read(struct bt_hrs_client *hrs_c,&lt;br /&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; bt_hrs_client_read_sensor_location_cb read_cb)&lt;br /&gt;&lt;br /&gt;I think this isn&amp;#39;t actually reading, it&amp;#39;s just setting up yet another callback function to be called once the read has been done?&lt;br /&gt;&lt;br /&gt;We&amp;#39;re passing a pointer to a struct of bt_hrs_client which in my case I think is the&amp;nbsp; bt_custom_client that you came up with for me. &lt;br /&gt;&lt;br /&gt;I really struggle here. This is defined in hrs_cleint.h as :&lt;br /&gt;&lt;br /&gt;typedef void (*bt_hrs_client_read_sensor_location_cb)(struct bt_hrs_client *hrs_c,&lt;br /&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; enum bt_hrs_client_sensor_location location,&lt;br /&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; int err);&lt;br /&gt;&lt;br /&gt;Why is this callback function&amp;nbsp; necessary? Later on there is this:&lt;br /&gt;&lt;br /&gt;params-&amp;gt;func = on_hrs_sensor_location_read;&lt;br /&gt;&lt;br /&gt;Which I am guessing is saying that once the characteristic has been read on&amp;nbsp; the remote node, then call the function:&lt;br /&gt;&lt;br /&gt;on_hrs_sensor_location_read&lt;br /&gt;&lt;br /&gt;Where you can get the data in the characteristic? &lt;br /&gt;&lt;br /&gt;I can&amp;#39;t find where:&lt;br /&gt;&lt;br /&gt;struct bt_hrs_client_body_sensor_location&amp;nbsp; is filled. I&amp;#39;m guessing that in this:&lt;br /&gt;&lt;br /&gt;struct bt_hrs_client_body_sensor_location {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /** Value handle. */&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; uint16_t handle;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /** Read parameters. */&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; struct bt_gatt_read_params read_params;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /** Read complete callback. */&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; bt_hrs_client_read_sensor_location_cb read_cb;&lt;br /&gt;};&lt;br /&gt;&lt;br /&gt;handle is what was discovered in the gatt discovery for that particular UUID?&lt;/p&gt;
&lt;p&gt;Ideally I&amp;#39;d get rid of that callback.&lt;/p&gt;
&lt;p&gt;So then we check for NULL pointer I think with:&lt;br /&gt;&lt;br /&gt;(!hrs_c || !read_cb) which should read&lt;br /&gt;&lt;br /&gt;if (NULL == hrs_c) || (NULL == read_cb) ?&lt;br /&gt;&lt;br /&gt;Then there&amp;#39;s this:&lt;br /&gt;&lt;br /&gt;if (!bt_hrs_client_has_sensor_location(hrs_c))&lt;br /&gt;&lt;br /&gt;Which I don&amp;#39;t understand at all&lt;br /&gt;&lt;br /&gt;Then:&lt;br /&gt;&lt;br /&gt;if (atomic_test_and_set_bit(&amp;amp;hrs_c-&amp;gt;state, HRS_SENSOR_LOCATION_READ_IN_PROGRES))&lt;br /&gt;&lt;br /&gt;I&amp;#39;ve seen this in a few places. I&amp;#39;m guessing this is doing the equivalent of this?&lt;br /&gt;&lt;br /&gt;Also, HRS_SENSOR_LOCATION_READ_IN_PROGRES is defined in hrs_client.h along with some other things:&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;div style="background-color:#ffffff;color:#000000;font-family:&amp;#39;Droid Sans Mono&amp;#39;, &amp;#39;monospace&amp;#39;, monospace;font-size:14px;font-weight:normal;line-height:19px;white-space:pre;"&gt;
&lt;div&gt;&lt;span style="color:#af00db;"&gt;#define&lt;/span&gt;&lt;span style="color:#0000ff;"&gt; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;HRS_MEASUREMENT_NOTIFY_ENABLED&lt;/span&gt;&lt;span style="color:#0000ff;"&gt; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;BIT&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;(&lt;/span&gt;&lt;span style="color:#098658;"&gt;0&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="color:#af00db;"&gt;#define&lt;/span&gt;&lt;span style="color:#0000ff;"&gt; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;HRS_MEASUREMENT_READ_IN_PROGRES&lt;/span&gt;&lt;span style="color:#0000ff;"&gt; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;BIT&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;(&lt;/span&gt;&lt;span style="color:#098658;"&gt;1&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="color:#af00db;"&gt;#define&lt;/span&gt;&lt;span style="color:#0000ff;"&gt; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;HRS_SENSOR_LOCATION_READ_IN_PROGRES&lt;/span&gt;&lt;span style="color:#0000ff;"&gt; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;BIT&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;(&lt;/span&gt;&lt;span style="color:#098658;"&gt;2&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="color:#af00db;"&gt;#define&lt;/span&gt;&lt;span style="color:#0000ff;"&gt; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;HRS_CONTROL_POINT_WRITE_PENDING&lt;/span&gt;&lt;span style="color:#0000ff;"&gt; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;BIT&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;(&lt;/span&gt;&lt;span style="color:#098658;"&gt;3&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;)&lt;br /&gt;&lt;br /&gt;But where does this come form, how are these assigned and how &lt;br /&gt;do they correspond to my custom_client setup please? &lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;br /&gt;&lt;br /&gt;---------------------------------------------------------------&lt;/p&gt;
&lt;p&gt;bool ret_val;&lt;br /&gt;uint32_t value;&lt;br /&gt;ret_val = true;&lt;br /&gt;value = hrs_c-&amp;gt;state&lt;br /&gt;&lt;br /&gt;hrs_c-&amp;gt;state |= (1 &amp;lt;&amp;lt; HRS_SENSOR_LOCATION_READ_IN_PROGRES);&lt;br /&gt;if (0 == (value &amp;amp; (1 &amp;lt;&amp;lt; HRS_SENSOR_LOCATION_READ_IN_PROGRES)))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ret_val = false;&lt;br /&gt;return ret_val;&lt;br /&gt;&lt;br /&gt;---------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;I&amp;#39;m guessing it&amp;#39;s looking to see if a read&amp;#39;s already in progress and if not, kicking one off. &lt;br /&gt;&lt;br /&gt;Then we come to assigning this first callback:&lt;br /&gt;&lt;br /&gt;hrs_c-&amp;gt;sensor_location_char.read_cb = read_cb;&lt;br /&gt;&lt;br /&gt;Which I don&amp;#39;t get. &lt;br /&gt;&lt;br /&gt;And I start to lose the trail with this even more:&lt;br /&gt;&lt;br /&gt;So there&amp;#39;s a struct of type bt_gatt_read_params:&lt;br /&gt;&lt;br /&gt;I can see that in gatt.h but don&amp;#39;t understand what some of the values do.&lt;br /&gt;&lt;br /&gt;There&amp;#39;s yet another callback and I could just about understand func being needed to be called when the read was done, is that right?&lt;br /&gt;&lt;br /&gt;But there&amp;#39;s this offset again which I have no idea about. &lt;br /&gt;Again the handle which I guess comes from gatt discovery but what is&amp;nbsp; handle_count for?&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;And then I have a lack of knowledge of what calls bt_hrs_client_sensor_location_read, what should be passed to it and what the callback function(s) look like for when it&amp;#39;s actually read.&lt;br /&gt;&lt;br /&gt;I can&amp;#39;t find anything that calls bt_hrs_client_sensor_location_read and maybe that comes from not knowing how to get at this SDK tree. &lt;br /&gt;&lt;br /&gt;Am thinking that actually I don&amp;#39;t really have a semi decent grip on how all this knits together yet.&lt;br /&gt;&lt;br /&gt;Thanks&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: How to read a characteristic - just read, not get a notification. As a client</title><link>https://devzone.nordicsemi.com/thread/514303?ContentTypeID=1</link><pubDate>Tue, 10 Dec 2024 14:41:12 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:3fda22ab-e6a7-408e-b9e2-a073595a08af</guid><dc:creator>Vidar Berg</dc:creator><description>&lt;p&gt;Hello,&lt;/p&gt;
&lt;p&gt;You can perform a GATT read using the &lt;a href="https://docs.nordicsemi.com/bundle/zephyr-apis-2.8.0/page/group_bt_gatt_client.html#ga1a18dd726ab960a88d7f85f2a014141a"&gt;bt_gatt_read&lt;/a&gt;&lt;span&gt;() function. You can find several examples of this API&amp;nbsp;being used by searching the through SDK tree in VS code:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;img style="max-height:240px;max-width:320px;" src="https://devzone.nordicsemi.com/resized-image/__size/640x480/__key/communityserver-discussions-components-files/4/pastedimage1733841580193v2.png" alt=" " /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;For example, here in the hrs_client.c file:&amp;nbsp;&lt;a href="https://github.com/nrfconnect/sdk-nrf/blob/67c885fb8d2d73067c77e0d105d8a88a8fbfca6c/subsys/bluetooth/services/hrs_client.c#L270"&gt;https://github.com/nrfconnect/sdk-nrf/blob/67c885fb8d2d73067c77e0d105d8a88a8fbfca6c/subsys/bluetooth/services/hrs_client.c#L270&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Best regards,&lt;/p&gt;
&lt;p&gt;Vidar&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></channel></rss>