2017-07-23 3 views
0

Ensuite, j'envoie différents messages de diffusion avec la fonction runicast_send, comment puis-je savoir quel message a été accusé lors du déclenchement du rappel sent_runicast?Comment comprendre quel message de runicast vous avez transmis avec succès dans Contiki (Rime)?

Les états de fichier runicast.h:

La runicast primitive ajoute deux attributs paquet: le single-hop type de paquet et l'ID de paquet unique-hop. La primitive d'exécution runicast utilise l'attribut d'identification de paquet comme numéro de séquence pour faire correspondre paquets d'accusé de réception aux paquets de données correspondants.

mais je ne comprenais pas comment le faire en pratique. Quelqu'un peut-il donner un exemple?

Répondre

0

Une façon serait de regarder le champ sndnxt de struct runicast_conn *c avant d'envoyer le paquet, puis comparer cette valeur de la packetbuf_attr(PACKETBUF_ATTR_PACKET_ID) dans le rappel « envoyé » de votre code.

Cependant, notez que par défaut, l'ID du paquet d'exécution est de seulement 2 bits. Assez pour démultiplexer l'ACK dans la plupart des cas, mais peut être insuffisant pour vos besoins. (La taille de l'ID de paquet en bits peut être modifiée en redéfinissant RUNICAST_PACKET_ID_BITS.)

Egalement Rime est obsolète. Ne l'utilisez pas dans votre code, en particulier le code de production, sauf si vous savez ce que vous faites. runicast n'a jamais été l'un des points forts de Rime, je doute qu'il n'y ait pas de meilleures alternatives (par exemple la pile uIPv6) pour ce que vous voulez faire.