This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

How to receive BLE_EVT_TX_COMPLETE faster?

Greatings!

I am sending a packet with data in it from my custom board with nrf51822 to my android phone using cahnged ble_app_uart. The packet is being sent 8 times before I receive event BLE_EVT_TX_COMPLETE. Is it possibile to reduce time for receiving BLE_EVT_TX_COMPLETE or could you suggest how to wait for this event so I would not be sending 8 packets? This is where I set event flag:

case BLE_EVT_TX_COMPLETE:
        ble_tx_complete = 1;					
	    break;

Is device is connected I am sending a string while I will get an event flag:

if( m_conn_handle != BLE_CONN_HANDLE_INVALID ) // BLE is connected. Do service routine.
	 {					
	  if(ble_tx_complete == 0) 
	    {
	      sprintf((char*)siusti_plnasete0,"H:%.2f T:%.2f",BME280_humidity,BME280_temperature);
	      ble_nus_send_string(&m_nus,siusti_plnasete0,20);
            }
	 }

This is how it looks in nrf_uart app:

image description

I have tried this way but then phone do not receive that packet at all:

 if( m_conn_handle != BLE_CONN_HANDLE_INVALID ) // BLE is connected. Do service routine.
    	 {					
    	
    	      sprintf((char*)siusti_plnasete0,"H:%.2f T:%.2f",BME280_humidity,BME280_temperature);
    	      ble_nus_send_string(&m_nus,siusti_plnasete0,20);
                 while(ble_tx_complete == 0) 
    	       {
                   }
    	 }

Any suggestions?

-----------------------EDIT----------------------------------------------- This is real time trace from wireshark:

image description

I use s110 (7.0.0), I can not find which SDK example I took. Is there a way to find from which sdk it was taken somewhere in a project? But I believe its one of 5,6 or 7.

Parents Reply Children
Related