1
0
Fork 0
forked from len0rd/rockbox

Add a PACK_DESCRIPTOR macro to make the class drivers a bit more readable (FS#10145 by Tomer Shalev)

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@20733 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
Frank Gevaerts 2009-04-18 20:04:52 +00:00
parent 8b6b46f3c4
commit ab09322b7a
4 changed files with 23 additions and 24 deletions

View file

@ -24,6 +24,7 @@
#include "usb_drv.h" #include "usb_drv.h"
#include "kernel.h" #include "kernel.h"
#include "usb_charging_only.h" #include "usb_charging_only.h"
#include "usb_class_driver.h"
//#define LOGF_ENABLE //#define LOGF_ENABLE
#include "logf.h" #include "logf.h"
@ -66,9 +67,7 @@ int usb_charging_only_get_config_descriptor(unsigned char *dest,int max_packet_s
unsigned char *orig_dest = dest; unsigned char *orig_dest = dest;
interface_descriptor.bInterfaceNumber=usb_interface; interface_descriptor.bInterfaceNumber=usb_interface;
memcpy(dest,&interface_descriptor,sizeof(struct usb_interface_descriptor)); PACK_DESCRIPTOR(dest, interface_descriptor);
dest+=sizeof(struct usb_interface_descriptor);
return (dest-orig_dest); return (dest-orig_dest);
} }

View file

@ -85,4 +85,10 @@ struct usb_class_driver {
#endif #endif
}; };
#define PACK_DESCRIPTOR(dest, descriptor) \
do { \
memcpy(dest, &(descriptor), sizeof(descriptor)); \
dest += sizeof(descriptor); \
} while (0)
#endif #endif

View file

@ -24,7 +24,7 @@
#include "usb_drv.h" #include "usb_drv.h"
#include "kernel.h" #include "kernel.h"
#include "usb_serial.h" #include "usb_serial.h"
#include "usb_class_driver.h"
//#define LOGF_ENABLE //#define LOGF_ENABLE
#include "logf.h" #include "logf.h"
@ -102,19 +102,16 @@ int usb_serial_get_config_descriptor(unsigned char *dest,int max_packet_size)
{ {
unsigned char *orig_dest = dest; unsigned char *orig_dest = dest;
endpoint_descriptor.wMaxPacketSize=max_packet_size;
interface_descriptor.bInterfaceNumber = usb_interface; interface_descriptor.bInterfaceNumber = usb_interface;
PACK_DESCRIPTOR(dest, interface_descriptor);
memcpy(dest,&interface_descriptor,sizeof(struct usb_interface_descriptor)); endpoint_descriptor.wMaxPacketSize = max_packet_size;
dest+=sizeof(struct usb_interface_descriptor);
endpoint_descriptor.bEndpointAddress = ep_in; endpoint_descriptor.bEndpointAddress = ep_in;
memcpy(dest,&endpoint_descriptor,sizeof(struct usb_endpoint_descriptor)); PACK_DESCRIPTOR(dest, endpoint_descriptor);
dest+=sizeof(struct usb_endpoint_descriptor);
endpoint_descriptor.bEndpointAddress = ep_out; endpoint_descriptor.bEndpointAddress = ep_out;
memcpy(dest,&endpoint_descriptor,sizeof(struct usb_endpoint_descriptor)); PACK_DESCRIPTOR(dest, endpoint_descriptor);
dest+=sizeof(struct usb_endpoint_descriptor);
return (dest - orig_dest); return (dest - orig_dest);
} }

View file

@ -22,6 +22,7 @@
#include "system.h" #include "system.h"
#include "usb_core.h" #include "usb_core.h"
#include "usb_drv.h" #include "usb_drv.h"
#include "usb_class_driver.h"
//#define LOGF_ENABLE //#define LOGF_ENABLE
#include "logf.h" #include "logf.h"
#include "storage.h" #include "storage.h"
@ -371,24 +372,20 @@ int usb_storage_set_first_interface(int interface)
int usb_storage_get_config_descriptor(unsigned char *dest,int max_packet_size) int usb_storage_get_config_descriptor(unsigned char *dest,int max_packet_size)
{ {
endpoint_descriptor.wMaxPacketSize=max_packet_size; unsigned char *orig_dest = dest;
interface_descriptor.bInterfaceNumber=usb_interface;
memcpy(dest,&interface_descriptor, interface_descriptor.bInterfaceNumber = usb_interface;
sizeof(struct usb_interface_descriptor)); PACK_DESCRIPTOR(dest, interface_descriptor);
dest+=sizeof(struct usb_interface_descriptor);
endpoint_descriptor.wMaxPacketSize = max_packet_size;
endpoint_descriptor.bEndpointAddress = ep_in; endpoint_descriptor.bEndpointAddress = ep_in;
memcpy(dest,&endpoint_descriptor, PACK_DESCRIPTOR(dest, endpoint_descriptor);
sizeof(struct usb_endpoint_descriptor));
dest+=sizeof(struct usb_endpoint_descriptor);
endpoint_descriptor.bEndpointAddress = ep_out; endpoint_descriptor.bEndpointAddress = ep_out;
memcpy(dest,&endpoint_descriptor, PACK_DESCRIPTOR(dest, endpoint_descriptor);
sizeof(struct usb_endpoint_descriptor));
return sizeof(struct usb_interface_descriptor) + return (dest - orig_dest);
2*sizeof(struct usb_endpoint_descriptor);
} }
void usb_storage_init_connection(void) void usb_storage_init_connection(void)