Análise de Domínio

 

 

O objetivo é criar um driver infravermelho para linux, rodando em um processador StrongARM 1110 e fornecer uma abstração orientada a objetos para os desenvolvedores dos protocolos de comunicação.

 

Para seguir o padrão IrDA, são obrigatórios 3 protocolos:

- PHY (Physical Signaling Layer)

- IrLAP (Link Access Protocol)

- IrLMP (Link Management Protocol and Information Access Service (IAS))

 

        Destes, IrLAP e IrLMP é feito por software e fica a cargo do grupo de protocolos. Já o PHY fica a cargo do driver que implementa do infravermelho. Este protocolo depende da velocidade que é usada para comunicação.

        Para taxas de transmissão baixas, até 115.2 kbps, a operação se dá utilizando transmissão assíncrona de caracteres, com start e stop bits. Neste modo, a camada física opera essencialmente como um modem, convertendo os bits da UART diretamente em pulsos de luz. Neste caso, o protocolo IrLAP incorpora um conjunto de mecanismos que são usados para agrupar os dados em frames para ser usado pelos outros protocolos.

        Ao ultrapassar a velocidade de 115.2 kbps, o IrDA incorpora mais mecanismos para prover frames. Entre 115.2 kbps e 1.152 Mbps é utilizado o protocolo HDLC (High-level Data Link Control) e há controle de erro, feito pelo padrão CCITT de 16 bits.

        Para taxas de transferência de 4 Mbps, a camada física do IrDA emprega esquemas de codificação mais sofisticados, similares aos conceitos encontrados em equipamentos de LAN. O mais importante é o PPM (Pulse Position Modulation) no qual grupos de pulsos de sinalização são transmitidos para representar 2 bits.

 

        A velocidade máxima que o processador StrongARM AS-1110 suporta é 4Mbps, porém segundo informações obtidas com o grupo que irá implementar o infravermelho no RCX, a velocidade neste não ultrapassa os 115.2 kbps. Portanto poderemos apenas fornecer funções que lêem e escrevem um byte, e o IrLAP que deverá se encarregar de agrupar os dados em frames para posterior processamento. Forneceremos também funções para configurar a velocidade (entre 9600 bps e 115.2 kbps). Segundo a especificação do processador StrongARM, o formato de transmissão deve produzir 8 bits de dados, 1 start bit, 1 stop bit e sem paridade, como mostrado na figura 1. Logo, estes parâmetros não podem ser configurados pelo usuário. O tipo de modulação utilizado é o padrão Hewlett-Packard Serial Infrared (SIR).

 

 

Figura 1

 

 

        A programação de um driver para linux é feita em C, utilizando programação estruturada. Porém é necessário fornecer uma interface orientada a objetos. Uma boa política a ser adotada é a classificação de cada protocolo como sendo uma classe. Com isto, o protocolo PHY é representado obviamente pela classe PHY. Esta classe possui um construtor e um destrutor, que configura o hardware e o deixa pronto para começar o envio e o recebimento de dados, estes que são feitos por métodos enviaByte e recebeByte, como mostrado na figura 2.

 

Figura 2

 

 

        Os métodos de envio e recepcão de dados são bloqueantes. Porém o hardware fornece 2 filas, uma para transmissão (com 16 entradas) e outra para recepção (com 20 entradas), logo estes métodos não serão bloqueados necessariamente até o envio físico dos dados. Caso necessário podem ser criadas filas dentro da classe, para otimizar o processo.