Problems getting usbFunctionRead() called
Posted: Mon Nov 20, 2006 5:32 pm
I have a problem with AVR-USB and control-in transfers.
USB_CFG_IMPLEMENT_FN_READ and USB_CFG_IMPLEMENT_FN_WRITE
are both defined to 1.
The device gets detected without problems.
The codesnippet below is the content of the
callbacks
On the client side:
Performing
Results in "sw" in the terminal app and usbFunctionWrite getting called.
Performing
Results in "s" in the terminal app and correct data getting returned
to the client app.
Performing
Results in "s" in the terminal app and no usbFunctionRead getting called.
Thus no data is supplied to the client application.
I'm using AVR-USB on an mega8515 with 8kb of external sram.
I thought of usbFunctionRead as a Way to conveniently read the
xmem in larger chunks than 254.
The firmware code contains atm just the xmem initialization, since i am trying to understand where the problem lies.
The usbdriver is from the latest PowerSwitcher zipfile.
Best Regards,
Tobias
USB_CFG_IMPLEMENT_FN_READ and USB_CFG_IMPLEMENT_FN_WRITE
are both defined to 1.
The device gets detected without problems.
The codesnippet below is the content of the
callbacks
Code: Select all
uchar usbFunctionSetup(uchar data[8])
{
uart_putc('s');
switch(data[1]){
case STEST:{
buffer[0]=1;
usbMsgPtr=buffer;
return 1;
}break;
case RTEST:{
return 0xff; // get usbFunctionRead called;
}break;
case WTEST:{
return 0xff; // get usbFunctionWrite called;
}break;
}
}
uchar usbFunctionWrite(uchar* data,uchar len)
{
uart_putc('w');
return 1;
}
uchar usbFunctionRead(uchar* data,uchar len)
{
uart_putc('r');
return 1;
}
On the client side:
Performing
Code: Select all
usb_control_msg(hDev,USB_TYPE_VENDOR|USB_RECIP_DEVICE|USB_ENDPOINT_OUT,WTEST, 0, 0, buf, strlen(buffer), 1000);
Results in "sw" in the terminal app and usbFunctionWrite getting called.
Performing
Code: Select all
usb_control_msg(hDev,USB_TYPE_VENDOR|USB_RECIP_DEVICE|USB_ENDPOINT_IN,STEST, 0, 0, buf, sizeof(buffer), 1000);
Results in "s" in the terminal app and correct data getting returned
to the client app.
Performing
Code: Select all
usb_control_msg(hDev,USB_TYPE_VENDOR|USB_RECIP_DEVICE|USB_ENDPOINT_IN,RTEST, 0, 0, buf, sizeof(buffer), 1000);
Results in "s" in the terminal app and no usbFunctionRead getting called.
Thus no data is supplied to the client application.
I'm using AVR-USB on an mega8515 with 8kb of external sram.
I thought of usbFunctionRead as a Way to conveniently read the
xmem in larger chunks than 254.
The firmware code contains atm just the xmem initialization, since i am trying to understand where the problem lies.
The usbdriver is from the latest PowerSwitcher zipfile.
Best Regards,
Tobias