summaryrefslogtreecommitdiff
path: root/usb-dfu-experiment/main.c
diff options
context:
space:
mode:
Diffstat (limited to 'usb-dfu-experiment/main.c')
-rw-r--r--usb-dfu-experiment/main.c27
1 files changed, 17 insertions, 10 deletions
diff --git a/usb-dfu-experiment/main.c b/usb-dfu-experiment/main.c
index 4d1d59c..91c35b4 100644
--- a/usb-dfu-experiment/main.c
+++ b/usb-dfu-experiment/main.c
@@ -292,27 +292,36 @@ void USBDCallbacks_RequestReceived(const USBGenericRequest *request)
void USBDDriverCallbacks_InterfaceSettingChanged(unsigned char interface,
unsigned char setting)
{
- TRACE_DEBUG("DFU: IfSettingChgd()\n");
+ TRACE_INFO("DFU: IfSettingChgd(if=%u, alt=%u)\n\r", interface, setting);
}
+static int upl_first = 1;
+
/* DFU callback */
-int USBDFU_handle_upload(uint16_t val, uint16_t len, int first)
+int USBDFU_handle_upload(uint8_t altif, unsigned int offset,
+ uint8_t *buf, unsigned int req_len)
{
- TRACE_DEBUG("DFU: handle_upload()\n");
- return DFU_RET_ZLP;
+ TRACE_INFO("DFU: handle_upload(%u, %u, %u)\n\r", altif, offset, req_len);
+ if (upl_first) {
+ upl_first = 0;
+ return req_len;
+ }
+
+ return 4;
}
/* DFU callback */
-int USBDFU_handle_dnload(uint16_t val, uint16_t len, int first)
+int USBDFU_handle_dnload(uint8_t altif, unsigned int offset,
+ uint8_t *buf, unsigned int len)
{
- TRACE_DEBUG("DFU: handle_dnload()\n");
+ TRACE_INFO("DFU: handle_dnload(%u, %u, %u)\n\r", altif, offset, len);
return DFU_RET_ZLP;
}
/* DFU callback */
void dfu_drv_updstatus(void)
{
- TRACE_DEBUG("DFU: updstatus()\n");
+ TRACE_INFO("DFU: updstatus()\n\r");
}
@@ -322,8 +331,6 @@ void dfu_drv_updstatus(void)
extern void USBD_IrqHandler(void);
-static unsigned char altsettings[4];
-
int main(void)
{
volatile uint8_t usbConn = 0;
@@ -343,7 +350,7 @@ int main(void)
/* Audio STREAM LED */
LED_Configure(USBD_LEDOTHER);
- USBDFU_Initialize(&dfu_descriptors, altsettings);
+ USBDFU_Initialize(&dfu_descriptors);
/* connect if needed */
VBus_Configure();
personal git repositories of Harald Welte. Your mileage may vary