Une solution à ceci ne devrait pas être compliquée à écrire vous-même mais je suppose que vous pouvez regarder en utilisant l'application d'enregistrement et de dissémination de service (servreg-hack) dans contiki. Le fonctionnement de l'application est très simple, toute l'application permet aux nœuds d'annoncer les services qu'ils offrent en diffusant un SERVICE_ID
(qui est juste un entier non signé de 8 bits). Lorsqu'un autre nœud à proximité du nœud de diffusion reçoit un message, il enregistre le SERVICE_ID
et l'adresse du nœud qui a envoyé le message. Si le nœud a besoin d'un service, il peut simplement rechercher l'adresse d'un nœud qui offre le service en appelant la fonction servreg_hack_lookup
.
Les applications unicast-sender
et unicast receiver
de la section exemples de la distribution contiki (Contiki/examples/ipv6/simple-udp-rpl
) utilisent servreg_hack.
donc sur les deux nœuds vous serait initialiser l'application servreg en appelant
servreg_hack_init();
puis sur le fournisseur de services vous enregistrerait un service en appelant
servreg_hack_register(SERVICE_ID, service_provider_ip_addr);
ce service serait alors reçue et enregistrée sur le noeud de l'utilisateur du service. L'utilisateur du service ne peut alors appeler
service_provider_ipaddr = servreg_hack_lookup(SERVICE_ID);
pour obtenir l'adresse du nœud qui fournit le service identifié par SERVICE_ID
.
Vous avez besoin d'éclaircir cette question beaucoup plus, qu'entendez-vous exactement par "services avec s1 = 0.25, s2 = 0.5 et s3 = 0.025"? – KillaKem
Dans mon projet, j'ai un réseau de nœuds. Le noeud est soit un fournisseur de services, soit un demandeur de service. Un nœud fournit un service ou des services. Pour chaque service, il y a une valeur par ex. Service S1 = 0,25. –