Mudanças entre as edições de "Projeto de Estimador de Estado de Enlace"
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
- Estudo Básico de Redes
- 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))
- Duração: 8 semanas (até dia 31 de Junho)
- Colocar o detalhamento das tarefas no Trello (compartlhar com o professor: eraldo.silveira@gmail.com)
- 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).
- Estudo do Contiki/Cooja
- Instalar o Contiki/Cooja: http://www.contiki-os.org/start.html
- 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é)
- Propor e implementar um exempĺo sobre os nodos.
- 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
- Duração: 8 semanas (até dia 15 de Junho)
- 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>
- 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();
}