ports/128776: [PATCH] comms/openobex: Add USB support to OPENOBEX transports
Alex Samorukov
samm at os2.kiev.ua
Tue Nov 11 04:10:03 UTC 2008
>Number: 128776
>Category: ports
>Synopsis: [PATCH] comms/openobex: Add USB support to OPENOBEX transports
>Confidential: no
>Severity: non-critical
>Priority: low
>Responsible: freebsd-ports-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: change-request
>Submitter-Id: current-users
>Arrival-Date: Tue Nov 11 04:10:01 UTC 2008
>Closed-Date:
>Last-Modified:
>Originator: Alex Samorukov
>Release: FreeBSD 6.3-RELEASE-p1 i386
>Organization:
NetArt
>Environment:
System: FreeBSD deepvision.tsua.net 6.3-RELEASE-p1 FreeBSD 6.3-RELEASE-p1 #4: Fri Mar 28 05:16:52 EET 2008
>Description:
Original sources contain usb support via libusb. It is designed to use OBEX
on mobiles connected to USB cable. But original implementation fail to work
on FreeBSD (very strange usb_open() calls), so i did a patch. Now it work fine,
at least with my Nokia and libsyncml.
Added file(s):
- files/patch-usbobex.c
Port maintainer (mad at madpilot.net) is cc'd.
Generated with FreeBSD Port Tools 0.77
>How-To-Repeat:
>Fix:
--- openobex-1.3_1.patch begins here ---
diff -ruN --exclude=CVS /usr/ports/comms/openobex/Makefile /usr/home/samm/openobex/Makefile
--- /usr/ports/comms/openobex/Makefile 2008-08-20 03:56:29.000000000 +0300
+++ /usr/home/samm/openobex/Makefile 2008-11-11 05:57:33.000000000 +0200
@@ -19,11 +19,22 @@
USE_GMAKE= yes
USE_LDCONFIG= yes
GNU_CONFIGURE= yes
-CONFIGURE_ARGS+= --program-transform-name="" \
- --disable-usb
+CONFIGURE_ARGS+= --program-transform-name=""
+
+OPTIONS= LIBUSB "Enable OBEX over USB" no
post-patch:
@ ${REINPLACE_CMD} -e "s|pkgconfigdir =.*|pkgconfigdir = ${PREFIX}/libdata/pkgconfig|g" \
${WRKSRC}/Makefile.in
-.include <bsd.port.mk>
+.include <bsd.port.pre.mk>
+
+.if defined(WITH_LIBUSB)
+LIB_DEPENDS+= usb-0.1.8:${PORTSDIR}/devel/libusb
+CONFIGURE_ARGS+=--enable-usb
+CFLAGS+=-I${PREFIX}/include
+.else
+CONFIGURE_ARGS+=--disable-usb
+.endif
+
+.include <bsd.port.post.mk>
diff -ruN --exclude=CVS /usr/ports/comms/openobex/files/patch-usbobex.c /usr/home/samm/openobex/files/patch-usbobex.c
--- /usr/ports/comms/openobex/files/patch-usbobex.c 1970-01-01 03:00:00.000000000 +0300
+++ /usr/home/samm/openobex/files/patch-usbobex.c 2008-11-11 05:50:17.000000000 +0200
@@ -0,0 +1,67 @@
+--- lib/usbobex.c 2006-01-18 13:59:15.000000000 +0100
++++ /lib/usbobex.c 2008-11-11 04:45:17.000000000 +0100
+@@ -331,27 +331,10 @@
+
+ DEBUG(4, "\n");
+
+- self->trans.self.usb.dev_control = usb_open(self->trans.self.usb.device);
+ self->trans.self.usb.dev_data = usb_open(self->trans.self.usb.device);
+
+- ret = usb_set_configuration(self->trans.self.usb.dev_control, self->trans.self.usb.configuration);
+- if (ret < 0) {
+- DEBUG(4, "Can't set configuration %d", ret);
+- }
+-
+- ret = usb_claim_interface(self->trans.self.usb.dev_control, self->trans.self.usb.control_interface);
+- if (ret < 0) {
+- DEBUG(4, "Can't claim control interface %d", ret);
+- goto err1;
+- }
+-
+- ret = usb_set_altinterface(self->trans.self.usb.dev_control, self->trans.self.usb.control_setting);
+- if (ret < 0) {
+- DEBUG(4, "Can't set control setting %d", ret);
+- goto err2;
+- }
+-
+ ret = usb_claim_interface(self->trans.self.usb.dev_data, self->trans.self.usb.data_interface);
++
+ if (ret < 0) {
+ DEBUG(4, "Can't claim data interface %d", ret);
+ goto err2;
+@@ -369,10 +352,8 @@
+ err3:
+ usb_release_interface(self->trans.self.usb.dev_data, self->trans.self.usb.data_interface);
+ err2:
+- usb_release_interface(self->trans.self.usb.dev_control, self->trans.self.usb.control_interface);
+ err1:
+ usb_close(self->trans.self.usb.dev_data);
+- usb_close(self->trans.self.usb.dev_control);
+ return ret;
+
+ #endif /* _WIN32 */
+@@ -391,21 +372,18 @@
+ return 0;
+ #ifndef _WIN32
+ DEBUG(4, "\n");
++
++ usb_clear_halt(self->trans.self.usb.dev_data, self->trans.self.usb.data_endpoint_read);
++ usb_clear_halt(self->trans.self.usb.dev_data, self->trans.self.usb.data_endpoint_write);
+ ret = usb_set_altinterface(self->trans.self.usb.dev_data, self->trans.self.usb.data_idle_setting);
+ if (ret < 0)
+ DEBUG(4, "Can't set data idle setting %d", ret);
+ ret = usb_release_interface(self->trans.self.usb.dev_data, self->trans.self.usb.data_interface);
+ if (ret < 0)
+ DEBUG(4, "Can't release data interface %d", ret);
+- ret = usb_release_interface(self->trans.self.usb.dev_control, self->trans.self.usb.control_interface);
+- if (ret < 0)
+- DEBUG(4, "Can't release control interface %d", ret);
+ ret = usb_close(self->trans.self.usb.dev_data);
+ if (ret < 0)
+ DEBUG(4, "Can't close data interface %d", ret);
+- ret = usb_close(self->trans.self.usb.dev_control);
+- if (ret < 0)
+- DEBUG(4, "Can't close control interface %d", ret);
+ #endif /* _WIN32 */
+ return ret;
+ }
--- openobex-1.3_1.patch ends here ---
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the freebsd-ports-bugs
mailing list