aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lang/nqc/Makefile6
-rw-r--r--lang/nqc/distinfo4
-rw-r--r--lang/nqc/files/RCX_USBTowerPipe_fbsd.cpp320
-rw-r--r--lang/nqc/files/patch-RCX_Image.h18
-rw-r--r--lang/nqc/files/patch-RCX_USBTowerPipe_fbsd.cpp10
-rw-r--r--lang/nqc/files/patch-aa102
6 files changed, 13 insertions, 447 deletions
diff --git a/lang/nqc/Makefile b/lang/nqc/Makefile
index aad916a75835..8e869b9038ca 100644
--- a/lang/nqc/Makefile
+++ b/lang/nqc/Makefile
@@ -6,8 +6,7 @@
#
PORTNAME= nqc
-PORTVERSION= 2.5.r3
-PORTREVISION= 1
+PORTVERSION= 3.1.r2
CATEGORIES= lang
MASTER_SITES= http://bricxcc.sourceforge.net/nqc/release/
EXTRACT_SUFX= .tgz
@@ -21,9 +20,6 @@ CC= ${CXX}
MAN1= nqc.1
PLIST_FILES= bin/nqc
-pre-configure:
- ${CP} ${FILESDIR}/RCX_USBTowerPipe_fbsd.cpp ${WRKSRC}/rcxlib/
-
do-install:
${INSTALL_PROGRAM} ${WRKSRC}/bin/nqc ${PREFIX}/bin
${INSTALL_MAN} ${WRKSRC}/nqc-man-2.1r1-0.man ${PREFIX}/man/man1/nqc.1
diff --git a/lang/nqc/distinfo b/lang/nqc/distinfo
index 2abbb6b2b19a..28259690e83c 100644
--- a/lang/nqc/distinfo
+++ b/lang/nqc/distinfo
@@ -1,2 +1,2 @@
-MD5 (nqc-2.5.r3.tgz) = 65917b5057533f9c12b9504f0c966f8d
-SIZE (nqc-2.5.r3.tgz) = 224377
+MD5 (nqc-3.1.r2.tgz) = b2236a455b9daa52e492bfa4bd51ff52
+SIZE (nqc-3.1.r2.tgz) = 326613
diff --git a/lang/nqc/files/RCX_USBTowerPipe_fbsd.cpp b/lang/nqc/files/RCX_USBTowerPipe_fbsd.cpp
deleted file mode 100644
index fd0eaacf61aa..000000000000
--- a/lang/nqc/files/RCX_USBTowerPipe_fbsd.cpp
+++ /dev/null
@@ -1,320 +0,0 @@
-
-#include <sys/types.h>
-#include <sys/ioctl.h>
-#include <errno.h>
-#include <fcntl.h>
-#include <poll.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <unistd.h>
-#include <dev/usb/usb.h>
-
-#include "RCX_Pipe.h"
-
-#include "PDebug.h"
-
-#define kVendorID 1684
-#define kProductID 1
-#define kConfiguration 0
-#define kReadPipe 1
-#define kWritePipe 2
-
-// these should come from a LEGO include
-#define LTW_REQ_GET_PARM 1
-#define LTW_REQ_SET_PARM 2
-#define LTW_PARM_RANGE 2
-#define LTW_RANGE_SHORT 1
-#define LTW_RANGE_MEDIUM 2
-
-
-#define LTW_REQ_SET_TX_SPEED 0xEF
-#define LTW_REQ_SET_RX_SPEED 0xF1
-
-#define SPEED_COMM_BAUD_2400 8
-#define SPEED_COMM_BAUD_4800 0x10
-
-#define LTW_REQ_SET_TX_CARRIER_FREQUENCY 0xF4
-
-#define UInt32 uint32_t
-#define UInt16 uint16_t
-#define UInt8 uint8_t
-#define IOReturn int
-
-typedef struct LTW_REQ_REPLY_HEADER {
- UInt16 wNoOfBytes; // Number of bytes in the reply
- UInt8 bErrCode; // Request return code
- UInt8 bValue; // Request return value
-} LTW_REQ_REPLY_HEADER;
-
-typedef LTW_REQ_REPLY_HEADER LTW_REQ_GET_SET_PARM_REPLY;
-
-class RCX_USBTowerPipe_fbsd : public RCX_Pipe
-{
-public:
- RCX_USBTowerPipe_fbsd();
- ~RCX_USBTowerPipe_fbsd() { Close(); }
-
- virtual RCX_Result Open(const char *name, int mode);
- virtual void Close();
-
- virtual int GetCapabilities() const;
- virtual RCX_Result SetMode(int mode);
-
- virtual long Read(void *ptr, long count, long timeout_ms);
- virtual long Write(const void *ptr, long count);
-
-private:
- enum {
- kReadPacketSize = 8
- };
-
- IOReturn OpenDevice(short vendorID, short productID);
- IOReturn OpenInterface();
- IOReturn ControlRequest(UInt8 request, UInt16 value);
- IOReturn ControlRequest(UInt8 request, UInt8 loByte, UInt8 hiByte) {
- return ControlRequest(request, loByte + (hiByte << 8));
- }
-
- int fdCntrl;
- int fdRd;
- int fdWr;
-
- char *devname;
-};
-
-
-RCX_Pipe* RCX_NewUSBTowerPipe()
-{
- return new RCX_USBTowerPipe_fbsd();
-}
-
-
-RCX_USBTowerPipe_fbsd::RCX_USBTowerPipe_fbsd()
- : fdCntrl(0), devname(0)
-{
-}
-
-
-RCX_Result RCX_USBTowerPipe_fbsd::Open(const char *name, int mode)
-{
- IOReturn err;
-
- if (mode != kNormalIrMode) return kRCX_PipeModeError;
-
- err = OpenDevice(kVendorID, kProductID);
- PREQUIRENOT(err, Fail_OpenDevice);
-
- err = OpenInterface();
- PREQUIRENOT(err, Fail_OpenInterface);
-
- UInt8 range;
- range = (strcmp(name, "short")==0) ? LTW_RANGE_SHORT : LTW_RANGE_MEDIUM;
- ControlRequest(LTW_REQ_SET_PARM, LTW_PARM_RANGE,range);
-
- return 0;
-
-Fail_OpenInterface:
-Fail_OpenDevice:
- Close();
- return kRCX_OpenSerialError;
-}
-
-
-void RCX_USBTowerPipe_fbsd::Close()
-{
- if (devname != NULL) {
- close(fdWr);
- close(fdRd);
- close(fdCntrl);
- devname = NULL;
- }
-}
-
-
-int RCX_USBTowerPipe_fbsd::GetCapabilities() const
-{
- return kNormalIrMode | kFastIrMode | kFastOddParityFlag | kAbsorb55Flag;
-}
-
-
-RCX_Result RCX_USBTowerPipe_fbsd::SetMode(int mode)
-{
- switch(mode) {
- case kNormalIrMode:
- ControlRequest(LTW_REQ_SET_TX_SPEED, SPEED_COMM_BAUD_2400);
- ControlRequest(LTW_REQ_SET_RX_SPEED, SPEED_COMM_BAUD_2400);
- return kRCX_OK;
- case kFastIrMode:
- ControlRequest(LTW_REQ_SET_PARM, LTW_PARM_RANGE, LTW_RANGE_SHORT);
- ControlRequest(LTW_REQ_SET_TX_SPEED, SPEED_COMM_BAUD_4800);
- ControlRequest(LTW_REQ_SET_RX_SPEED, SPEED_COMM_BAUD_4800);
- ControlRequest(LTW_REQ_SET_TX_CARRIER_FREQUENCY, 38);
- return kRCX_OK;
- default:
- return kRCX_PipeModeError;
- }
-}
-
-
-#define MAX_PACKET 200
-
-long RCX_USBTowerPipe_fbsd::Write(const void *ptr, long length)
-{
- const unsigned char *data = (const unsigned char *)ptr;
-
- int total = 0;
-
-// printf("Write %ld\n", length);
-
- while(length > 0) {
- IOReturn err;
- int count = length;
- if (count > MAX_PACKET)
- count = MAX_PACKET;
- err = write(fdWr, (void *)data, count);
- if (err == count)
- err = 0;
- PREQUIRENOT(err, Fail_WritePipe);
-
- length -= count;
- data += count;
- total += count;
- }
-
-Fail_WritePipe:
-// printf("Done %d\n", total);
- return total;
-}
-
-
-
-long RCX_USBTowerPipe_fbsd::Read(void *data, long length, long timeout_ms)
-{
- const unsigned char *rdptr = (const unsigned char *)data;
- IOReturn err;
- int count;
- int total = 0;
- struct pollfd pfd;
-
-// printf("Read %ld, timeout %ld\n", length, timeout_ms);
- while(length > 0) {
- pfd.fd = fdRd;
- pfd.events = POLLIN;
- err = poll(&pfd, 1, timeout_ms);
- if (err == 0)
- break;
- if (err == -1) {
- if(errno == EINTR)
- continue;
- else
- break;
- }
- count = length;
- if (count > MAX_PACKET)
- count = MAX_PACKET;
- err = read(fdRd, (void *)rdptr, count);
- if (err == -1)
- break;
-
-// printf("err %d\n", err);
- if (err == 0 || err == -1)
- goto Fail_ReadPipe;
-
- count = err;
- length -= count;
- rdptr += count;
- total += count;
- }
-
-Fail_ReadPipe:
-// printf("Got %d\n", total);
- return total;
-}
-
-
-IOReturn RCX_USBTowerPipe_fbsd::OpenDevice(short vendorID, short productID)
-{
- char *dn = "/dev/ugen0";
- int err, fd;
- usb_device_descriptor_t usbdd;
-
- fd = open(dn, O_RDWR);
- if (fd == -1)
- return errno;
- err = ioctl(fd, USB_GET_DEVICE_DESC, &usbdd);
- if (err == -1) {
- perror("ioctl error");
- return errno;
- }
-// printf("idVendor %d\n", UGETW(usbdd.idVendor));
-// printf("idProduct %d\n", UGETW(usbdd.idProduct));
- if (UGETW(usbdd.idVendor) != kVendorID ||
- UGETW(usbdd.idProduct) != kProductID) {
- fprintf(stderr, "This is not an USB IR Tower!\n");
- return -1;
- }
-
- devname = dn;
- fdCntrl = fd;
-
- return 0;
-}
-
-
-IOReturn RCX_USBTowerPipe_fbsd::OpenInterface()
-{
- char *dn;
- int err, iov;
-
- dn = (char *)malloc(strlen(devname) + 2 + 1);
- strcpy(dn, devname);
- strcat(dn, ".1");
- fdRd = open(dn, O_RDONLY|O_NONBLOCK);
- if (fdRd == -1) {
- perror(dn);
- return -1;
- }
- iov = 1;
- err = ioctl(fdRd, USB_SET_SHORT_XFER, &iov);
- if (fdRd == -1) {
- perror("ioctl USB_SET_SHORT_XFER");
- return -1;
- }
- iov = 5000;
- err = ioctl(fdRd, USB_SET_TIMEOUT, &iov);
- if (fdRd == -1) {
- perror("ioctl USB_SET_TIMEOUT");
- return -1;
- }
-
- strcpy(dn, devname);
- strcat(dn, ".2");
- fdWr = open(dn, O_WRONLY);
- iov = 5000;
-// ioctl(fdWr, USB_SET_TIMEOUT, &iov);
-
- return 0;
-}
-
-
-IOReturn RCX_USBTowerPipe_fbsd::ControlRequest(UInt8 request, UInt16 value)
-{
- IOReturn err;
- struct usb_ctl_request req;
- LTW_REQ_GET_SET_PARM_REPLY reply;
-
- req.ucr_request.bmRequestType = UT_READ_VENDOR_DEVICE;
- req.ucr_request.bRequest = request;
- USETW(req.ucr_request.wValue, value);
- USETW(req.ucr_request.wIndex, 0);
- USETW(req.ucr_request.wLength, sizeof(reply));
- req.ucr_data = &reply;
-
- err = ioctl(fdCntrl, USB_DO_REQUEST, &req);
-
- // size of actual reply in req.wLenDone
- //printf("%d %d %d\n", reply.wNoOfBytes, reply.bErrCode, reply.bValue);
-
- return err;
-}
diff --git a/lang/nqc/files/patch-RCX_Image.h b/lang/nqc/files/patch-RCX_Image.h
deleted file mode 100644
index 1f3c1b74ae23..000000000000
--- a/lang/nqc/files/patch-RCX_Image.h
+++ /dev/null
@@ -1,18 +0,0 @@
---- rcxlib/RCX_Image.h.org Sun Nov 9 06:14:23 2003
-+++ rcxlib/RCX_Image.h Tue Aug 17 12:58:19 2004
-@@ -78,7 +78,6 @@
- void Clear();
- int GetSize() const;
-
--private:
- class Chunk
- {
- public:
-@@ -106,6 +105,7 @@
- friend class RCX_Image;
- };
-
-+private:
- struct Variable
- {
- int fIndex;
diff --git a/lang/nqc/files/patch-RCX_USBTowerPipe_fbsd.cpp b/lang/nqc/files/patch-RCX_USBTowerPipe_fbsd.cpp
new file mode 100644
index 000000000000..5448e8463d6d
--- /dev/null
+++ b/lang/nqc/files/patch-RCX_USBTowerPipe_fbsd.cpp
@@ -0,0 +1,10 @@
+--- rcxlib/RCX_USBTowerPipe_fbsd.cpp.org Mon Jun 13 21:36:21 2005
++++ rcxlib/RCX_USBTowerPipe_fbsd.cpp Sun Jul 3 21:30:09 2005
+@@ -224,6 +224,7 @@
+ while(length > 0) {
+ pfd.fd = fdRd;
+ pfd.events = POLLIN;
++ usleep(timeout_ms * 1000 / 8);
+ err = poll(&pfd, 1, timeout_ms);
+ if (err == 0)
+ break;
diff --git a/lang/nqc/files/patch-aa b/lang/nqc/files/patch-aa
deleted file mode 100644
index fd5553e04c4b..000000000000
--- a/lang/nqc/files/patch-aa
+++ /dev/null
@@ -1,102 +0,0 @@
---- Makefile.orig Sun Nov 9 06:14:20 2003
-+++ Makefile Tue Nov 25 19:51:54 2003
-@@ -28,20 +28,20 @@
- #
- # Pick your C++ compiler.
- #
--CC=g++
-+CXX?=${CXX}
- # CC=gcc
-
- #
- # Pick your YACC processor
- #
--YACC = bison -y
--# YACC = yacc
-+# YACC = bison -y
-+YACC ?= yacc
-
- #
- # Define the FLEX processor
- # note - lex will not work
- #
--FLEX = flex
-+FLEX ?= flex
-
- # Link in any necessary C++ libraries
- #
-@@ -50,19 +50,20 @@
-
-
- # installation information
--BINDIR=/usr/local/bin
--MANDIR=/usr/local/man/man1
-+PREFIX?=/usr/local
-+BINDIR=$(PREFIX)/bin
-+MANDIR=$(PREFIX)/man/man1
- MANEXT=1
-
-
- # other commands
--CP=cp -f
--MKDIR=mkdir
--MV=mv -f
--RM=rm -f
-+CP?=cp -f
-+MKDIR?=mkdir
-+MV?=mv -f
-+RM?=rm -f
-
- # CFLAGS
--CFLAGS = -pipe -Iplatform -Ircxlib -Inqc -Icompiler -Wall -Wstrict-prototypes -Wmissing-prototypes
-+CFLAGS += -Iplatform -Ircxlib -Inqc -Icompiler
-
- USBOBJ = rcxlib/RCX_USBTowerPipe_none.o
-
-@@ -87,18 +88,23 @@
- # Solaris
- CFLAGS += -DSOLARIS
- else
-+ifneq (,$(strip $(findstring $(OSTYPE), FreeBSD)))
-+ # FreeBSD
-+ USBOBJ = rcxlib/RCX_USBTowerPipe_fbsd.o
-+else
- # default Unix build without USB support
- CFLAGS += -O6
- endif
- endif
- endif
-+endif
-
-
- # this must happen after the platform tweaks just in case the platform
- # wants to redefine the default serial name
- #
- ifndef DEFAULT_SERIAL_NAME
-- DEFAULT_SERIAL_NAME = "/dev/ttyS0"
-+ DEFAULT_SERIAL_NAME = "/dev/cuaa0"
- endif
- CFLAGS += -DDEFAULT_SERIAL_NAME='$(DEFAULT_SERIAL_NAME)'
-
-@@ -150,10 +156,10 @@
- $(MKDIR) bin
-
- bin/nqc : compiler/parse.cpp $(OBJ)
-- $(CC) -o $@ $(OBJ) $(LIBS)
-+ $(CXX) -o $@ $(OBJ) $(LIBS)
-
- bin/mkdata : mkdata/mkdata.cpp nqc/SRecord.cpp
-- $(CC) -o bin/mkdata -Inqc/ -Iplatform/ mkdata/mkdata.cpp nqc/SRecord.cpp
-+ $(CXX) -o bin/mkdata -Inqc/ -Iplatform/ mkdata/mkdata.cpp nqc/SRecord.cpp
-
- #
- # clean up stuff
-@@ -213,7 +219,7 @@
- # general rule for compiling
- #
- .cpp.o:
-- $(CC) -c $(CFLAGS) $< -o $*.o
-+ $(CXX) -c $(CFLAGS) $< -o $*.o
-
-
- #