<?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>The TX/RX behaviour of OpenMesh?</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/15052/the-tx-rx-behaviour-of-openmesh</link><description>I&amp;#39;ve studied the nRF OpenMesh for a couple of days, and could run the BLE_Gateway example among serval nRF51DK boards.
But now, I still don&amp;#39;t have any feeling/concept about the radio tx/rx switching behaviour.
The following is my questions listed about</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Thu, 04 Aug 2016 02:18:54 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/15052/the-tx-rx-behaviour-of-openmesh" /><item><title>RE: The TX/RX behaviour of OpenMesh?</title><link>https://devzone.nordicsemi.com/thread/57451?ContentTypeID=1</link><pubDate>Thu, 04 Aug 2016 02:18:54 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:799bbcab-4539-4fd2-bc86-dbdb1fa55add</guid><dc:creator>stephen</dc:creator><description>&lt;p&gt;okay, I would try them according to your advices later.
By the way, I intend to &amp;quot;add a comment&amp;quot;, but click to &amp;quot;edit convert to answer&amp;quot;. Obviously, there is not UNDO or convert to comment function in this system. Sorry for that.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: The TX/RX behaviour of OpenMesh?</title><link>https://devzone.nordicsemi.com/thread/57450?ContentTypeID=1</link><pubDate>Tue, 02 Aug 2016 15:09:36 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:e5ee565e-9bb3-43c4-883f-d3c052037a09</guid><dc:creator>Trond Einar Snekvik</dc:creator><description>&lt;p&gt;That sounds weird. Can you post the hardfault as an issue to the github-repo? Are you able to get a backtrace from it? The handle pair should keep on broadcasting after the stop. Can you check whether its still in the cache with the debugger? Time &amp;quot;freezes&amp;quot; while the mesh is stopped, and will continue as if the next timeslot immediately followed the previous. We had some trouble with the timers not firing for the first 10 seconds after the stop before, could this issue have resurfaced?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: The TX/RX behaviour of OpenMesh?</title><link>https://devzone.nordicsemi.com/thread/57444?ContentTypeID=1</link><pubDate>Wed, 27 Jul 2016 14:53:49 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:8e21f3e7-ffa7-4e27-883e-fa4496381fae</guid><dc:creator>stephen</dc:creator><description>&lt;p&gt;Okay, got it, and thanks you again. In addition, I found two addtional problems. First, it needs to add extra 6 ms delay between &lt;code&gt;bc_mesh_start()&lt;/code&gt; and &lt;code&gt;rbc_mesh_value_set()&lt;/code&gt;, otherwise, it would fail and go into &lt;code&gt;HardFault_Handler()&lt;/code&gt;.  6ms delay is reasonable? If not, how to reduce it. Second, the handle pair will not re-broadcast its value next cycle after executing &lt;code&gt;bc_mesh_stop()&lt;/code&gt; and then executing &lt;code&gt;bc_mesh_start()&lt;/code&gt;. I suspect that handle pair would not re-broadcast unless it get the latest version again in this situation. Do you have any suggestion about these two, my Master?   thanks, Stephen&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: The TX/RX behaviour of OpenMesh?</title><link>https://devzone.nordicsemi.com/thread/57449?ContentTypeID=1</link><pubDate>Wed, 27 Jul 2016 08:59:18 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:e3e9bf54-7236-4eab-b366-3bd05a2c9ae5</guid><dc:creator>Trond Einar Snekvik</dc:creator><description>&lt;p&gt;That should be the case, yes. You could also try the &lt;code&gt;__WFE();&lt;/code&gt; intrinsic, which is what the &lt;code&gt;sd_app_evt_wait()&lt;/code&gt; function really does inside. Still, try and gauge the frequency of the CPU wakeup (if you have a logic analyzer, it could be as easy as toggling a pin whenever your wait-function returns). It should provide a hint of whether it&amp;#39;s the CPU or something else running.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: The TX/RX behaviour of OpenMesh?</title><link>https://devzone.nordicsemi.com/thread/57448?ContentTypeID=1</link><pubDate>Tue, 26 Jul 2016 12:16:42 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:5e6669af-cabe-4168-9346-97bd5397fc31</guid><dc:creator>stephen</dc:creator><description>&lt;p&gt;Thanks for your quickly response very much! I use BLE_gateway as an example, implement a RTC1 to regular turn on/off mesh to save power and disable regular BLE task to simplify the whole behavior. when turning on mesh function, some message might be sent by application. So, I think SoftDevice will do nothing during turning mesh off. Am I right?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: The TX/RX behaviour of OpenMesh?</title><link>https://devzone.nordicsemi.com/thread/57447?ContentTypeID=1</link><pubDate>Tue, 26 Jul 2016 11:21:07 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:2edae6c0-66cf-4c16-b7f9-3867940ff74b</guid><dc:creator>Trond Einar Snekvik</dc:creator><description>&lt;p&gt;The &lt;code&gt;sd_app_evt_wait()&lt;/code&gt; function is going to return whenever a HW event is triggered. This will most likely happen every now and then, whether you&amp;#39;re triggering it, or the SD. Therefore, it should be placed in a tight while-loop, to avoid too much processing each time. However, if the wait function keeps returning immediately (at &amp;lt;1ms intervals, for instance) something is misbehaving on your SoC, and you should start looking into what is waking up the CPU so regularly.&lt;/p&gt;
&lt;p&gt;Also, is your Softdevice doing anything?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: The TX/RX behaviour of OpenMesh?</title><link>https://devzone.nordicsemi.com/thread/57446?ContentTypeID=1</link><pubDate>Tue, 26 Jul 2016 11:03:29 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:eba8e0e5-8f60-468b-a360-234ba00a5841</guid><dc:creator>stephen</dc:creator><description>&lt;p&gt;Sorry, I don&amp;#39;t understand what you said &amp;quot;check whether the wait-function return a lot&amp;quot; ? could you explain more?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: The TX/RX behaviour of OpenMesh?</title><link>https://devzone.nordicsemi.com/thread/57445?ContentTypeID=1</link><pubDate>Tue, 26 Jul 2016 10:53:06 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:e5c7147b-ef6c-4c97-b17d-14af649e0b10</guid><dc:creator>Trond Einar Snekvik</dc:creator><description>&lt;p&gt;Yes, this is definitely possible. Can you check whether the wait-function returns a lot? It&amp;#39;s set up to wake on every single HW event, so it&amp;#39;s not going to stay in there for long if you do anything else on the device.&lt;/p&gt;
&lt;p&gt;There could be some other peripherals running as well, that you&amp;#39;d probably want to turn off. Chapter 8.3 in &lt;a href="http://www.nordicsemi.com/eng/nordic/download_resource/20360/9/82629808"&gt;the nRF51 PS&lt;/a&gt; shows you the requirements table (power wise) for the various peripherals. Running the CPU requires the 1V2, 1V7 and HFCLK, which is the source of most of its drain. If you&amp;#39;re running the timer with the HF timers (&lt;code&gt;NRF_TIMER&lt;/code&gt;), you&amp;#39;re also enabling the HFCLK (and potentially 1V2), which will drain 1-2mA. Also make sure that you&amp;#39;re clearing the timer hardware registers properly in your timer interrupt, so that you&amp;#39;re not spinning.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: The TX/RX behaviour of OpenMesh?</title><link>https://devzone.nordicsemi.com/thread/57443?ContentTypeID=1</link><pubDate>Tue, 26 Jul 2016 09:51:28 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:4f93b2f8-fe80-4650-9e45-a9bbc990fdd7</guid><dc:creator>stephen</dc:creator><description>&lt;p&gt;Thanks, Master! It works, but not perfect. Because the current still consumes 4 mA while disable the mesh, it seems the CPU never go to sleep even adding sd_app_evt_wait() manually, just disable radio tx/rx parts. So, is it possible to let CPU sleep during enable rbc_mesh_stop() in advance?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: The TX/RX behaviour of OpenMesh?</title><link>https://devzone.nordicsemi.com/thread/57442?ContentTypeID=1</link><pubDate>Mon, 25 Jul 2016 13:30:37 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:6fd63835-1e7a-48b8-b6e8-b9332452b634</guid><dc:creator>Trond Einar Snekvik</dc:creator><description>&lt;p&gt;I meant the mesh_start/stop calls, yup :) Radio disable won&amp;#39;t help you, as the transport will just reschedule a new radio event.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: The TX/RX behaviour of OpenMesh?</title><link>https://devzone.nordicsemi.com/thread/57441?ContentTypeID=1</link><pubDate>Mon, 25 Jul 2016 13:27:43 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:1b0e4bd5-5ef1-4175-9501-2b9d7077b04b</guid><dc:creator>stephen</dc:creator><description>&lt;p&gt;Did you mean executing bc_mesh_start()/ bc_mesh_stop() to enable/disable the mesh after setting up a timer? or, directly execute radio_disable()?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: The TX/RX behaviour of OpenMesh?</title><link>https://devzone.nordicsemi.com/thread/57440?ContentTypeID=1</link><pubDate>Mon, 25 Jul 2016 10:25:26 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:2343342c-68f0-4307-8285-a12ff66aee71</guid><dc:creator>Trond Einar Snekvik</dc:creator><description>&lt;p&gt;There&amp;#39;s no built-in feature for this at this point. I guess the easiest way to acheive this is to set up a timer, and enable/disable the mesh at regular intervals, PWM-style. An interval of 1 second should be reasonable.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: The TX/RX behaviour of OpenMesh?</title><link>https://devzone.nordicsemi.com/thread/57439?ContentTypeID=1</link><pubDate>Wed, 20 Jul 2016 03:12:32 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:48e4ddcd-ade0-45e8-8291-3b22e86d7903</guid><dc:creator>stephen</dc:creator><description>&lt;p&gt;Hi Master, last time you answered the radio is on &amp;gt;99% of the time. I guess radio RX occupy most of the time. So, could we constrain 50% (or less) RX working time to save battery power? and how to do?    Thanks, Stephen&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: The TX/RX behaviour of OpenMesh?</title><link>https://devzone.nordicsemi.com/thread/57438?ContentTypeID=1</link><pubDate>Tue, 12 Jul 2016 09:23:48 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:d38b223c-c647-48f9-86fa-53eb2eedac19</guid><dc:creator>stephen</dc:creator><description>&lt;p&gt;Got it, OpenMesh Master!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: The TX/RX behaviour of OpenMesh?</title><link>https://devzone.nordicsemi.com/thread/57437?ContentTypeID=1</link><pubDate>Tue, 12 Jul 2016 09:19:50 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:a41d69f0-7505-4bc4-9656-9348b1b504e7</guid><dc:creator>Trond Einar Snekvik</dc:creator><description>&lt;p&gt;I think you&amp;#39;ll be the only one, but sure, go ahead ^^&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: The TX/RX behaviour of OpenMesh?</title><link>https://devzone.nordicsemi.com/thread/57436?ContentTypeID=1</link><pubDate>Tue, 12 Jul 2016 09:11:39 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:0e2a9b01-8ed7-4378-8b32-94076cc1445a</guid><dc:creator>stephen</dc:creator><description>&lt;p&gt;Hi again Trond, you always feedback me the useful information immediately. Thanks again!
By the way, could I call you OpenMesh Master?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: The TX/RX behaviour of OpenMesh?</title><link>https://devzone.nordicsemi.com/thread/57435?ContentTypeID=1</link><pubDate>Tue, 12 Jul 2016 07:15:21 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:482859ed-9a24-4051-afff-01dcdc640d34</guid><dc:creator>Trond Einar Snekvik</dc:creator><description>&lt;p&gt;Hi again Stephen,&lt;/p&gt;
&lt;p&gt;1: There&amp;#39;s no sync behavior in OpenMesh at this point but we&amp;#39;re looking into and discussing it in &lt;a href="https://github.com/NordicSemiconductor/nRF51-ble-bcast-mesh/issues/92#issuecomment-231847251"&gt;this github issue&lt;/a&gt;. While primary focused at large scale synchronization, I believe it can create a foundation for power consumption targetted time sync at a later stage.&lt;/p&gt;
&lt;p&gt;2: Radio: Not really. There are short turnaround times, but the radio is on &amp;gt;99% of the time. CPU, on the other hand, sleeps most of the time (&amp;lt;10% utilization).&lt;/p&gt;
&lt;p&gt;3: No. We&amp;#39;d like to do something with the time sync here, but for now, it&amp;#39;s always on.&lt;/p&gt;
&lt;p&gt;4: You can &lt;a href="https://github.com/NordicSemiconductor/nRF51-ble-bcast-mesh/blob/master/nRF51/rbc_mesh/rbc_mesh.h#L490"&gt;enable TX events&lt;/a&gt; for each handle, which will give you an event whenever it&amp;#39;s transmitted. Note that transmitting the packet does not guarantee that it is received by others.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>