<?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>gzll:host tx fail,but rx success</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/45053/gzll-host-tx-fail-but-rx-success</link><description>hi all: 
 My project need 4 devices communicat with 1 host ,all use nrf51822 chip,is it possible？Now i have a problem ,when the third device communicate with the host ,will cause the host tx fail,and rx is ok .Then all device cant receive the host message</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Tue, 26 Mar 2019 12:51:31 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/45053/gzll-host-tx-fail-but-rx-success" /><item><title>RE: gzll:host tx fail,but rx success</title><link>https://devzone.nordicsemi.com/thread/178350?ContentTypeID=1</link><pubDate>Tue, 26 Mar 2019 12:51:31 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:e43674d8-333b-4831-a2a1-1d44fff52ab0</guid><dc:creator>lilong</dc:creator><description>&lt;p&gt;Calling&amp;nbsp;nrf_gzll_ok_to_add_packet_to_tx_fifo()&amp;nbsp;and&amp;nbsp;nrf_gzll_flush_tx_fifo before&amp;nbsp;nrf_gzll_add_packet_to_tx_fifo will still return false.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: gzll:host tx fail,but rx success</title><link>https://devzone.nordicsemi.com/thread/178256?ContentTypeID=1</link><pubDate>Tue, 26 Mar 2019 08:46:49 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:f69aad89-28df-43d6-b8f8-21a6e3bcbabb</guid><dc:creator>lilong</dc:creator><description>&lt;p&gt;I found that the host side add_packet_to_tx_fifo() fail,and the error code is&amp;nbsp;&lt;/p&gt;
