This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

How to realize the Ad hoc network with CC1110?

Other Parts Discussed in Thread: SIMPLICITI

Hello,I have four CC1110 modles,one is AP named NO1,one is ED named NO4,the other two are RE named NO2 and NO3.

I want to the NO1,NO2,NO4 work at first,which means that the packet sent by the NO4 is just relayed by the NO2.

But if NO2 can not work,the NO4 will choose the NO3 to relay its packet to the AP.

How do I realize the scheme?

Thank you very much!

  • Hi Chad,

    It sounds like you are using Simpliciti.  There is no explicit routing in Simpliciti so range extenders will repeat any message they receive.  The reason you may not see duplicates are

     - there are some precautions taken to avoid congesting the network due to broadcast messages

    -  messages usually are sent with a transaction ID.  This transaction ID can be used to discard the duplicates received from various routers in the system.

     So in the system you describe, if NO2 goes away, NO3 will still be relaying the messages (assuming it is within range of NO4).

    I hope this helps.

    /Yoda

  • Hi,Yoda,

    Do you mean that the two RE will not relay the same frame sent by  ED simultaneously every time?

    so Does the ED will choose one of the two REs randamly to relay its message at a time or choose the same RE every time?

    How can I make the nwk to choose the same  RE to relay the message every time

    and choose the other RE just after the fomer one stop working.

    Please make me know if you have some idea.

    Thank you very much!

     

  • Hi Chad,

    Sorry  if my last message was not completley explanitory.

    Range Extenders in Simpliciti have no intelligence.  They repeat and send out every message they receive.  So yes when an end device sends a message, every range extender that hears the message will repeat it.   There is only one exception ... and that is that a broadcast message type will usually have a maximum hop (or transmission parameter).   So for example I send a broadcast message and it can only be repeated twice and each time it is resent the counter goes down.  This is so that the message doesn't endlessly bounce around the range extenders.

    So devices will receive multiple copies of the same message sometimes.  Filtering is done based on the transaction ID or message number.   So if you have already processed message 6 ... if you receive another message 6 you know to discard it.

     The way Simpliciti is written, you can not only have one range extender sending the message along ... unless there is only one that hears the message.  If you need more explicit routing you either need to modify Simpliciti yourself to add intelligence to the routers ... or look at something like Zigbee where you have explicit routing and mesh networking.

    I hope this makes things a bit clearer.

    Yoda

  • Hi Chad,

     A few other things I should clarify and add ...

    The way the congestion is controlled is by having the range extenders not repeat any messages from other range extenders.  A broadcast and normal message are actually treated the same.   The maximum number of hops is controlled by the MAX_HOPS parameter in the configuration file.

    Another thing to clarify further from the last email is that the transaction ID I mentioned comes from the Application payload.  The transaction ID in the network header is not currently used.

    I hope this further information helps.  Sorry it was not added last time.

    Cheers,

    Yoda

  • Hi,Yoda,

    Thank you very much! Just as you tell me, I must add the routing to the SimpliciTI. Can you tell me how to realize the routing in the CC1110?

    Now I conceive a communication protocol as below

    byte           name

    1               Preamble

    2               Length

    3               CMD

    4~7           LocalAdd

    8~11         DestinationAdd

    12~15       StartAdd

    16~19       EndAdd

    20            RouteLevel

    21~22      PID

    23           Check

    CMDincludes the command need in the nwk building and maintenance, LocalAdd、DestinationAdd、StartAdd 和EndAdd are important address, through which I can analyse  the routing of every CMD ,which node to send or reive and the relay of routing.RouteLevel indicate the level of routing.PID is used to

    distinguish the different nwk.

    When a new node need join the nwk, it send the broadcast , the node receiving the broadcast reply the acknowlegement message. New node saves these nodes in the neighbor table and select two nodes as its father nodes(one is standby).

    Then new node send a request to the AP,the father node of the new node is the next hop address.i,e,DestinationAddress,    the AP is EndAddress.Father node saves the lower level routing through which the message arrives at this node.The father node will also relay the message to its father node after it receives the binding request from new node.The father node of higher level will also save the lower level routing.

    Then every node can transmit the message according to the address of father node and son node it saves. The data inspected can be enclosed in the data packet.

    The node will receive a acknowlement signal after it send the message.If it receive the acknowlegement it will not repeat the sending,else it will repeat several times .Then it will make sure that the DestinationAddress is unavailable and select the standby routing.

    Then I may realize the function that select only one RE to relay the message .It is the main funciton I want to realize now,so the check or PID may be

    neglected temporarily.

    But I do not know how to write the  the explicit programme,Can you tell me how to write the code?  

    Thank you very much!