Dados gerais

Interface: InterManager
Arquivos: intermanager.h
Última atualização: 02/07/2003
Autor: Luiz Henrique Shigunov
Informações

Descrição
Estruturas
Funções para o sistema

0x08 - GetInputInfo - Obtém informações sobre um dispositivo de entrada
0x09 - GetOutputInfo - Obtém informações sobre um dispositivo de saída
0x00 - RegisterInput - Registra um dispositivo de entrada

0x01 - RegisterOutput - Registra um dispositivo de saída
0x02 - SendEvent - Envia um evento para uma tarefa
Funções para o usuário

0x03 - UFlushEventQueue - Remove eventos da fila de eventos
0x04 - UGetInputInfo - Obtém informações sobre um dispositivo de entrada
0x05 - UGetOutputInfo - Obtém informações sobre um dispositivo de saída

0x06 - USetFocus - Define que tarefa tem o foco dos dispositivos de entrada
0x07 - UWaitEvent - Espera por um evento

Descrição

Esta página descreve a interface InterManager que trata da interface do sistema (receber eventos dos dispositivos de entrada e repassá-los para as tarefas, fornecer informações sobre os dispositivos de e/s, etc).

O modelo usado para entrada de dados do usuário é o modelo de eventos, ou seja, cada tecla pressionada, cada movimento do mouse, é um evento que será repassado para a tarefa.

Cada dispositivo de entrada tem uma tarefa com o foco e todos os eventos são repassados para a tarefa que tem o foco.

As tarefas podem escrever nos dispositivos de saída em qualquer ordem, não existindo foco.

Toda tarefa criada herda os dispositivos de entrada e saída da tarefa que a criou.

Todo dispositivo de entrada deve implementar a interface InputDev e todo dispositivo de saída deve implementar a interface OutputDev.

Estruturas

typedef struct {
    unsigned int type;
    unsigned int data[7];
} InterManager_Event;

data são dados específicos do evento.

Os seguinte valores de type já estão em uso:

ValorDescrição
0x0000-0x000fEm uso pela interface Keyboard
0x0010-0x001fEm uso pela interface UserModManager
typedef struct {
    unsigned short interSize;
    unsigned short impSize;
    char names[1];
} InterManager_InputInfo;

Onde interSize é o tamanho do nome da interface incluindo o zero final, impSize o tamanho do nome da implementação incluindo o zero final e names é a área onde os nomes estão, primeiro o nome da interface seguido pelo nome da implementação.

typedef struct {
    unsigned short interSize;
    unsigned short impSize;
    char names[1];
} InterManager_OutputInfo;

Onde interSize é o tamanho do nome da interface incluindo o zero final, impSize o tamanho do nome da implementação incluindo o zero final e names é a área onde os nomes estão, primeiro o nome da interface seguido pelo nome da implementação.

Funções para o sistema

Estas funções são de uso exclusivo dos módulos do sistema.

0x08 - GetInputInfo

Sintaxe

int InterManager_GetInputInfo(unsigned int index, InterManager_InputInfo *info, unsigned int size);

Propriedades

Descrição

Esta função obtém informações sobre o dispositivo de entrada index usado pela tarefa chamadora.

index começa em 0 e deve ser incrementado a cada chamada da função.

size é o tamanho total de info.

Se ocorrer sucesso, info será preenchido com as informações do dispositivo de entrada.

Valor de retorno

0x09 - GetOutputInfo

Sintaxe

int InterManager_GetOutputInfo(InterManager_OutputInfo *info, unsigned int size);

Propriedades

Descrição

Esta função obtém informações sobre o dispositivo de saída usado pela tarefa chamadora.

size é o tamanho total de info.

Se ocorrer sucesso, info será preenchido com as informações do dispositivo de saída.

Valor de retorno

0x00 - RegisterInput

Sintaxe

int InterManager_RegisterInput(TaskManager_Task *task, const char *imp);

Propriedades

Descrição

Esta função registra o dispositivo imp, que deve implementar a interface InputDev, para a tarefa task.

Se task for NULL, será registrado para a tarefa que chama esta função.

A tarefa terá o foco do dispositivo se este ainda não tiver sido registrado para uma tarefa.

Valor de retorno

0x01 - RegisterOutput

Sintaxe

int InterManager_RegisterOutput(TaskManager_Task *task, const char *imp);

Propriedades

Descrição

Esta função registra o dispositivo imp, que deve implementar a interface OutputDev, para a tarefa task.

Se task for NULL, será registrado para a tarefa que chama esta função.

Apenas um dispositivo de saída pode ser registrado por tarefa.

Valor de retorno

0x02 - SendEvent

Sintaxe

int InterManager_SendEvent(TaskManager_Task *task, const InterManager_Event *event);

Propriedades

Descrição

Esta função envia o evento event para a tarefa task.

Se task for NULL, será enviado para a tarefa que chama esta função.

Esta função não libera event.

Valor de retorno

Funções para o usuário

Estas funções foram projetadas para os módulos do usuário.

0x03 - UFlushEventQueue

Sintaxe

void InterManager_UFlushEventQueue(int mask);

Propriedades

Do usuário.

Descrição

Esta função remove todos os eventos da fila de espera onde mask & tipo do evento seja igual a zero.

Por exemplo: para remover todos os eventos do teclado mask deve ser 0xfffffff0.

Valor de retorno

Nada.

0x04 - UGetInputInfo

Sintaxe

int InterManager_UGetInputInfo(unsigned int index, InterManager_InputInfo *info, unsigned int size);

Propriedades

Do usuário.

Descrição

A mesma da função GetInputInfo.

Valor de retorno

Os mesmos da função GetInputInfo.

0x05 - UGetOutputInfo

Sintaxe

int InterManager_UGetOutputInfo(InterManager_OutputInfo *info, unsigned int size);

Propriedades

Do usuário.

Descrição

A mesma da função GetOutputInfo.

Valor de retorno

Os mesmos da função GetOutputInfo.

0x06 - USetFocus

Sintaxe

int InterManager_USetFocus(int task);

Propriedades

Do usuário.

Descrição

Esta função passa o foco dos dispositivos de entrada da tarefa que chama esta função para task.

task deve ter os mesmos dispositivos de entrada da tarefa que chama esta função.

Valor de retorno

0x07 - UWaitEvent

Sintaxe

int InterManager_UWaitEvent(InterManager_Event *event, int prop);

Propriedades

Do usuário.

Descrição

Esta função espera um evento. prop indica o que deve ser feito se não existirem eventos pendentes.

prop deve ser 0 ou:

Em caso de sucesso, event será preenchido com o evento.

Valor de retorno