&lt;div class="contents"&gt;
&lt;div class="memitem"&gt;
&lt;div class="memdoc"&gt;
&lt;table class="fieldtable"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td class="fieldname"&gt;&lt;em&gt;&lt;a class="anchor" id="ggaa51ebe606da1801bb1ce72b2257356aba8d2a830e8e47d991cca27738eafc8606"&gt;&lt;/a&gt;NRF_GZLL_ERROR_CODE_INSUFFICIENT_PACKETS_AVAILABLE&lt;/em&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: gzll:host tx fail,but rx success</title><link>https://devzone.nordicsemi.com/thread/178232?ContentTypeID=1</link><pubDate>Tue, 26 Mar 2019 07:46:07 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:4eb1c214-3cce-4395-a3fb-b6c2540dfecd</guid><dc:creator>lilong</dc:creator><description>[quote userid="2115" url="~/f/nordic-q-a/45053/gzll-host-tx-fail-but-rx-success/178149"]Have you checked if the add_packet_to_tx_fifo() on the host side succeeds? Depending on how you add packets to the hosts TX FIFO, it may be full. It&amp;#39;s 3 packets deep.[/quote]
&lt;p&gt;what can i do if the host side add_packet_to_fifo() fail ?Call nrf_gzll_flush_tx_fifo() function before &amp;nbsp;adding packets to the host TX FIFO?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: gzll:host tx fail,but rx success</title><link>https://devzone.nordicsemi.com/thread/178149?ContentTypeID=1</link><pubDate>Mon, 25 Mar 2019 14:29:53 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:7dd0ae6c-1442-4b56-afe4-871bb252c8db</guid><dc:creator>H&amp;#229;kon Alseth</dc:creator><description>&lt;p&gt;[quote user="lilong"][/quote]&lt;/p&gt;
&lt;p&gt;now i found that my system can only have two devices communicat with host ,one more device will cause device fail,(every device has comm faill conut ),when this happen ,the fail device can call&amp;nbsp;&lt;/p&gt;
&lt;p&gt;nrf_gzll_device_tx_success() &amp;nbsp; function to&amp;nbsp;fetch fifo,but&amp;nbsp;&lt;/p&gt;
&lt;p&gt;nrf_gzll_fetch_packet_from_rx_fifo() &amp;nbsp; &amp;nbsp;return fall.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Have you checked if the add_packet_to_tx_fifo() on the host side succeeds? Depending on how you add packets to the hosts TX FIFO, it may be full. It&amp;#39;s 3 packets deep.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Kind regards,&lt;/p&gt;
&lt;p&gt;Håkon&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: gzll:host tx fail,but rx success</title><link>https://devzone.nordicsemi.com/thread/177955?ContentTypeID=1</link><pubDate>Sun, 24 Mar 2019 02:15:57 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:f880aa69-cfe1-4c36-a250-9e2b049c1420</guid><dc:creator>lilong</dc:creator><description>&lt;p&gt;hi hakon ,thanks for your reply.&lt;/p&gt;
&lt;p&gt;My gazell parameter is&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;handle-&amp;gt;config.timeslot_period = 900;&lt;br /&gt; handle-&amp;gt;config.gzll_mode = NRF_GZLL_MODE_DEVICE; &lt;br /&gt; handle-&amp;gt;config.timeslots_per_channel = 2; &lt;br /&gt; handle-&amp;gt;config.channel_table_size = 3;&lt;br /&gt; handle-&amp;gt;config.tx_power = NRF_GZLL_TX_POWER_4_DBM;&lt;br /&gt; handle-&amp;gt;config.data_rate = NRF_GZLL_DATARATE_1MBIT;&lt;br /&gt; handle-&amp;gt;config.max_tx_attempts = 7;&lt;br /&gt; handle-&amp;gt;config.base_address1 = MAC1;&lt;br /&gt; handle-&amp;gt;config.prefix_byte = PREFIX_BYTE;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;void m_configure_next_event_init(void)&lt;br /&gt;{&lt;br /&gt; m_slot_length = 16000;//10000; &lt;br /&gt; m_timeslot_request.request_type = NRF_RADIO_REQ_TYPE_EARLIEST;&lt;br /&gt; m_timeslot_request.params.earliest.hfclk = NRF_RADIO_HFCLK_CFG_DEFAULT;//use DEFAULT more saving power than FORCE_XTAL&lt;br /&gt; m_timeslot_request.params.earliest.priority = NRF_RADIO_PRIORITY_HIGH;&lt;br /&gt; m_timeslot_request.params.earliest.length_us = m_slot_length; //ranges from 100 us to 100 ms.&lt;br /&gt; m_timeslot_request.params.earliest.timeout_us = 20000;//10000; //max(128000000UL - 1UL)us&lt;/p&gt;
&lt;p&gt;}&lt;br /&gt;void m_configure_next_event(void)&lt;br /&gt;{&lt;br /&gt; m_slot_length = 16000;//10000; //us &lt;br /&gt; m_timeslot_request.request_type = NRF_RADIO_REQ_TYPE_EARLIEST;&lt;br /&gt; m_timeslot_request.params.earliest.hfclk = NRF_RADIO_HFCLK_CFG_DEFAULT;//use DEFAULT more saving power than FORCE_XTAL&lt;br /&gt; m_timeslot_request.params.earliest.priority = NRF_RADIO_PRIORITY_HIGH;//NRF_RADIO_PRIORITY_NORMAL;&lt;br /&gt; m_timeslot_request.params.earliest.length_us = m_slot_length; //ranges from 100 us to 100 ms.&lt;br /&gt; m_timeslot_request.params.earliest.timeout_us = 20000; //15000max(128000000UL - 1UL)us&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;in devices ,I send message in function&amp;nbsp;m_radio_callback():&lt;/p&gt;
&lt;p&gt;nrf_radio_signal_callback_return_param_t * m_radio_callback(uint8_t signal_type)&lt;br /&gt;{ &lt;br /&gt; switch(signal_type)&lt;br /&gt; { &lt;br /&gt; case NRF_RADIO_CALLBACK_SIGNAL_TYPE_START: //0&lt;br /&gt; m_on_start(); &lt;br /&gt; Comm_GzllModeSend(&amp;amp;Comm_Handle);//send message to host&lt;br /&gt; if(GZLL_Handle.GZLL_addr_change == true)&lt;br /&gt; {&lt;br /&gt; static uint8_t change_count;&lt;br /&gt; change_count++;&lt;br /&gt; if(change_count &amp;gt; 5)//make sure the address sent to the host &lt;br /&gt; {&lt;br /&gt; GZLL_Handle.GZLL_addr_change = false;&lt;br /&gt; m_gzll_initialized = false;&lt;br /&gt; change_count = 0;&lt;br /&gt; }&lt;br /&gt; }&lt;br /&gt; break;&lt;/p&gt;
&lt;p&gt;.....&lt;/p&gt;
&lt;p&gt;then device&amp;nbsp;get ACK from&amp;nbsp;nrf_gzll_device_tx_success() calling function&amp;nbsp;nrf_gzll_fetch_packet_from_rx_fifo();&lt;/p&gt;
&lt;p&gt;Every device has a prefix byte .&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;In host ,parameter is the same with devices.&lt;/p&gt;
&lt;p&gt;The host get devices message process like this:I have already disable crypt function.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;uint8_t &amp;nbsp; rx_data[6][NRF_GZLL_CONST_MAX_PAYLOAD_LENGTH];&lt;/p&gt;
&lt;p&gt;nrf_gzll_host_rx_data_ready(uint32_t pipe, nrf_gzll_host_rx_info_t rx_info )&lt;br /&gt;{&lt;br /&gt; // uint8_t rx_data[NRF_GZLL_CONST_MAX_PAYLOAD_LENGTH];&lt;br /&gt; uint32_t len = NRF_GZLL_CONST_MAX_PAYLOAD_LENGTH;&lt;br /&gt; bool ack;&lt;br /&gt; &lt;br /&gt; GZLL_Handle.rssi = -rx_info.rssi;&lt;/p&gt;
&lt;p&gt;ack = nrf_gzll_fetch_packet_from_rx_fifo(pipe,rx_data[pipe],&amp;amp;len);&lt;br /&gt; if(true == ack)&lt;br /&gt; { &lt;br /&gt; &lt;strong&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/strong&gt;g_pipe = pipe;&lt;br /&gt; &lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; if(pipe != PIPE)//pipe 5&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;{&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; //CRYPT_RxData_Decode(pipe,rx_data[pipe]);&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;memcpy(&amp;amp;commKeyObj.Rec.Raw[0],&amp;amp;rx_data[pipe][2], GZP_CRYPT_USER_DATA_LENTH);//no crypt&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Gzll_SetState(GZLL_State_Connected);&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Gzll_CommFailCountClear();&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Comm_ReomteKeyDecode(pipe,&amp;amp;commKeyObj);&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp; &amp;nbsp; else &lt;br /&gt;&amp;nbsp; &amp;nbsp; {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if(CRYPT_ENABLE == true)&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; CRYPT_RxData_Decode(PIPE,&amp;amp;rx_data[5][0]);&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;else&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;memcpy(&amp;amp;commObj.Rec.Raw[0],&amp;amp;rx_data[pipe][2], GZP_CRYPT_USER_DATA_LENTH);//no crypt&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Gzll_SetState(GZLL_State_Connected);&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Gzll_CommFailCountClear();&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Comm_Decode(PIPE,&amp;amp;commObj);//answer the device&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp; &amp;nbsp;} &lt;br /&gt;}&lt;/p&gt;
&lt;p&gt;I call this function to answer the device.&lt;/p&gt;
&lt;p&gt;NOCRYPT_UserData_TX(uint32_t pipe,uint8_t *user_data)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp; &amp;nbsp; uint8_t tx_packet[GZP_CRYPT_USER_DATA_REAL_LENTH];&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; memcpy(&amp;amp;tx_packet[GZP_CMD_ENCRYPTED_USER_DATA_PAYLOAD], (uint8_t*)user_data, &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; GZP_CRYPT_USER_DATA_LENTH);//45678 user data&lt;br /&gt;&amp;nbsp; &amp;nbsp;nrf_gzll_add_packet_to_tx_fifo(pipe,tx_packet,GZP_CRYPT_USER_DATA_REAL_LENTH);&lt;br /&gt;}&lt;/p&gt;
&lt;p&gt;now i found that my system can only have two devices communicat with host ,one more device will cause device fail,(every device has comm faill conut ),when this happen ,the fail device can call&amp;nbsp;&lt;/p&gt;
&lt;p&gt;nrf_gzll_device_tx_success() &amp;nbsp; function to&amp;nbsp;fetch fifo,but&amp;nbsp;&lt;/p&gt;
&lt;p&gt;nrf_gzll_fetch_packet_from_rx_fifo() &amp;nbsp; &amp;nbsp;return fall.&lt;/p&gt;
&lt;p&gt;The host &lt;span&gt;receive is ok.&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: gzll:host tx fail,but rx success</title><link>https://devzone.nordicsemi.com/thread/177555?ContentTypeID=1</link><pubDate>Thu, 21 Mar 2019 11:35:59 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:a1886865-68fa-49a1-acc5-2147a16ea69b</guid><dc:creator>H&amp;#229;kon Alseth</dc:creator><description>[quote user=""]My project need 4 devices communicat with 1 host ,all use nrf51822 chip,is it possible？Now i &amp;nbsp;have a problem ,when the third device communicate with the host ,will cause the host tx fail,and rx is ok .Then all device cant receive the host message! &amp;nbsp;Why does it happen?How to solve the problem?When two devices communicate with the host ,it works fine.[/quote]
&lt;p&gt;&amp;nbsp;Communicating with 4 devices on one host should be possible, as long as you are using one device per RF pipe.&lt;/p&gt;
&lt;p&gt;Could you post a more detailed problem description, preferably with source code as well?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: gzll:host tx fail,but rx success</title><link>https://devzone.nordicsemi.com/thread/177040?ContentTypeID=1</link><pubDate>Tue, 19 Mar 2019 13:30:49 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:94563e9c-1969-4d40-a516-b6884d3dae05</guid><dc:creator>lilong</dc:creator><description>&lt;p&gt;I fiound that when third device receive host message ,it can call&amp;nbsp;&lt;/p&gt;
&lt;div class="contents"&gt;
&lt;div class="memitem"&gt;
&lt;div class="memproto"&gt;
&lt;table class="memname"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td class="memname"&gt;nrf_gzll_device_tx_success&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
function ,but return&amp;nbsp;NRF_GZLL_ERROR_CODE_ATTEMPTED_TO_FETCH_FROM_EMPTY_FIFO error code.&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>