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

De MediaWiki do Campus São José
Ir para navegação Ir para pesquisar
Linha 41: Linha 41:
 
=Iniciando a implementação=
 
=Iniciando a implementação=
  
==Process==
+
===Process===
 
Como visto anteriormente, o process é um método essencial para o funcionamento da aplicação. Nesta seção, iremos estar explicando melhor cada método da biblioteca process.h e como são implementados no Contiki.
 
Como visto anteriormente, o process é um método essencial para o funcionamento da aplicação. Nesta seção, iremos estar explicando melhor cada método da biblioteca process.h e como são implementados no Contiki.
  
Linha 56: Linha 56:
 
*PROCESS_EXITHANDLER(handler)        -> Especifica uma ação quando há uma saída do processo.
 
*PROCESS_EXITHANDLER(handler)        -> Especifica uma ação quando há uma saída do processo.
  
 +
===Timers===
 +
A utilização dos timers nos permitirá acionar eventos em um determinado momento, acelerando a transição de um
 +
estado para outro e automatizar um determinado processo ou tarefa.
 +
 +
No Contiki existem 4 tipos de timers:
 +
* Simple timer: A aplicação deve conferir manualmente se o timer expirou. ''#include "sys/timer.h"''.
 +
* Callback timer: Quanto o timer expira o callback chama uma determinada função. ''#include "sys/ctimer.h"''.
 +
* Timer Event: O mesmo que acima, mas em vez de chamar uma função, quando o timer expira posta um evento sinalizando sua expiração. ''#include "sys/etimer.h"''.
 +
* Real time timer: O módulo em tempo real lida com o agendamento e execução de tempo real tarefas. #include ''"sys/rtimer.h"''
 +
 +
===Clock Timer===
 +
A biblioteca clock é a interface entre o Contiki e a funcionalidade clock da plataforma especificada.
 +
*CLOCK_SECOND - A biblioteca clock define esse macro para converter segundos na resolução de instante da plataforma.
 +
 +
===Interface de sistema de arquivo do Contiki===
 +
A interface do sistema de arquivos Contiki (CFS) define uma API abstrata para ler diretórios e ler e gravar arquivos. A seguir alguns principais métodos e atributos da biblioteca.
 +
 +
*cfs_open (const char *name, int flags) - Abre um arquivo.
 +
*cfs_close (int fd) - Fecha um arquivo.
 +
*cfs_read (int fd, void *buf, unsigned int len) - Lê o dado de um arquivo aberto.
 +
*cfs_write (int fd, const void *buf, unsigned int len) - Escreve dado em um arquivo aberto.
 +
*cfs_seek (int fd, cfs_offset_t offset, int whence) - Procura uma posição especifica em um arquivo aberto.
 +
*cfs_remove (const char *name) - Remove um arquivo.
 +
*CFS_READ - Atributo que especifica ao cfs_open() que o arquivo aberto é para leitura.
 +
*CFS_WRITE - Atributo que especifica ao cfs_open() que o arquivo aberto é para escrita.
  
  
  
 
=Referências=
 
=Referências=
https://github.com/contiki-os/contiki/wiki/Contiki-Build-System  -> Criando makefile  
+
*https://github.com/contiki-os/contiki/wiki/Contiki-Build-System  - Criando makefile  
https://github.com/alignan/contiki/blob/master/core/sys/process.h -> Biblioteca process.h
+
*https://github.com/alignan/contiki/blob/master/core/sys/process.h - Biblioteca process.h
 +
*https://github.com/contiki-os/contiki/blob/master/core/sys/timer.h - Biblioteca sys/timer.h
 +
*http://contiki.sourceforge.net/docs/2.6/a01671.html - Doc do Contiki

Edição das 14h57min de 9 de agosto de 2018

Link para Semestre 1

https://wiki.sj.ifsc.edu.br/index.php/Projeto_de_Estimador_de_Estado_de_Enlace

Horário disponível

  • Segunda-Feira - 13:30 às 15:30 (2h)
  • Terça-Feira - 13:30 às 17:30 (4h)
  • Quarta-feira - 9:40 às 11:40 e 15:20 às 17:30 (4h)
  • Quinta feira - 7:30 às 11:30 e 13:30 às 17:30 (8h)
  • Sexta-feira - 15:40 às 17:30 (2h)

