[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[cdi-devel] [PATCH] English comments for usb.h and usb-hcd.h
From: Max Reitz <max@xxxxxxxxxx>
+ Added english comments for those two files
Signed-off-by: Max Reitz <max@xxxxxxxxxx>
---
include/cdi/usb-hcd.h | 138 ++++++++--
include/cdi/usb.h | 745 +++++++++++++++++++++++++++++++++++++++++--------
2 files changed, 740 insertions(+), 143 deletions(-)
diff --git a/include/cdi/usb-hcd.h b/include/cdi/usb-hcd.h
index a5fcc51..10e8bd4 100644
--- a/include/cdi/usb-hcd.h
+++ b/include/cdi/usb-hcd.h
@@ -7,7 +7,13 @@
struct cdi_usb_hc {
struct cdi_device dev;
- ///USB-Geschwindigkeit
+ /**
+ * \if german
+ * USB-Geschwindigkeit
+ * \elseif english
+ * USB speed
+ * \endif
+ */
cdi_usb_speed_t speed;
};
@@ -15,46 +21,130 @@ struct cdi_usb_hcd {
struct cdi_driver drv;
/**
- * Listet alle Geraete auf, die an den Rootports haengen und ruft ggf.
- * cdi_usb_device_init auf
- *
- * @param device Der Hostcontroller
- */
+ * \if german
+ *
+ * Listet alle Geraete auf, die an den Rootports haengen und ruft ggf.
+ * cdi_usb_device_init auf
+ *
+ * @param device Der Hostcontroller
+ *
+ * \elseif english
+ *
+ * Lists all devices hanging at the root ports and calls (if necessary)
+ * cdi_usb_device_init
+ *
+ * @param device The host controller
+ *
+ * \endif
+ */
void (*find_devices)(struct cdi_usb_hc* device);
/**
- * Aktiviert den zum angegebenen Geraet gehoerigen Rootport
- *
- * @param usb_device Das USB-Geraet (muss an einem Rootport haengen)
- */
+ * \if german
+ *
+ * Aktiviert den zum angegebenen Geraet gehoerigen Rootport
+ *
+ * @param usb_device Das USB-Geraet (muss an einem Rootport haengen)
+ *
+ * \elseif english
+ *
+ * Activates the root port corresponding to the device
+ *
+ * @param usb_device The USB device (must be located at a root port)
+ *
+ * \endif
+ */
void (*activate_device)(struct cdi_usb_device* usb_device);
/**
- * Verarbeitet USB-Pakete
- *
- * @param packets Array zu sendender Pakete
- * @param num_packets Anzahl der Pakete
- *
- * @return Gibt den Status an (z. B. USB_NO_ERROR fuer keinen Fehler)
- */
+ * \if german
+ *
+ * Verarbeitet USB-Pakete
+ *
+ * @param packets Array zu sendender Pakete
+ * @param num_packets Anzahl der Pakete
+ *
+ * @return Gibt den Status an (z. B. USB_NO_ERROR fuer keinen Fehler)
+ *
+ * \elseif english
+ *
+ * Sends USB packets
+ *
+ * @param packets Array of packages to be sent
+ * @param num_packages Number of packages
+ *
+ * \endif
+ */
cdi_usb_status_t (*send_packets)(struct cdi_usb_packet* packets,
size_t num_packets);
/**
- * Erstellt eine neue Pipe
- *
- * @param pipe Die Pipe
- */
+ * \if german
+ *
+ * Erstellt eine neue Pipe
+ *
+ * @param pipe Die Pipe
+ *
+ * \elseif english
+ *
+ * Creates a new pipe
+ *
+ * @param pipe The pipe
+ *
+ * \endif
+ */
void (*add_pipe)(struct cdi_usb_pipe* pipe);
};
-/// Initialisiert einen HCD
+/**
+ * \if german
+ *
+ * Initialisiert einen HCD
+ *
+ * @param driver Der HCD
+ *
+ * \elseif english
+ *
+ * Initializes an HCD
+ *
+ * @param driver The HCD
+ *
+ * \endif
+ */
void cdi_usb_hcd_init(struct cdi_usb_hcd* driver);
-/// Gibt einen HCD frei
+/**
+ * \if german
+ *
+ * Gibt einen HCD frei
+ *
+ * @param driver Freizugebender HCD
+ *
+ * \elseif english
+ *
+ * Removes an HCD
+ *
+ * @param driver HCD to be removed
+ *
+ * \endif
+ */
void cdi_usb_hcd_destroy(struct cdi_usb_hcd* driver);
-/// Registriert einen HCD
+/**
+ * \if german
+ *
+ * Registriert einen HCD
+ *
+ * @param driver Zu registrierender HCD
+ *
+ * \elseif english
+ *
+ * Registers an HCD
+ *
+ * @param driver HCD to be registered
+ *
+ * \endif
+ */
void cdi_usb_hcd_register(struct cdi_usb_hcd* driver);
#endif
diff --git a/include/cdi/usb.h b/include/cdi/usb.h
index c4406c7..76723fb 100644
--- a/include/cdi/usb.h
+++ b/include/cdi/usb.h
@@ -16,32 +16,102 @@ typedef enum {
} cdi_usb_speed_t;
typedef enum {
- /// SETUP-Paket
+ /**
+ * \if german
+ * SETUP-Paket
+ * \elseif english
+ * SETUP packet
+ * \endif
+ */
CDI_USB_PACKET_SETUP = 0x2D,
- /// Daten vom Geraet zum Host
+
+ /**
+ * \if german
+ * Daten vom Geraet zum Host
+ * \elseif english
+ * Data from the device to the host
+ * \endif
+ */
CDI_USB_PACKET_IN = 0x69,
- /// Daten vom Host zum Geraet
+
+ /**
+ * \if german
+ * Daten vom Host zum Geraet
+ * \elseif english
+ * Data from the host to the device
+ * \endif
+ */
CDI_USB_PACKET_OUT = 0xE1,
} cdi_usb_packet_type_t;
typedef enum {
- /// Kein Fehler
+ /**
+ * \if german
+ * Kein Fehler
+ * \elseif english
+ * No error
+ * \endif
+ */
CDI_USB_NO_ERROR = 0x0000,
+
/// Stalled
CDI_USB_STALLED = 0x0001,
- /// Bufferfehler (Overflow, underrun, ...)
+
+ /**
+ * \if german
+ * Bufferfehler (Overflow, underrun, ...)
+ * \elseif english
+ * Buffer error (overflow, underrun, ...)
+ * \endif
+ */
CDI_USB_BUFFER_ERROR = 0x0002,
- /// Babble (Geraet hat zu viele Daten gesendet)
+
+ /**
+ * \if german
+ * Babble (Geraet hat zu viele Daten gesendet)
+ * \elseif english
+ * Babble (device has sent more data than expected)
+ * \endif
+ */
CDI_USB_BABBLE = 0x0004,
- /// NAK (Daten sind erneut zu senden)
+
+ /**
+ * \if german
+ * NAK (Daten sind erneut zu senden)
+ * \elseif english
+ * NAK (data has to be sent again)
+ * \endif
+ */
CDI_USB_NAK = 0x0008,
- /// CRC-Fehler
+
+ /**
+ * \if german
+ * CRC-Fehler
+ * \elseif english
+ * CRC error
+ * \endif
+ */
CDI_USB_CRC = 0x0010,
+
/// Timeout
CDI_USB_TIMEOUT = 0x0020,
- /// Bitstuff/-destuff-Fehler
+
+ /**
+ * \if german
+ * Bitstuff/-destuff-Fehler
+ * \elseif english
+ * bitstuff/-destuff error
+ * \endif
+ */
CDI_USB_BITSTUFF = 0x0040,
- /// Reservieren von Speicher fehlgeschlagen, ...
+
+ /**
+ * \if german
+ * Reservieren von Speicher fehlgeschlagen, ...
+ * \elseif english
+ * Allocating of memory failed, ...
+ * \endif
+ */
CDI_USB_TRIVIAL_ERROR = 0x0080,
} cdi_usb_status_t;
@@ -51,29 +121,76 @@ struct cdi_usb_interface;
struct cdi_usb_driver;
struct cdi_usb_device {
- /// Der USB-Bustreiber
+ /**
+ * \if german
+ * Der USB-Bustreiber
+ * \elseif english
+ * The USB bus driver
+ * \endif
+ */
struct cdi_usb_driver* drv;
- /// Der Hostcontroller, an dem das Geraet im Endeffekt haengt
+
+ /**
+ * \if german
+ * Der Hostcontroller, an dem das Geraet im Endeffekt haengt
+ * \elseif english
+ * The host controller where the device is eventually located
+ * \endif
+ */
struct cdi_usb_hc* hc;
+
/**
- * Haengt das Geraet an einem Hub, dann ist dieses Feld ein Pointer auf
- * das entsprechende USB-Geraet, haengt es an einem Rootport, dann ist
- * dieses Feld NULL.
- */
+ * \if german
+ * Haengt das Geraet an einem Hub, dann ist dieses Feld ein Pointer auf
+ * das entsprechende USB-Geraet, haengt es an einem Rootport, dann ist
+ * dieses Feld NULL.
+ * \elseif english
+ * If the device is located at a hub, then this field contains a pointer to
+ * the corresponding USB device, if it's located at a root port, then this
+ * field is set to NULL.
+ * \endif
+ */
struct cdi_usb_device* hub;
- /// Geschwindigkeit(-en) dieses Geraets
+
+ /**
+ * \if german
+ * Geschwindigkeit(-en) dieses Geraets
+ * \elseif english
+ * Speed(-s) supported by this device
+ * \endif
+ */
cdi_usb_speed_t speed;
+
/// ID
int id;
- /// Entweder der Rootport oder der Port des Hubs, an dem das Geraet haengt
+
+ /**
+ * \if german
+ * Entweder der Rootport oder der Port des Hubs, an dem das Geraet haengt
+ * \elseif english
+ * Either the root port or the port hub's port where the device is located
+ * \endif
+ */
int port;
- /// Hier darf der Geraetetreiber seine Daten unterbringen
+
+ /**
+ * \if german
+ * Hier darf der Geraetetreiber seine Daten unterbringen
+ * \elseif english
+ * The device driver may store its data here
+ * \endif
+ */
void* driver_data;
/**
- * Felder, die so auch bei PCI existieren: Vendor-, Device-, Class-,
- * Subclass- und Protocol-ID
- */
+ * \if german
+ * Felder, die so auch bei PCI existieren: Vendor-, Device-, Class-,
+ * Subclass- und Protocol-ID
+ * \elseif english
+ * Fields existing at PCI, too: vendor, device, class, subclass and
+ * protocol ID.
+ * \endif
+ */
int vendor_id;
int device_id;
int class_id;
@@ -81,46 +198,117 @@ struct cdi_usb_device {
int protocol_id;
/**
- * Setzt das USB-Geraet zurueck (kann sowohl vom HCD als auch vom Hub
- * driver ausgefuehrt werden)
- *
- * @param usb_device Das Geraet
- */
+ * \if german
+ *
+ * Setzt das USB-Geraet zurueck (kann sowohl vom HCD als auch vom Hub
+ * driver ausgefuehrt werden)
+ *
+ * @param usb_device Das Geraet
+ *
+ * \elseif english
+ *
+ * Resets the USB device (may be executed either by the HCD or the hub
+ * driver)
+ *
+ * @param usb_device The device
+ *
+ * \endif
+ */
void (*reset)(struct cdi_usb_device* usb_device);
- /// Ziemlich lowlevelig. Gehoert das hier wirklich rein?
- /// Im einzelnen sind das: Pipe fuer Endpoint 0
+ /**
+ * \if german
+ * Ziemlich lowlevelig. Gehoert das hier wirklich rein?
+ * \elseif english
+ * Very low level. Does it really fit in here?
+ * \endif
+ */
+
+ /**
+ * \if german
+ * Im einzelnen sind das: Pipe fuer Endpoint 0
+ * \elseif english
+ * In particular these things are: Pipe for endpoint 0
+ * \endif
+ */
struct cdi_usb_pipe* ep0;
+
/// Device descriptor
void* device_desc;
+
/// Configuration descriptor
void* config_desc;
+
/// Interface descriptor
struct cdi_usb_interface* interface_desc;
+
/// Class descriptor
void* class_desc;
};
enum cdi_usb_toggle {
- /// Das Toggle nehmen, das jetzt dran ist
+ /**
+ * \if german
+ * Das Toggle nehmen, das jetzt dran ist
+ * \elseif english
+ * Use the toggle to be used right now
+ * \endif
+ */
TOGGLE_UNSPECIFIC = 0,
- /// Geloeschtes Togglebit erzwingen
+
+ /**
+ * \if german
+ * Geloeschtes Togglebit erzwingen
+ * \elseif english
+ * Force unset toggle bit
+ * \endif
+ */
TOGGLE_0 = 1,
- /// Gesetztes Togglebit erzwingen
+
+ /**
+ * \if german
+ * Gesetztes Togglebit erzwingen
+ * \elseif english
+ * Force set toggle bit
+ * \endif
+ */
TOGGLE_1 = 2
};
struct cdi_usb_endpoint {
/// sizeof(struct cdi_usb_endpoint)
uint8_t length;
+
/// 5
uint8_t descriptor_type;
- /// Nummer des Endpoints
+
+ /**
+ * \if german
+ * Nummer des Endpoints
+ * \elseif english
+ * Endpoint's number
+ * \endif
+ */
uint8_t endpoint_address;
- /// Eigenschaften (IN/OUT, Bulk/Interrupt/..., ...)
+
+ /**
+ * \if german
+ * Eigenschaften (IN/OUT, Bulk/Interrupt/..., ...)
+ * \elseif english
+ * Attributes (IN/OUT, bulk/interrupt/..., ...)
+ * \endif
+ */
uint8_t attributes;
- /// Maximale Paketgroesse in Bytes
+
+ /**
+ * \if german
+ * Maximale Paketgroesse in Bytes
+ * \elseif english
+ * Maximum packet size in bytes
+ * \endif
+ */
uint16_t max_packet_size;
+
/// ???
uint8_t interval;
} __attribute__((packed));
@@ -128,96 +316,311 @@ struct cdi_usb_endpoint {
struct cdi_usb_interface {
/// sizeof(struct cdi_usb_interface)
uint8_t length;
+
/// 4
uint8_t descriptor_type;
- /// Nummer des Interfaces
+
+ /**
+ * \if german
+ * Nummer des Interface
+ * \elseif english
+ * Interface's number
+ * \endif
+ */
uint8_t interface_number;
+
/// ???
uint8_t alternate_setting;
- /// Anzahl der Endpoints fuer dieses Interface
+
+ /**
+ * \if german
+ * Anzahl der Endpoints fuer dieses Interface
+ * \elseif english
+ * Number of endpoints for this interface
+ * \endif
+ */
uint8_t num_endpoints;
- /// Class-ID (bei Composite Devices)
+
+ /**
+ * \if german
+ * Class-ID (bei Composite Devices)
+ * \elseif english
+ * Class ID (used with composite devices)
+ * \endif
+ */
uint8_t interface_class;
+
/// Subclass-ID
uint8_t interface_subclass;
+
/// Protocol-ID
uint8_t interface_protocol;
- /// String-Index, der das Interface beschreibt
+
+ /**
+ * \if german
+ * String-Index, der das Interface beschreibt
+ * \elseif english
+ * String index describing the interface
+ * \endif
+ */
uint8_t iInterface;
} __attribute__((packed));
-/// Beschreibt eine Pipe
+/**
+ * \if german
+ * Beschreibt eine Pipe
+ * \elseif english
+ * Describes a pipe
+ * \endif
+ */
struct cdi_usb_pipe {
- /// Ziel
+ /**
+ * \if german
+ * Ziel
+ * \elseif english
+ * Destination
+ * \endif
+ */
struct cdi_usb_device* device;
- /// Ein Pointer auf eine den Endpoint beschreibende Struktur
- /// TODO Das ist eigentlich auch sehr lowlevelig.
+
+ /**
+ * \if german
+ * Ein Pointer auf eine den Endpoint beschreibende Struktur
+ * TODO Das ist eigentlich auch sehr lowlevelig.
+ * \elseif english
+ * A pointer to a structure describing the endpoint
+ * TODO This is on a very low level, too.
+ */
struct cdi_usb_endpoint* endpoint;
+
/// Data-Toggle
int data_toggle;
};
-/** Beschreibt ein USB-Paket */
+/**
+ * \if german
+ * Beschreibt ein USB-Paket
+ * \elseif english
+ * Describes a USB packet
+ * \endif
+ */
struct cdi_usb_packet {
- /// Die gewuenschte Pipe
+ /**
+ * \if german
+ * Die gewuenschte Pipe
+ * \elseif english
+ * The desired pipe
+ * \endif
+ */
struct cdi_usb_pipe* pipe;
- /// Der Typ des Pakets (PACKET_IN, PACKET_OUT, PACKET_SETUP)
+
+ /**
+ * \if german
+ * Der Typ des Pakets (PACKET_IN, PACKET_OUT, PACKET_SETUP)
+ * \elseif english
+ * Type of packet (PACKET_IN, PACKET_OUT, PACKET_SETUP)
+ * \endif
+ */
cdi_usb_packet_type_t type;
- /// Zeiger auf den Datenpuffer
+
+ /**
+ * \if german
+ * Zeiger auf den Datenpuffer
+ * \elseif english
+ * Pointer to the data buffer
+ * \endif
+ */
void* data;
- /// Die Laenge des Puffers
+
+ /**
+ * \if german
+ * Die Laenge des Puffers
+ * \elseif english
+ * The buffer's length
+ * \endif
+ */
size_t length;
- /// Fehlertyp (oder USB_NO_ERROR)
+
+ /**
+ * \if german
+ * Fehlertyp (oder USB_NO_ERROR)
+ * \elseif english
+ * Error type (or USB_NO_ERROR)
+ * \endif
+ */
cdi_usb_status_t condition;
- /// Bestimmtes Data-Toggle benuten
+
+ /**
+ * \if german
+ * Bestimmtes Data-Toggle benuten
+ * \elseif english
+ * Use specific data toggle
+ * \endif
+ */
enum cdi_usb_toggle use_toggle;
};
typedef enum {
- /// Host -> Geraet
+ /**
+ * \if german
+ * Host -> Geraet
+ * \elseif english
+ * Host -> device
+ * \endif
+ */
CDI_USB_CONTROL_OUT = 0x00,
- /// Geraet -> Host
+
+ /**
+ * \if german
+ * Geraet -> Host
+ * \elseif english
+ * Device -> host
+ * \endif
+ */
CDI_USB_CONTROL_IN = 0x80
} cdi_usb_control_direction_t;
typedef enum {
- /// Standard-Request
+ /**
+ * \if german
+ * Standard-Request
+ * \elseif english
+ * Standard request
+ * \endif
+ */
CDI_USB_CONTROL_RQ_STANDARD = 0x00,
- /// Klassenspezifischer Request
+
+ /**
+ * \if german
+ * Klassenspezifischer Request
+ * \elseif english
+ * Class specific request
+ * \endif
+ */
CDI_USB_CONTROL_RQ_CLASS = 0x20,
- /// Herstellerspezifischer Request
+
+ /**
+ * \if german
+ * Herstellerspezifischer Request
+ * \elseif english
+ * Vendor specific request
+ * \endif
+ */
CDI_USB_CONTROL_RQ_VENDOR = 0x40
} cdi_usb_control_request_type_t;
typedef enum {
- /// Empfaenger: Geraet
+ /**
+ * \if german
+ * Empfaenger: Geraet
+ * \elseif english
+ * Recipient: device
+ * \endif
+ */
CDI_USB_CONTROL_REC_DEVICE = 0x00,
- /// Empfaenger: Interface
+
+ /**
+ * \if german
+ * Empfaenger: Interface
+ * \elseif english
+ * Recipient: interface
+ * \endif
+ */
CDI_USB_CONTROL_REC_INTERFACE = 0x01,
- /// Empfaenger: Endpoint
+
+ /**
+ * \if german
+ * Empfaenger: Endpoint
+ * \elseif english
+ * Recipient: endpoint
+ * \endif
+ */
CDI_USB_CONTROL_REC_ENDPOINT = 0x02,
- /// Empfaenger ist jemand anderes
+
+ /**
+ * \if german
+ * Empfaenger ist jemand anderes
+ * \elseif english
+ * Recipient is another one
+ * \endif
+ */
CDI_USB_CONTROL_REC_OTHER = 0x03
} cdi_usb_control_recipient_t;
struct cdi_usb_control_transfer {
- /// Wenn Daten zum Geraet gesendet werden sollen, dann ist hier der
- /// Speicherbereich anzugeben
- void *buffer;
- /// Laenge der erwarteten bzw. zu sendenden Daten
+ /**
+ * \if german
+ * Wenn Daten zum Geraet gesendet werden sollen, dann ist hier der
+ * Speicherbereich anzugeben
+ * \elseif english
+ * If data has to be sent to the device, then the memory buffer has to be
+ * given here
+ * \endif
+ */
+ void* buffer;
+
+ /**
+ * \if german
+ * Laenge der erwarteten bzw. zu sendenden Daten
+ * \elseif english
+ * Length of the expected data respectively the data to be sent
+ * \endif
+ */
size_t length;
- /// Richtung
+
+ /**
+ * \if german
+ * Richtung
+ * \elseif english
+ * Direction
+ * \endif
+ */
cdi_usb_control_direction_t direction;
- /// Art des Requests (Standardrequest, klassenspezifisch,
- /// herstellerspezifisch)
+
+ /**
+ * \if german
+ * Art des Requests (Standardrequest, klassenspezifisch,
+ * herstellerspezifisch)
+ * \elseif english
+ * Request type (standard request, class specific, vendor specific)
+ * \endif
+ */
cdi_usb_control_request_type_t rtype;
- /// Ziel (Device, Interface, Endpoint, anderes)
+
+ /**
+ * \if german
+ * Ziel (Device, Interface, Endpoint, anderes)
+ * \elseif english
+ * Recipient (device, interface, endpoint, other)
+ * \endif
+ */
cdi_usb_control_recipient_t recipient;
- /// Requestcode (Je nach rtype und recipient)
+
+ /**
+ * \if german
+ * Requestcode (Je nach rtype und recipient)
+ * \elseif english
+ * Request code (specific to rtype and recipient)
+ * \endif
+ */
int request;
- /// Ein zu sendender Wert
+
+ /**
+ * \if german
+ * Ein zu sendender Wert
+ * \elseif english
+ * A value to be sent
+ * \endif
+ */
int value;
- /// Ein zu sendender Index
+
+ /**
+ * \if german
+ * Ein zu sendender Index
+ * \elseif english
+ * An index to be sent
+ * \endif
+ */
int index;
};
@@ -226,47 +629,98 @@ struct cdi_usb_control_transfer {
struct cdi_usb_driver {
struct cdi_driver drv;
- /// Unterstuetzte Geschwindigkeiten
+ /**
+ * \if german
+ * Unterstuetzte Geschwindigkeiten
+ * \elseif english
+ * Supported speeds
+ * \endif
+ */
cdi_usb_speed_t speeds;
/**
- * Enumeriert ein USB-Geraet
- *
- * @param device Das zu enumerierende Geraet
- */
+ * \if german
+ *
+ * Enumeriert ein USB-Geraet
+ *
+ * @param device Das zu enumerierende Geraet
+ *
+ * \elseif english
+ *
+ * Enumerates a USB device
+ *
+ * @param device The device to be enumerated
+ *
+ * \endif
+ */
void (*enumerate_device)(struct cdi_usb_device* device);
/**
- * Sendet USB-Pakete
- *
- * @param packets Array zu sendender Pakete
- * @param num_packets Anzahl der Pakete
- *
- * @return Gibt den Status an (z. B. USB_NO_ERROR fuer keinen Fehler)
- */
+ * \if german
+ *
+ * Sendet USB-Pakete
+ *
+ * @param packets Array zu sendender Pakete
+ * @param num_packets Anzahl der Pakete
+ *
+ * @return Gibt den Status an (z. B. USB_NO_ERROR fuer keinen Fehler)
+ *
+ * \elseif english
+ *
+ * Sends USB packets
+ *
+ * @param packets Array of packets to be sent
+ * @param num_packets Number of packets
+ *
+ * @return Returns the status (i. e. USB_NO_ERROR to indicate no error)
+ *
+ * \endif
+ */
cdi_usb_status_t (*send_packets)(struct cdi_usb_packet* packets,
size_t num_packets);
/**
- * Fuehrt einen Control-Transfer durch
- *
- * @param device Das Zielgeraet
- * @param transfer Eine den Transfer beschreibende Struktur
- *
- * @return Gibt einen Puffer zurueck, der die ausgetauschen Daten enthaelt,
- * im Fehlerfall hingegen NULL, gab es keine Daten, dann
- * (void *)0xFFFFFFFF.
- */
+ * \if german
+ *
+ * Fuehrt einen Control-Transfer durch
+ *
+ * @param device Das Zielgeraet
+ * @param transfer Eine den Transfer beschreibende Struktur
+ *
+ * @return Gibt einen Puffer zurueck, der die ausgetauschen Daten enthaelt,
+ * im Fehlerfall hingegen NULL, gab es keine Daten, dann
+ * (void *)0xFFFFFFFF.
+ *
+ * \elseif english
+ *
+ * Performs a control transfer
+ *
+ * @param device The destination device
+ * @param transfer A structure describing this transfer
+ *
+ * @return Returns a buffer containing the transferred data, in case of an
+ * error the value is NULL and if there was no data, it returns
+ * (void *)0xFFFFFFFF.
+ *
+ * \endif
+ */
void* (*do_control)(struct cdi_usb_device* device,
struct cdi_usb_control_transfer* transfer);
};
/**
- * Ein USB-Geraetetreiber uebergibt dem Betriebssystem eine solche Struktur,
- * damit ein bestimmter Handler beim Auffinden solcher Geraete aufgerufen wird.
- * Jedes Feld enthaelt entweder eine Zahl, die mit der des Geraetes
- * uebereinstimmen muss oder -1, dann wird dieses Feld ignoriert.
- */
+ * \if german
+ * Ein USB-Geraetetreiber uebergibt dem Betriebssystem eine solche Struktur,
+ * damit ein bestimmter Handler beim Auffinden solcher Geraete aufgerufen wird.
+ * Jedes Feld enthaelt entweder eine Zahl, die mit der des Geraetes
+ * uebereinstimmen muss oder -1, dann wird dieses Feld ignoriert.
+ * \elseif english
+ * A USB device driver passes this structure to the OS so that a specific
+ * handler is called upon the detection of such a device. Each field either
+ * contains a number that has to be equal to that of the driver or -1, so that
+ * the field will be ignored.
+ * \endif
+ */
struct cdi_usb_device_pattern {
int vendor_id;
int device_id;
@@ -275,44 +729,97 @@ struct cdi_usb_device_pattern {
int protocol_id;
/**
- * Ueberprueft das angegebene USB-Geraet
- *
- * @param device Das Geraet
- *
- * @return 0, wenn dieses Geraet nicht vom Treiber verarbeitet werden kann,
- * sonst 1
- */
+ * \if german
+ *
+ * Ueberprueft das angegebene USB-Geraet
+ *
+ * @param device Das Geraet
+ *
+ * @return 0, wenn dieses Geraet nicht vom Treiber verarbeitet werden kann,
+ * sonst 1
+ *
+ * \elseif english
+ *
+ * Checks the given USB device
+ *
+ * @param device The device
+ *
+ * @return 0 if the driver is unable to handle this device, else 1
+ *
+ * \endif
+ */
int (*take_usb_device)(struct cdi_usb_device* device);
};
void cdi_usb_driver_destroy(struct cdi_usb_driver* driver);
/**
- * Initialisiert einen USB-Bustreiber
- *
- * @param driver Der Treiber
- */
+ * \if german
+ *
+ * Initialisiert einen USB-Bustreiber
+ *
+ * @param driver Der Treiber
+ *
+ * \elseif english
+ *
+ * Initializes a USB bus driver
+ *
+ * @param driver The driver
+ *
+ * \endif
+ */
void cdi_usb_driver_init(struct cdi_usb_driver* driver);
/**
- * Registriert einen USB-Bustreiber beim System
- *
- * @param driver Der Treiber
- */
+ * \if german
+ *
+ * Registriert einen USB-Bustreiber beim System
+ *
+ * @param driver Der Treiber
+ *
+ * \elseif english
+ *
+ * Registers a USB bus driver at the OS
+ *
+ * @param driver The driver
+ *
+ * \endif
+ */
void cdi_usb_driver_register(struct cdi_usb_driver* driver);
/**
- * Registriert ein gefundenes USB-Geraet beim Betriebssystem
- *
- * @param device Das zu registrierende Geraet
- */
+ * \if german
+ *
+ * Registriert ein gefundenes USB-Geraet beim Betriebssystem - diese Funktion
+ * wird z. B. vom Host-Controller-Treiber nach einem Aufruf von find_devices
+ * fuer jedes gefundene Geraet aufgerufen
+ *
+ * @param device Das zu registrierende Geraet
+ *
+ * \elseif english
+ *
+ * Registers a detected USB device at the OS - this function is called i. e. by
+ * the host controller driver after a find_devices call for every device found
+ *
+ * @param device The device to be registered
+ */
void cdi_usb_device_init(struct cdi_usb_device* device);
/**
- * Registriert ein Geraetemuster
- *
- * @param pattern Das Muster
- */
+ * \if german
+ *
+ * Registriert ein Geraetemuster
+ *
+ * @param pattern Das Muster
+ *
+ * \elseif english
+ *
+ * Registers a device pattern
+ *
+ * @param pattern The pattern
+ *
+ * \endif
+ */
void cdi_usb_register_device_pattern(struct cdi_usb_device_pattern* pattern);
#endif
--
1.6.4.2