hal_parport - acceso portable a puertos paralelos estilo PC
#include "hal_parport.h" | |
int hal_parport_get(int comp_id, hal_parport_t *port, unsigned short base, unsigned short base_hi, unsigned int modes) | |
void hal_parport_release(hal_parport_t *port) |
comp_id
Un identificador de componente HAL devuelto por una llamada anterior a hal_init.
port |
Un puntero a una estructura hal_parport_t | ||
base |
La dirección base del puerto (si puerto >= 16) o el número de puerto de Linux (si puerto <16) |
base_hi
La dirección "alta" del puerto (ubicación de los registros ECP), 0 para usar una dirección alta probada, o -1 para deshabilitar la dirección alta
modes |
Avisa al driver de los modos de puerto deseados, desde <linux/parport.h>. Si un puerto detectado por Linux no proporciona los modos solicitados, se imprime una advertencia con rtapi_print_msg. Esto no hace que la solicitud de puerto falle, porque desafortunadamente, muchos sistemas que tienen parports EPP que funcionan no se detectan como tales por Linux. |
hal_parport_get asigna un puerto paralelo para uso exclusivo de componente hal llamado. El puerto debe liberarse con hal_parport_release antes de que el componente salga con hal_exit.
Si el puerto es un puerto paralelo conocido por Linux, y Linux detectó una dirección alta de E/S, se utiliza este valor. De lo contrario, se usara base+0x400 si no está registrada por cualquier dispositivo. De lo contrario, no se utiliza ninguna dirección. Si no se detecta una dirección alta, port-> base_hi es 0.
typedef struct
{
unsigned short base;
unsigned short base_hi;
.... // mas campos
} hal_parport_t;
hal_parport_get devuelve un código de estado HAL. En caso de éxito, port es completado con información sobre el puerto asignado. En caso de fallo, los contenidos de port fR no están definidos, excepto que es seguro (pero no obligatorio) pasar este puerto a hal_parport_release.
hal_parport_release no devuelve un valor. Siempre tiene éxito.
En nuevo código, se prefiere el uso de rtapi_parport a hal_parport.