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