rtapi_parport - acceso portáble a puertos paralelos estilo PC
#include "rtapi_parport.h" | |
int rtapi_parport_get(const char *module_name, rtapi_parport_t *port, unsigned short base, unsigned short base_hi, unsigned int modes) | |
void rtapi_parport_release(rtapi_parport_t *port) |
module_name
Por convención, el nombre del módulo RTAPI o componente HAL que usa el parport.
port |
Un puntero a una estructura rtapi_parport_t | ||
base |
La dirección base del puerto (si puerto >= 16) o el número Linux de puerto (si puerto <16) |
base_hi
La dirección "high" 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 |
Avisar 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 puertos EPP que funcionan no se detectan por Linux. |
rtapi_parport_get asigna un puerto paralelo para uso exclusivo del componente hal nombrado. Si tiene éxito, accede al puerto con llamadas de E/S como rtapi_inb en la dirección base, en las direcciones base o base_hi. El puerto debe liberarse con rtapi_parport_release antes de la salida del componente con rtapi_exit.
Si el puerto es un puerto paralelo conocido por Linux, y se detectó una dirección high de E/S, se utiliza este valor. De lo contrario, si base+0x400 no está registrada a cualquier dispositivo, se usara. De lo contrario, no se utiliza ninguna dirección. Si no hay una dirección high detectada, port->base_hi es 0.
typedef struct
{
unsigned short base;
unsigned short base_hi;
.... // otros campos
} rtapi_parport_t;
rtapi_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 falla, los contenidos de port no están definidos, excepto que es seguro (pero no obligatorio) pasar este puerto a rtapi_parport_release.
rtapi_parport_release no devuelve un valor. Siempre tiene éxito.
En nuevo código, se prefiere el uso de rtapi_parport a rtapi_parport.