blob: 727e095f8b0e99ebe6f589f0997c1a20f9eccfa3 [file] [log] [blame]
Background
==========
'libusbmuxd' makes it really simple to talk to a running 'usbmuxd' and
hides all the details for you. There are two function calls:
usbmuxd_scan()
--------------
This returns a list of all available iPhone-like devices that are
available for talking to. The returned array contains the USB
product_id, hex formatted serial_number of any iPhones/iTouches and a
non-descript 'handle' for all those devices that are within range (as
of March 2009, that means a device directly plugged into the
computer's USB port).
Once you have found the device you want to communicate with, take its
'handle' and pass this to usbmuxd_connect().
usbmuxd_connect()
-----------------
This takes a handle, a destination port number and tries to setup
a proxy a connection. It returns a file-descriptor which you should
be able to read(), write() and select() on like any other active network
socket connection.
Technical details
=================
When usbmuxd is running (normally started, or stopped as a result of
'udev' auto-insertion messages), it provides a socket interface in
'/var/run/usbmuxd' that is designed to be compatible with the socket
interface that is provided on MacOSX.
The structures for communicating over this device are documented
in the 'usbmuxd-proto.h', but you shouldn't need to view them
directly if you are using the libusbmuxd.so library for easy access.
Example
=======
#include <usbmuxd.h>
...
gcc -o leetphone leetphone.c -lusbmuxd