The Amoi WP-S1 (sold in the UK as the 3 Skypephone) seems to support the
OBEX protocol over USB, but misidentifies itself as using a
vendor-specific protocol, so is ignored by OpenOBEX. I'm trying to
develop a patch that would get OpenOBEX to see the phone, but I'm kinda
out of my depth, and could do with some help.
I previously wrote a feature request on Sourceforge that details what I
know about the phone:
http://sourceforge.net/tracker/index.php?func=detail&aid=2289587&group_id=8960&atid=358960
Since writing that report, I've tried to write a patch for OpenOBEX
(attached), which doesn't seem to work. I've tried using obex_test with
the patched version of the library, which gives me this:
$ ./apps/obex_test -u 0
Using USB transport
OBEX Interactive test client/server.
> c
Transport connect error! (USB)
> q
I don't understand obex_test well enough to find out what's behind that
error, so at this point I'm stuck. Could someone give me some
suggestions about what to do next?
- Andrew Sayers
Index: lib/usbobex.c
===================================================================
--- lib/usbobex.c (revision 349)
+++ lib/usbobex.c (working copy)
@@ -208,6 +208,54 @@
next->next = NULL;
current = next;
}
+ } else if ((dev->descriptor.idVendor == 0x1614) && (dev->descriptor.idProduct == 0x0804) && // vendor=Amoi, product=WP-S1
+ (c==0) && (i==3) && (a==0) // config 0, interface 3, alt 0
+ ) {
+
+ int found_active = 0;
+ int found_idle = 0;
+ struct usb_config_descriptor config = dev->config[c];
+
+ next = malloc(sizeof(struct obex_usb_intf_transport_t));
+ if (next == NULL)
+ return current;
+ next->device = dev;
+ next->configuration = dev->config[c].bConfigurationValue;
+ next->configuration_description = dev->config[c].iConfiguration;
+ next->control_interface = dev->config[c].interface[i].altsetting[a].bInterfaceNumber;
+ next->control_interface_description = dev->config[c].interface[i].altsetting[a].iInterface;
+ next->control_setting = dev->config[c].interface[i].altsetting[a].bAlternateSetting;
+
+ next->data_interface = i;
+
+ /* Loop through all of the interfaces */
+ for (i = 0; i < config.bNumInterfaces; i++) {
+ /* Loop through all of the alternate settings */
+ for (a = 0; a < config.interface[i].num_altsetting; a++) {
+ /* Check if this interface is OBEX data interface*/
+ /* and find endpoints */
+ if (config.interface[i].altsetting[a].bInterfaceNumber == next->data_interface) {
+ find_eps(next, config.interface[i].altsetting[a], &found_active, &found_idle);
+ }
+ }
+ }
+
+ if (!found_idle) { // Cheat - can't normally find an idle interface
+ next->data_idle_setting = 0;
+ next->data_interface_idle_description = next->data_interface-1;
+ found_idle = 1;
+ };
+
+ if (!found_idle || !found_active)
+ free(next);
+ else {
+ if (current)
+ current->next = next;
+ next->prev = current;
+ next->next = NULL;
+ current = next;
+ }
+
}
return current;
}
------------------------------------------------------------------------------
SF.Net email is Sponsored by MIX09, March 18-20, 2009 in Las Vegas, Nevada.
The future of the web can't happen without you. Join us at MIX09 to help
pave the way to the Next Web now. Learn more and register at
http://ad.doubleclick.net/clk;208669438;13503038;i?http://2009.visitmix.com/
_______________________________________________
Openobex-users mailing list
Openobex-users@lists.sourceforge.net
http://lists.sourceforge.net/lists/listinfo/openobex-users