<?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>Gazell frame rate too low?</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/11404/gazell-frame-rate-too-low</link><description>I have continued to build upon the Nordic sdk10:gzll_ack_payload example using gcc-4.9-2015q1 on Linux. The differences are: 
 
 added UART for debugging (running at 460800 BAUD) 
 added RTC for debugging 
 running on pca10031 (Nordic usb dongle)</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Tue, 26 Jan 2016 18:55:56 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/11404/gazell-frame-rate-too-low" /><item><title>RE: Gazell frame rate too low?</title><link>https://devzone.nordicsemi.com/thread/42986?ContentTypeID=1</link><pubDate>Tue, 26 Jan 2016 18:55:56 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:7cc589ee-6844-4612-ae85-f55697d595a0</guid><dc:creator>pablo</dc:creator><description>&lt;p&gt;This last comment solved my issues! Thank you.
I now see a ~826 packets/second throughput. I now also understand the 166 packets/second I got before. It&amp;#39;s maximum throughput divided by channel table size, the default channel table contains 5 elements, so 833 / 5 = 166 packets/second...&lt;/p&gt;
&lt;p&gt;Reading the documentation again it is obvious that this the channel selection policy should be set to USE_CURRENT for maximum throughput. This setting should be the default if you ask me.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Gazell frame rate too low?</title><link>https://devzone.nordicsemi.com/thread/42987?ContentTypeID=1</link><pubDate>Sun, 24 Jan 2016 12:42:02 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:af1301e0-b1d0-4642-9ab2-b15e71d4ccca</guid><dc:creator>pablo</dc:creator><description>&lt;p&gt;Kenneth, I agree entirely with your description of Gazell, this is my view too.
So I&amp;#39;ll agree with you that on average I should be able to reach 833 pkts/sec @ 600us timeslot period.&lt;/p&gt;
&lt;p&gt;The problem is that I consistently reach 166 pkts/sec @ 600us for many hours of testing.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;tx_info.num_tx_attempts  == 1 for almost all packets when read in nrf_gzll_device_tx_success().&lt;/li&gt;
&lt;li&gt;verifying against nrf_gzll_get_tick_count() I see that I successfully send one packet every 10th timeslot, not one packet every other timeslot.&lt;/li&gt;
&lt;li&gt;I can have 3 devices connected to 1 host simultaneously. Each device sends at 166 pkts/sec, meaning that my host services 3*166=498 pkts/sec (which still is below 833 pkts/sec, so this should not be the source of the throttling)&lt;/li&gt;
&lt;li&gt;I have run at 3 distinctly different geographical locations (more than 5km apart) with exactly the same results.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I tested with your suggestion of send loop, &amp;quot;using nrf_gzll_add_packet_to_tx_fifo() and then wait for the Gazell callback before calling next nrf_gzll_add_packet_to_tx_fifo()&amp;quot;, but the results are the same.
Originally I had a slightly different loop that focussed on keeping the pipe&amp;#39;s TX FIFO full at all times; while nrf_gzll_get_tx_fifo_packet_count() &amp;gt;=3 go to sleep (__SEV();__WFE();__WFE();). But when there is a spot free in the FIFO I would call nrf_gzll_add_packet_to_tx_fifo() and then return to the while loop waiting to a free spot in the FIFO.&lt;/p&gt;
&lt;p&gt;All this leads me to believe that this is not an interference problem, but rather I have some configuration problem; like priority conflicts, or some clock set too low which results in the device only attempting to send a packet every 10th timeslot...&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Gazell frame rate too low?</title><link>https://devzone.nordicsemi.com/thread/42985?ContentTypeID=1</link><pubDate>Fri, 22 Jan 2016 12:22:17 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:a67cf00e-bb71-4fa2-83a3-a666155b3882</guid><dc:creator>Kenneth</dc:creator><description>&lt;p&gt;The NRF_GZLL_DEFAULT_TIMESLOT_PERIOD period should be set to the minimum value depending on the on-air datarate (2Mbps:600, 1Mbps:900, and 250kbps: 2700). The host will then switch channel every NRF_GZLL_DEFAULT_TIMESLOT_PERIOD[us] * NRF_GZLL_DEFAULT_TIMESLOTS_PER_CHANNEL[2], e.g. for 2Mbps that equal 1200us. The setting must be the same on both host and device(s). I don&amp;#39;t see any reason to use any higher setting, as the lowest should give the best overall latency and throughput. The device will sync to the channel switching of the host, and start transmission on next channel switch when a packet is written to the fifo.&lt;/p&gt;
&lt;p&gt;The device should be able to transmit up to 1 packet during each channel switching on average (e.g.up to 1packet/1200us = 833packets/sec). It will be limited to this value as there will be some clock drift between the device(s) and host, but there is enough time to ensure at least 1 successful transmission. If you have several devices trying to do this, then the effective throughput will reduce drastic, as they will very likely start to collide on-air. I am not sure if this might be the case for you.&lt;/p&gt;
&lt;p&gt;I assume you are using nrf_gzll_add_packet_to_tx_fifo() and then wait for the Gazell callback before calling next nrf_gzll_add_packet_to_tx_fifo().&lt;/p&gt;
&lt;p&gt;For highest throughput you should use &lt;code&gt;nrf_gzll_set_device_channel_selection_policy(NRF_GZLL_DEVICE_CHANNEL_SELECTION_POLICY_USE_CURRENT);&lt;/code&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>