Mudanças entre as edições de "Projeto de Estimador de Estado de Enlace"

De MediaWiki do Campus São José
Ir para navegação Ir para pesquisar
Linha 64: Linha 64:
  
 
*06/06 até 13/06: Propor exemplo de 3 nodos para fazer algo no simulador
 
*06/06 até 13/06: Propor exemplo de 3 nodos para fazer algo no simulador
 +
 +
 +
<syntaxhighlight lang=c>
 +
#include "contiki.h"
 +
#include "lib/random.h"
 +
#include "sys/ctimer.h"
 +
#include "sys/etimer.h"
 +
#include "net/ip/uip.h"
 +
#include "net/ipv6/uip-ds6.h"
 +
#include "simple-udp.h"
 +
#include <stdio.h>
 +
#include <string.h>
 +
#include "dev/leds.h"
 +
 +
 +
#define UDP_PORT 1234
 +
#define SEND_INTERVAL (20 * CLOCK_SECOND)
 +
#define SEND_TIME (random_rand() % (SEND_INTERVAL))
 +
 +
//------------------------------ VÁRIAVEIS ---------------------------------//
 +
 +
static struct simple_udp_connection unicast_connection;
 +
static struct etimer et_blink;
 +
static uint8_t blinks;
 +
 +
//--------------------------------------------------------------------------//
 +
PROCESS(broadcast_example_process, "UDP broadcast example process");
 +
PROCESS(blink_process, "LED blink process");
 +
AUTOSTART_PROCESSES(&broadcast_example_process,&blink_process);
 +
 +
//------------------------------ RECEPTOR ----------------------------------//
 +
static void
 +
receiver(struct simple_udp_connection *c,
 +
        const uip_ipaddr_t *sender_addr,
 +
        uint16_t sender_port,
 +
        const uip_ipaddr_t *receiver_addr,
 +
        uint16_t receiver_port,
 +
        const uint8_t *data,
 +
        uint16_t datalen)
 +
{
 +
  printf("A porta %d recebeu dados da porta %d com tamanho %d\n",
 +
        receiver_port, sender_port, datalen);
 +
  leds_toggle(LEDS_GREEN);
 +
}
 +
 +
//------------------------------ PROCESSOS -----------------------------//
 +
 +
PROCESS_THREAD(broadcast_example_process, ev, data)
 +
{
 +
  static struct etimer periodic_timer;
 +
  static struct etimer send_timer;
 +
  uip_ipaddr_t addr;
 +
 +
  PROCESS_BEGIN();
 +
 +
  simple_udp_register(&broadcast_connection, UDP_PORT,
 +
                      NULL, UDP_PORT,
 +
                      receiver);
 +
 +
  etimer_set(&periodic_timer, SEND_INTERVAL);
 +
  while(1)
 +
  {
 +
    PROCESS_WAIT_EVENT_UNTIL(etimer_expired(&periodic_timer));
 +
    etimer_reset(&periodic_timer);
 +
    etimer_set(&send_timer, SEND_TIME);
 +
 +
    PROCESS_WAIT_EVENT_UNTIL(etimer_expired(&send_timer));
 +
    printf("Sending broadcast\n");
 +
    uip_create_linklocal_allnodes_mcast(&addr);
 +
    simple_udp_sendto(&broadcast_connection, "Test", 4, &addr);
 +
  }
 +
 +
  PROCESS_END();
 +
}
 +
 +
// -------------------------------------------------------------------------//
 +
PROCESS_THREAD(blink_process, ev, data)
 +
{
 +
  PROCESS_BEGIN();
 +
 +
  while(1)
 +
  {
 +
    etimer_set(&et_blink, CLOCK_SECOND);
 +
 +
    PROCESS_WAIT_EVENT_UNTIL(ev == PROCESS_EVENT_TIMER);
 +
    leds_toggle(LEDS_RED);
 +
    printf("Piscar led... (state %0.2X)\n", leds_get());
 +
  }
 +
 +
  PROCESS_END();
 +
}
 +
 +
<code>

Edição das 11h12min de 8 de junho de 2018

Página do Bolsista

Nome: Gabriel Espíndola Soares de Souza

Local de Trabalho

Labic

Horário de Trabalho

  • Bolsa de 20h
  • Segunda-feira - 18 às 22hs
  • Terça-feira - 15 às 19hs
  • Quarta-feira - 18 às 22hs
  • Quinta-feira - 7:30 às 11:30
  • Sexta-feira - 18 às 22hs

