Title: Aplicacin Surge
1Aplicación Surge
2Introducción
- Surge
- Aplicación de ejemplo, que usa enrutamiento
MultiHop Ad-hoc para enviar valor de temperatura
adquirido con un sensor. - Versión ocupada
- /opt/tinyos-1.x/contrib/ucb/apps/SurgeTelos
3Archivos contenidos en el directorio de la
aplicación.
4Ficheros Cabecera.
Surge.h
SurgeCmd.h
typedef struct SurgeCmdMsg uint16_t type
union // FOR SURGE_TYPE_SETRATE
uint32_t newrate // FOR SURGE_TYPE_FOCUS
uint16_t focusaddr args
SurgeCmdMsg enum AM_SURGECMDMSG 18
int INITIAL_TIMER_RATE 2048 int
FOCUS_TIMER_RATE 1000 int FOCUS_NOTME_TIMER_RAT
E 1000 enum SURGE_TYPE_SENSORREADING
0, SURGE_TYPE_ROOTBEACON 1,
SURGE_TYPE_SETRATE 2, SURGE_TYPE_SLEEP 3,
SURGE_TYPE_WAKEUP 4, SURGE_TYPE_FOCUS 5,
SURGE_TYPE_UNFOCUS 6 typedef struct
SurgeMsg uint16_t type uint16_t reading
uint16_t parentaddr uint32_t seq_no
SurgeMsg enum AM_SURGEMSG 17
5Análisis de aplicación Surge.nc Relaciones
Componente - Interfaz
includes Surge includes SurgeCmd includes
MultiHop configuration Surge implementation
components Main , SurgeM
, TimerC , LedsC ,
DelugeC , DemoSensorC as Sensor
, RandomLFSR , GenericComm as
Comm , CC2420RadioC ,
LQIMultiHopRouter as multihopM
Main.StdControl -gt DelugeC Main.StdControl -gt
TimerC Main.StdControl -gt Comm
Main.StdControl -gt Sensor Main.StdControl -gt
multihopM.StdControl Main.StdControl -gt
SurgeM.StdControl SurgeM.ADC -gt Sensor
SurgeM.Timer -gt TimerC.Timerunique("Timer")
SurgeM.Leds -gt LedsC SurgeM.Random -gt
RandomLFSR SurgeM.CC2420Control -gt
CC2420RadioC.CC2420Control SurgeM.MacControl
-gt CC2420RadioC.MacControl SurgeM.RouteControl
-gt multihopM SurgeM.Send -gt multihopM.SendAM_S
URGEMSG multihopM.ReceiveMsgAM_SURGEMSG -gt
Comm.ReceiveMsgAM_SURGEMSG
6SurgeM.nc
- Código se divide en dos partes Modules y
Implementation. - Modules
- Interfaces que provee
- Interfaces que usa.
provides interface StdControl
uses interface ADC interface Timer
interface Leds interface CC2420Control
interface MacControl interface Send
interface RouteControl interface Random
7SurgeM.nc
- Implementation
- Código que implementa la aplicación.
- Se puede dividir en
- Declaración de variables a ocupar.
- Inicialización
- De variables.
- Tareas.
- De sección StdControl.
- Implementación de Eventos por el uso de
interfaces.
8SurgeM.nc Inicialización
- Funciones
- Static void initialize()
- Se asigna valores a las variables declaradas.
- Task void SendData()
- Se crea un puntero al tipo SurgMsg.
- Este apunta a un buffer Tos_MSG, y se modifican
valores de tipo,parentaddr,reading,y seq_no. - Finalmente se envía.
9Continuación
- Comandos StdControl
- Init()
- Llama a función initialize()
- Start()
- Configura la potencia de transmisión.
- Habilita Ack.
- Inicia un randomtimer
- Retorna llamando al comando start de la interfaz
Timer, pasando el parámetro randomtimer. - Stop()
- Retorna con un llamado a comando stop de la
interfaz Timer.
10SurgeM.nc Eventos
- Dado que nuestra aplicación usa las interfaces
ADC, Timer y Send, es que debemos implementar los
eventos que éstas generan. - Las otras interfaces no generan eventos.
11SurgeM.ncEventos
- Timer.fired()
- Llama a comando getData de la interfaz ADC.
- ADC.dataReady(uint16_t data)
- Recibe en parámetro data el valor obtenido por el
sensor y lo almacena en la variable global
gSensorData. - En una sección atómica postea la tarea
SendData() - Send.sendDone(Tos_MsgPtr pMsg, result_t success)
- Apaga el Led Rojo que se encendio en la ejecución
de SendData.
12Conclusiones.
- Gran parte de nuestras necesidades se cubren con
esta aplicación. - Se ha logrado profundizar en el diseño y
programación con nesc. - Se ha logrado un conocimiento de las distintas
componentes para la arquitectura MSP430,
específicamente la plataforma Telos. - Análisis completo se realiza en informe.