2017-09-13 3 views
0

J'ai besoin de créer un réseau de 10 motes. Je veux que chaque mote fournisse 3 services avec s1 = 0.25, s2 = 0.5 et s3 = 0.025. Aussi, je veux identifier/sélectionner des motes égoïstes/malveillantes.Cooja - Comment assigner différents services à un mote/noeud?

Toute aide sera grandement appréciée.

+0

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

+0

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. –

Répondre

1

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.

+0

Merci @Killakem. Laissez-moi essayer de mettre en œuvre la solution suggérée. –