diff -r -C 3 mcbuilder-orig/cores/makecontroller/core/makingthings/USB-CDC.c mcbuilder/cores/makecontroller/core/makingthings/USB-CDC.c *** mcbuilder-orig/cores/makecontroller/core/makingthings/USB-CDC.c 2009-01-20 13:49:48.000000000 -0800 --- mcbuilder/cores/makecontroller/core/makingthings/USB-CDC.c 2009-11-04 16:33:39.000000000 -0800 *************** *** 56,61 **** --- 56,62 ---- #include "queue.h" #include "USB-CDC.h" #include "descriptors.h" + #include "system.h" #define usbNO_BLOCK ( ( portTickType ) 0 ) *************** *** 130,141 **** void vUSBCDCTask( void *pvParameters ) { ! xISRStatus *pxMessage; ! unsigned portLONG ulStatus; ! unsigned portLONG ulRxBytes; ( void ) pvParameters; ! /* Disconnect USB device from hub. For debugging - causes host to register reset */ portENTER_CRITICAL(); vDetachUSBInterface(); --- 131,151 ---- void vUSBCDCTask( void *pvParameters ) { ! xISRStatus *pxMessage; ! unsigned portLONG ulStatus; ! unsigned portLONG ulRxBytes; ! int sernum; ! int i; ! char serialNumber[9]; ( void ) pvParameters; ! ! /* init the interface serial number from the system one */ ! sernum=System_GetSerialNumber(); ! snprintf(serialNumber,8,"%08X",sernum); ! for (i=0;i<8;i++) ! pxProductSerialDescriptor[i*2+2]=serialNumber[i]; ! /* Disconnect USB device from hub. For debugging - causes host to register reset */ portENTER_CRITICAL(); vDetachUSBInterface(); *************** *** 554,559 **** --- 564,570 ---- static void prvGetStandardDeviceDescriptor( xUSB_REQUEST *pxRequest ) { + /* The type is in the high byte. Return whatever has been requested. */ switch( ( pxRequest->usValue & 0xff00 ) >> 8 ) { *************** *** 582,587 **** --- 593,602 ---- prvSendControlData( ( unsigned portCHAR * ) &pxProductStringDescriptor, pxRequest->usLength, sizeof( pxProductStringDescriptor ), pdTRUE ); break; + case usbSERIAL_STRING: + prvSendControlData( ( unsigned portCHAR * ) &pxProductSerialDescriptor, pxRequest->usLength, sizeof( pxProductSerialDescriptor ), pdTRUE ); + break; + case usbCONFIGURATION_STRING: prvSendControlData( ( unsigned portCHAR * ) &pxConfigurationStringDescriptor, pxRequest->usLength, sizeof( pxConfigurationStringDescriptor ), pdTRUE ); break; diff -r -C 3 mcbuilder-orig/cores/makecontroller/core/makingthings/descriptors.h mcbuilder/cores/makecontroller/core/makingthings/descriptors.h *** mcbuilder-orig/cores/makecontroller/core/makingthings/descriptors.h 2009-01-20 13:49:47.000000000 -0800 --- mcbuilder/cores/makecontroller/core/makingthings/descriptors.h 2009-11-04 16:33:38.000000000 -0800 *************** *** 55,60 **** --- 55,68 ---- 'K', 0x00, 'i', 0x00, 't', 0x00 }; + portCHAR pxProductSerialDescriptor[] = + { + 18, + usbDESCRIPTOR_TYPE_STRING, + + 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00 + }; + const portCHAR pxConfigurationStringDescriptor[] = { 38, *************** *** 89,95 **** 0x10, 0x01, /* bcdDeviceL */ usbMANUFACTURER_STRING, /* iManufacturer */ usbPRODUCT_STRING, /* iProduct */ ! 0x00, /* SerialNumber */ 0x01 /* bNumConfigs */ }; --- 97,103 ---- 0x10, 0x01, /* bcdDeviceL */ usbMANUFACTURER_STRING, /* iManufacturer */ usbPRODUCT_STRING, /* iProduct */ ! usbSERIAL_STRING, /* SerialNumber */ 0x01 /* bNumConfigs */ }; diff -r -C 3 mcbuilder-orig/cores/makecontroller/core/makingthings/usb-internal.h mcbuilder/cores/makecontroller/core/makingthings/usb-internal.h *** mcbuilder-orig/cores/makecontroller/core/makingthings/usb-internal.h 2009-01-20 13:49:48.000000000 -0800 --- mcbuilder/cores/makecontroller/core/makingthings/usb-internal.h 2009-11-04 16:26:08.000000000 -0800 *************** *** 71,76 **** --- 71,77 ---- #define usbPRODUCT_STRING ( 2 ) #define usbCONFIGURATION_STRING ( 3 ) #define usbINTERFACE_STRING ( 4 ) + #define usbSERIAL_STRING ( 5 ) /* Defines fields of standard SETUP request. Now in normal order. */ #define usbREQUEST_TYPE_INDEX ( 0 ) diff -r -C 3 mcbuilder-orig/cores/makecontroller/core/makingthings/usb_internal.h mcbuilder/cores/makecontroller/core/makingthings/usb_internal.h *** mcbuilder-orig/cores/makecontroller/core/makingthings/usb_internal.h 2009-01-20 13:49:48.000000000 -0800 --- mcbuilder/cores/makecontroller/core/makingthings/usb_internal.h 2009-11-04 16:26:11.000000000 -0800 *************** *** 71,76 **** --- 71,77 ---- #define usbPRODUCT_STRING ( 2 ) #define usbCONFIGURATION_STRING ( 3 ) #define usbINTERFACE_STRING ( 4 ) + #define usbSERIAL_STRING ( 5 ) /* Defines fields of standard SETUP request. Now in normal order. */ #define usbREQUEST_TYPE_INDEX ( 0 )