From 251726c276ab844095583d4c8d7607a30c0a802c Mon Sep 17 00:00:00 2001 From: theStack Date: Wed, 16 Sep 2009 04:09:05 +0200 Subject: [PATCH] happy whitespace hunting in sauter stack (only files that are relevant for us) --- usb/core/core.c | 568 ++++++++++++++++++------------------ usb/core/core.h | 130 ++++----- usb/core/usb.c | 188 ++++++------ usb/drivers/class/hub.c | 78 ++--- usb/drivers/class/storage.c | 204 ++++++------- usb/drivers/class/storage.h | 22 +- usb/drivers/skeleton.c | 40 +-- usb/host/ohci.h | 20 +- usb/lib/list.c | 60 ++-- usb/lib/list.h | 6 +- 10 files changed, 658 insertions(+), 658 deletions(-) diff --git a/usb/core/core.c b/usb/core/core.c index 9897720..e3dffb2 100644 --- a/usb/core/core.c +++ b/usb/core/core.c @@ -9,15 +9,15 @@ * modification, are permitted provided that the following conditions * are met: * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following - * disclaimer in the documentation and/or other materials provided - * with the distribution. - * * Neither the name of the FH Augsburg nor the names of its - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * * Neither the name of the FH Augsburg nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT @@ -46,10 +46,10 @@ */ void usb_init() { - core.drivers = list_create(); - core.devices = list_create(); - core.nextaddress = 1; - hcdi_init(); + core.drivers = list_create(); + core.devices = list_create(); + core.nextaddress = 1; + hcdi_init(); } /** @@ -57,9 +57,9 @@ void usb_init() */ u8 usb_next_address() { - u8 addr = core.nextaddress; - core.nextaddress++; - return addr; + u8 addr = core.nextaddress; + core.nextaddress++; + return addr; } @@ -69,14 +69,14 @@ u8 usb_next_address() */ void usb_periodic() { - // call ever registered driver - usb_driver *drv; - element *iterator = core.drivers->head; - while (iterator != NULL) { - drv = (usb_driver *) iterator->data; - drv->check(); - iterator = iterator->next; - } + // call ever registered driver + usb_driver *drv; + element *iterator = core.drivers->head; + while (iterator != NULL) { + drv = (usb_driver *) iterator->data; + drv->check(); + iterator = iterator->next; + } } @@ -87,45 +87,45 @@ void usb_periodic() */ usb_device *usb_add_device() { - usb_device *dev = (usb_device *) malloc(sizeof(usb_device)); - dev->address = 0; - dev->bMaxPacketSize0 = 8; /* send at first time only 8 bytes */ - - dev->epSize[0] = 64; - dev->epSize[1] = 64; - dev->epSize[2] = 64; - - dev->epTogl[0] = 0; - dev->epTogl[1] = 0; - dev->epTogl[2] = 0; - - char buf[64]; - u8 devdescr_size; - u8 address = usb_next_address(); - - /* ask first 8 bytes of device descriptor with this special - * GET Descriptor Request, when device address = 0 - */ - usb_control_msg(dev, 0x80, GET_DESCRIPTOR, 1, 0, 64, buf, 8, 0); - - dev->bMaxPacketSize0 = (u8) buf[7] ? (u8) buf[7] : 1; //dirty? /* setup real ep0 fifo size */ - devdescr_size = (u8) buf[0]; /* save real length of device descriptor */ - - /* define new adress */ - usb_control_msg(dev, 0x00, SET_ADDRESS, address << 8, 0, 0, buf, 8, 0); - dev->address = address; - - /* get complete device descriptor */ - usb_control_msg(dev, 0x80, GET_DESCRIPTOR, 1, 0, devdescr_size, buf, 8, - 0); - - /* save only really neccessary values for this small usbstack */ - dev->bDeviceClass = (u8) buf[4]; - dev->bDeviceSubClass = (u8) buf[5]; - dev->bDeviceProtocoll = (u8) buf[6]; - dev->idVendor = (u16) (buf[9] << 8) | (buf[8]); - dev->idProduct = (u16) (buf[11] << 8) | (buf[10]); - dev->bcdDevice = (u16) (buf[13] << 8) | (buf[12]); + usb_device *dev = (usb_device *) malloc(sizeof(usb_device)); + dev->address = 0; + dev->bMaxPacketSize0 = 8; /* send at first time only 8 bytes */ + + dev->epSize[0] = 64; + dev->epSize[1] = 64; + dev->epSize[2] = 64; + + dev->epTogl[0] = 0; + dev->epTogl[1] = 0; + dev->epTogl[2] = 0; + + char buf[64]; + u8 devdescr_size; + u8 address = usb_next_address(); + + /* ask first 8 bytes of device descriptor with this special + * GET Descriptor Request, when device address = 0 + */ + usb_control_msg(dev, 0x80, GET_DESCRIPTOR, 1, 0, 64, buf, 8, 0); + + dev->bMaxPacketSize0 = (u8) buf[7] ? (u8) buf[7] : 1; //dirty? /* setup real ep0 fifo size */ + devdescr_size = (u8) buf[0]; /* save real length of device descriptor */ + + /* define new adress */ + usb_control_msg(dev, 0x00, SET_ADDRESS, address << 8, 0, 0, buf, 8, 0); + dev->address = address; + + /* get complete device descriptor */ + usb_control_msg(dev, 0x80, GET_DESCRIPTOR, 1, 0, devdescr_size, buf, 8, + 0); + + /* save only really neccessary values for this small usbstack */ + dev->bDeviceClass = (u8) buf[4]; + dev->bDeviceSubClass = (u8) buf[5]; + dev->bDeviceProtocoll = (u8) buf[6]; + dev->idVendor = (u16) (buf[9] << 8) | (buf[8]); + dev->idProduct = (u16) (buf[11] << 8) | (buf[10]); + dev->bcdDevice = (u16) (buf[13] << 8) | (buf[12]); printf( "bDeviceClass 0x%02X\n" "bDeviceSubClass 0x%02X\n" @@ -136,27 +136,27 @@ usb_device *usb_add_device() dev->bDeviceSubClass, dev->bDeviceProtocoll, dev->idVendor, dev->idProduct, dev->bcdDevice); /* for lewurms keyboard it should be: - * bDeviceClass 0 - * bDeviceSubClass 0 - * bDeviceClass 0 - * idVendor 0x049f - * idProduct 0x000e - * bcdDevice 1.00 + * bDeviceClass 0 + * bDeviceSubClass 0 + * bDeviceClass 0 + * idVendor 0x049f + * idProduct 0x000e + * bcdDevice 1.00 */ - // string descriptoren werden nicht im arbeitsspeicher gehalten -> on demand mit - // entprechenden funktionen - // hier muss man noch mehr abholen, konfigurationene, interfaces und endpunkte + // string descriptoren werden nicht im arbeitsspeicher gehalten -> on demand mit + // entprechenden funktionen + // hier muss man noch mehr abholen, konfigurationene, interfaces und endpunkte - /* add device to device list */ - element *tmp = (element *) malloc(sizeof(element)); - tmp->data = (void *) dev; - list_add_tail(core.devices, tmp); + /* add device to device list */ + element *tmp = (element *) malloc(sizeof(element)); + tmp->data = (void *) dev; + list_add_tail(core.devices, tmp); - usb_probe_driver(); + usb_probe_driver(); - return dev; + return dev; } /** @@ -165,11 +165,11 @@ usb_device *usb_add_device() */ u8 usb_remove_device(usb_device * dev) { - // FIXME!!!! dieser quatsch ist nur temporaer - free(core.devices->head); - free(core.devices); - core.devices = list_create(); - return 1; + // FIXME!!!! dieser quatsch ist nur temporaer + free(core.devices->head); + free(core.devices); + core.devices = list_create(); + return 1; } /** @@ -177,38 +177,38 @@ u8 usb_remove_device(usb_device * dev) */ u8 usb_register_driver(usb_driver * dev) { - /* add driver to driver list */ - element *tmp = (element *) malloc(sizeof(element)); - tmp->data = (void *) dev; - tmp->next = NULL; - list_add_tail(core.drivers, tmp); + /* add driver to driver list */ + element *tmp = (element *) malloc(sizeof(element)); + tmp->data = (void *) dev; + tmp->next = NULL; + list_add_tail(core.drivers, tmp); - /** - * first check to find a suitable device - * (root hub drivers need this call here) - */ - dev->probe(); + /** + * first check to find a suitable device + * (root hub drivers need this call here) + */ + dev->probe(); - return 1; + return 1; } /** * Call every probe function from every registered * driver, to check if there is a valid driver - * for the new device. + * for the new device. */ void usb_probe_driver() { - // call ever registered driver - usb_driver *drv; - element *iterator = core.drivers->head; - while (iterator != NULL) { - drv = (usb_driver *) iterator->data; - drv->probe(); - iterator = iterator->next; - } + // call ever registered driver + usb_driver *drv; + element *iterator = core.drivers->head; + while (iterator != NULL) { + drv = (usb_driver *) iterator->data; + drv->probe(); + iterator = iterator->next; + } } /** @@ -216,7 +216,7 @@ void usb_probe_driver() */ usb_irp *usb_get_irp() { - return 0; + return 0; } /** @@ -225,7 +225,7 @@ usb_irp *usb_get_irp() u8 usb_remove_irp(usb_irp * irp) { - return 1; + return 1; } /** @@ -236,178 +236,178 @@ u8 usb_remove_irp(usb_irp * irp) */ u16 usb_submit_irp(usb_irp *irp) { - usb_transfer_descriptor *td; - u8 runloop = 1; - u16 restlength = irp->len; - char *td_buf_ptr = irp->buffer; - - //u8 togl=irp->dev->epTogl[(irp->endpoint & 0x7F)]; - u8 togl = irp->dev->epTogl[(irp->endpoint & 0x7F)]; - //u8 togl=0; - - switch (irp->type) { - case USB_CTRL: - - /* alle requests mit dem gleichen algorithmus zerteilen - * das einzige ist der spezielle get_Device_descriptor request - * bei dem eine laenge von 64 angegeben ist. - * wenn man an adresse 0 einen get_device_desciptor schickt - * dann reichen die ersten 8 byte. - */ - - /***************** Setup Stage ***********************/ - td = usb_create_transfer_descriptor(irp); - td->pid = USB_PID_SETUP; - td->buffer = irp->buffer; - td->actlen = 8; /* control message are always 8 bytes */ - - togl = 0; - td->togl = togl; /* start with data0 */ - if (togl == 0) - togl = 1; - else - togl = 0; - /**** send token ****/ - hcdi_enqueue(td); - - /***************** Data Stage ***********************/ - /** - * You can see at bit 7 of bmRequestType if this stage is used, - * default requests are always 8 byte greate, from - * host to device. Stage 3 is only neccessary if the request - * expected datas from the device. - * bit7 - 1 = from device to host -> yes we need data stage - * bit7 - 0 = from host to device -> no send zero packet - * - * nach einem setup token kann nur ein IN token in stage 3 folgen - * nie aber ein OUT. Ein Zero OUT wird nur als Bestaetigung benoetigt. - * - * - * bit7 = 1 - * Device to Host - * - es kommen noch Daten mit PID_IN an - * - host beendet mit PID_OUT DATA1 Zero - * bit7 - 0 - * Host zu Device (wie set address) - * - device sendet ein PID_IN DATA1 Zero Packet als bestaetigung - */ - usb_device_request *setup = (usb_device_request *) irp->buffer; - u8 bmRequestType = setup->bmRequestType; - - if (bmRequestType & 0x80) { /* check bit 7 of bmRequestType */ - - /* schleife die die tds generiert */ - while (runloop) { - td = usb_create_transfer_descriptor(irp); - td->actlen = irp->epsize; - /* stop loop if all bytes are send */ - if (restlength <= irp->epsize) { - runloop = 0; - td->actlen = restlength; - } - - td->buffer = td_buf_ptr; - /* move pointer for next packet */ - td_buf_ptr = td_buf_ptr + irp->epsize; - - td->pid = USB_PID_IN; - td->togl = togl; - if (togl == 0) - togl = 1; - else - togl = 0; - - /* wenn device descriptor von adresse 0 angefragt wird werden nur - * die ersten 8 byte abgefragt - */ - if (setup->bRequest == GET_DESCRIPTOR && (setup->wValue >> 8) == 1 - && td->devaddress == 0) { - runloop = 0; /* stop loop */ - } - - /**** send token ****/ - hcdi_enqueue(td); - - /* pruefe ob noch weitere Pakete vom Device abgeholt werden muessen */ - restlength = restlength - irp->epsize; - } - } - - - /***************** Status Stage ***********************/ - /* Zero packet for end */ - td = usb_create_transfer_descriptor(irp); - td->togl = 1; /* zero data packet = always DATA1 packet */ - td->actlen = 0; - td->buffer = NULL; - - /** - * bit7 = 1, host beendet mit PID_OUT DATA1 Zero - * bit7 = 0, device sendet ein PID_IN DATA1 Zero Packet als bestaetigung - */ - if (bmRequestType & 0x80) { /* check bit 7 of bmRequestType */ - td->pid = USB_PID_OUT; - } else { - td->pid = USB_PID_IN; - } - /**** send token ****/ - hcdi_enqueue(td); - free(td); - - - break; - case USB_BULK: - - core.stdout("bulk\r\n"); - //u8 runloop=1; - //u16 restlength = irp->len; - //char * td_buf_ptr=irp->buffer; - - /* schleife die die tds generiert */ - while (runloop) { - - td = usb_create_transfer_descriptor(irp); - td->endpoint = td->endpoint & 0x7F; /* clear direction bit */ - - /* max packet size for given endpoint */ - td->actlen = irp->epsize; - - /* Generate In Packet */ - if (irp->endpoint & 0x80) - td->pid = USB_PID_IN; - else - /* Generate Out Packet */ - td->pid = USB_PID_OUT; - - /* stop loop if all bytes are send */ - if (restlength <= irp->epsize) { - runloop = 0; - td->actlen = restlength; - } - - td->buffer = td_buf_ptr; - /* move pointer for next packet */ - td_buf_ptr = td_buf_ptr + irp->epsize; - - td->togl = togl; - if (togl == 0) - togl = 1; - else - togl = 0; - /**** send token ****/ - hcdi_enqueue(td); - free(td); - } - /* next togl */ - //if(td->pid == USB_PID_OUT) { - //if(togl==0) togl=1; else togl=0; - //} - irp->dev->epTogl[(irp->endpoint & 0x7F)] = togl; - - break; - } - - return 1; + usb_transfer_descriptor *td; + u8 runloop = 1; + u16 restlength = irp->len; + char *td_buf_ptr = irp->buffer; + + //u8 togl=irp->dev->epTogl[(irp->endpoint & 0x7F)]; + u8 togl = irp->dev->epTogl[(irp->endpoint & 0x7F)]; + //u8 togl=0; + + switch (irp->type) { + case USB_CTRL: + + /* alle requests mit dem gleichen algorithmus zerteilen + * das einzige ist der spezielle get_Device_descriptor request + * bei dem eine laenge von 64 angegeben ist. + * wenn man an adresse 0 einen get_device_desciptor schickt + * dann reichen die ersten 8 byte. + */ + + /***************** Setup Stage ***********************/ + td = usb_create_transfer_descriptor(irp); + td->pid = USB_PID_SETUP; + td->buffer = irp->buffer; + td->actlen = 8; /* control message are always 8 bytes */ + + togl = 0; + td->togl = togl; /* start with data0 */ + if (togl == 0) + togl = 1; + else + togl = 0; + /**** send token ****/ + hcdi_enqueue(td); + + /***************** Data Stage ***********************/ + /** + * You can see at bit 7 of bmRequestType if this stage is used, + * default requests are always 8 byte greate, from + * host to device. Stage 3 is only neccessary if the request + * expected datas from the device. + * bit7 - 1 = from device to host -> yes we need data stage + * bit7 - 0 = from host to device -> no send zero packet + * + * nach einem setup token kann nur ein IN token in stage 3 folgen + * nie aber ein OUT. Ein Zero OUT wird nur als Bestaetigung benoetigt. + * + * + * bit7 = 1 + * Device to Host + * - es kommen noch Daten mit PID_IN an + * - host beendet mit PID_OUT DATA1 Zero + * bit7 - 0 + * Host zu Device (wie set address) + * - device sendet ein PID_IN DATA1 Zero Packet als bestaetigung + */ + usb_device_request *setup = (usb_device_request *) irp->buffer; + u8 bmRequestType = setup->bmRequestType; + + if (bmRequestType & 0x80) { /* check bit 7 of bmRequestType */ + + /* schleife die die tds generiert */ + while (runloop) { + td = usb_create_transfer_descriptor(irp); + td->actlen = irp->epsize; + /* stop loop if all bytes are send */ + if (restlength <= irp->epsize) { + runloop = 0; + td->actlen = restlength; + } + + td->buffer = td_buf_ptr; + /* move pointer for next packet */ + td_buf_ptr = td_buf_ptr + irp->epsize; + + td->pid = USB_PID_IN; + td->togl = togl; + if (togl == 0) + togl = 1; + else + togl = 0; + + /* wenn device descriptor von adresse 0 angefragt wird werden nur + * die ersten 8 byte abgefragt + */ + if (setup->bRequest == GET_DESCRIPTOR && (setup->wValue >> 8) == 1 + && td->devaddress == 0) { + runloop = 0; /* stop loop */ + } + + /**** send token ****/ + hcdi_enqueue(td); + + /* pruefe ob noch weitere Pakete vom Device abgeholt werden muessen */ + restlength = restlength - irp->epsize; + } + } + + + /***************** Status Stage ***********************/ + /* Zero packet for end */ + td = usb_create_transfer_descriptor(irp); + td->togl = 1; /* zero data packet = always DATA1 packet */ + td->actlen = 0; + td->buffer = NULL; + + /** + * bit7 = 1, host beendet mit PID_OUT DATA1 Zero + * bit7 = 0, device sendet ein PID_IN DATA1 Zero Packet als bestaetigung + */ + if (bmRequestType & 0x80) { /* check bit 7 of bmRequestType */ + td->pid = USB_PID_OUT; + } else { + td->pid = USB_PID_IN; + } + /**** send token ****/ + hcdi_enqueue(td); + free(td); + + + break; + case USB_BULK: + + core.stdout("bulk\r\n"); + //u8 runloop=1; + //u16 restlength = irp->len; + //char * td_buf_ptr=irp->buffer; + + /* schleife die die tds generiert */ + while (runloop) { + + td = usb_create_transfer_descriptor(irp); + td->endpoint = td->endpoint & 0x7F; /* clear direction bit */ + + /* max packet size for given endpoint */ + td->actlen = irp->epsize; + + /* Generate In Packet */ + if (irp->endpoint & 0x80) + td->pid = USB_PID_IN; + else + /* Generate Out Packet */ + td->pid = USB_PID_OUT; + + /* stop loop if all bytes are send */ + if (restlength <= irp->epsize) { + runloop = 0; + td->actlen = restlength; + } + + td->buffer = td_buf_ptr; + /* move pointer for next packet */ + td_buf_ptr = td_buf_ptr + irp->epsize; + + td->togl = togl; + if (togl == 0) + togl = 1; + else + togl = 0; + /**** send token ****/ + hcdi_enqueue(td); + free(td); + } + /* next togl */ + //if(td->pid == USB_PID_OUT) { + //if(togl==0) togl=1; else togl=0; + //} + irp->dev->epTogl[(irp->endpoint & 0x7F)] = togl; + + break; + } + + return 1; } @@ -417,14 +417,14 @@ u16 usb_submit_irp(usb_irp *irp) */ usb_transfer_descriptor *usb_create_transfer_descriptor(usb_irp * irp) { - usb_transfer_descriptor *td = - (usb_transfer_descriptor *) malloc(sizeof(usb_transfer_descriptor)); + usb_transfer_descriptor *td = + (usb_transfer_descriptor *) malloc(sizeof(usb_transfer_descriptor)); - td->devaddress = irp->dev->address; - td->endpoint = irp->endpoint; - td->iso = 0; - td->state = USB_TRANSFER_DESCR_NONE; + td->devaddress = irp->dev->address; + td->endpoint = irp->endpoint; + td->iso = 0; + td->state = USB_TRANSFER_DESCR_NONE; - return td; + return td; } diff --git a/usb/core/core.h b/usb/core/core.h index 143be33..0e12722 100644 --- a/usb/core/core.h +++ b/usb/core/core.h @@ -9,15 +9,15 @@ * modification, are permitted provided that the following conditions * are met: * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following - * disclaimer in the documentation and/or other materials provided - * with the distribution. - * * Neither the name of the FH Augsburg nor the names of its - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * * Neither the name of the FH Augsburg nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT @@ -54,30 +54,30 @@ inline static void wait_ms(int ms) typedef struct usb_device_t usb_device; struct usb_device_t { - u8 address; - u8 fullspeed; - u8 bMaxPacketSize0; - u8 bDeviceClass; - u8 bDeviceSubClass; - u8 bDeviceProtocoll; - u32 idVendor; - u32 idProduct; - u32 bcdDevice; - u8 bNumConfigurations; - - u8 epSize[16]; - u8 epTogl[16]; - - usb_device *next; + u8 address; + u8 fullspeed; + u8 bMaxPacketSize0; + u8 bDeviceClass; + u8 bDeviceSubClass; + u8 bDeviceProtocoll; + u32 idVendor; + u32 idProduct; + u32 bcdDevice; + u8 bNumConfigurations; + + u8 epSize[16]; + u8 epTogl[16]; + + usb_device *next; }; typedef struct usb_endpoint_t usb_endpoint; struct usb_endpoint_t { - u8 type; - u8 size; - u8 togl; - usb_endpoint *next; + u8 type; + u8 size; + u8 togl; + usb_endpoint *next; }; @@ -85,10 +85,10 @@ struct usb_endpoint_t { typedef struct usb_transfer_descriptor_ep_t usb_transfer_descriptor_ep; struct usb_transfer_descriptor_ep_t { - usb_transfer_descriptor_ep *next; - u8 device_address; - u8 endpoint; - struct usb_transfer_descriptor_t *start; + usb_transfer_descriptor_ep *next; + u8 device_address; + u8 endpoint; + struct usb_transfer_descriptor_t *start; }; /** @@ -96,11 +96,11 @@ struct usb_transfer_descriptor_ep_t { */ typedef struct usb_driver_t usb_driver; struct usb_driver_t { - char* name; - void (*probe)(void); - void (*check)(void); - void * data; - usb_driver *next; + char* name; + void (*probe)(void); + void (*check)(void); + void * data; + usb_driver *next; }; @@ -110,17 +110,17 @@ struct usb_driver_t { typedef struct usb_irp_t usb_irp; struct usb_irp_t { - //u8 devaddress; - usb_device * dev; - u8 endpoint; /* ep -> bit 7 is for direction 1=from dev to host */ - u8 epsize; - u8 type; /* control, interrupt, bulk or isochron */ + //u8 devaddress; + usb_device * dev; + u8 endpoint; /* ep -> bit 7 is for direction 1=from dev to host */ + u8 epsize; + u8 type; /* control, interrupt, bulk or isochron */ - char * buffer; - u16 len; + char * buffer; + u16 len; - //list * td_list; - u16 timeout; + //list * td_list; + u16 timeout; }; @@ -129,28 +129,28 @@ struct usb_irp_t { */ typedef struct usb_transfer_descriptor_t usb_transfer_descriptor; struct usb_transfer_descriptor_t { - u8 devaddress; - u8 endpoint; - - // TODO: zusammenfassen! - u8 pid; - u8 iso; - u8 togl; - - char * buffer; - u16 actlen; - - u8 state; - usb_transfer_descriptor *next; + u8 devaddress; + u8 endpoint; + + // TODO: zusammenfassen! + u8 pid; + u8 iso; + u8 togl; + + char * buffer; + u16 actlen; + + u8 state; + usb_transfer_descriptor *next; }; //typedef struct usb_core_t usb_core; struct usb_core_t { - u8 nextaddress; - void (*stdout)(char * arg); - // driver list - list * drivers; - list * devices; + u8 nextaddress; + void (*stdout)(char * arg); + // driver list + list * drivers; + list * devices; } core; void usb_init(); @@ -173,7 +173,7 @@ u16 usb_submit_irp(usb_irp *irp); usb_transfer_descriptor * usb_create_transfer_descriptor(usb_irp *irp); -#define USB_IRP_WAITING 1 +#define USB_IRP_WAITING 1 #define USB_TRANSFER_DESCR_NONE 1 diff --git a/usb/core/usb.c b/usb/core/usb.c index 0b127b5..d30f83d 100644 --- a/usb/core/usb.c +++ b/usb/core/usb.c @@ -54,18 +54,18 @@ */ usb_device * usb_open(u32 vendor_id, u32 product_id) { - usb_device* dev; - element * iterator = core.devices->head; - while(iterator != NULL) { - dev = (usb_device*)iterator->data; - - if(dev->idVendor==vendor_id&&dev->idProduct==product_id) - return dev; - - iterator=iterator->next; - } - - return NULL; + usb_device* dev; + element * iterator = core.devices->head; + while(iterator != NULL) { + dev = (usb_device*)iterator->data; + + if(dev->idVendor==vendor_id&&dev->idProduct==product_id) + return dev; + + iterator=iterator->next; + } + + return NULL; } @@ -74,17 +74,17 @@ usb_device * usb_open(u32 vendor_id, u32 product_id) */ usb_device * usb_open_class(u8 class) { - usb_device* dev; - element * iterator = core.devices->head; - while(iterator != NULL) { - dev = (usb_device*)iterator->data; - - if(dev->bDeviceClass==class) - return dev; - - iterator=iterator->next; - } - return NULL; + usb_device* dev; + element * iterator = core.devices->head; + while(iterator != NULL) { + dev = (usb_device*)iterator->data; + + if(dev->bDeviceClass==class) + return dev; + + iterator=iterator->next; + } + return NULL; } /** @@ -93,38 +93,38 @@ usb_device * usb_open_class(u8 class) u8 usb_close(usb_device *dev) { - return 0; + return 0; } u8 usb_get_device_descriptor(usb_device *dev, char *buf,u8 size) { - return 0; + return 0; } u8 usb_set_address(usb_device *dev, u8 address) { - return 0; + return 0; } u8 usb_set_configuration(usb_device *dev, u8 configuration) { - return 0; + return 0; } u8 usb_set_altinterface(usb_device *dev, u8 alternate) { - return 0; + return 0; } u8 usb_reset(usb_device *dev) { - return 0; + return 0; } @@ -135,52 +135,52 @@ u8 usb_reset(usb_device *dev) */ u8 usb_control_msg(usb_device *dev, u8 requesttype, u8 request, u16 value, u16 index, u16 length,char *buf, u16 size, u16 timeout) { - usb_irp *irp = (usb_irp*)malloc(sizeof(usb_irp)); - irp->dev = dev; - //irp->devaddress = dev->address; - irp->endpoint = 0; - - irp->epsize = dev->bMaxPacketSize0; - irp->type = USB_CTRL; - - buf[0]=(char)requesttype; - buf[1]=(char)request; - buf[2]=(char)(value >> 8); - buf[3]=(char)(value); - buf[4]=(char)(index >> 8); - buf[5]=(char)(index); - // lenght buf are the only where the order is inverted - buf[6]=(char)(length); - buf[7]=(char)(length >> 8); - - irp->buffer = buf; - irp->len = length; - irp->timeout = timeout; - - usb_submit_irp(irp); - free(irp); - - return 0; + usb_irp *irp = (usb_irp*)malloc(sizeof(usb_irp)); + irp->dev = dev; + //irp->devaddress = dev->address; + irp->endpoint = 0; + + irp->epsize = dev->bMaxPacketSize0; + irp->type = USB_CTRL; + + buf[0]=(char)requesttype; + buf[1]=(char)request; + buf[2]=(char)(value >> 8); + buf[3]=(char)(value); + buf[4]=(char)(index >> 8); + buf[5]=(char)(index); + // lenght buf are the only where the order is inverted + buf[6]=(char)(length); + buf[7]=(char)(length >> 8); + + irp->buffer = buf; + irp->len = length; + irp->timeout = timeout; + + usb_submit_irp(irp); + free(irp); + + return 0; } u8 usb_get_string(usb_device *dev, u8 index, u8 langid, char *buf, u8 buflen) { - return 0; + return 0; } u8 usb_get_string_simple(usb_device *dev, u8 index, char *buf, u8 buflen) { - return 0; + return 0; } u8 usb_get_descriptor(usb_device *dev, unsigned char type, unsigned char index, void *buf, u8 size) { - return 0; + return 0; } @@ -191,22 +191,22 @@ u8 usb_get_descriptor(usb_device *dev, unsigned char type, unsigned char index, */ u8 usb_bulk_write(usb_device *dev, u8 ep, char *buf, u8 size, u8 timeout) { - usb_irp * irp = (usb_irp*)malloc(sizeof(usb_irp)); - irp->dev = dev; - //irp->devaddress = dev->address; - - irp->endpoint = ep; - irp->epsize = dev->epSize[ep]; // ermitteln - irp->type = USB_BULK; - - irp->buffer = buf; - irp->len = size; - irp->timeout = timeout; - - usb_submit_irp(irp); - free(irp); - - return 0; + usb_irp * irp = (usb_irp*)malloc(sizeof(usb_irp)); + irp->dev = dev; + //irp->devaddress = dev->address; + + irp->endpoint = ep; + irp->epsize = dev->epSize[ep]; // ermitteln + irp->type = USB_BULK; + + irp->buffer = buf; + irp->len = size; + irp->timeout = timeout; + + usb_submit_irp(irp); + free(irp); + + return 0; } /** @@ -214,22 +214,22 @@ u8 usb_bulk_write(usb_device *dev, u8 ep, char *buf, u8 size, u8 timeout) */ u8 usb_bulk_read(usb_device *dev, u8 ep, char *buf, u8 size, u8 timeout) { - usb_irp * irp = (usb_irp*)malloc(sizeof(usb_irp)); - //irp->devaddress = dev->address; - irp->dev = dev; - - irp->endpoint = ep | 0x80; // from device to host - irp->epsize = dev->epSize[ep]; // ermitteln - irp->type = USB_BULK; - - irp->buffer = buf; - irp->len = size; - irp->timeout = timeout; - - usb_submit_irp(irp); - free(irp); - - return 0; + usb_irp * irp = (usb_irp*)malloc(sizeof(usb_irp)); + //irp->devaddress = dev->address; + irp->dev = dev; + + irp->endpoint = ep | 0x80; // from device to host + irp->epsize = dev->epSize[ep]; // ermitteln + irp->type = USB_BULK; + + irp->buffer = buf; + irp->len = size; + irp->timeout = timeout; + + usb_submit_irp(irp); + free(irp); + + return 0; } @@ -240,7 +240,7 @@ u8 usb_bulk_read(usb_device *dev, u8 ep, char *buf, u8 size, u8 timeout) u8 usb_interrupt_write(usb_device *dev, u8 ep, char *buf, u8 size, u8 timeout) { - return 0; + return 0; } /** @@ -249,7 +249,7 @@ u8 usb_interrupt_write(usb_device *dev, u8 ep, char *buf, u8 size, u8 timeout) u8 usb_interrupt_read(usb_device *dev, u8 ep, char *buf, u8 size, u8 timeout) { - return 0; + return 0; } @@ -261,7 +261,7 @@ u8 usb_interrupt_read(usb_device *dev, u8 ep, char *buf, u8 size, u8 timeout) u8 usb_isochron_write(usb_device *dev, u8 ep, char *buf, u8 size, u8 timeout) { - return 0; + return 0; } /** @@ -271,7 +271,7 @@ u8 usb_isochron_read(usb_device *dev, u8 ep, char *buf, u8 size, u8 timeout) { - return 0; + return 0; } diff --git a/usb/drivers/class/hub.c b/usb/drivers/class/hub.c index 722624c..38c40b3 100644 --- a/usb/drivers/class/hub.c +++ b/usb/drivers/class/hub.c @@ -45,37 +45,37 @@ void usb_hub_check(); usb_driver hub = { - .name = "hub", - .probe = usb_hub_probe, - .check = usb_hub_check, - .data = NULL + .name = "hub", + .probe = usb_hub_probe, + .check = usb_hub_check, + .data = NULL }; void usb_hub_init() { - usb_register_driver(&hub); + usb_register_driver(&hub); } void usb_hub_probe() { - // schaue ob aktuell enumeriertes geraet ein hub ist - #if DEBUG - core.stdout("Probe: Hub\r\n"); - #endif - wait_ms(1000); - - usb_device * dev; - dev = usb_open_class(HUB_CLASSCODE); - if(dev != NULL){ - hub.data = (void*)dev; /* save handle */ - #if DEBUG - core.stdout("Hub: Found Hub Device\r\n"); - #endif - - /* install int in EP */ - - } + // schaue ob aktuell enumeriertes geraet ein hub ist + #if DEBUG + core.stdout("Probe: Hub\r\n"); + #endif + wait_ms(1000); + + usb_device * dev; + dev = usb_open_class(HUB_CLASSCODE); + if(dev != NULL){ + hub.data = (void*)dev; /* save handle */ + #if DEBUG + core.stdout("Hub: Found Hub Device\r\n"); + #endif + + /* install int in EP */ + + } @@ -84,29 +84,29 @@ void usb_hub_probe() void usb_hub_check() { - // usb_read_interrupt(handle,1,buf); - // ah neue geraet gefunden - // mit request den port geziel reseten, damit device adresse 0 hat - // enumeration start - // usb_add_device() - // - // - // ah geraet entfernt - // usb_remove_device(h1); + // usb_read_interrupt(handle,1,buf); + // ah neue geraet gefunden + // mit request den port geziel reseten, damit device adresse 0 hat + // enumeration start + // usb_add_device() + // + // + // ah geraet entfernt + // usb_remove_device(h1); } u8 usb_hub_get_hub_descriptor(usb_device *dev, char * buf) { - return 0; + return 0; } u8 usb_hub_get_hub_status(usb_device *dev, char *buf) { - return 0; + return 0; } @@ -114,36 +114,36 @@ u8 usb_hub_get_port_status(usb_device *dev, char *buf) { - return 0; + return 0; } u8 usb_hub_clear_port_feature(usb_device *dev) { - return 0; + return 0; } u8 usb_hub_set_port_feature(usb_device *dev, u8 value) { - return 0; + return 0; } u8 usb_hub_clear_hub_feature(usb_device *dev) { - return 0; + return 0; } u8 usb_hub_set_hub_feature(usb_device *dev) { - return 0; + return 0; } u8 usb_hub_set_hub_descriptor(usb_device *dev) { - return 0; + return 0; } diff --git a/usb/drivers/class/storage.c b/usb/drivers/class/storage.c index ff503f7..b8c8ee3 100644 --- a/usb/drivers/class/storage.c +++ b/usb/drivers/class/storage.c @@ -53,68 +53,68 @@ u16 sectorsize[MAX_DEVICES]; u8 massstorage_in_use; usb_driver storage = { - .name = "storage", - .probe = usb_storage_probe, - .check = usb_storage_check, - .data = NULL + .name = "storage", + .probe = usb_storage_probe, + .check = usb_storage_check, + .data = NULL }; void usb_storage_init() { - massstorage_in_use = 0; - usb_register_driver(&storage); + massstorage_in_use = 0; + usb_register_driver(&storage); } void usb_storage_probe() { - // schaue ob aktuell enumeriertes geraet ein storage ist - #if DEBUG - core.stdout("Probe: Storage\r\n"); - #endif + // schaue ob aktuell enumeriertes geraet ein storage ist + #if DEBUG + core.stdout("Probe: Storage\r\n"); + #endif - /* read interface descriptor for class code */ - char buf[32]; - - usb_device* dev; - element * iterator = core.devices->head; - - while(iterator != NULL) { - dev = (usb_device*)iterator->data; - - /* get interface descriptor */ - usb_control_msg(dev, 0x80, GET_DESCRIPTOR,2, 0, 32,buf, 8, 0); - - if(buf[14]==MASS_STORAGE_CLASSCODE){ - massstorage[massstorage_in_use] = dev; - massstorage_in_use++; - #if DEBUG - core.stdout("Storage: Found Storage Device\r\n"); - #endif - - /* here is only my lib driver test */ - usb_storage_open(0); - usb_storage_inquiry(0); - usb_storage_read_capacity(0); - - //char * buf = (char*)malloc(512); - //free(buf); - //char buf[512]; - //usb_storage_read_sector(0,1,buf); - - /* end of driver test */ - } - - iterator=iterator->next; - } + /* read interface descriptor for class code */ + char buf[32]; + + usb_device* dev; + element * iterator = core.devices->head; + + while(iterator != NULL) { + dev = (usb_device*)iterator->data; + + /* get interface descriptor */ + usb_control_msg(dev, 0x80, GET_DESCRIPTOR,2, 0, 32,buf, 8, 0); + + if(buf[14]==MASS_STORAGE_CLASSCODE){ + massstorage[massstorage_in_use] = dev; + massstorage_in_use++; + #if DEBUG + core.stdout("Storage: Found Storage Device\r\n"); + #endif + + /* here is only my lib driver test */ + usb_storage_open(0); + usb_storage_inquiry(0); + usb_storage_read_capacity(0); + + //char * buf = (char*)malloc(512); + //free(buf); + //char buf[512]; + //usb_storage_read_sector(0,1,buf); + + /* end of driver test */ + } + + iterator=iterator->next; + } } void usb_storage_check() { - // wird periodisch augerufen - // da ein mass storage aber keinen interrupt oder isochronen endpunkt - // hat passiert hier nichts + // wird periodisch augerufen + // da ein mass storage aber keinen interrupt oder isochronen endpunkt + // hat passiert hier nichts } @@ -124,85 +124,85 @@ void usb_storage_check() */ u8 usb_storage_open(u8 device) { - /* set configuration */ - char tmp[8]; - usb_control_msg(massstorage[device], 0x00,SET_CONFIGURATION,0x0100, 0, 0,tmp, 8, 0); + /* set configuration */ + char tmp[8]; + usb_control_msg(massstorage[device], 0x00,SET_CONFIGURATION,0x0100, 0, 0,tmp, 8, 0); - /* class request */ - usb_control_msg(massstorage[device], 0xA1,0xFE,0, 0, 1,tmp, 8, 0); + /* class request */ + usb_control_msg(massstorage[device], 0xA1,0xFE,0, 0, 1,tmp, 8, 0); - /* wait until the stick is complete ready */ - wait_ms(10); - - //FIXME and all other return values!!! - return 1; + /* wait until the stick is complete ready */ + wait_ms(10); + + //FIXME and all other return values!!! + return 1; } u8 usb_storage_inquiry(u8 device) { - /* send cwb "usbc" */ - - usb_storage_cbw *cbw = (usb_storage_cbw*)malloc(sizeof(usb_storage_cbw)); - cbw->dCBWSignature= 0x43425355; - cbw->dCBWTag=0x826A6008; - cbw->dCBWDataTransferLength=0x00000024; - cbw->bCWDFlags=0x80; - cbw->bCBWLun=0x00; - cbw->bCBWCBLength=0x01; + /* send cwb "usbc" */ + + usb_storage_cbw *cbw = (usb_storage_cbw*)malloc(sizeof(usb_storage_cbw)); + cbw->dCBWSignature= 0x43425355; + cbw->dCBWTag=0x826A6008; + cbw->dCBWDataTransferLength=0x00000024; + cbw->bCWDFlags=0x80; + cbw->bCBWLun=0x00; + cbw->bCBWCBLength=0x01; - u8 i; - for(i=0;i<16;i++) - cbw->CBWCB[i]=0x00; + u8 i; + for(i=0;i<16;i++) + cbw->CBWCB[i]=0x00; - cbw->CBWCB[0]=0x12; // 0x12 = INQUIRY + cbw->CBWCB[0]=0x12; // 0x12 = INQUIRY - usb_bulk_write(massstorage[device], 2, (char*)cbw, 31, 0); - usb_bulk_read(massstorage[device], 1, (char*)cbw, 36, 0); - usb_bulk_read(massstorage[device], 1, (char*)cbw, 13, 0); + usb_bulk_write(massstorage[device], 2, (char*)cbw, 31, 0); + usb_bulk_read(massstorage[device], 1, (char*)cbw, 36, 0); + usb_bulk_read(massstorage[device], 1, (char*)cbw, 13, 0); - free(cbw); + free(cbw); - return 0; + return 0; } u8 usb_storage_read_capacity(u8 device) { - /* send cwb "usbc" */ + /* send cwb "usbc" */ - char tmp[8]; - u8 i; - usb_storage_cbw * cbw = (usb_storage_cbw*)malloc(sizeof(usb_storage_cbw)); + char tmp[8]; + u8 i; + usb_storage_cbw * cbw = (usb_storage_cbw*)malloc(sizeof(usb_storage_cbw)); - usb_control_msg(massstorage[device], 0x02,1,0, 0x8100, 0,tmp, 8, 0); // + usb_control_msg(massstorage[device], 0x02,1,0, 0x8100, 0,tmp, 8, 0); // - cbw->dCBWSignature= 0x43425355; - cbw->dCBWTag=0x826A6008; - cbw->dCBWDataTransferLength=0x00000008; - cbw->bCWDFlags=0x80; - cbw->bCBWLun=0x00; - cbw->bCBWCBLength=0x0A; + cbw->dCBWSignature= 0x43425355; + cbw->dCBWTag=0x826A6008; + cbw->dCBWDataTransferLength=0x00000008; + cbw->bCWDFlags=0x80; + cbw->bCBWLun=0x00; + cbw->bCBWCBLength=0x0A; - for(i=0;i<16;i++) - cbw->CBWCB[i]=0x00; + for(i=0;i<16;i++) + cbw->CBWCB[i]=0x00; - cbw->CBWCB[0]=0x25; // 0x12 = INQUIRY + cbw->CBWCB[0]=0x25; // 0x12 = INQUIRY - usb_bulk_write(massstorage[device], 2, (char*)cbw, 31, 0); - usb_bulk_read(massstorage[device], 1, (char*)cbw, 8, 0); - usb_bulk_read(massstorage[device], 1, (char*)cbw, 13, 0); + usb_bulk_write(massstorage[device], 2, (char*)cbw, 31, 0); + usb_bulk_read(massstorage[device], 1, (char*)cbw, 8, 0); + usb_bulk_read(massstorage[device], 1, (char*)cbw, 13, 0); - free(cbw); + free(cbw); - return 0; + return 0; } u8 usb_storage_read_sector(u8 device, u32 sector, char * buf) { - /* send cwb "usbc" */ - char tmpbuf[] = {0x55,0x53,0x42,0x43,0x08, + /* send cwb "usbc" */ + char tmpbuf[] = {0x55,0x53,0x42,0x43,0x08, 0xE0,0x63,0x82,0x00,0x02, 0x00,0x00,0x80,0x00,0x0A, 0x28,0x00,0x00,0x00,0x00, @@ -211,17 +211,17 @@ u8 usb_storage_read_sector(u8 device, u32 sector, char * buf) 0x00, 0x00,0x00,0x00,0x00,0x00}; - usb_bulk_write(massstorage[device], 2, tmpbuf, 31, 0); - //usb_bulk_read(massstorage[device], 1, buf,64,0); - //usb_bulk_read(massstorage[device], 1, buf, 13, 0); + usb_bulk_write(massstorage[device], 2, tmpbuf, 31, 0); + //usb_bulk_read(massstorage[device], 1, buf,64,0); + //usb_bulk_read(massstorage[device], 1, buf, 13, 0); - - return 0; + + return 0; } u8 usb_storage_write_sector(u8 device, u32 sector, char * buf) { - return 0; + return 0; } diff --git a/usb/drivers/class/storage.h b/usb/drivers/class/storage.h index 3b5b4c0..4d216f6 100644 --- a/usb/drivers/class/storage.h +++ b/usb/drivers/class/storage.h @@ -63,21 +63,21 @@ void usb_storage_check(); typedef struct usb_storage_cbw_t usb_storage_cbw; struct usb_storage_cbw_t { - u32 dCBWSignature; - u32 dCBWTag; - u32 dCBWDataTransferLength; - u8 bCWDFlags; - u8 bCBWLun; - u8 bCBWCBLength; - u8 CBWCB[16]; + u32 dCBWSignature; + u32 dCBWTag; + u32 dCBWDataTransferLength; + u8 bCWDFlags; + u8 bCBWLun; + u8 bCBWCBLength; + u8 CBWCB[16]; }; typedef struct usb_storage_csw_t usb_storage_csw; struct usb_storage_csw_t { - u32 dCSWSignature; - u32 dCSWTag; - u32 dCSWDataResidue; - u8 bCSWStatus; + u32 dCSWSignature; + u32 dCSWTag; + u32 dCSWDataResidue; + u8 bCSWStatus; }; diff --git a/usb/drivers/skeleton.c b/usb/drivers/skeleton.c index 3c0e0ba..48b0ec1 100644 --- a/usb/drivers/skeleton.c +++ b/usb/drivers/skeleton.c @@ -41,43 +41,43 @@ usb_device * devices[MAX_DEVICES]; u8 devices_in_use; usb_driver skeleton = { - .name = "skeleton", - .probe = usb_skeleton_probe, - .unprobe = usb_skeleton_unprobe, - .check = usb_skeleton_check, - .data = NULL + .name = "skeleton", + .probe = usb_skeleton_probe, + .unprobe = usb_skeleton_unprobe, + .check = usb_skeleton_check, + .data = NULL }; /* Zum Treiber initialisieren und anmelden am Stack */ void usb_skeleton_init() { - devices_in_use = 0; - usb_register_driver(&skeleton); + devices_in_use = 0; + usb_register_driver(&skeleton); } /* Prüfen ob neues Gerät vom Treiber aus angesteuert werden kann */ void usb_skeleton_probe() { - usb_device * tmp; - tmp = usb_open(0x1234,0x9876); - if(tmp!=NULL) { - /* neues Gerät gefunden */ + usb_device * tmp; + tmp = usb_open(0x1234,0x9876); + if(tmp!=NULL) { + /* neues Gerät gefunden */ - /* wenn Gerät noch nicht in interner Datenstruktur */ - if(devices_in_use struct ohci_hcca { #define NUM_INITS 32 - u32 int_table[NUM_INITS]; /* periodic schedule */ - /* - * OHCI defines u16 frame_no, followed by u16 zero pad. - * Since some processors can't do 16 bit bus accesses, - * portable access must be a 32 bits wide. - */ - u32 frame_no; /* current frame number */ - u32 done_head; /* info returned for an interrupt */ - u8 reserved_for_hc [116]; - u8 what [4]; /* spec only identifies 252 bytes :) */ + u32 int_table[NUM_INITS]; /* periodic schedule */ + /* + * OHCI defines u16 frame_no, followed by u16 zero pad. + * Since some processors can't do 16 bit bus accesses, + * portable access must be a 32 bits wide. + */ + u32 frame_no; /* current frame number */ + u32 done_head; /* info returned for an interrupt */ + u8 reserved_for_hc [116]; + u8 what [4]; /* spec only identifies 252 bytes :) */ } ALIGNED(256); #endif diff --git a/usb/lib/list.c b/usb/lib/list.c index 05ffc07..efb623c 100644 --- a/usb/lib/list.c +++ b/usb/lib/list.c @@ -37,31 +37,31 @@ list* list_create() { - list *l = (list*)malloc(sizeof(list)); - l->head = NULL; - return l; + list *l = (list*)malloc(sizeof(list)); + l->head = NULL; + return l; } u8 list_add_tail(list *l, element *e) { - e->next = NULL; + e->next = NULL; - /* if head is empty put first element here */ - if(l->head==NULL){ - l->head = e; - return 1; - } + /* if head is empty put first element here */ + if(l->head==NULL){ + l->head = e; + return 1; + } - /* find last element */ - element * iterator; - iterator = l->head; + /* find last element */ + element * iterator; + iterator = l->head; - while(iterator->next!=NULL) { - iterator = iterator->next; - } - iterator->next = e; + while(iterator->next!=NULL) { + iterator = iterator->next; + } + iterator->next = e; - return 1; + return 1; } @@ -69,16 +69,16 @@ u8 list_add_tail(list *l, element *e) // FIXME: untested and unused!! u8 list_delete_element(list *l, element *e) { - return 1; + return 1; } // FIXME: untested and unused!! u8 list_is_element_last(list *l, element *e) { - if(e->next==NULL) - return 1; - else - return 0; + if(e->next==NULL) + return 1; + else + return 0; } @@ -86,14 +86,14 @@ u8 list_is_element_last(list *l, element *e) // FIXME: untested and unused!! element * list_find_next_element(list *l, element *e) { - element * iterator; - iterator = l->head; + element * iterator; + iterator = l->head; - while(iterator!=NULL){ - if(iterator == e) - return iterator->next; - iterator = iterator->next; - } - return NULL; + while(iterator!=NULL){ + if(iterator == e) + return iterator->next; + iterator = iterator->next; + } + return NULL; } diff --git a/usb/lib/list.h b/usb/lib/list.h index 392f28b..1f7d551 100644 --- a/usb/lib/list.h +++ b/usb/lib/list.h @@ -39,14 +39,14 @@ typedef struct element_t element; struct element_t { - void * data; - element * next; + void * data; + element * next; }; typedef struct list_t list; struct list_t { - element * head; + element * head; }; -- 2.25.1