Total = 20 hrs

Download Contiki e VMWare Player

Para instalar o Contiki acesse:

Foi escolhido o software VMWare Player pra simular a maquina virtual do Contiki. O VMWare pode ser baixado em:

Instalação

Em breve...

Estrutura genérica da aplicação Contiki

PROCESS(process_name, "The string representation of the process name"); 
AUTOSTART_PROCESSES(&process_name); 

PROCESS_THREAD(process_name, process_event_t, process_data_t){
 PROCESS_BEGIN();
 /*Execução do código*/
 PROCESS_END();
}

Criando um makefile

Para cada código .c que for criado, é necessária a criar o arquivo que contém as instruções para as ferramentas de compilação da tarefa, o conhecido makefile. O arquivo makefile deve estar no mesmo diretório do código criado para a aplicação Contiki. A seguir, alguns passos de como criar o seu makefile: Em breve...

Iniciando a implementação

Process

Como visto anteriormente, o process é um método essencial para o funcionamento da aplicação. Nesta seção, iremos estar explicando melhor cada método da biblioteca process.h e como são implementados no Contiki.

Uma process_thread contém o código do processo. Nela há uma protothread que é invocada pelo escalonador de processos. A protothread é uma maneira de estruturar o código de modo que permita que o sistema execute outras atividades enquanto o código está aguardando que algum determinado evento aconteça.

Vamos agora para os métodos:

  • PROCESS() -> Criador do processo.
  • AUTOSTART_PROCESS() -> Inicia o processo automaticamente passado o seu nome por referência.
  • PROCESS_BEGIN() -> Define o inicio de um processo.
  • PROCESS_END() -> Define o fim de um processo.
  • PROCESS_WAIT_EVENT() -> bloqueia o processo atualmente em execução até que o processo receba um evento.
  • PROCESS_WAIT_EVENT_UNTIL() -> Necessita ser passada uma condição que deve ser verdadeira para chamar o processo.
  • PROCESS_EXITHANDLER(handler) -> Especifica uma ação quando há uma saída do processo.

Timers

A utilização dos timers nos permitirá acionar eventos em um determinado momento, acelerando a transição de um estado para outro e automatizar um determinado processo ou tarefa.

No Contiki existem 4 tipos de timers:

  • Simple timer: A aplicação deve conferir manualmente se o timer expirou. #include "sys/timer.h".
  • Callback timer: Quanto o timer expira o callback chama uma determinada função. #include "sys/ctimer.h".
  • Timer Event: O mesmo que acima, mas em vez de chamar uma função, quando o timer expira posta um evento sinalizando sua expiração. #include "sys/etimer.h".
  • Real time timer: O módulo em tempo real lida com o agendamento e execução de tempo real tarefas. #include "sys/rtimer.h"

Clock Timer

A biblioteca clock é a interface entre o Contiki e a funcionalidade clock da plataforma especificada.

  • CLOCK_SECOND - A biblioteca clock define esse macro para converter segundos na resolução de instante da plataforma.

Interface de sistema de arquivo do Contiki

A interface do sistema de arquivos Contiki (CFS) define uma API abstrata para ler diretórios e ler e gravar arquivos. A seguir alguns principais métodos e atributos da biblioteca.

  • cfs_open (const char *name, int flags) - Abre um arquivo.
  • cfs_close (int fd) - Fecha um arquivo.
  • cfs_read (int fd, void *buf, unsigned int len) - Lê o dado de um arquivo aberto.
  • cfs_write (int fd, const void *buf, unsigned int len) - Escreve dado em um arquivo aberto.
  • cfs_seek (int fd, cfs_offset_t offset, int whence) - Procura uma posição especifica em um arquivo aberto.
  • cfs_remove (const char *name) - Remove um arquivo.
  • CFS_READ - Atributo que especifica ao cfs_open() que o arquivo aberto é para leitura.
  • CFS_WRITE - Atributo que especifica ao cfs_open() que o arquivo aberto é para escrita.


Referências