Actually the documentation is wrong. The results what you are getting
are ok. The number of bytes transfered is only returned when is
executed a control OUT transfer. In control IN transfers, the function
returns the data read.

I'll fix that in the next release.

Would mind opening a bug report at the project page?

Thanks,
Wander

2008/6/25  <[EMAIL PROTECTED]>:
> Keep in mind that I am new to this USB and hardware hacking stuff.
>
> Alright I am writing this little python application to pull the firmware from 
> a device using the Cypress EzUSB Fx2 chip. Snazzy little thing.
>
> To do that you generally use fxload to load the Cypress developer 
> kit-supplied Vend_ax.hex code. It loads into ram, resets the cpu, and then 
> you can get access to some vendor commands to read and write to the eeprom.
>
> The reason I am doing this is because I need to have a way to verify the 
> firmware on any random device on of this type. This is due to some sticky 
> certification issues that I won't bother you with. I like python so this 
> seems the way to go.
>
> Once you get the vend stuff loaded then you use control messages to send a 
> request and your given a hunk of code.
>
> So.. it's the syntax of the controlmsg function that I have a question about. 
> I have everything working right now and the script is working and all that, I 
> just want to make sure that this behavior is 'correct'. Because once I say 
> this is 'finished' it'll be very difficult to change the script.
>
> So a truncated version of the script looks like this:
>
>
> buses = usb.busses()
> for bus in buses:
>    for device in bus.devices:
>        if device.idVendor == vend_id and device.idProduct == prod_id:
>            mooCow = device
>
> mooCowHandler = moocow.open()
>
> results = mooCowHandler.controlMsg(0xc0, 0xa2, data, address, 0xBEEF, 10000)
>
>
> Ok.. so it works and it makes me very happy with good feelings and all that.
>
> But my question is this:
>
> According to the documentation I would expect that the output from the 
> command would be put into 'data' and the 'results' would be a return value 
> for number of bytes written.
>
>  |  controlMsg(...)
>  |      controlMsg(requestType, request, buffer, value=0, index=0, 
> timeout=100) -> bytesWritten|buffer
>  |
>  |      Performs a control request to the default control pipe on a device.
>  |      Arguments:
>  |              requestType: specifies the direction of data flow, the type
>  |                           of request, and the recipient.
>  |              request: specifies the request.
>  |              buffer: if the transfer is a write transfer, buffer is a 
> sequence
>  |                      with the transfer data, otherwise, buffer is the 
> number of
>  |                      bytes to read.
>  |              value: specific information to pass to the device. (default: 
> 0)
>  |              index: specific information to pass to the device. (default: 
> 0)
>  |              timeout: operation timeout in miliseconds. (default: 100)
>  |      Returns the number of bytes written.
>
>
> However with my code it does something quite differently.
>
> The 'results' end up being a tuple of returned values! Not the number of 
> bytes. And the 'data' needs to be a number that tells it how many bytes I 
> want returned from the command!
>
> This is quite a bit different then what I expect after reading the docs and 
> thus is why I am worried.
>
> When I try to make the 'data' be a tuple or a list of objects or whatnot then 
> It'll end up being unmodified when I run the script, but the results ends up 
> being the number of items I put in the data list. I am confused.
>
> So I want to make sure that this is the correct behavior for this function. 
> (for it to return a tuple of the results) I am not a stickler for 
> 'correctitude' or anything like that, but I want to make sure that this 
> behavior isn't a 'bug' that is going to get 'fixed' and break my script in 
> the distant future.
>
> I am using python-usb package version 0.4.1-4  provided by Debian 
> Testing/Unstable.
>
> Thank you!!
>
> -------------------------------------------------------------------------
> Check out the new SourceForge.net Marketplace.
> It's the best place to buy or sell services for
> just about anything Open Source.
> http://sourceforge.net/services/buy/index.php
> _______________________________________________
> Pyusb-users mailing list
> Pyusb-users@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/pyusb-users
>

-------------------------------------------------------------------------
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services for
just about anything Open Source.
http://sourceforge.net/services/buy/index.php
_______________________________________________
Pyusb-users mailing list
Pyusb-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/pyusb-users

Reply via email to