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

mesh network

Hi!

I am currently using SEGGER Embedded Studio version  4.12, nRF5 SDK version15.2.0,  nRF5 SDK for Mesh version 3.1.0,   Hardware BMD-300 Evaluation Board.

i using the uart to send data over the ble mesh and all work fine except that if i get data from the uart and sending it over the mesh(ble) in interval lowest from 2 sec between two message and the second one the ble doesn't sending it.

i changed in the header file  transport.h the parameters:

/** Default base TX retry timeout. */ TRANSPORT_SAR_TX_RETRY_BASE_TIMEOUT_DEFAULT_US  FROM: MS_TO_US(500)    TO: MS_TO_US(200)

and

/** Default number of retries before cancelling SAR TX session. */ TRANSPORT_SAR_TX_RETRIES_DEFAULT FROM: (4)       TO: (2)

and it fix my problem and for now all work fine.

those changes will cause problems/bugs? how those changes 'will affect my mesh network?

thanks!

Parents
  • Hi Noamb, 

    How large is your data ? 

    Note that if you are doing segmented message, you can only send one message at a time. Have you made sure when you call a packet send function, you check if it returns success ? 

  • my data is 25 byte (i know that in mesh can send less ) and yes i check if it returns success (when its not sending the message its return 8-->NRF_ERROR_INVALID_STATE).

    i want to know if my changes will makes me problems or affect my mesh network?

  • its was acknowledged message.

    i know that the second message doesn't get sent because i get  NRF_ERROR_INVALID_STATE, i get this error from the function segmented_packet_tx in this function there is a comment: 

    /* According to the Mesh Profile Specification v1.0 Section 3.6.4.1, we should only ever send one
    * transport SAR packet at the same time between a given source and destination. Return FORBIDDEN if
    * there's a SAR session in progress with the same parameters. */

     

  • Could you check if the first packet is acknowledged before you send the next package ? 

    Have you check how long it takes to have the packet acknowledged ?  How many devices in the network you are testing  ? How do you send the message ? To a unicast address or to a group address ? 

  • i'm using 2 devices a client and a server. i'm sending a message from the server to the client using the function app_onoff_status_publish, so i don't check if i getting ack (do i need to add it to my code?).

    i sending the messages from the server to a group address  

  • I don't think calling app_onoff_status_publish() will send the message as acknowledged message. As far as I can see in the code ,that function would call access_model_publish() instead of   access_model_reliable_publish(). But I'm not sure what you have in your code.

    Could you add a mesh event handle and look for NRF_MESH_EVT_TX_COMPLETE event to check how long it would take to send the message ? 

    Are you observing that you can only send one message and can't send anything after that ? If not, how long it would take you to wait until you can send again ? 

    Could you provide your code ? 

  • yes you right i'm using access_model_publish() .

    I don't think calling app_onoff_status_publish() will send the message as acknowledged message. As far as I can see in the code ,that function would call access_model_publish() instead of   access_model_reliable_publish(). But I'm not sure what you have in your code.

    i will do it

    Could you add a mesh event handle and look for NRF_MESH_EVT_TX_COMPLETE event to check how long it would take to send the message ? 

    yes i can't sending anythings after that only after 2 sec maybe less

    Are you observing that you can only send one message and can't send anything after that ? If not, how long it would take you to wait until you can send again ? 
Reply
  • yes you right i'm using access_model_publish() .

    I don't think calling app_onoff_status_publish() will send the message as acknowledged message. As far as I can see in the code ,that function would call access_model_publish() instead of   access_model_reliable_publish(). But I'm not sure what you have in your code.

    i will do it

    Could you add a mesh event handle and look for NRF_MESH_EVT_TX_COMPLETE event to check how long it would take to send the message ? 

    yes i can't sending anythings after that only after 2 sec maybe less

    Are you observing that you can only send one message and can't send anything after that ? If not, how long it would take you to wait until you can send again ? 
Children
No Data
Related