Date: Sun, 21 Jan 2007 16:44:12 +0900 (JST) From: mistral@imasy.or.jp To: FreeBSD-gnats-submit@FreeBSD.org Subject: ports/108173: New port: devel/libpasori: FeliCa read/write library for Sony RC-S320 USB FeliCa R/W(PaSoRi) Message-ID: <200701210744.l0L7iClF017147@sachiko.yamayuri.org> Resent-Message-ID: <200701210830.l0L8UIuj074655@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
>Number: 108173 >Category: ports >Synopsis: New port: devel/libpasori: FeliCa read/write library for Sony RC-S320 USB FeliCa R/W(PaSoRi) >Confidential: no >Severity: non-critical >Priority: medium >Responsible: freebsd-ports-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: change-request >Submitter-Id: current-users >Arrival-Date: Sun Jan 21 08:30:17 GMT 2007 >Closed-Date: >Last-Modified: >Originator: Yoshihiko Sarumaru >Release: FreeBSD 6.2-PRERELEASE i386 >Organization: >Environment: System: FreeBSD sachiko.yamayuri.org 6.2-PRERELEASE FreeBSD 6.2-PRERELEASE #2: Tue Jan 16 02:03:05 JST 2007 root@sachiko.yamayuri.org:/usr/obj/usr/src/sys/VGN-TX92S i386 >Description: This library works for FeliCa Reader/Writer USB device. FeliCa is a contactless IC card technology used in Japan and other countries. Client programs will be send-pr shortly after this PR. >How-To-Repeat: >Fix: # This is a shell archive. Save it in a file, remove anything before # this line, and then unpack it by entering "sh file". Note, it may # create directories; files and directories will be owned by you and # have default permissions. # # This archive contains: # # devel/libpasori/ # devel/libpasori/Makefile # devel/libpasori/distinfo # devel/libpasori/files # devel/libpasori/files/Makefile.prog # devel/libpasori/files/Makefile.lib # devel/libpasori/files/patch-lpdump.c # devel/libpasori/files/patch-libpasori_polling.c # devel/libpasori/files/patch-libpasori_command.h # devel/libpasori/files/patch-libpasori_command.c # devel/libpasori/files/patch-libpasori_com_bsdugen.c # devel/libpasori/files/patch-lptest.c # devel/libpasori/pkg-descr # devel/libpasori/pkg-plist # devel/libpasori/pkg-message # echo c - devel/libpasori/ mkdir -p devel/libpasori/ > /dev/null 2>&1 echo x - devel/libpasori/Makefile sed 's/^X//' >devel/libpasori/Makefile << 'END-of-devel/libpasori/Makefile' X# New ports collection makefile for: libpasori X# Date created: 18 January 2007 X# Whom: Yoshihiko Sarumaru <mistral@imasy.or.jp> X# X# $FreeBSD$ X XPORTNAME= libpasori XPORTVERSION= 02 XCATEGORIES= devel XMASTER_SITES= ${MASTER_SITE_SOURCEFORGE_JP} XMASTER_SITE_SUBDIR= ${PORTNAME}/20457 XDISTNAME= ${PORTNAME}${PORTVERSION} X XMAINTAINER= mistral@imasy.or.jp XCOMMENT= FeliCa read/write library for Sony RC-S320 USB FeliCa R/W(PaSoRi) X XUSE_BZIP2= true XWRKSRC= ${WRKDIR}/${PORTNAME}/src X Xdo-build: X @(cd ${BUILD_WRKSRC}; ${MAKE} -f ${FILESDIR}/Makefile.lib) X @(cd ${BUILD_WRKSRC}; ${MAKE} -f ${FILESDIR}/Makefile.prog PROG=lpdump) X @(cd ${BUILD_WRKSRC}; ${MAKE} -f ${FILESDIR}/Makefile.prog PROG=lptest) X Xdo-install: X @(cd ${BUILD_WRKSRC} && ${SETENV} ${MAKE_ENV} ${MAKE} ${MAKE_FLAGS} ${FILESDIR}/Makefile.lib ${INSTALL_TARGET}) X @(cd ${BUILD_WRKSRC} && ${SETENV} ${MAKE_ENV} ${MAKE} ${MAKE_FLAGS} ${FILESDIR}/Makefile.prog PROG=lpdump ${INSTALL_TARGET}) X @(cd ${BUILD_WRKSRC} && ${SETENV} ${MAKE_ENV} ${MAKE} ${MAKE_FLAGS} ${FILESDIR}/Makefile.prog PROG=lptest ${INSTALL_TARGET}) X Xpost-install: X @${CAT} ${PKGMESSAGE} X X.include <bsd.port.mk> END-of-devel/libpasori/Makefile echo x - devel/libpasori/distinfo sed 's/^X//' >devel/libpasori/distinfo << 'END-of-devel/libpasori/distinfo' XMD5 (libpasori02.tar.bz2) = c23f2a3ae3d699bcd7a269dbd64120fb XSHA256 (libpasori02.tar.bz2) = 753dedbb8deb1f30d6d227f6e352714b5045badc6c86e77c651497e0b2a9bb15 XSIZE (libpasori02.tar.bz2) = 6352 END-of-devel/libpasori/distinfo echo c - devel/libpasori/files mkdir -p devel/libpasori/files > /dev/null 2>&1 echo x - devel/libpasori/files/Makefile.prog sed 's/^X//' >devel/libpasori/files/Makefile.prog << 'END-of-devel/libpasori/files/Makefile.prog' X#PROG?= xxxx XDPADD= libpasori.a XLDADD= -L. -lpasori X XBINDIR= ${LOCALBASE}/bin XNO_MAN= true X XCFLAGS+= -Wall -W X X.include <bsd.prog.mk> END-of-devel/libpasori/files/Makefile.prog echo x - devel/libpasori/files/Makefile.lib sed 's/^X//' >devel/libpasori/files/Makefile.lib << 'END-of-devel/libpasori/files/Makefile.lib' XLIB= pasori XSRCS= libpasori_command.c libpasori_com_bsdugen.c \ X libpasori_polling.c XINCS= libpasori.h libpasori_com.h libpasori_command.h \ X libpasori_config.h libpasori_liblocal.h X XLIBDIR= ${LOCALBASE}/lib XINCLUDEDIR= ${LOCALBASE}/include XNO_PROFILE= true X XCFLAGS+= -D__LIBPASORI_WITH_BSDUGEN XCFLAGS+= -Wall -W X X.include <bsd.lib.mk> END-of-devel/libpasori/files/Makefile.lib echo x - devel/libpasori/files/patch-lpdump.c sed 's/^X//' >devel/libpasori/files/patch-lpdump.c << 'END-of-devel/libpasori/files/patch-lpdump.c' X--- lpdump.c.orig Tue May 16 02:55:42 2006 X+++ lpdump.c Sat Jan 20 23:04:08 2007 X@@ -1,8 +1,10 @@ X #include <stdio.h> X #include <stdlib.h> X+#include <string.h> X #include <time.h> X X #include "libpasori.h" X+#include "libpasori_command.h" X X void X mydump(uint8 *p,int size){ X@@ -96,7 +98,6 @@ X uint16 area_end[60]; X uint16 area_count; X uint16 servicecode[128]; X- int servicecode_area[128]; X uint16 servicecode_count; X uint16 t; X uint16 idx; X@@ -166,7 +167,7 @@ X uint8 resp[256]; X uint16 sc[4]; X int sc_count; X- int i,j; X+ int i; X X cmd[0] = 0x0c; X memcpy(&cmd[1],f->IDm,8); X@@ -188,14 +189,15 @@ X } X X int X-main(void){ X+main(int argc, char **argv){ X pasori* p; X felica* f; X- int i; X- int m; X- uint8 b[16]; X X- p = pasori_open(NULL); X+ char* devpath = NULL; X+ if (argc == 2) { X+ devpath = argv[1]; X+ } X+ p = pasori_open(devpath); X if(!p){ X printf("error\n"); X exit(-1); END-of-devel/libpasori/files/patch-lpdump.c echo x - devel/libpasori/files/patch-libpasori_polling.c sed 's/^X//' >devel/libpasori/files/patch-libpasori_polling.c << 'END-of-devel/libpasori/files/patch-libpasori_polling.c' X--- libpasori_polling.c.orig Tue May 16 01:45:01 2006 X+++ libpasori_polling.c Fri Jan 19 01:09:56 2007 X@@ -1,6 +1,8 @@ X /* libpasori polling func. */ X #include <stdlib.h> X+#include <string.h> X #include "libpasori_liblocal.h" X+#include "libpasori_command.h" X X X felica * END-of-devel/libpasori/files/patch-libpasori_polling.c echo x - devel/libpasori/files/patch-libpasori_command.h sed 's/^X//' >devel/libpasori/files/patch-libpasori_command.h << 'END-of-devel/libpasori/files/patch-libpasori_command.h' X--- libpasori_command.h.orig Mon Mar 20 09:12:58 2006 X+++ libpasori_command.h Fri Jan 19 00:38:48 2007 X@@ -2,8 +2,8 @@ X #define __LIBPASORI_COMMAND_H X X int pasori_init(pasori*); X-int pasori_write(pasori*,uint8,uint8); X-int pasori_read(pasori*,uint8,uint8); X+int pasori_write(pasori*,uint8*,uint8); X+int pasori_read(pasori*,uint8*,uint8); X X felica* felica_polling(pasori*,uint16,uint8,uint8); X int felica_read_without_encryption02(felica* f,int servicecode,int mode,uint8 addr,uint8* b); END-of-devel/libpasori/files/patch-libpasori_command.h echo x - devel/libpasori/files/patch-libpasori_command.c sed 's/^X//' >devel/libpasori/files/patch-libpasori_command.c << 'END-of-devel/libpasori/files/patch-libpasori_command.c' X--- libpasori_command.c.orig Mon Mar 20 09:12:58 2006 X+++ libpasori_command.c Fri Jan 19 01:54:43 2007 X@@ -1,6 +1,7 @@ X /* pasori commands */ X #include "libpasori_liblocal.h" X #include <stdlib.h> X+#include <string.h> X X /* FIXME: UNKNOWN CONSTANTS */ X const uint8 PASORI_INIT0[] = {0x62,0x01,0x82}; X@@ -24,7 +25,6 @@ X void /* FIXME: return errorcode */ X pasori_packet_write(pasori* p,uint8* data,int size){ /* RAW Packet SEND */ X uint8 cmd[256]; X- uint8 recv[256]; X uint8 sum; X int i; X sum = 0; X@@ -81,6 +81,7 @@ X s = recv[3]; X /* FIXME:calc checksum */ X /* FIXME:check buffer size */ X+ (void)size; X /* FIXME:check msgid */ X s--; X memcpy(data,&recv[7],s); X@@ -95,6 +96,9 @@ X uint8 resp[256]; X uint8 blklist[2]; X int i; X+ X+ (void)mode; /* FIXME: what is this argument? */ X+ X blklist[0] = 0; X blklist[1] = addr; X blklist[0] |= 0x80; /* element size == 2 */ X@@ -124,7 +128,6 @@ X /* INIT */ X int X pasori_init(pasori *p){ X- uint8 recv[256]; X pasori_test(p,PASORI_INIT0,sizeof(PASORI_INIT0)); X pasori_test(p,PASORI_INIT1,sizeof(PASORI_INIT1)); X pasori_test(p,PASORI_INIT2,sizeof(PASORI_INIT2)); END-of-devel/libpasori/files/patch-libpasori_command.c echo x - devel/libpasori/files/patch-libpasori_com_bsdugen.c sed 's/^X//' >devel/libpasori/files/patch-libpasori_com_bsdugen.c << 'END-of-devel/libpasori/files/patch-libpasori_com_bsdugen.c' X--- libpasori_com_bsdugen.c.orig Mon Mar 20 09:12:58 2006 X+++ libpasori_com_bsdugen.c Sat Jan 20 23:13:12 2007 X@@ -6,7 +6,16 @@ X #include <sys/ioctl.h> X #include <errno.h> X X+#include <sys/param.h> X+#include <string.h> X+#include <unistd.h> X+#include <err.h> X+ X #include "libpasori_liblocal.h" X+#include "libpasori.h" X+ X+#define VENDOR_SONY 0x054c X+#define PRODUCT_RC_S320 0x01bb X X void dbg_dump(uint8* d,int size){ X int i; X@@ -16,25 +25,86 @@ X Log("\n"); X } X X-pasori* pasori_open(char* c){ /* FIXME:unused arg. */ X+void search_pasori(char* devname, int devnamelen){ X+ int pathnum; X+ char buspath[16]; X+ int busfd; X+ X+ memset(devname, 0, devnamelen); X+ for (pathnum = 0; pathnum < 10; pathnum++) { X+ snprintf(buspath, sizeof(buspath), "/dev/usb%d", pathnum); X+ if ((busfd = open(buspath, O_RDONLY)) >= 0) { X+ int devnum; X+ for (devnum = 1; devnum < USB_MAX_DEVICES; devnum++) { X+ struct usb_device_info di; X+ di.udi_addr = devnum; X+ if (ioctl(busfd, USB_DEVICEINFO, &di) != -1) { X+ if ((di.udi_vendorNo == VENDOR_SONY) && X+ (di.udi_productNo == PRODUCT_RC_S320)) { X+ int i; X+ for (i=0; i<USB_MAX_DEVNAMES; i++) { X+ if (strncmp(di.udi_devnames[i], "ugen", 4) == 0) { X+ snprintf(devname, devnamelen, X+ "/dev/%s", di.udi_devnames[i]); X+ devname[devnamelen -1] = '\0'; X+ break; X+ } X+ } X+ } X+ } X+ if (devname[0] != '\0') break; X+ } X+ close(busfd); X+ if (devname[0] != '\0') break; X+ } else { X+ continue; X+ } X+ } X+} X+ X+pasori* pasori_open(char* c){ X int config; X pasori *pp; X- char* pasori_devname; X- char* pasori_intr; X+ char pasori_devname[USB_MAX_DEVNAMELEN +1]; X+ char pasori_ctrl[PATH_MAX]; X+ char pasori_intr[PATH_MAX]; X int i; X- int t; X- const int timeout = 400; X- const int size = 0; X pp = (pasori *)malloc(sizeof(pasori)); X X- pasori_devname = "/dev/ugen0.00"; /* FIXME:hardcoded device path */ X- pasori_intr = "/dev/ugen0.01"; X- X- pp->fd_cntl = open(pasori_devname,O_RDWR); X+ if (c != NULL) { X+ snprintf(pasori_devname, sizeof(pasori_devname), X+ "%s", c); X+ pasori_devname[sizeof(pasori_devname) -1] = '\0'; X+ } else { X+ search_pasori(pasori_devname, sizeof(pasori_devname)); X+ if (strlen(pasori_devname) == 0) { X+ warnx("No PaSoRi was found."); X+ return NULL; X+ } X+ } X+#if defined(__NetBSD__) || defined(__OpenBSD__) X+ snprintf(pasori_ctrl, sizeof(pasori_ctrl), X+ "%s.00", pasori_devname); X+#else X+ snprintf(pasori_ctrl, sizeof(pasori_ctrl), X+ "%s", pasori_devname); X+#endif X+ pasori_ctrl[sizeof(pasori_ctrl) -1] = '\0'; X+ snprintf(pasori_intr, sizeof(pasori_intr), X+ "%s.1", pasori_devname); X+ pasori_intr[sizeof(pasori_intr) -1] = '\0'; X+ X+ pp->fd_cntl = open(pasori_ctrl,O_RDWR); X+ if (pp->fd_cntl == -1) { X+ warn("%s", pasori_ctrl); X+ } X X config = 1; X i = ioctl(pp->fd_cntl,USB_SET_CONFIG,&config); X pp->fd_intr = open(pasori_intr,O_RDONLY | O_NONBLOCK); X+ if (pp->fd_intr == -1) { X+ warn("%s", pasori_intr); X+ } X if( (pp->fd_cntl < 0) || (pp->fd_intr < 0) ){ X Log("error opening pasori.%d %d",pp->fd_cntl,pp->fd_intr); X close(pp->fd_cntl); X@@ -47,7 +117,6 @@ X X int pasori_send(pasori* pp,uint8 *cmd,uint8 size,int timeout){ X struct usb_ctl_request req; X- uint8 msg[128]; /* FIXME:max message bytes? */ X uint8 resp[256]; X signed int i; X int t; X@@ -90,11 +159,12 @@ X int pasori_recv(pasori* pp,uint8* buf,uint8 bufsize,int timeout){ X signed int i; X int state; X- int size; X+ int size=0; X int ptr; X- int one = 1; X fd_set fds; X struct timeval tv; X+ X+ (void)bufsize; /* FIXME: buffer size is not checked */ X X uint8 resp; X state = STATE_UNKNOWN; X@@ -156,5 +226,7 @@ X void pasori_close(pasori* p){ X close(p->fd_intr); X close(p->fd_cntl); X+ free(p); X+ p = NULL; X } X END-of-devel/libpasori/files/patch-libpasori_com_bsdugen.c echo x - devel/libpasori/files/patch-lptest.c sed 's/^X//' >devel/libpasori/files/patch-lptest.c << 'END-of-devel/libpasori/files/patch-lptest.c' X--- lptest.c.orig Mon Mar 20 09:12:58 2006 X+++ lptest.c Sun Jan 21 00:36:43 2007 X@@ -2,24 +2,29 @@ X #include <stdlib.h> X X #include "libpasori.h" X+#include "libpasori_command.h" X X X int X-main(void){ X+main(int argc, char **argv){ X pasori* p; X felica* f; X int i; X- int m; X uint8 b[16]; X X printf("lptest : start\n"); X- p = pasori_open(NULL); X+ char* devpath = NULL; X+ if (argc == 2) { X+ devpath = argv[1]; X+ } X+ p = pasori_open(devpath); X if(!p){ X printf("error\n"); X exit(-1); X } X pasori_init(p); X f = felica_polling(p,POLLING_ANY,0,0); X+ if (f) { X printf("read test\n"); X for(i=0;i!=32;i++){ X if(!felica_read_without_encryption02(f,0x090f,0,i,b)){ X@@ -38,6 +43,8 @@ X X X } X+ } X+ free(f); X } X X pasori_close(p); END-of-devel/libpasori/files/patch-lptest.c echo x - devel/libpasori/pkg-descr sed 's/^X//' >devel/libpasori/pkg-descr << 'END-of-devel/libpasori/pkg-descr' XFeliCa read/write library for Sony RC-S320 USB FeliCa R/W(PaSoRi). XThis library is independent from the SDK for FeliCa. X XWWW: http://libpasori.sourceforge.jp/ END-of-devel/libpasori/pkg-descr echo x - devel/libpasori/pkg-plist sed 's/^X//' >devel/libpasori/pkg-plist << 'END-of-devel/libpasori/pkg-plist' Xbin/lpdump Xbin/lptest Xinclude/libpasori.h Xinclude/libpasori_command.h Xinclude/libpasori_liblocal.h Xinclude/libpasori_com.h Xinclude/libpasori_config.h Xlib/libpasori.a END-of-devel/libpasori/pkg-plist echo x - devel/libpasori/pkg-message sed 's/^X//' >devel/libpasori/pkg-message << 'END-of-devel/libpasori/pkg-message' X****************************************************************************** XPlace your FeliCa card on PaSoRi before executing commands. X****************************************************************************** END-of-devel/libpasori/pkg-message exit >Release-Note: >Audit-Trail: >Unformatted:
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200701210744.l0L7iClF017147>