<?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 use RBC_MESH_EVENT_TYPE_CONFLICTING_VAL</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/9513/how-to-use-rbc_mesh_event_type_conflicting_val</link><description>Can you please clarify what the RBC_MESH_EVENT_TYPE_CONFLICTING_VAL is used for with the RBC mesh? I receive these events on the node that sets a value, but not the remote node that is simply receiving the new value. 
 Based on the mesh github documentation</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Thu, 01 Oct 2015 16:01:02 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/9513/how-to-use-rbc_mesh_event_type_conflicting_val" /><item><title>RE: How to use RBC_MESH_EVENT_TYPE_CONFLICTING_VAL</title><link>https://devzone.nordicsemi.com/thread/35134?ContentTypeID=1</link><pubDate>Thu, 01 Oct 2015 16:01:02 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:8afb4bca-f650-44c7-895f-14afe2d32138</guid><dc:creator>Trond Einar Snekvik</dc:creator><description>&lt;p&gt;This seems like a very reasonable approach. As an alternative to waiting for some set amount of time after receiving SLEEP before going to sleep, you could look into using the TX_EVENT. I would recommend that you let the device report at least 3-4 TX events before sleeping, as to ensure that the device has safely relayed its message. Also, the TX event comes in when the tx is queued up for transmission (we&amp;#39;ll change this for the next release), so it might get postponed if you put the mesh to sleep in the event handler.&lt;/p&gt;
&lt;p&gt;The next release will bring some dramatic changes to the handle system, that may solve your memory limit. We&amp;#39;ll basically unlock the ability to run with 65k handles, and store only a small subset for retransmission. We have seen some other usage scenarios similar to yours, and found that the static approach limits the potential of the mesh without much benefit, so we decided to change it. On the surface, the API will remain much the same, but your ability to fetch the content of each handle after the initial update event may be limited by your allocated cache size. Unless your application requires a lot of memory, you should be able to allocate more than 10-11 handles, if configured correctly. You need to change the linker address map (see the Scaling example), and set the RBC_MESH_GATTS_ATTR_TABLE_SIZE in the compile options.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: How to use RBC_MESH_EVENT_TYPE_CONFLICTING_VAL</title><link>https://devzone.nordicsemi.com/thread/35133?ContentTypeID=1</link><pubDate>Thu, 01 Oct 2015 14:26:16 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:81db433c-05c9-4dbf-b969-8dc305ce9b41</guid><dc:creator>sphudson</dc:creator><description>&lt;p&gt;Thank you Trond for your response.&lt;/p&gt;
&lt;p&gt;Our mesh has 32+ nodes.  The nodes consist of a single &amp;quot;host&amp;quot; (or master) node and the other nodes being sensor nodes. The sensor nodes must be asleep most of the time since they run off of a battery.  There are three (3) handles in the mesh: SLEEP, DATA_REQ, and DATA.  The host has knowledge of the Bluetooth addresses of each sensor node in the system.&lt;/p&gt;
&lt;p&gt;For each sensor node, the master node one-by-one puts the address of the node into the DATA_REQ handle.  The DATA_REQ handle is then propogated throughout the mesh.  Each sensor node will see that handle and if the address matches it&amp;#39;s local Bluetooth address, then that sensor node will respond back by putting data into the DATA handle (which is then propogated through the mesh and back to the master node).  The master node performs this same process for each sensor node in the mesh.&lt;/p&gt;
&lt;p&gt;This is essentially the master polling each node for data, one-by-one.  Once all sensor nodes have been polled, the master node sets a known value in the SLEEP handle which is then propagated througout the mesh.  Each sensor node receives the SLEEP handle, waits for ~1-2secs, and then turns itself off to save battery.  After 60 seconds, the sensor node wakes back up and turns on the mesh again.  So, when the master node sends out SLEEP, it knows that the sensor nodes will wake back up in 60 seconds and will then starting polling each one again.&lt;/p&gt;
&lt;p&gt;I originally was going to have a handle per sensor node, however we don&amp;#39;t have enough memory to support that.  I can&amp;#39;t add more than about 10-11 handles without rbc_mesh_init() coming back with an error...&lt;/p&gt;
&lt;p&gt;Do you see any issues with the above approach?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: How to use RBC_MESH_EVENT_TYPE_CONFLICTING_VAL</title><link>https://devzone.nordicsemi.com/thread/35132?ContentTypeID=1</link><pubDate>Thu, 01 Oct 2015 09:01:31 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:72f360cd-01e8-4efb-b784-b0ad9318684a</guid><dc:creator>Trond Einar Snekvik</dc:creator><description>&lt;p&gt;Hi,
The CONFLICTING event should appear when a device receives a packet with the same version number as the one in the local GATT server, but different data. This typically occurs when you have two or more devices writing different data to the same handle at the same time, leading to a conflict somewhere in the network.&lt;/p&gt;
&lt;p&gt;When you get a CONFLICTING event, the framework gives you the data that came in with the new packet, but does not overwrite the data in the GATT server. The overwrite decision is left to the application.&lt;/p&gt;
&lt;p&gt;When sending a value, there is no feedback to the application beyond the return code of &lt;code&gt;rbc_mesh_value_set()&lt;/code&gt;, and unless some other device is feeding the same handle, node#1 should never get a conflicting event.&lt;/p&gt;
&lt;p&gt;The behavior you&amp;#39;re experiencing doesn&amp;#39;t sound like intended behavior. Which version are you on, and what&amp;#39;s your mesh access address? Do you have more than two devices in the mesh?&lt;/p&gt;
&lt;p&gt;We did have a bug in a previous version (v0.6.5 or so) where similar behavior could occur, but this should have been mitigated (and is tested for) in newer versions.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: How to use RBC_MESH_EVENT_TYPE_CONFLICTING_VAL</title><link>https://devzone.nordicsemi.com/thread/35131?ContentTypeID=1</link><pubDate>Wed, 30 Sep 2015 16:44:59 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:ac2f2564-fcbd-48e7-b382-f61753a41386</guid><dc:creator>sphudson</dc:creator><description>&lt;p&gt;Also note that after setting the value on node #1, I receive several sporadic RBC_MESH_EVENT_TYPE_CONFLICTING_VAL events.  If I call rbc_mesh_value_set() on ndoe#1 with the value provided within the event structure, I still receive the CONFLICTING_VAL event even though the two nodes should match...&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>