I have had a strange question that is very important for me .I have written a 
littele example with 3 modules one for start and stop the other 2 modules and 
one module to do collection and one to do dissemination.Coleection module and 
dissemination module are esasycollection module and easydisseminationmodule 
that I find on Tiny OS documentaion Wiki.The strange thing is that when I start 
dissemination start also collection also I don't start it.Why ?
help ME
Thanks in advance
I poste the code Here:

#include "Collection.h"

configuration GestioneC{
}
implementation{
        /**
         * Per la parte di raccogli
         */
        components RaccogliP,MainC,ActiveMessageC,GestioneP;
        components CollectionC as Collector;  
        components new CollectionSenderC(3);
        components new TimerMilliC() as TimerRaccogli;
        /**
         * Per la parte di semina
         */
        components SeminaP,ActiveMessageC as ActiveMessageSemina;
        components DisseminationC;
        components new DisseminatorC(uint16_t,4) as Diss16C;
        components new TimerMilliC() as Timersemina;
        
        /**
         * Per la parte di raccogli
         */
        GestioneP.Boot ->MainC;
        
        RaccogliP.RadioControl -> ActiveMessageC;
        RaccogliP.RoutingControl -> Collector;
        RaccogliP.Timer -> TimerRaccogli;
        RaccogliP.Send-> CollectionSenderC;
        RaccogliP.RootControl -> Collector;
        RaccogliP.Receive -> Collector.Receive[3];
        
        
        GestioneP.StartRaccogli -> RaccogliP.StartRaccogli;
        GestioneP.StopRaccogli -> RaccogliP.StopRaccogli;
        
        
        /**
         * Per la parte di semina
         */
        
        SeminaP.RadioControlSemina -> ActiveMessageSemina;
        SeminaP.SeminaControl -> DisseminationC;
        SeminaP.Value -> Diss16C;
        SeminaP.Update -> Diss16C;
        SeminaP.Timer -> Timersemina;
        
        GestioneP.StartSemina -> SeminaP.Start;
        GestioneP.StopSemina -> SeminaP.Stop;
        
        
}


module GestioneP{
        uses interface Boot;
        uses command void  StartRaccogli();
        uses command void StopRaccogli();
        uses command void  StartSemina();
        uses command void StopSemina();

}
implementation{
        
        event void Boot.booted(){
                call StartRaccogli();
                
                //call StartSemina();
        }
        
}




#include <Timer.h>
#include "printf.h"
#include "Data.h"

module RaccogliP @safe(){
        provides {
                        command void StartRaccogli();
                        command void StopRaccogli();
                        }
        uses{
                
                interface SplitControl as RadioControl;
                interface StdControl as RoutingControl;
                interface Send;
                interface Timer<TMilli>;
                interface RootControl;
                interface Receive;
                
                
                
                }
                
                
}
implementation{
        message_t packet;
        bool sendBusy = FALSE;
        uint16_t contatore = 0; 
        
        command void StartRaccogli()
        {
          call RadioControl.start();            
                }
                
        command void StopRaccogli()
        {
                call RadioControl.stop();
                //call RoutingControl.stop();
                }       
                
        event void RadioControl.startDone(error_t err)
        {
                if(err != SUCCESS)
                        call RadioControl.start();
                        else
                        {
                                call RoutingControl.start();
                                if(TOS_NODE_ID == 1)
                                call RootControl.setRoot();
                                else
                                call Timer.startPeriodic(10000);
                }       
        }       
          event void RadioControl.stopDone(error_t error){}
                
                void sendMessage(){
                        uint8_t i=0;
                        EasyCollectionMsg * msg=(EasyCollectionMsg*) call 
Send.getPayload(&packet,sizeof(EasyCollectionMsg));
                        for(i=0;i<24;i++)
                        msg->data[i]=contatore+i;
                        
                        if(call 
Send.send(&packet,sizeof(EasyCollectionMsg))!=SUCCESS)
                        {
                                printf("collection --Not send\n");
                                printfflush();
                            }else
                            sendBusy = TRUE;
                        
                        }
                
        event void Timer.fired(){
           printf("collection --Timer fired :sendMesssage\n");
           printfflush();
           if(!sendBusy)
           sendMessage();
        }
                
        event void Send.sendDone(message_t *msg,error_t err){
                if(err!=SUCCESS)
                {
                        printf("collection --Not send\n");
                        printfflush();
                }else
                {
                printf("collection --Ho mandato %d\n",contatore);
                printfflush();
                
                contatore ++;
                }
                sendBusy = FALSE;       
                
                //if(contatore == 30)
                //call StopRaccogli();
                }
        event message_t * Receive.receive(message_t *msg, void *payload, 
uint8_t len)
{
                uint8_t i=0;
                
              
                
                EasyCollectionMsg* mgh = (EasyCollectionMsg *)payload;
                printf("collection --Ho ricevuto : ");
                for(i=0;i<24;i++)
                printf("%d ",mgh->data[i]);
                printf("\n");
                printfflush();
                return msg;
        }
                
}



#include<Timer.h>
#include "printf.h"
module SeminaP @safe(){
        
        provides {
                        command void Start();
                        command void Stop();
                        }
        
        uses{
                interface Timer<TMilli>;
                interface SplitControl as RadioControlSemina;
                interface StdControl as SeminaControl;
                interface DisseminationValue<uint16_t> as Value;
                interface DisseminationUpdate<uint16_t> as Update;
                
                }
}
implementation{
            
            uint16_t counter=0;
            
            command void Start()
            {
             call RadioControlSemina.start();
            
                }
                
            command void Stop()
            {
                call RadioControlSemina.stop();
                call SeminaControl.stop();
            }           
            
          
            
            
            
            event void RadioControlSemina.startDone(error_t error){
                if(error != SUCCESS)
                call RadioControlSemina.start();
                else
                        {
                                call SeminaControl.start();
                                counter = 0;
                                if(TOS_NODE_ID == 1)
                                        call Timer.startPeriodic(200);
                }       
                        
            }
            
            event void RadioControlSemina.stopDone(error_t error){
                
            }
            
            
             event void Timer.fired(){
                counter = counter +1;
                printf("dissemination --update value  counter  %d    
tos_node_id  
%d\n",counter,TOS_NODE_ID);
                printfflush();
                
                call Update.change(&counter);
            }
            
            event void Value.changed(){
                const uint16_t* newVal = call Value.get();
                counter = *newVal;
                printf("dissemination --valore cambiato   counter 
%d\n",counter);
                printfflush();
                
                }
}


_______________________________________________
Tinyos-help mailing list
[email protected]
https://www.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-help

Reply via email to