void openstack_init(void) {
   
   //===== drivers
   openserial_init();
   
   //===== stack
   //-- cross-layer
   idmanager_init();    // call first since initializes EUI64 and isDAGroot
   openqueue_init();
   openrandom_init();
   opentimers_init();
   //-- 02a-TSCH
   adaptive_sync_init();
   ieee154e_init();
   //-- 02b-RES
   schedule_init();
   sixtop_init();
   neighbors_init();
   
   //===== applications
   openapps_init();
   
   openserial_printInfo(
      COMPONENT_OPENWSN,ERR_BOOTED,
      (errorparameter_t)0,
      (errorparameter_t)0
   );
}
Example #2
0
void openwsn_init() {
   // drivers
   openserial_init();
   
   // stack
   // cross-layer
   idmanager_init(); // call first since initializes e.g. EUI64
   openqueue_init();
   openrandom_init();
   opentimers_init();
   // 02a-TSCH
   ieee154e_init();
   // 02b-RES
   schedule_init();
   res_init();
   neighbors_init(); 
   nf_init(); //noise floor module
   // 03a-IPHC
   openbridge_init();
   iphc_init();
   // 03b-IPv6
   forwarding_init();
   icmpv6_init();
   icmpv6echo_init();
   icmpv6router_init();
   icmpv6rpl_init();
   // 04-TRAN
   opentcp_init();
   openudp_init();
   opencoap_init(); // initialize before any of the CoAP clients
   // 07-App
   //--CoAP
   //rwellknown_init();
   //rreg_init();
   //rinfo_init();
   //rleds_init();
   //rt_init();
   //rex_init();
   //rheli_init();
   //rrube_init();
   //rxl1_init();
   //layerdebug_init();
   //--UDP
   /*udpecho_init();
   udpinject_init();
   udpprint_init();*/
   //udprand_init();
   //udpstorm_init();
   //--TCP
   /*ohlone_init();
   tcpecho_init();
   tcpinject_init();
   tcpprint_init();*/
   //--misc
   //heli_init();
   //imu_init();
   
   //bbk_init();
   //hdl_init();
}
Example #3
0
void openstack_init(OpenMote* self) {
   
   //===== drivers
 openserial_init(self);
   
   //===== stack
   //-- cross-layer
 idmanager_init(self);    // call first since initializes EUI64 and isDAGroot
 openqueue_init(self);
 openrandom_init(self);
 opentimers_init(self);
   //-- 02a-TSCH
 adaptive_sync_init(self);
 ieee154e_init(self);
   //-- 02b-RES
 schedule_init(self);
 sixtop_init(self);
 neighbors_init(self);
   //-- 03a-IPHC
 openbridge_init(self);
 iphc_init(self);
   //-- 03b-IPv6
 forwarding_init(self);
 icmpv6_init(self);
 icmpv6echo_init(self);
 icmpv6rpl_init(self);
   //-- 04-TRAN
 opentcp_init(self);
 openudp_init(self);
 opencoap_init(self);     // initialize before any of the CoAP applications
   
   //===== applications
 openapps_init(self);
   
 openserial_printInfo(self, 
      COMPONENT_OPENWSN,ERR_BOOTED,
      (errorparameter_t)0,
      (errorparameter_t)0
   );
}
Example #4
0
/*função responsável inicializar a camada de rede*/
PUBLIC int net_init(uint16_t num, pthread_mutex_t link, pthread_mutex_t net, pthread_mutex_t net2, pthread_mutex_t transp, frame_t *link_recv_frame, netdata_t **net_recv_datagram, int way[MAX_HOSTS])
{
    //criação das threads de envio, recebimento e envio de rotas
	pthread_t send_thread;
    pthread_t recv_thread;
    pthread_t send_route_thread;
    //recebimento dos mutex de sincronismo entre as camadas
    link_recv_mutex = link;
    net_recv_mutex = net;
    net2_recv_mutex = net2;
    transp_recv_mutex = transp;
    //numero do nó
    num_global = num;
    //frame recebido da camada de enlace
    recv_frame = *link_recv_frame;
    //dados para passar para camada de transporte
    (*net_recv_datagram) = &recv_datagram;

    /*
     * Construindo a estrutura de controle do semaforo
     */
    g_sem_libera[0].sem_num   =  0;
    g_sem_libera[0].sem_op    = MAX_SEND_WAITING;
    g_sem_libera[0].sem_flg   =  0;
    
    g_sem_bloquea[0].sem_num =  0;
    g_sem_bloquea[0].sem_op  =  -1;
    g_sem_bloquea[0].sem_flg =  0;

    /*criando o semaforo produtor*/
    if ((g_sem_prod = semget(SEM_KEY_INDICE_PROD + num_global,1,IPC_CREAT | 0666)) == -1){
        fprintf(stderr,"chamada semget() falhou! Impossivel criar conjunto de semaforos");
        exit(1);
    }
    /*inicializando o semaforo produtor*/
    if (semop (g_sem_prod, g_sem_libera,1) == -1){//
        fprintf(stderr,"chamada semop() falhou , impossivel inicializar o semaforo");
        exit(1);
    }
    g_sem_libera[0].sem_op = 1;
    
    /*criando o semaforo consumidor*/
    if ((g_sem_cons = semget(SEM_KEY_INDICE_CONS + num_global,1,IPC_CREAT | 0666)) == -1){
        fprintf(stderr,"chamada semget() falhou! Impossivel criar conjunto de semaforos");
        exit(1);
    }
    
    //inicialização dos mutex
    pthread_mutex_init(&route_table_mutex, NULL);

    //preenche o vetor de vizinhos oriundos do caminho
    neighbors_init(way);

    //inicialização da tabela de rotas 
    fillallroutes();
    
    //criação da thread de envio
    pthread_create(&send_thread, NULL, internalsend, NULL);
    pthread_detach(send_thread);
    LOG("thread de envio criada");
    
    //criação da thread de recebimento
    pthread_create(&recv_thread, NULL, internalrecv, NULL);
    pthread_detach(recv_thread);
    LOG("thread de recebimento criada");

    //criação da thread de envio de rotas
    pthread_create(&send_route_thread, NULL, internalsendroute, NULL);
    pthread_detach(send_route_thread);
    LOG("thread de rotas criada");

    return OK;
}