Cronograma de Trabalho

  1. Estudo Básico de Redes
    1. Referência: Livro de Redes de Computadores do Kurose e experimentos de rede (https://wiki.sj.ifsc.edu.br/index.php/Curso_T%C3%A9cnico_Integrado_de_Telecomunica%C3%A7%C3%B5es_-_Redes_de_Computadores_(RCO))
    2. Duração: 8 semanas (até dia 31 de Junho)
    3. Colocar o detalhamento das tarefas no Trello (compartlhar com o professor: eraldo.silveira@gmail.com)
    4. Indicador de Sucesso: Resumo dos cap.1,2.1, 2.2, 2.5, 2.7, 3.1, 3.3, 4.1, 4.2,4.3,4.4,5.1, 5.2, 5.3,6.1,6.2, 6.3 - (i) Fazer no Sharelatex em um modelo de relatório - compartilhar com o coordenador. (ii) Execução dos experimentos de laboratório do link passado (resumo de atividades).
  2. Estudo do Contiki/Cooja
    1. Instalar o Contiki/Cooja: http://www.contiki-os.org/start.html
    2. Estudar no Contiki/Cooja dois exemplos do diretório /home/user/contiki/examples: ipv6/simple-udp-rpl e escolher outro exemplo simples usando rime (falar com André)
    3. Propor e implementar um exempĺo sobre os nodos.
    4. Indicador de Sucesso: (i) discutir os dois exemplos no relatório (ii)propor um exemplo de comunicação usando 3 nodos para fazer algo específico no simulador
    5. Duração: 8 semanas (até dia 15 de Junho)
    6. Colocar o detalhamento das tarefas no Trello (compartlhar com o professor: eraldo.silveira@gmail.com)

Semana 1 DATA 02/05

  • 02/05 até 03/05: Leitura e produção do resumo sobre os subcapítulos 1.1,1.2 e 1.3;
  • 04/05 até 07/05: Instalação do Contiki/Cooja;
  • 08/05 até 09/05: Leitura e produção do resumo sobre os subcapítulos 1.4,1.5,1.6,1.7;

Semana 2 DATA 09/05

  • 10/05 até 15/05: Leitura e produção do resumos dos subcapítulos 2.1,2.2,2.5,2.7;
  • 12/05 até 18/05: Estudar no Contiki/Cooja dois exemplos do diretório /home/user/contiki/examples: ipv6/simple-udp-rpl e escolher outro exemplo simples usando rime;

Semana 3 DATA 16/05

  • 16/05 até 17/05: Leitura e produção do resumo dos subcapítulos 3.1,3.3
  • 18/05 até 24/05: Leitura e produção do resumo dos subcapítulos 4.1,4.2,4.3,4.4
  • 18/05 até 25/05: Estudo no Contiki/Cooja os exemplos unicast-receiver.c e unicast-sender.c do diretório /home/user/contiki/examples: ipv6/simple-udp-rpl

Semana 4 DATA 23/05

  • 25/05 até 30/05: Leitura e produção do resumo dos subcapítulos 5.1,5.2,5.3
  • 23/05 até 30/05: Realização dos laboratórios 1 e 2

Semana 5 DATA 30/05

  • 30/05 até 05/06: Leitura e produção do resumo dos subcapítulos 6.1,6.2,6.3
  • 30/05 até 06/06: Realização do laboratórios 3 e 4

Semana 6 DATA 06/06

  • 06/06 até 13/06: Propor exemplo de 3 nodos para fazer algo no simulador


<syntaxhighlight lang=c>

  1. include "contiki.h"
  2. include "lib/random.h"
  3. include "sys/ctimer.h"
  4. include "sys/etimer.h"
  5. include "net/ip/uip.h"
  6. include "net/ipv6/uip-ds6.h"
  7. include "simple-udp.h"
  8. include <stdio.h>
  9. include <string.h>
  10. include "dev/leds.h"


  1. define UDP_PORT 1234
  2. define SEND_INTERVAL (20 * CLOCK_SECOND)
  3. define SEND_TIME (random_rand() % (SEND_INTERVAL))

//------------------------------ VÁRIAVEIS ---------------------------------//

static struct simple_udp_connection unicast_connection; static struct etimer et_blink; static uint8_t blinks;

//--------------------------------------------------------------------------// PROCESS(broadcast_example_process, "UDP broadcast example process"); PROCESS(blink_process, "LED blink process"); AUTOSTART_PROCESSES(&broadcast_example_process,&blink_process);

//------------------------------ RECEPTOR ----------------------------------// static void receiver(struct simple_udp_connection *c,

        const uip_ipaddr_t *sender_addr,
        uint16_t sender_port,
        const uip_ipaddr_t *receiver_addr,
        uint16_t receiver_port,
        const uint8_t *data,
        uint16_t datalen)

{

 printf("A porta %d recebeu dados da porta %d com tamanho %d\n",
        receiver_port, sender_port, datalen);
 leds_toggle(LEDS_GREEN);

}

//------------------------------ PROCESSOS -----------------------------//

PROCESS_THREAD(broadcast_example_process, ev, data) {

 static struct etimer periodic_timer;
 static struct etimer send_timer;
 uip_ipaddr_t addr;
 PROCESS_BEGIN();
 simple_udp_register(&broadcast_connection, UDP_PORT,
                     NULL, UDP_PORT,
                     receiver);
 etimer_set(&periodic_timer, SEND_INTERVAL);
 while(1)
 {
   PROCESS_WAIT_EVENT_UNTIL(etimer_expired(&periodic_timer));
   etimer_reset(&periodic_timer);
   etimer_set(&send_timer, SEND_TIME);
   PROCESS_WAIT_EVENT_UNTIL(etimer_expired(&send_timer));
   printf("Sending broadcast\n");
   uip_create_linklocal_allnodes_mcast(&addr);
   simple_udp_sendto(&broadcast_connection, "Test", 4, &addr);
 }
 PROCESS_END();

}

// -------------------------------------------------------------------------// PROCESS_THREAD(blink_process, ev, data) {

 PROCESS_BEGIN();
 while(1)
 {
   etimer_set(&et_blink, CLOCK_SECOND);
   PROCESS_WAIT_EVENT_UNTIL(ev == PROCESS_EVENT_TIMER);
   leds_toggle(LEDS_RED);
   printf("Piscar led... (state %0.2X)\n", leds_get());
 }
 PROCESS_END();

}