@@ -65,8 +65,6 @@ int vsnprintf(char *str, size_t size, const char *format, va_list ap)
int snprintf(char *str, size_t size, const char *format, ...)
__attribute__ ((format (printf, 3, 4)));
-void base64(char *dest, const char *src, size_t bits);
-
#define le16toh(x) (x)
#define le32toh(x) (x)
#define htole16(x) (x)
@@ -97,7 +97,7 @@ const uint8_t config_descriptor[] aligned(2) = {
0x00 /* 6 bInterval */
};
-static char serial_string[32];
+char serial_string[32];
char * const string_descriptors[] = {
"\x09\x04", /* LANGID: US English */
"Keir Fraser",
@@ -13,7 +13,8 @@ struct ep0 ep0;
void usb_init(void)
{
- base64(string_descriptors[3], (const void *)ser_id, 96);
+ snprintf(serial_string, sizeof(serial_string),
+ "GW%08X%08X%08X", ser_id[0], ser_id[1], ser_id[2]);
hw_usb_init();
}
@@ -48,6 +48,7 @@ extern const uint8_t config_descriptor[];
#define NR_STRING_DESC 4
extern char * const string_descriptors[];
+extern char serial_string[32];
extern struct ep0 {
struct usb_device_request req;
@@ -142,25 +142,6 @@ char *strcpy(char *dest, const char *src)
return dest;
-void base64(char *dest, const char *src, size_t bits)
-{
- static const char base64[] =
- "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
- char *p = dest;
- unsigned int i, j, x;
- for (i = 0; i < bits; ) {
- x = 0;
- for (j = 0; j < 6; j++, i++) {
- x <<= 1;
- x |= (src[i>>3] >> (i&7)) & 1;
- }
- *p++ = base64[x];
- *p++ = '\0';
-}
/*
* Local variables:
* mode: C