[Tinyos-help] Why Collection does not work?

Pablo Gil Montaño pgilmon at yahoo.es
Mon Jan 15 02:36:21 PST 2007


Have you tried using components in tos/lib/Route (for mica) or tos/lib/MultiHopLQI for telos? These components allow you to send data from any mote to a sink (node with ID 0) in a multi-hop way.


Regards,

Pablo Gil



----- Mensaje original ----
De: Lorenzo Mainardi <lorenzo.mainardi at gmail.com>
Para: tinyos-help <tinyos-help at Millennium.Berkeley.EDU>
Enviado: lunes, 15 de enero, 2007 10:39:40
Asunto: [Tinyos-help] Why Collection does not work?

Hi everybody, I try to using Collection alghortim in a small app, but it did'nt work; when I call RoutingControl.start() I cannot obtain SUCCESS. I'was thinking it was a fault in the "linking" structure, but I copy just the 
TestRoutingC.nc file by TestNetwork app.
Could you help me?
P.S. I'm sorry for the debug message in italian 
This is my code:

####################################################################################################################

 #include "TestRouting.h"
#include "Ctp.h"


module TestRoutingP {
    uses {
        
        interface Boot;
        
        interface DisseminationValue<DisseminationMsg> as Value;

        interface DisseminationUpdate<DisseminationMsg> as Update;
        
        interface Timer<TMilli>as TimerSink;
        
        interface SplitControl as RadioControl;
        interface StdControl as RoutingControl;

        interface RootControl;
        interface CtpInfo;
        interface CtpCongestion;
        interface CollectionPacket;
        interface CtpPacket;
        interface CollectionDebug;
        interface Send;

        interface Receive;
        
        
    }
}
implementation {
    
    uint8_t counter=0;
    message_t m;
    message_t* mPtr=&m;
    DisseminationMsg* dissMsgPtr;
    bool sendBusy=FALSE;

    bool routeSet=FALSE;
    CollectionMsg* collMsgPtr;
    
    task void CollectionSend(){
        dbg("routing", "Sto mandando un messaggio da un client verso il sink\n");
        collMsgPtr= (CollectionMsg*) call 
Send.getPayload(mPtr);
        collMsgPtr -> sender=TOS_NODE_ID;
        if(call Send.send(mPtr, sizeof(CollectionMsg))!=SUCCESS){
            dbg("routing", "Messaggio non inviato\n");

            }
        sendBusy=TRUE;
            
        }
    
    
    
    task void modifyMsg(){
        dbg("routing", "modifyMsg\n");
            counter++;
            dissMsgPtr->payload=counter;

        }
        
    task void setRoot(){
        
            
        if(!(call RootControl.isRoot())){
            if(call RootControl.setRoot()){
                dbg("routing", "Settato il root\n");

                routeSet=TRUE;
            }
            else{
                dbg("routing", "Non riesco a settare il routing\n");
                }
            }
        else{

            routeSet=TRUE;
            dbg("routing", "Sono già root\n");
            }
            
        
    }
    
        
    


    event void Boot.booted(){

        dbg("routing", "Avvio\n");
        if(call RoutingControl.start()){
            dbg("routing", "Il routing è partito\n");
            }
        else{
            dbg("routing", "Il routing non parte\n");

            
        }
        
        
        if(TOS_NODE_ID==1){
            call RootControl.setRoot();
            post setRoot();            
            call TimerSink.startPeriodic(20);

            dbg("routing", "Timer Start\n");
            }
        else{
            //do nothing
            }
        call RadioControl.start();
        }
    
    event void 
Value.changed(){
        dbg("routing", "Ricevuto un messaggio dal Dissemination\n");
        if(!sendBusy){
            post CollectionSend();
            }
        }
    
    event void 
TimerSink.fired(){
        dbg("routing", "Timer Fired\n");
        post modifyMsg();
        call Update.change(dissMsgPtr);
        }
    
    
    event void RadioControl.startDone
(error_t error){
        if(error==SUCCESS){
            dbg("routing", "Radio Start\n");
            call RoutingControl.start();
            }
        
        }
        
        

    event void RadioControl.stopDone(error_t error){
        
        }
        
    event void Send.sendDone(message_t *msg, error_t error){
        if(error !=SUCCESS){
            dbg("routing", "Non riesco a mandare messaggi\n");

            }
        else{
            dbg("routing", "Sono risucito a mandare messaggi\n");
            sendBusy=FALSE;
            }
        }
        
    event message_t * 
Receive.receive(message_t *msg, void *payload, uint8_t len){
        dbg("routing", "Ho ricevuto un messaggio dal Collection\n");
        return msg;
        }
   }



_______________________________________________
Tinyos-help mailing list
Tinyos-help at Millennium.Berkeley.EDU
https://mail.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-help






	
	
		
______________________________________________ 
LLama Gratis a cualquier PC del Mundo. 
Llamadas a fijos y móviles desde 1 céntimo por minuto. 
http://es.voice.yahoo.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.millennium.berkeley.edu/pipermail/tinyos-help/attachments/20070115/a8ee6e45/attachment.html


More information about the Tinyos-help mailing list