#define DRIVER_AUTHOR "Naranjo, Manuel Francisco <naranjo.manuel@gmail.com>, Johan Hovold <jhovold@gmail.com>" #define DRIVER_DESC "AIRcable USB Driver"
/* ID table that will be registered with USB core */ staticconststruct usb_device_id id_table[] = {
{ USB_DEVICE(AIRCABLE_VID, AIRCABLE_USB_PID) },
{ },
};
MODULE_DEVICE_TABLE(usb, id_table);
staticint aircable_calc_num_ports(struct usb_serial *serial, struct usb_serial_endpoints *epds)
{ /* Ignore the first interface, which has no bulk endpoints. */ if (epds->num_bulk_out == 0) {
dev_dbg(&serial->interface->dev, "ignoring interface with no bulk-out endpoints\n"); return -ENODEV;
}
return1;
}
staticint aircable_process_packet(struct usb_serial_port *port, int has_headers, char *packet, int len)
{ if (has_headers) {
len -= HCI_HEADER_LENGTH;
packet += HCI_HEADER_LENGTH;
} if (len <= 0) {
dev_dbg(&port->dev, "%s - malformed packet\n", __func__); return0;
}
tty_insert_flip_string(&port->port, packet, len);
return len;
}
staticvoid aircable_process_read_urb(struct urb *urb)
{ struct usb_serial_port *port = urb->context; char *data = urb->transfer_buffer; int has_headers; int count; int len; int i;
count = 0; for (i = 0; i < urb->actual_length; i += HCI_COMPLETE_FRAME) {
len = min_t(int, urb->actual_length - i, HCI_COMPLETE_FRAME);
count += aircable_process_packet(port, has_headers,
&data[i], len);
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.