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 "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);
|
||||||
}
|
}
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
|
@ -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)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue