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:
parent
8b6b46f3c4
commit
ab09322b7a
4 changed files with 23 additions and 24 deletions
|
@ -24,6 +24,7 @@
|
|||
#include "usb_drv.h"
|
||||
#include "kernel.h"
|
||||
#include "usb_charging_only.h"
|
||||
#include "usb_class_driver.h"
|
||||
|
||||
//#define LOGF_ENABLE
|
||||
#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;
|
||||
|
||||
interface_descriptor.bInterfaceNumber=usb_interface;
|
||||
memcpy(dest,&interface_descriptor,sizeof(struct usb_interface_descriptor));
|
||||
|
||||
dest+=sizeof(struct usb_interface_descriptor);
|
||||
PACK_DESCRIPTOR(dest, interface_descriptor);
|
||||
|
||||
return (dest-orig_dest);
|
||||
}
|
||||
|
|
|
@ -85,4 +85,10 @@ struct usb_class_driver {
|
|||
#endif
|
||||
};
|
||||
|
||||
#define PACK_DESCRIPTOR(dest, descriptor) \
|
||||
do { \
|
||||
memcpy(dest, &(descriptor), sizeof(descriptor)); \
|
||||
dest += sizeof(descriptor); \
|
||||
} while (0)
|
||||
|
||||
#endif
|
||||
|
|
|
@ -24,7 +24,7 @@
|
|||
#include "usb_drv.h"
|
||||
#include "kernel.h"
|
||||
#include "usb_serial.h"
|
||||
|
||||
#include "usb_class_driver.h"
|
||||
//#define LOGF_ENABLE
|
||||
#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;
|
||||
|
||||
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));
|
||||
dest+=sizeof(struct usb_interface_descriptor);
|
||||
endpoint_descriptor.wMaxPacketSize = max_packet_size;
|
||||
|
||||
endpoint_descriptor.bEndpointAddress = ep_in;
|
||||
memcpy(dest,&endpoint_descriptor,sizeof(struct usb_endpoint_descriptor));
|
||||
dest+=sizeof(struct usb_endpoint_descriptor);
|
||||
PACK_DESCRIPTOR(dest, endpoint_descriptor);
|
||||
|
||||
endpoint_descriptor.bEndpointAddress = ep_out;
|
||||
memcpy(dest,&endpoint_descriptor,sizeof(struct usb_endpoint_descriptor));
|
||||
dest+=sizeof(struct usb_endpoint_descriptor);
|
||||
PACK_DESCRIPTOR(dest, endpoint_descriptor);
|
||||
|
||||
return (dest - orig_dest);
|
||||
}
|
||||
|
|
|
@ -22,6 +22,7 @@
|
|||
#include "system.h"
|
||||
#include "usb_core.h"
|
||||
#include "usb_drv.h"
|
||||
#include "usb_class_driver.h"
|
||||
//#define LOGF_ENABLE
|
||||
#include "logf.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)
|
||||
{
|
||||
endpoint_descriptor.wMaxPacketSize=max_packet_size;
|
||||
interface_descriptor.bInterfaceNumber=usb_interface;
|
||||
unsigned char *orig_dest = dest;
|
||||
|
||||
memcpy(dest,&interface_descriptor,
|
||||
sizeof(struct usb_interface_descriptor));
|
||||
dest+=sizeof(struct usb_interface_descriptor);
|
||||
interface_descriptor.bInterfaceNumber = usb_interface;
|
||||
PACK_DESCRIPTOR(dest, interface_descriptor);
|
||||
|
||||
endpoint_descriptor.wMaxPacketSize = max_packet_size;
|
||||
|
||||
endpoint_descriptor.bEndpointAddress = ep_in;
|
||||
memcpy(dest,&endpoint_descriptor,
|
||||
sizeof(struct usb_endpoint_descriptor));
|
||||
dest+=sizeof(struct usb_endpoint_descriptor);
|
||||
PACK_DESCRIPTOR(dest, endpoint_descriptor);
|
||||
|
||||
endpoint_descriptor.bEndpointAddress = ep_out;
|
||||
memcpy(dest,&endpoint_descriptor,
|
||||
sizeof(struct usb_endpoint_descriptor));
|
||||
PACK_DESCRIPTOR(dest, endpoint_descriptor);
|
||||
|
||||
return sizeof(struct usb_interface_descriptor) +
|
||||
2*sizeof(struct usb_endpoint_descriptor);
|
||||
return (dest - orig_dest);
|
||||
}
|
||||
|
||||
void usb_storage_init_connection(void)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue