Processo para reconhecimento e utilização do infra-vermelho a partir da porta serial para um processador RCX - H8/300
ANÁLISE DE REQUISITOS
Implementar um driver para prover a comunicação entre a porta serial do Robô da Lego RCX - Hitachi H8/300 para possibilitar o uso do infra-vermelho para comunicação com um iPaq.
O driver deve prover os seguintes serviços básicos:
enviar dados (a serem recebidos pelo driver IrDA do palmtop iPaq);
receber dados (a serem recebidos pelo driver em questão).
permitir alterar taxas de transmissão
ESTUDO DE VIABILIDADE
Uma proposta para a implementação de um
driver de baixo custo, na qual disponibiliza as principais funções para a
comunicação de dados através do dispositivo de infravermelho.
A comunicação é half-duplex.
Taxa de transmissão de dados de 9,6 Kb/s padrão, até 115.2Kb/s;
Portanto este projeto é viável.
MODELAGEM DO SISTEMA
Relacionamentos: A abstração do SO, inicialmente chamada de "IR_Device" está relacionada diretamente pela abstração Device. Na família Device houve a necessidade da criação de um membro chamado de "IR_Device", que deriva de "Basic_Device" para interagir com os dispositivos de infra-vermelho.
Descrição do Sistema: O sistema consiste em um driver para o robô, para ser usado por uma aplicação de comunicação entre um robô e um iPad, que faça uso da porta de infra vermelho no processador RCX H8/300. Essa aplicação conversa com o hardware através de um protocolo e um driver que é o que deve ser desenvolvido por nós. Esse driver irá receber e enviar dados através da porta de infra vermelho que utiliza a estrutura da porta serial. Através dos dados fornecidos pelo dispositivo, o IR_Device irá tratar das camadas mais baixas de comunicação de dados, para que essa informação seja transmitida de maneira confiável.
Descrição dos Metodos:
Na Classe Uart
get: Le um conjunto de bits da uart e fornece byte a byte para o protocolo de comunicação.
set: Envia para um registrador um byte recebido como parâmetro.
config: Ativa o dispositivo no sistema e atribui uma taxa de transferência ao estabelecer uma conexão.
Na Classe Driver
getinfo: Fornece as informações necessárias para a UART se comunicar com um dispositivo específico, no caso o infra-vermelho.
Na Classe IR Device
in: Lê bit a bit e trata o conteúdo do registrador informado pela uart. Passando um byte como parâmetro.
out: Envia para a uart o dado (byte) a ser transmitido.
initialize: reseta a uart, inicializando e tentando estabelecer uma comunicação entre os dispositivos.
get_status: retorna o estado do serial device. Se ele está pronto para enviar, receber, idle (pode enviar ou receber) ou busy.
get_baud: retorna a taxa de transferência que está sendo utilizada no momento.
set_baud: atribui um novo valor à taxa de transferência.
Links relacionados:
http://www.hitachi-eu.com/hel/ecg/products/micro/8_16bit/h8300h_tiny/3664n/h8_3664_n.html
http://www.cs.brown.edu/~tld/courses/cs148/01/programming/programming.htm
http://www.informatik.hu-berlin.de/~mueller/rt/mindstorm/www.crynwr.com/lego-robotics/
http://www.slewis.com/rcxport/docs/
http://www.javaworld.com/javaworld/javaone00/j1-00-lego.html
http://www.usenix.org/publications/library/proceedings/usenix2000/freenix/nikander/nikander_html/index.html
http://www.noga.de/legOS/
http://graphics.stanford.edu/~kekoa/rcx/#Protocol
http://graphics.stanford.edu/~kekoa/rcx/romref.html
http://www.cs.uu.nl/people/markov/lego/rcxcc/index.html
http://www.crynwr.com/lego-robotics/
Documentacao