WOW !! MUCH LOVE ! SO WORLD PEACE !
Fond bitcoin pour l'amélioration du site: 1memzGeKS7CB3ECNkzSn2qHwxU6NZoJ8o
  Dogecoin (tips/pourboires): DCLoo9Dd4qECqpMLurdgGnaoqbftj16Nvp


Home | Publier un mémoire | Une page au hasard

 > 

La géolocalisation de réseaux capteurs (algorithme DVHOP )

( Télécharger le fichier original )
par Mohammed et Hichem MEKIDICHE et RAIS
Université Abou Bakr Belkaid à  Tlemcen Algérie - Master 2 en informatique, option: réseaux 0000
  

précédent sommaire suivant

Bitcoin is a swarm of cyber hornets serving the goddess of wisdom, feeding on the fire of truth, exponentially growing ever smarter, faster, and stronger behind a wall of encrypted energy

Chapitre 3 Description de l'architecture de la plateforme TinyOS

utiliser un programme (comme Alien) pour installer les packages, ou compiler directement à partir des sources. Le JDK de IBM est nécessaire.

Par la suite, des packages supplémentaires peuvent être ajoutés en passant par le site Source Forge, qui met à disposition le code open source de TinyOS et d'un ensemble de programmes dédiés.

3. Description du langage NesC

Il doit exister un environnement de développement logiciel afin d'importer des applications sur les capteurs. Le langage utilisé pour le développement dans TinyOS est le nesC.

Figure III. 3:symbole de langage NesC

3.1 Présentation

Le langage NesC a une architecture basée sur des composants. Cela permet de réduire la taille mémoire du système et de ses applications, chaque composant correspondant à un élément matériel du type LED ou timer par exemple. Les composants peuvent être réutilisés dans n'importe quelle application. L'implémentation des composants, dans le but d'élaborer des applications, s'effectue en déclarant des tâches, des commandes ou des évènements.

Les tâches sont utilisées pour effectuer la plupart des blocs d'instruction d'une application. A l'appel d'une tâche, celle-ci va prendre place dans une file d'attente de type FIFO pour y être execute.

3.2 Concepts principaux dans NesC

Application: un ou plusieurs composants reliés ensemble pour former un exécutable Composant : un élément de base pour former une application nesC. Il existe deux types de composants: modules et configurations

V' Module : composant qui implémente une ou plusieurs interfaces

V' Configuration : composant qui relie d'autres composants ensemble

Chapitre 3 Description de l'architecture de la plateforme TinyOS

Interface : définie d'une manière abstraite les interactions entre deux composants

3.3 Développement

Les interfaces spécifient un ensemble de fonctions, appelées commandes, qui doivent être implémentées par le fournisseur de l'interface et un ensemble de fonctions, appelées évènements, qui doivent être implémentées par l'utilisateur de l'interface. Afin de distinguer les fonctions concernant un évènement de celles concernant une commande, les en-têtes des fonctions sont précédés des mots-clés respectifs event ou command. Voici un exemple simple d'interface :

interface Timer {

command result_t start(char type, unit32_t interval): command result_t stop();

event result_t fired();

}

TinyOS n'autorise pas les pointeurs de fonctions. Afin de néanmoins proposer un mécanisme alternatif, NesC utilise des interfaces paramétrées. Celles-ci permettent à l'utilisateur de créer un ensemble d'interfaces identiques et d'en sélectionner une seule à appeler grâce à un identifiant.

interface SendMsg[unit8 t id]

Dans la pratique, NesC permet de déclarer deux types de fichiers: les modules et les Configurations. Les configurations, permettent de décrire les composants composites c'est-à-dire des composants composés d'autres composants c'est à dire de granularité supérieure. Une configuration permet donc de décrire l'architecture. Une configuration est donc constituée de modules et/ou d'interfaces ainsi que de la description des liaisons entre ces composants.

configuration NonModule {}

implementation {

//liste des modules et configurations utilises, ex :

components Main,Modulel ModuleN,Configl, ,ConfigiM ;

//descriptifs des liaisons

//Interface fournie <- Interface requise ou //Interface requise -> interface fournie, ex : Main.StdControl -> Modulel.StdControl ; }

Chapitre 3 Description de l'architecture de la plateforme TinyOS

Détaillons ici, quelques caractéristiques concernant les configurations. La première d'entre elles concerne une simplification. Lors du descriptif des liaisons, il est en effet possible de ne pas préciser l'interface fournie par un module. Dans ce cas, elle possédera le même nom que celle requise. L'autre caractéristique concerne le composant Main. En effet, il est à noter que ce composant est obligatoirement présent dans la configuration décrivant l'ensemble de l'application car son rôle est de démarrer l'exécution de l'application.

Les modules sont eux les éléments de base de la programmation. Ils permettent en effet d'implémenter les composants et sont stockés dans un fichier possédant la structure suivante :

module NomModuleM {

provides {

//liste des interfaces fournies, ex : interface NominterfaceFourniel ; I

uses {

//liste des interfaces requises, ex :

interface NomlnterfaceRequisel ;

I

I

implimentation {

//déclarations des variables, ex :

int state ;

//implementations des fonctions décrites par les interfaces fournies :

}

précédent sommaire suivant






Bitcoin is a swarm of cyber hornets serving the goddess of wisdom, feeding on the fire of truth, exponentially growing ever smarter, faster, and stronger behind a wall of encrypted energy








"Aux âmes bien nées, la valeur n'attend point le nombre des années"   Corneille