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.

CC2650: Transferring packets before creating the DODAG ( RPL-UDP Client Example )

Part Number: CC2650


I customized rpl-udp client example and configured on a cc2650 launchpad to send some amount of packets towards the server node configured as udp-server (payload changes like 1,2,3...500). The setup is having a single client node and a server node with line of sight. However as far as I know the transmission happens once the DODAG is created. But when I observed the sequence number (use the payload value as the sequence number ) of the received packets, the initially sent packets get dropped all the time. The question I have is that does it actually send packets before the DODAG is created or since there is a loop to send packets the loop runs and the payload changes but actually the packet is transmitted after creating the DODAG?

Another thing I noticed that I have set up an led to blink once a packet is sent and even thought there is no any server nodes, still the led blinks when the node is powered on. And I took a log file also and it shows that the packets are transmitted as usual even without a server node.

Could someone please explain me those confusions? And I want to transmit the data only after creating the DODAG and what can I do for that ?

Thank you!!

  • processors.wiki.ti.com/.../Cc26xx_sw_examples

    I will loop in a Contiki expert to help with your inquiry, in the meantime do you see any issues with the default demo or is the behavior only present with your custom implementation?

    Regards,
    Ryan
  • Hi,
    Yeah I tried the original udp-client example without nodes configured as udp-client / border-router but still the console shows that the client node sends packets. Does it actually happen or it just print in the console but does not send any packets? Or is there any way to prevent sending packets until the connection is established ?
    This is the original example I tried -- github.com/.../udp-client.c
  • Sir any positive news regarding this issue ?
  • So if I understand you correctly, you are trying to transmit UDP messages to the server before the DODAG has been formed?

    Could you attach a sniffer capture of the supposed communication?
  • Actually, it is not I am trying.

    In my set up there is a single CC2650 launchpad configured as udp-client and there is no any other client nodes or server nodes or border router nodes. When I powered on and connected to its com port through SecureCRT, I was able to see that it prints "DATA send to x 'Hello y " (x and y are node numbers). As far as I know, client nodes do not transmit packets without making a DODAG which means without a server node or a border router node. My question is even without a server or without creating a DODAG, how does that transmission happen? Or is it just a serial print happen when the loop runs but actually such a message is not transmitted until a DODAG (until a server node presents) is created ?
  • So you are only observing a log of this on the UART, and not any actual packets on the air? Where is this log statement printed specifically?

    When the application tries to transmit any IPv6 packets, a UDP packet in this case, before attached to a DODAG the packet will to my knowledge be dropped by the RPL layer.
  • Thank you for the reply sir, Yes I only observing the log getting from the COM port. Could you check the lines 108 and 250 of this contiki source file? github.com/.../udp-client.c
    So you are telling that even though it is printed as a packet is transmitted, if the DODAG is not created, RPL layer drops it. Am I correct? Is there any way to prevent calling that function(line 250) if a DODAG is not created?
    As I understood, according to the code, the process ends if the DAG is not created (line 193) so the packet transmission should not happen. That means the function should not be called mentioned in line 250. But as I mentioned you in the last reply, I get a log message saying packets are transmitted. Have I understood it incorrectly ?
  • I can't say that is wha'ts happening for sure, you would have to enable RPL logging to observe whether that is the case or not. But, my bet is that is what's happening.

    Simply modify the application to wait transmitting UDP packets until attached to a DODAG.
  • Well according to the default code, it checks whether the (client_conn == NULL) or not and if it is NULL then the process will be terminated. The transmitting packets part comes after that. Which means it transmits only if there is a connection with another node. But when the node is standalone, still that transmission part is executed. But according to the code, it should be prevented. However I think even though the transport layer pushes a data packet to the MAC layer, since there is no any connection available, those packets will be discarded as you said. I will look at more and let you know why does that process exiting part do not works. Please inform me if I am wrong.
    Thank you
  • client_conn != NULL does not mean it has a connection. It is simply an instantiation of a UDP connection object.