Randy,
It seems that Thunderbird has make disasters with my code, and replaced all my
tab with spaces :(, I will correct everything and send again, I will use 
Sylpheed
instead of Thunderbird, as I have seen is a bit better.
Regards,
Manuel

> On Sun, 09 Jul 2006 17:26:43 -0300 Manuel Naranjo wrote:
> 
>> Hi,
>> Here is the patch again :) , I have made the corrections suggested by
>> Olivier and Luiz.
>> I have corrected what my email client was removing.
>> Please take a look at it.
> 
> The Kconfig and Makefile patches fail for me.
> They appear to still have whitespace problems.
> 
> You should take the patch from the mailing list and try to
> apply it.
> 
> 
> 
>> +/* The following defintions are required to Add/Strip HCI headers from URB 
>> sent
>> +   over bulk endpoints */
>> +#define HCI_HEADER_LENGTH    0x4
>> +#define HCI_HEADER_0        0x20
>> +#define HCI_HEADER_1        0x29
>> +#define MAX_HCI_FRAMESIZE    60
>> +#define HCI_COMPLETE_FRAME    64
> 
> Please align the numeric values.  (Maybe they are aligned in your
> source file and gmail mangled them?)
> 
> 
>> +/* ID table that will be registered with USB core */
>> +static struct usb_device_id id_table [] = {
>> +    { USB_DEVICE(AIRCABLE_VID, AIRCABLE_USB_PID) },
>> +    { },
>> +};
>> +MODULE_DEVICE_TABLE(usb, id_table);
> 
> Source file seems to be missing lots of tabs in places where I
> would expect to see tabs, like in struct field values above and
> below.
> 
>> +/* All device info needed for AIRcable USB device */
>> +static struct usb_serial_driver aircable_device = {
>> +    .description =            "AIRcableUSB",
>> +    .id_table =             id_table,
>> +    .num_ports =            1,
>> +    .probe=                    aircable_probe,
>> +    .write=                    aircable_write,
>> +    .write_bulk_callback=    aircable_write_bulk_callback,
>> +    .read_bulk_callback=    aircable_read_bulk_callback,
>> +};
>> +
>> +static struct usb_driver aircable_driver = {
>> +    .name =            "AIRcableUSB",
>> +    .probe =        usb_serial_probe,
>> +    .disconnect =    usb_serial_disconnect,
>> +    .id_table =        id_table,
>> +};
>> +
>> +/* Based on serial_probe */
>> +static int aircable_probe(struct usb_serial *serial,
>> +                        const struct usb_device_id *id)
>> +{
>> +    //This was taken from usb-serial.c probe
>> +    //And addapted to fit AIRcable needs
> 
> Don't use // style comments in kernel code.
> 
>> +    struct usb_host_interface *iface_desc = 
>> serial->interface->cur_altsetting;
>> +    struct usb_endpoint_descriptor *endpoint;
>> +    int num_bulk_out=0;
>> +    int i;
>> +    for (i = 0; i < iface_desc->desc.bNumEndpoints; ++i) {
>> +        endpoint = &iface_desc->endpoint[i].desc;
>> +        if (((endpoint->bEndpointAddress & 0x80) == 0x00) &&
>> +            ((endpoint->bmAttributes & 3) == 0x02)) {
>> +            /* we found a bulk out endpoint */
>> +            dbg("found bulk out on endpoint %d", i);
>> +
>> +            ++num_bulk_out;
>> +        }
>> +    }
>> +    if (num_bulk_out == 0) {
>> +        dbg("Invalid interface, discarding.\n");
>> +        return -ENODEV;
>> +    }
>> +    return 0;
>> +}
>> +
>> +static int aircable_write(struct usb_serial_port *port,
>> +                                        const unsigned char *source, int 
>> count)
>> +{
>> +    struct usb_serial *serial = port->serial;
>> +    struct urb *urb;
>> +    unsigned char *buffer;
>> +    int result;
>> +    int no_headers;
>> +    int payload_length;
>> +    int length;
>> +    int i;
>> +    int offset;
>> +    int src_offset;
> 
> Indent data by 1 tab, not N spaces.
> 
>> +    dbg("%s - port %d", __FUNCTION__, port->number);
>> +
>> +    if (count == 0){
>> +        dbg("%s - write request of 0 bytes", __FUNCTION__);
>> +        return 0;
>> +    }
>> +
>> +    no_headers = (count / MAX_HCI_FRAMESIZE) + 1;
>> +    payload_length = count;
>> +    buffer = kzalloc(count + no_headers * HCI_HEADER_LENGTH ,GFP_ATOMIC);
>> +    if (!buffer){
> 
> Space between ) and {.
> 
>> +        err("%s ran out of kernel memory for urb ...", __FUNCTION__);
>> +        return -ENOMEM;
>> +    }
>> +
>> +    urb = usb_alloc_urb(0, GFP_ATOMIC);
>> +    if (!urb) {
>> +        err("%s - no more free urbs", __FUNCTION__);
>> +        kfree (buffer);
>> +        return -ENOMEM;
>> +    }
>> +
>> +    for(i = 0; i < no_headers; i++) {
>> +        if(payload_length >= MAX_HCI_FRAMESIZE)
> 
> Space between if and (.
> 
>> +            length = MAX_HCI_FRAMESIZE;
>> +        else
>> +            length = payload_length;
>> +        payload_length -= length;
>> +        offset = i * HCI_COMPLETE_FRAME;
>> +        src_offset = i * MAX_HCI_FRAMESIZE;
>> +        buffer[offset] = HCI_HEADER_0;
>> +        buffer[offset+1] = HCI_HEADER_1;
>> +        buffer[offset+2] = (unsigned char) length;
>> +        buffer[offset+3] = (unsigned char)(length >8);
>> +        memcpy(buffer + offset + HCI_HEADER_LENGTH, source + 
>> src_offset,length);
>> +    }
>> +
>> +    usb_serial_debug_data(debug, &port->dev, __FUNCTION__, length +
>> +                                                    HCI_HEADER_LENGTH , 
>> buffer);
>> +    usb_fill_bulk_urb (urb, serial->dev,
>> +        usb_sndbulkpipe (serial->dev, port->bulk_out_endpointAddress),
>> +        buffer, count + no_headers * HCI_HEADER_LENGTH ,
>> +        aircable_write_bulk_callback, port);
>> +
>> +    result = usb_submit_urb(urb, GFP_ATOMIC);
>> +    if (result){
>> +        dev_err(&port->dev, "%s - failed submitting write urb, error %d\n",
>> +                                                        __FUNCTION__, 
>> result);
>> +        kfree(buffer);
>> +        count = result;
>> +    }
>> +
>> +    usb_free_urb(urb);
>> +    dbg("%s write returning: %d", __FUNCTION__, count);
>> +
>> +    return count;
>> +}
>> +
>> +static void aircable_read_bulk_callback(struct urb *urb, struct pt_regs 
>> *regs)
>> +{
>> +    struct usb_serial_port *port = (struct usb_serial_port *)urb->context;
>> +    struct usb_serial *serial = port->serial;
>> +    struct tty_struct *tty;
>> +    unsigned char *data;
>> +    unsigned long no_packages;
>> +    unsigned long remaining, package_length;
>> +    unsigned long i;
>> +    int result;
>> +
>> +    dbg("%s - port %d", __FUNCTION__, port->number);
>> +
>> +    if (urb->status) {
>> +        dbg("%s - nonzero read bulk status received: %d", __FUNCTION__,
>> +                                                                
>> urb->status);
>> +        return;
>> +    }
>> +
>> +    tty = port->tty;
>> +    if (tty && urb->actual_length) {
>> +        usb_serial_debug_data(debug, &port->dev, __FUNCTION__,
>> +                                    urb->actual_length , 
>> urb->transfer_buffer);
>> +        if (urb->actual_length HCI_HEADER_LENGTH){
>> +            remaining = urb->actual_length;
>> +            no_packages = urb->actual_length / (HCI_COMPLETE_FRAME);
>> +            if (urb->actual_length % HCI_COMPLETE_FRAME != 0)
>> +                no_packages+=1;
>> +            for (i = 0; i < no_packages ; ++i) {
>> +                if (remaining (HCI_COMPLETE_FRAME))
>> +                    package_length = HCI_COMPLETE_FRAME;
>> +                else
>> +                    package_length = remaining;
>> +                remaining -= package_length;
>> +                data = kmalloc(package_length - HCI_HEADER_LENGTH, 
>> GFP_ATOMIC);
>> +                if (!data){
>> +                    err("%s ran out of kernel memory for urb ...",
>> +                                                                
>> __FUNCTION__);
>> +                    return -ENOMEM;
>> +                }
>> +
>> +                memcpy(data, urb->transfer_buffer + HCI_HEADER_LENGTH +
>> +                    (HCI_COMPLETE_FRAME)*(i),
>> +                    package_length - HCI_HEADER_LENGTH);
>> +                tty_buffer_request_room(tty,package_length - 
>> HCI_HEADER_LENGTH);
>> +                tty_insert_flip_string(tty,data,
>> +                                            package_length - 
>> HCI_HEADER_LENGTH);
>> +                tty_flip_buffer_push(tty);
>> +                kfree(data);
>> +            }
>> +        }
>> +    }
>> +    usb_fill_bulk_urb(port->read_urb, serial->dev,
>> +            usb_rcvbulkpipe(serial->dev,
>> +                    port->bulk_in_endpointAddress),
>> +            port->read_urb->transfer_buffer,
>> +            port->read_urb->transfer_buffer_length,
>> +            serial->type->read_bulk_callback, port);
>> +    result = usb_submit_urb(port->read_urb, GFP_ATOMIC);
>> +    if (result)
>> +        dev_err(&port->dev, "%s - failed resubmitting read urb, error %d\n",
>> +                                                        __FUNCTION__, 
>> result);
>> +}
>> +
>> +/* END OF Methods Implementatio */
> 
> Implementation.  However, the comment and other(s) like it should
> just be deleted.
> 
>> +static int __init aircable_init (void)
>> +{
>> +    usb_serial_register(&aircable_device);
>> +    usb_register(&aircable_driver);
> 
> Those 2 functions return an error status.  Why isn't it
> being checked?
> 
>> +    return 0;
>> +}
>> +
>> +static void __exit aircable_exit (void)
>> +{
>> +    usb_deregister(&aircable_driver);
>> +    usb_serial_deregister(&aircable_device);
>> +}
>> +
>> +/* Module information */
>> +MODULE_AUTHOR( DRIVER_AUTHOR );
>> +MODULE_DESCRIPTION( DRIVER_DESC );
>> +MODULE_VERSION( DRIVER_VERSION );
> 
> Ugh, no spaces inside those parentheses.
> 
>> diff -uprN -X linux-vanilla/Documentation/dontdiff 
>> linux-vanilla/drivers/usb/serial/Kconfig linux/drivers/usb/serial/Kconfig
>> --- linux-vanilla/drivers/usb/serial/Kconfig    2006-03-20 
>> 02:53:29.000000000 -0300
>> +++ linux/drivers/usb/serial/Kconfig    2006-07-08 15:09:44.000000000 -0300
>> @@ -484,6 +484,15 @@ config USB_SERIAL_OMNINET
>>         To compile this driver as a module, choose M here: the
>>         module will be called omninet.
> 
> Above lines should contain a tab + 2 spaces, not all spaces.
> 
>> +config USB_SERIAL_AIRCABLE
>> +    tristate "AIRcable USB Bluetooth dongle Driver (EXPERIMENTAL)"
>> +    depends on USB_SERIAL && EXPERIMENTAL
>> +    help
> 
> Above 3 lines should be tab-indented.
> 
>> +      Say Y here if you want to use an AIRcable USB Bluetooth dongle.
>> +
>> +      To compile this driver as a module, choose M here: the
>> +      module will be called aircable.
>> +
>>   config USB_EZUSB
>>       bool
>>       depends on USB_SERIAL_KEYSPAN_PDA || USB_SERIAL_XIRCOM || 
>> USB_SERIAL_KEYSPAN || USB_SERIAL_WHITEHEAT
>> diff -uprN -X linux-vanilla/Documentation/dontdiff 
>> linux-vanilla/drivers/usb/serial/Makefile linux/drivers/usb/serial/Makefile
>> --- linux-vanilla/drivers/usb/serial/Makefile    2006-03-20 
>> 02:53:29.000000000 -0300
>> +++ linux/drivers/usb/serial/Makefile    2006-07-08 15:09:54.000000000 -0300
>> @@ -40,4 +40,5 @@ obj-$(CONFIG_USB_SERIAL_TI)            += ti_usb_
>>   obj-$(CONFIG_USB_SERIAL_VISOR)            += visor.o
>>   obj-$(CONFIG_USB_SERIAL_WHITEHEAT)        += whiteheat.o
>>   obj-$(CONFIG_USB_SERIAL_XIRCOM)            += keyspan_pda.o
>> +obj-$(CONFIG_USB_SERIAL_AIRCABLE)        += aircable.o
> 
>> patch -p1 -b --dry-run < ~/aircable.patch 
> patching file drivers/usb/serial/aircable.c
> patching file drivers/usb/serial/Kconfig
> Hunk #1 FAILED at 484.
> 1 out of 1 hunk FAILED -- saving rejects to file 
> drivers/usb/serial/Kconfig.rej
> patching file drivers/usb/serial/Makefile
> Hunk #1 FAILED at 40.
> 1 out of 1 hunk FAILED -- saving rejects to file 
> drivers/usb/serial/Makefile.rej
> 
> ---
> ~Randy
> 



-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
linux-usb-devel@lists.sourceforge.net
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to