Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • danc/MicroCART
  • snawerdt/MicroCART_17-18
  • bbartels/MicroCART_17-18
  • jonahu/MicroCART
4 results
Show changes
Showing
with 229 additions and 6504 deletions
#ifndef CLI_GETPID_H
#define CLI_GETPID_H
#include "frontend_getpid.h"
int getValues(struct backend_conn *, struct frontend_pid_data *);
int cli_getpid(struct backend_conn * conn, int argc, char ** argv);
#endif
\ No newline at end of file
#ifndef CLI_MONITOR_H
#define CLI_MONITOR_H
#include "frontend_getpid.h"
int cli_getpid(
struct backend_conn * conn,
struct frontend_pid_data * pid_data);
#endif
\ No newline at end of file
#define _GNU_SOURCE
#include "frontend_common.h"
#include "config.h"
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <sys/un.h>
#include <unistd.h>
#include <err.h>
struct backend_conn {
FILE * socket;
size_t len;
char * buf;
};
struct backend_conn * ucart_backendConnect()
{
int s;
struct sockaddr_un remote;
char str[100];
if ((s = socket(AF_UNIX, SOCK_STREAM, 0)) == -1) {
perror("socket");
exit(1);
}
struct backend_conn * conn = NULL;
printf("Trying to connect...\n");
remote.sun_family = AF_UNIX;
char * sock_env = getenv(SOCKET_ENV);
strcpy(remote.sun_path, sock_env ? sock_env : DEFAULT_SOCKET);
if (connect(s, (struct sockaddr *)&remote, sizeof(remote)) == -1) {
perror("connect");
goto fail_final;
}
conn = malloc(sizeof(struct backend_conn));
if (conn == NULL) {
perror("malloc");
goto fail_sock;
}
conn->len = 0;
conn->buf = NULL;
conn->socket = fdopen(s, "rw");
if (conn->socket == NULL) {
perror("fdopen");
goto fail_malloc_conn;
}
/* success */
goto fail_final;
fail_malloc_conn:
free(conn);
conn = NULL;
fail_sock:
close(s);
fail_final:
return conn;
}
void ucart_backendDisconnect(struct backend_conn * conn)
{
fclose(conn->socket);
if (conn->buf) {
free(conn->buf);
}
free(conn);
}
char * ucart_backendGetline(struct backend_conn *conn)
{
getline(&conn->buf, &conn->len, conn->socket);
return conn->buf;
}
int ucart_backendWrite(struct backend_conn *conn, const char * line)
{
return fputs(line, conn->socket);
}
#ifndef FRONTEND_COMMON_H
#define FRONTEND_COMMON_H
#include <stdlib.h>
struct backend_conn;
/* Start connection to quad */
struct backend_conn * ucart_backendConnect(void);
/* Stop connection to quad */
void ucart_backendDisconnect(struct backend_conn * conn);
/* Get a line from the backend.
*
* The line will remain valid until the next call to ucart_backendGetline.
*/
char * ucart_backendGetline(struct backend_conn * conn);
/* Write a line to the backend */
int ucart_backendWrite(struct backend_conn * backend, const char * line);
#endif
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include "frontend_getpid.h"
#include "pid_common.h"
/* Get a specified PID.
*
* Example:
*
* struct frontend_pid_data pid_data;
* pid_data.pid = PITCH;
* if (frontend_getpid(conn, &pid_data)) {
* error
* } else {
* pid_data.p, pid_data.i, and pid_data.d are filled
* }
*
* Returns 0 on success, 1 on error
*/
int frontend_getpid(
struct backend_conn * conn, struct frontend_pid_data * pid_data) {
char line[10] = "getpid \0";
char pid_option[2];
switch (pid_data->pid) {
case PITCH :
strncpy(pid_option, "p\0", 2);
break;
case ROLL :
strncpy(pid_option, "i\0", 2);
break;
case YAW :
strncpy(pid_option, "d\0", 2);
break;
default :
return 1;
}
strncat(line, pid_option, 2);
int size;
if((size = ucart_backendWrite(conn, line)) < 0 ) {
printf("nope! %d \n", size);
return 1;
}
printf("we send size bytes\n");
return 0;
}
\ No newline at end of file
#ifndef FRONTEND_GETPID_H
#define FRONTEND_GETPID_H
#include "frontend_common.h"
#include "pid_common.h"
/* Get a specified PID.
*
* Example:
*
* struct frontend_pid_data pid_data;
* pid_data.pid = PITCH;
* if (frontend_getpid(conn, &pid_data)) {
* error
* } else {
* pid_data.p, pid_data.i, and pid_data.d are filled
* }
*
* Returns 0 on success, 1 on error
*/
int frontend_getpid(
struct backend_conn * conn,
struct frontend_pid_data * pid_data);
#endif
#ifndef PID_COMMON_H
#define PID_COMMON_H
enum frontend_pid {
PITCH,
ROLL,
YAW,
NUM_PIDS
};
struct frontend_pid_data {
enum frontend_pid pid;
float p;
float i;
float d;
};
#endif
Subproject commit 99c54dbefe04897cc7c146101a126f62c0e65f97
#include "commands.h"
static command_t registeredCommands[NUM_COMMANDS] = {
{ 0x00, 0x00, stringType, "debug", &debug }, //DEBUG
{ 0x01, 0x00, stringType, "setyaw", &setyaw }, //CALIBRATION
{ 0x01, 0x01, stringType, "setyawp", &setyawp },
{ 0x01, 0x02, stringType, "setyawd", &setyawd },
{ 0x01, 0x03, stringType, "setroll", &setroll },
{ 0x01, 0x04, stringType, "setrollp", &setrollp },
{ 0x01, 0x05, stringType, "setrolld", &setrolld },
{ 0x01, 0x06, stringType, "setpitch", &setpitch },
{ 0x01, 0x07, stringType, "setpitchp", &setpitchp },
{ 0x01, 0x08, stringType, "setpitchd", &setpitchd },
{ 0x01, 0x09, stringType, "setthrottle", &setthrottle },
{ 0x01, 0x0A, stringType, "setthrottlep", &setthrottlep },
{ 0x01, 0x0B, stringType, "setthrottlei", &setthrottlei },
{ 0x01, 0x0C, stringType, "setthrottled", &setthrottled },
{ 0x02, 0x00, stringType, "getaccel", &getaccel }, //REQUEST
{ 0x02, 0x01, stringType, "getgyro", &getgyro },
{ 0x02, 0x02, stringType, "getpitchangle", &getpitchangle },
{ 0x02, 0x03, stringType, "getrollangle", &getrollangle },
{ 0x03, 0x00, stringType, "accelresp", accelresp }, //RESPONSE
{ 0x03, 0x01, stringType, "gyroresp", &gyroresp },
{ 0x03, 0x02, stringType, "pitchangleresp", &pitchangleresp },
{ 0x03, 0x03, stringType, "rollangleresp", &rollangleresp },
{ 0x04, 0x00, stringType, "update", &update }, //UPDATE
{ 0x04, 0x01, stringType, "beginupdate", &beginupdate },
{ 0x05, 0x00, stringType, "log", &logdata }, //LOG
{ 0x05, 0x01, stringType, "response", &response },
};
int debug(unsigned char *c, int dataLen){
return 0;
}
int setyaw(unsigned char *c, int dataLen){
return 0;
}
int setyawp(unsigned char *c, int dataLen){
return 0;
}
int setyawd(unsigned char *c, int dataLen){
return 0;
}
int setroll(unsigned char *c, int dataLen){
return 0;
}
int setrollp(unsigned char *c, int dataLen){
return 0;
}
int setrolld(unsigned char *c, int dataLen){
return 0;
}
int setpitch(unsigned char *c, int dataLen){
return 0;
}
int setpitchp(unsigned char *c, int dataLen){
return 0;
}
int setpitchd(unsigned char *c, int dataLen){
return 0;
}
int setthrottle(unsigned char *c, int dataLen){
return 0;
}
int setthrottlep(unsigned char *c, int dataLen){
return 0;
}
int setthrottlei(unsigned char *c, int dataLen){
return 0;
}
int setthrottled(unsigned char *c, int dataLen){
return 0;
}
int getaccel(unsigned char *c, int dataLen){
return 0;
}
int getgyro(unsigned char *c, int dataLen){
return 0;
}
int getpitchangle(unsigned char *c, int dataLen){
return 0;
}
int getrollangle(unsigned char *c, int dataLen){
return 0;
}
int accelresp(unsigned char *c, int dataLen){
return 0;
}
int gyroresp(unsigned char *c, int dataLen){
return 0;
}
int pitchangleresp(unsigned char *c, int dataLen){
return 0;
}
int rollangleresp(unsigned char *c, int dataLen){
return 0;
}
int update(unsigned char *c, int dataLen){
return 0;
}
int beginupdate(unsigned char *c, int dataLen){
return 0;
}
int logdata(unsigned char *c, int dataLen){
return 0;
}
int response(unsigned char *packet, int dataLen){
return 0;
}
\ No newline at end of file
#ifndef _COMMANDS_H
#define _COMMANDS_H
#define NUM_COMMANDS 26
//TODO handle with enums
#define MAX_TYPE 6
#define MAX_SUBTYPE 100
int debug(unsigned char *c, int dataLen);
int setyaw(unsigned char *c, int dataLen);
int setyawp(unsigned char *c, int dataLen);
int setyawd(unsigned char *c, int dataLen);
int setroll(unsigned char *c, int dataLen);
int setrollp(unsigned char *c, int dataLen);
int setrolld(unsigned char *c, int dataLen);
int setpitch(unsigned char *c, int dataLen);
int setpitchp(unsigned char *c, int dataLen);
int setpitchd(unsigned char *c, int dataLen);
int setthrottle(unsigned char *c, int dataLen);
int setthrottlep(unsigned char *c, int dataLen);
int setthrottlei(unsigned char *c, int dataLen);
int setthrottled(unsigned char *c, int dataLen);
int getaccel(unsigned char *c, int dataLen);
int getgyro(unsigned char *c, int dataLen);
int getpitchangle(unsigned char *c, int dataLen);
int getrollangle(unsigned char *c, int dataLen);
int accelresp(unsigned char *c, int dataLen);
int gyroresp(unsigned char *c, int dataLen);
int pitchangleresp(unsigned char *c, int dataLen);
int rollangleresp(unsigned char *c, int dataLen);
int update(unsigned char *c, int dataLen);
int beginupdate(unsigned char *c, int dataLen);
int logdata(unsigned char *c, int dataLen);
int response(unsigned char *packet, int dataLen);
enum Message{
BEGIN_CHAR = 0xBE,
END_CHAR = 0xED
};
enum DataType
{
floatType,
intType,
stringType
};
typedef struct command {
char ID;
char subID;
char dataType;
char commandText[100];
int (*functionPtr)(unsigned char *command, int dataLen);
}command_t;
enum CommandIDs{
DEBUG,
CALIBRATION,
REQUEST,
RESPONSE,
UPDATE,
LOG,
MAX_COMMAND_IDS
};
static command_t registeredCommands[NUM_COMMANDS];
#endif
\ No newline at end of file
/* Author: Kris Burney
*
* BlueTooth socket program for passing vrpn data to quad.
*/
//system includes
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <signal.h>
#include <sys/socket.h>
#include <bluetooth/bluetooth.h>
#include <bluetooth/rfcomm.h>
#include <pthread.h>
//user created includes
#include "communication.h"
#include "commands.h"
#include "vrpn_tracker.hpp"
#include "type_def.h"
#include "logger.h"
#define QUAD_BT_ADDR "00:06:66:64:61:D6"
#define QUAD_BT_CHANNEL 0x01
#define CMD_MAX_LENGTH 1024
// function prototypes
void killHandler(int);
void readAndPrint(void);
void sendVrpnPacket(struct ucart_vrpn_TrackerData *);
void sendStartPacket(void);
void getVRPNPacket(struct ucart_vrpn_TrackerData *);
void printVrpnData(struct ucart_vrpn_TrackerData *);
int connectToZybo();
void *handleQuadResponse();
void *handleCliInput();
int atomic_check(int*, pthread_mutex_t*);
void performCommand(char *cmdName, char * command);
int startsWith(const char *pre, const char *str);
//static void cb(struct ucart_vrpn_TrackerData *);
// global variables
static volatile int keepRunning = 1;
const char *TRACKER_IP = "UAV@192.168.0.120:3883";
int quadlog_file;
int zyboSocket, status, bytes_read;
struct ucart_vrpn_tracker * tracker = NULL;
const char *logHeader = "";//"#\n#\tDefault log header\n#\tEverything after '#'`s will be printed as is in the processed logs.\n#\n\0";
pthread_mutex_t quadResponseMutex, cliInputMutex ;
unsigned char *respBuf, *commandBuf;
int newQuadResponse = 0, newCliInput = 0;
// Structures to be used throughout
modular_structs_t structs = {};
// Callback to be ran whenever the tracker receives data.
// Currently doing much more than it should. It will be slimmed down
// in the future.
// static void cb(struct ucart_vrpn_TrackerData * td)
// {
// static int count = 0;
// if(!(count % 10)) {
// sendVrpnPacket(td);
// updateLogFile(td);
// }
// count++;
// // This will print the vrpn data to the terminal if necissary.
// // Commented out because the callback will cover quad log data
// // at the end of flight.
// /**if(!(count % 100)) {
// printVrpnData(td);
// printf("[Info] Received %d tracker updates.\n", count);
// }**/
// }
void *handleQuadResponse() {
unsigned char buffer[255];
while(keepRunning) {
// Clear the buffer and read the message from the socket (from the server)
memset(buffer, 0, 255);
// If there was an error reading from the socket, throw an error
if(read(zyboSocket, buffer, 255) <= 0) {
fprintf(stderr, "CLI QUAD: ERROR reading from quad.\n");
continue;
}
pthread_mutex_lock(&quadResponseMutex);
newQuadResponse = 1;
memcpy(respBuf, buffer, 255);
pthread_mutex_unlock(&quadResponseMutex);
//parse_packet(buffer, &respBuf, &metadata);
// fprintf(stderr, "CLI QUAD: %s\n", buffer);
}
pthread_exit(NULL);
}
void *handleCliInput() {
sleep(1);
while(keepRunning)
{
char userCommand[CMD_MAX_LENGTH] = {};
fprintf(stderr, "$microcart> ");
while(fgets(userCommand, sizeof(userCommand), stdin) != NULL && keepRunning) {
// if the user simply hit enter then let them try again
if((userCommand[0] == '\n') || (userCommand[0] == '\r'))
{
fprintf(stderr, "$microcart> ");
memset(userCommand, 0, CMD_MAX_LENGTH);
continue;
}
if((userCommand[strlen(userCommand) - 1] == '\n') || (userCommand[strlen(userCommand) - 1] == '\r'))
userCommand[strlen(userCommand) - 1] = '\0';
pthread_mutex_lock(&cliInputMutex);
newCliInput = 1;
memcpy(commandBuf, &userCommand, CMD_MAX_LENGTH);
pthread_mutex_unlock(&cliInputMutex);
fprintf(stderr, "$microcart> ");
memset(userCommand, 0, CMD_MAX_LENGTH);
}
}
pthread_exit(NULL);
}
int main(int argc, char **argv)
{
pthread_t quadResponse, cliInput;
respBuf = malloc(1024);
commandBuf = malloc(CMD_MAX_LENGTH);
signal(SIGINT, killHandler);
if ((zyboSocket = connectToZybo()) < 0)
{
perror("Error connecting to Zybo...");
free(respBuf);
free(commandBuf);
exit(1);
}
// create vrpnTracker instance
// tracker = ucart_vrpn_tracker_createInstance(TRACKER_IP);
// Retrieve VRPN data from the control loop
fprintf(stderr, "CLI: Starting quad receiving thread...\n");
pthread_create(&quadResponse, NULL, handleQuadResponse, NULL);
fprintf(stderr, "CLI: Thread quad receiving started.\n");
// Retrieve user command input
fprintf(stderr, "CLI: Starting cli input thread...\n");
pthread_create(&cliInput, NULL, handleCliInput, NULL);
fprintf(stderr, "CLI: Thread Cli input started.\n");
// open the log file
if( (status = createLogFile(argc, argv[1])) < 0)
{
perror("Error creating log file...");
free(respBuf);
free(commandBuf);
exit(1);
}
writeStringToLog(logHeader);
//tell the quad we are ready to send it vrpn data
printf("sending Start Packet...\n");
sendStartPacket();
// this function will be called whenever tracker receives data
// ucart_vrpn_tracker_addCallback(tracker, cb);
int updatePrompt = 0;
while(keepRunning)
{
char tmpRespBuf[1024];
unsigned char tmpCommandBuf[CMD_MAX_LENGTH];
if(updatePrompt)
{
fprintf(stderr, "$microcart> ");
updatePrompt = 0;
}
//check for user input via cli
if(atomic_check(&newCliInput, &cliInputMutex))
{
pthread_mutex_lock(&cliInputMutex);
newCliInput = !newCliInput;
memcpy(tmpCommandBuf, commandBuf, CMD_MAX_LENGTH);
pthread_mutex_unlock(&cliInputMutex);
// I can use printf becuase the command was gathered using fgets.
//fprintf(stderr, "\rINPUT FOUND via CLI: '%s'\n", tmpCommandBuf);
updatePrompt = !updatePrompt;
unsigned char *packet;
formatCommand(tmpCommandBuf, &packet);
}
//check for update/response from quad
if(atomic_check(&newQuadResponse, &quadResponseMutex))
{
pthread_mutex_lock(&quadResponseMutex);
newQuadResponse = !newQuadResponse;
memcpy(tmpRespBuf, respBuf, 1024);
pthread_mutex_unlock(&quadResponseMutex);
char buf[1025];
memcpy(buf, tmpRespBuf, 1024);
buf[1025] = '\0';
//fprintf(stderr, "\rINPUT FOUND via QUAD: '%s'\n", buf);
writeStringToLog(buf);
updatePrompt = !updatePrompt;
}
}
//ucart_vrpn_tracker_freeInstance(tracker);
//free(vrpnData);
free(respBuf);
free(commandBuf);
pthread_mutex_destroy(&cliInputMutex);
pthread_mutex_destroy(&quadResponseMutex);
close(zyboSocket);
close(quadlog_file);
return 0;
}
// signal handler to exit while loop of main function
void killHandler(int dummy) {
keepRunning = 0;
printf("\nleaving Bluetooth module\n");
}
void readAndPrint() {
// read data from the server
// this is a blocking call.
//TODO: Implement a non blocking version of this.
bytes_read = read(zyboSocket, respBuf, sizeof(respBuf) -1);
if( bytes_read > 0)
{
respBuf[bytes_read] = '\0';
printf("%s", respBuf);
}
}
void sendStartPacket() {
unsigned char packet[8] = {0};
metadata_t metadata =
{
BEGIN_CHAR,
0x04,
0x01,
0x01,
0
};
packet[0] = metadata.begin_char; // BEGIN //PACKET_START_BYTE;
packet[1] = metadata.msg_type; // UPDATE //'U'; // U for vrpn camera update, C for command
packet[2] = metadata.msg_subtype; // BEGIN UPDATE
packet[3] = 1; // MSG ID(1)
packet[4] = 0; // MSG ID(2)
packet[5] = 0; // DATALEN(1)
packet[6] = 0; // DATALEN(2)
char checksum = 0;
int i;
for(i=0; i < metadata.data_len + 7; i++)
checksum ^= packet[i];
packet[metadata.data_len + 7] = checksum; //PACKET_END_BYTE;
status = write(zyboSocket, &packet, metadata.data_len + 8);
if (status != 8)
{
perror("Error sending start packet...\n");
keepRunning = 0;
}else
{
printf("Start packet successfuly sent...\n");
}
}
void sendVrpnPacket(struct ucart_vrpn_TrackerData *info) {
int pSize = sizeof(info) + 8;
int n;
char packet[pSize];
packet[0] = 0xBE; // BEGIN //PACKET_START_BYTE;
packet[1] = 0x04; // UPDATE //'U'; // U for vrpn camera update, C for command
packet[2] = 0x00; // N/A
//TODO Figure out Packet ID with this new ucar_vrpn_TrackerData struct
packet[3] = (0x00 & 0x000000ff); // MSG ID(1)
packet[4] = ((0x00 >> 8) & 0x000000ff); // MSG ID(2)
packet[5] = (sizeof(info) & 0x000000ff); // DATALEN(1)
packet[6] = ((sizeof(info) >> 8) & 0x00000ff); // DATALEN(2)
memcpy(&packet[7], &info, sizeof(info));
char checksum = 0;
int i;
for(i=0; i < pSize - 1; i++)
checksum ^= packet[i];
packet[pSize - 1] = checksum; //PACKET_END_BYTE;
n = write(zyboSocket, packet, pSize);
if(n < 0) {
perror("vrpnhandler: ERROR writing to socket");
keepRunning = 0;
}
}
void getVRPNPacket(struct ucart_vrpn_TrackerData *td) {
int status;
if((status = ucart_vrpn_tracker_getData(tracker, td)) < 0)
{
perror("Error receiving VRPN data from tracker...");
keepRunning = 0;
}
}
void printVrpnData(struct ucart_vrpn_TrackerData * td) {
printf("FPS: %lf Pos (xyz): (%lf %lf %lf) Att (pry): (%lf %lf %lf)\n",
td->fps, td->x, td->y, td->z, td->pitch, td->roll, td->yaw);
}
int connectToZybo() {
int sock;
struct sockaddr_rc addr = { -1 };
// allocate a socket
sock = socket(AF_BLUETOOTH, SOCK_STREAM, BTPROTO_RFCOMM);
//set the connection params ie. who to connect to
addr.rc_family = AF_BLUETOOTH;
addr.rc_channel = (uint8_t) QUAD_BT_CHANNEL;
str2ba( QUAD_BT_ADDR, &addr.rc_bdaddr );
printf("Attempting to connect to zybo. Please be patient...\n");
// blocking call to connect to socket sock ie. zybo board
status = connect(sock, (struct sockaddr *)&addr, sizeof(addr));
// connection failed
if(status < 0)
{
close(sock);
printf("Connection failed!...\n");
return -1;
}
else
{
printf("connection successful!...\n");
return sock;
}
}
int atomic_check(int* atomicFlag, pthread_mutex_t* mutex) {
pthread_mutex_lock(mutex);
int result = *atomicFlag;
pthread_mutex_unlock(mutex);
return result;
}
void performCommand(char *cmdName, char * command) {
for(int i = 0; i < NUM_COMMANDS; ++i)
{
if(startsWith(registeredCommands[i].commandText, command));
fprintf(stderr, "\r\n You used cmd '%s'\n",registeredCommands[i].commandText);
}
}
int startsWith(const char *pre, const char *str) {
size_t lenpre = strlen(pre),
lenstr = strlen(str);
return lenstr < lenpre ? 0 : (strncmp(pre, str, lenpre) == 0);
}
\ No newline at end of file
---
Language: Cpp
BasedOnStyle: LLVM
Standard: Auto
IndentWidth: 4
TabWidth: 4
UseTab: Never
AccessModifierOffset: -4
AllowShortIfStatementsOnASingleLine: true
BreakBeforeBraces: Stroustrup
BreakConstructorInitializersBeforeComma: true
NamespaceIndentation: All
DerivePointerBinding: true
...
---
# Remove these blocked checks once the first batch are cleaned up
# - readability-braces-around-statements
Checks: '*,-clang-analyzer-alpha*,-llvm-include-order,-google-*,-llvm-header-guard,-readability-braces-around-statements,-misc-use-override'
HeaderFilterRegex: '.*'
...
[submodule "submodules/hidapi"]
path = submodules/hidapi
url = https://github.com/vrpn/hidapi.git
[submodule "submodules/jsoncpp"]
path = submodules/jsoncpp
url = https://github.com/vrpn/jsoncpp.git
compiler:
- clang
- gcc
before_install:
- git submodule update --init --recursive
- sudo apt-get update -qq
- sudo apt-get install -qq libgpm-dev freeglut3-dev libxmu-dev libxi-dev libusb-1.0-0-dev libqt4-dev
language: cpp
script: mkdir build && cd build && cmake -DVRPN_GPL_SERVER=TRUE -D VRPN_BUILD_EXTRA_COMPILER_WARNINGS=TRUE .. && make && make test
cmake_minimum_required(VERSION 2.8.3)
project(VRPN)
#-----------------------------------------------------------------------------
# XXX Things to make better.
#
# Repeat for all other configurable headers/libraries - see below for a list
# Move the shared-library code over to CMake's normal definition
# Improve this CPack installer.
###
# Local CMake Modules - keep this first
###
list(APPEND CMAKE_MODULE_PATH ${VRPN_SOURCE_DIR}/cmake)
include(UseBackportedModules)
include(MSVCMultipleProcessCompile)
include(CppcheckTargets)
include(SetDefaultBuildType)
include(OptionRequires)
include(CTest)
include(CreateDashboardScripts)
include(CheckIncludeFileCXX)
if((NOT CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR) OR VRPN_SUBPROJECT_BUILD)
# If you're using this as a subproject and want things installed, set VRPN_INSTALL TRUE.
set(SUBPROJECT TRUE)
set(DEFAULT_OFF_IF_SUBPROJECT OFF_BY_DEFAULT)
set(TRUE_UNLESS_SUBPROJECT FALSE)
else()
set(VRPN_INSTALL TRUE)
set(SUBPROJECT FALSE)
set(DEFAULT_OFF_IF_SUBPROJECT)
set(TRUE_UNLESS_SUBPROJECT TRUE)
endif()
# TODO Remove the following when it is fixed in the Android CMake.
if(BUILD_WITH_ANDROID_NDK)
set(CMAKE_CXX_FLAGS
"--sysroot=${ANDROID_NDK_SYSROOT} ${CMAKE_CXX_FLAGS}")
set(CMAKE_C_FLAGS "--sysroot=${ANDROID_NDK_SYSROOT} ${CMAKE_C_FLAGS}")
endif()
###
# On Windows 7, it does not work to install in the default location,
# which is the Program Files directory, because you have to not only have
# file permission to write there but also "run as administrator." This
# means that "make install" from a Visual Studio project fails. To get
# around that, we need to set CMAKE_INSTALL_PREFIX to something other
# than the default. However, it is a cache variable that has already been
# set. If we make a local variable, it uses this rather than the cache
# variable and never tells the poor user what happened (the GUI location
# looks standard but the files end up somewhere else). If we make it a
# non-forced cache variable, it already has a value so does not change.
# If we make it a forced cache variable, it gets overwritten every time
# and the user cannot change it on the GUI. So we have a workaround here.
# We make a cache variable that records whether we have ever forced the
# install prefix. If not, we force it. If so, we don't force it again.
# This has the effect of setting it the first time cmake is run, showing
# the change in the GUI, and also letting the user change the value in
# the GUI if they don't like what we did. If I knew how to do this only
# happen on Windows 7, I'd make the if(WIN32) more specific.
if(WIN32 AND NOT SUBPROJECT)
if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT
AND
(NOT
ONCE_SET_CMAKE_INSTALL_PREFIX))
set(ONCE_SET_CMAKE_INSTALL_PREFIX
true
CACHE
INTERNAL
"Have we set the install prefix yet?"
FORCE)
set(CMAKE_INSTALL_PREFIX
C:/usr/local
CACHE
PATH
"Install path prefix, prepended onto install directories"
FORCE)
endif()
endif()
###
# Basic packaging options and versioning
include("${CMAKE_CURRENT_SOURCE_DIR}/ParseVersion.cmake")
message(STATUS
"Configuring the VRPN suite version ${CPACK_PACKAGE_VERSION} using the CMake-based build system\n")
set(CPACK_PACKAGE_VENDOR
"Russell M. Taylor II at the University of North Carolina at Chapel Hill")
set(CPACK_PACKAGE_FILE_NAME
"${PROJECT_NAME}-${CPACK_PACKAGE_VERSION}-${CMAKE_SYSTEM_NAME}-${CMAKE_SYSTEM_PROCESSOR}")
set(CPACK_SOURCE_PACKAGE_FILE_NAME
"${PROJECT_NAME}-${CPACK_PACKAGE_VERSION}-src")
set(CPACK_PACKAGE_CONTACT "VRPN Community <vrpn@listserv.unc.edu>")
#-----------------------------------------------------------------------------
# Compiler flags we got from Hans for Windows and from Sheldon Andrews
# for other architectures.
if(MSVC) # MS-Windows Visual Studio, both 32 and 64 bits
set(CMAKE_DEBUG_POSTFIX "d" CACHE STRING "add a postfix, usually d on windows")
if(MSVC_VERSION GREATER 1310) # This compiler flag needs newer than VS.NET 2003 (7.1)
# Choose fast, possibly less accurate floating point
# See http://msdn.microsoft.com/en-us/library/e7s85ffb(v=vs.80).aspx
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /fp:fast")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /fp:fast")
endif()
# Do not assume fixed base address (probably for DLL integration?)
# http://msdn.microsoft.com/en-us/library/w368ysh2(v=vs.80).aspx
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /FIXED:NO")
else()
# GCC compilers on 64-bit machines require -fPIC for shared libraries or libs
# linked into shared libraries.
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${CMAKE_SHARED_LIBRARY_C_FLAGS}")
set(CMAKE_CXX_FLAGS
"${CMAKE_CXX_FLAGS} ${CMAKE_SHARED_LIBRARY_CXX_FLAGS}")
endif()
set(SERVER_EXTRA_LIBS)
set(SERVER_LINK_FLAGS)
# Set up correct defines for Windows header compilation:
# This theoretically sets the lower-bound on operating system compatibility
# http://msdn.microsoft.com/en-us/library/windows/desktop/aa383745(v=vs.85).aspx
# NT4 0x0400
# Win2k 0x0500
# WinXP 0x0501
# WS2003SP1/WinXPSP2 0x0502
# Vista 0x0600
# Win7 0x0601
# Win8 0x0602
# Win8.1 0x0603 (though some docs say 0x0602 with NTDDI_VERSION 0x06030000)
if(WIN32)
set(WIN_MIN_VER 0x0500) # Default to Windows 2000
if(MSVC AND MSVC_VERSION GREATER 1699)
# VS2012: defaults to vista+, update 1 added XP support in additional toolset.
if("${CMAKE_VS_PLATFORM_TOOLSET}" MATCHES "_xp")
set(WIN_MIN_VER 0x0501) # WinXP
else()
set(WIN_MIN_VER 0x0600) # Vista
endif()
endif()
add_definitions("-D_WIN32_WINNT=${WIN_MIN_VER}" "-DNTDDI_VERSION=${WIN_MIN_VER}0000")
endif()
#-----------------------------------------------------------------------------
# Options that control what gets built and how.
if(NOT SUBPROJECT)
# We can build two configurations (passing defs to the compile lines) - which ones do we want?
# Note that we can build both now, if desired!
option(VRPN_BUILD_CLIENT_LIBRARY
"Build the vrpn library including only client code"
ON)
option(VRPN_BUILD_SERVER_LIBRARY
"Build the vrpnserver library including client and server code"
ON)
# Build various applications if we want them.
option(VRPN_BUILD_CLIENTS "Build VRPN client apps and tests" ON)
option(VRPN_BUILD_SERVERS "Build VRPN servers" ON)
# Development tools
if(MSVC_IDE AND MSVC_VERSION LESS 1600)
# VS 2012 Express and newer has folder support...
option(VRPN_BUILD_WITH_PROJECT_FOLDERS
"Use project folders in build system - not compatible with Visual C++ Express editions!"
OFF)
else()
set(VRPN_BUILD_WITH_PROJECT_FOLDERS ON)
endif()
set_property(GLOBAL
PROPERTY
USE_FOLDERS
${VRPN_BUILD_WITH_PROJECT_FOLDERS})
# Set a default build type
set_default_build_type("RelWithDebInfo")
endif()
# Force use of our CMake-processed configuration header before the stock one.
include_directories("${PROJECT_BINARY_DIR}")
# Include directory needed by all of the files
include_directories(${VRPN_SOURCE_DIR}
${VRPN_SOURCE_DIR}/atmellib
${VRPN_SOURCE_DIR}/quat)
#-----------------------------------------------------------------------------
# Libraries we need to do our thing.
#
# CMake variables:
# SERVER_EXTRA_LIBS - libraries to link against when building the server lib
# EXTRA_LIBS - libraries to link against when building any VRPN lib
#
# Note that library linking is, by default, transitive:
# Specify linking here (even though static libraries might not use it
# directly - think of shared libs and your fellow developer) rather than
# in the included apps.
###
# Quatlib
###
add_subdirectory(quat)
list(APPEND EXTRA_LIBS quat)
###
# Threading (not on win32)
# Remove the test for Android when threads are fixed in the Android CMake.
###
if(NOT WIN32 AND NOT BUILD_WITH_ANDROID_NDK)
find_package(Threads REQUIRED)
list(APPEND EXTRA_LIBS ${CMAKE_THREAD_LIBS_INIT})
endif()
###
# Windows-specific (non-Cygwin) dependencies
###
if(WIN32 AND NOT UNIX)
# Winsock - needed for endianness conversion
list(APPEND EXTRA_LIBS ws2_32)
# Windows multimedia - needed for joywin32
list(APPEND EXTRA_LIBS winmm)
endif()
###
# Optional packages
###
message(STATUS
"Now searching for auto-configurable optional packages...\n")
###
# Submodules - bundled libraries/sources
###
add_subdirectory(submodules)
###
# SWIG and Python Libs (for python wrappers)
###
find_package(SWIG)
set(CurrentPythonSettings
"${VRPN_BUILD_PYTHON}${VRPN_BUILD_PYTHON_HANDCODED_2X}${VRPN_BUILD_PYTHON_HANDCODED_3X}")
if(NOT CurrentPythonSettings STREQUAL _VRPN_PYTHON_SETTINGS)
set(vrpn_python_versionsearch)
set(vrpn_python_versionsearchargs)
if(VRPN_BUILD_PYTHON)
# Swig wants 2.x, I assume
set(vrpn_python_versionsearch 2)
if(VRPN_BUILD_PYTHON_HANDCODED_3X)
message(FATAL_ERROR
"Can't build both SWIG (2.x) and hand-coded 3.x Python bindings. Disable either VRPN_BUILD_PYTHON or VRPN_BUILD_PYTHON_HANDCODED_3X.")
endif()
elseif(VRPN_BUILD_PYTHON_HANDCODED_3X
AND
VRPN_BUILD_PYTHON_HANDCODED_2X)
message(FATAL_ERROR
"Can't build handcoded Python bindings for both 2.x and 3.x versions. Pick one, please.")
elseif(VRPN_BUILD_PYTHON_HANDCODED_2X
AND
NOT
VRPN_BUILD_PYTHON_HANDCODED_3X)
set(vrpn_python_versionsearch 2)
elseif(VRPN_BUILD_PYTHON_HANDCODED_3X
AND
NOT
VRPN_BUILD_PYTHON_HANDCODED_2X)
set(vrpn_python_versionsearch 3)
endif()
unset(PYTHON_INCLUDE_DIR CACHE)
unset(PYTHON_INCLUDE_DIR)
unset(PYTHON_LIBRARY CACHE)
unset(PYTHON_LIBRARY)
set(_VRPN_PYTHON_VERSIONSEARCH
${vrpn_python_versionsearch}
CACHE
INTERNAL
""
FORCE)
set(_VRPN_PYTHON_SETTINGS
${CurrentPythonSettings}
CACHE
INTERNAL
""
FORCE)
endif()
# Passing just the major version works with as desired multi-python-capable find module such
# as in latest CMake (2.8.9)
find_package(PythonLibs ${_VRPN_PYTHON_VERSIONSEARCH})
if(PYTHONLIBS_FOUND)
if(PYTHONLIBS_VERSION_STRING)
string(SUBSTRING
${PYTHONLIBS_VERSION_STRING}
0
1
vrpn_python_majorver)
set(PYTHON${vrpn_python_majorver}_FOUND ON)
elseif(PYTHON_LIBRARY MATCHES "python([23])")
set(PYTHON${CMAKE_MATCH_1}_FOUND ON)
elseif(_VRPN_PYTHON_VERSIONSEARCH)
set(PYTHON${_VRPN_PYTHON_VERSIONSEARCH}_FOUND ON)
else()
message(STATUS
"Warning: found python but couldn't determine which version. Please set either VRPN_PYTHON_IS_3 or VRPN_PYTHON_IS_2")
option(VRPN_PYTHON_IS_3 "Python found is version 3.x" OFF)
option(VRPN_PYTHON_IS_2 "Python found is version 2.x" OFF)
if(VRPN_PYTHON_IS_3 AND VRPN_PYTHON_IS_2)
unset(VRPN_PYTHON_IS_2 CACHE)
unset(VRPN_PYTHON_IS_3 CACHE)
message(FATAL_ERROR
"If needed, please set either VRPN_PYTHON_IS_3 or VRPN_PYTHON_IS_2, not both!")
elseif(VRPN_PYTHON_IS_3)
set(PYTHON3_FOUND ON)
elseif(VRPN_PYTHON_IS_2)
set(PYTHON2_FOUND ON)
endif()
endif()
endif()
# If MSVC, and we don't have a debug lib, default to off, or the default (debug runtime) build is broken.
if(MSVC AND NOT PYTHON_LIBRARY_DEBUG)
set(PYTHON_DEFAULT_OFF OFF_BY_DEFAULT)
else()
set(PYTHON_DEFAULT_OFF ${DEFAULT_OFF_IF_SUBPROJECT})
endif()
option_requires(VRPN_BUILD_PYTHON
"Build VRPN Python 2.x SWIG-based bindings"
${PYTHON_DEFAULT_OFF}
SWIG_FOUND
PYTHON2_FOUND)
option_requires(VRPN_BUILD_PYTHON_HANDCODED_2X
"Build VRPN Python handcoded bindings for Python 2.x"
${PYTHON_DEFAULT_OFF}
PYTHON2_FOUND)
option_requires(VRPN_BUILD_PYTHON_HANDCODED_3X
"Build VRPN Python handcoded bindings for Python 3.x"
${PYTHON_DEFAULT_OFF}
PYTHON3_FOUND)
###
# javac, jar, and javah (for java wrapper)
###
if(BUILD_WITH_ANDROID_NDK)
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE NEVER)
find_package(Java COMPONENTS Development REQUIRED)
find_package(JNI REQUIRED)
else()
find_package(Java COMPONENTS Development)
find_package(JNI)
endif()
find_program(JAVAH_EXECUTABLE NAMES javah)
mark_as_advanced(JAVAH_EXECUTABLE)
option_requires(VRPN_BUILD_JAVA
"Build VRPN Java bindings"
${DEFAULT_OFF_IF_SUBPROJECT}
Java_JAVAC_EXECUTABLE
Java_JAR_EXECUTABLE
JNI_FOUND
JAVAH_EXECUTABLE)
if(BUILD_WITH_ANDROID_NDK)
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
endif()
###
# MPI
###
find_package(MPI)
# XXX Safe to enable by default if we find it?
option_requires(VRPN_USE_MPI
"Build with MPI support"
OFF_BY_DEFAULT
MPI_FOUND)
if(VRPN_USE_MPI)
# XXX what else needs to be done here?
add_definitions(${MPI_COMPILE_FLAGS})
include_directories(${MPI_INCLUDE_PATH})
list(APPEND EXTRA_LIBS ${MPI_LIBRARIES})
endif()
###
# Modbus library
###
find_package(Modbus)
option_requires(VRPN_USE_MODBUS
"Build with Modbus support"
OFF_BY_DEFAULT
MODBUS_FOUND)
if(VRPN_USE_MODBUS)
# XXX what else needs to be done here?
include_directories(${MODBUS_INCLUDE_DIR})
list(APPEND EXTRA_LIBS ${MODBUS_LIBRARY})
endif()
###
# Libusb1
###
find_package(Libusb1)
option_requires(VRPN_USE_LIBUSB_1_0
"Attempt to use LibUSB-1.0 to talk directly to USB devices."
${DEFAULT_OFF_IF_SUBPROJECT}
LIBUSB1_FOUND)
if(VRPN_USE_LIBUSB_1_0)
include_directories(${LIBUSB1_INCLUDE_DIRS})
list(APPEND SERVER_EXTRA_LIBS ${LIBUSB1_LIBRARIES})
endif()
###
# HID and HIDAPI
###
# Setting up the local HIDAPI was handled above, in the submodules directory
if(NOT VRPN_USE_LOCAL_HIDAPI)
find_package(HIDAPI)
endif()
# HID requires either local or system-installed HIDAPI
# Both set HIDAPI_FOUND, HIDAPI_LIBRARIES, and HIDAPI_INCLUDE_DIRS
# If the user chose VRPN_USE_LOCAL_HIDAPI, the HIDAPI_SOURCES
# variable, as included in the source list below, will also be set.
option_requires(VRPN_USE_HID
"Build with support for HID devices using HIDAPI"
${DEFAULT_OFF_IF_SUBPROJECT}
HIDAPI_FOUND)
if(VRPN_USE_HID)
include_directories(${HIDAPI_INCLUDE_DIRS})
list(APPEND SERVER_EXTRA_LIBS ${HIDAPI_LIBRARIES})
option(VRPN_BUILD_HID_GUI
"Should we build a GUI for analyzing live HID streams?"
OFF)
option(VRPN_HID_DEBUGGING
"Should verbose debugging messages be displayed during HID interactions?"
off)
if(VRPN_HID_DEBUGGING)
add_definitions(-DVRPN_HID_DEBUGGING)
endif()
else()
# Clear this variable if they don't want HID after all.
message(STATUS
"NOTE: You have VRPN_USE_LOCAL_HIDAPI enabled, but "
"VRPN_USE_HID disabled: HIDAPI will only be built if you enable HID support for VRPN")
set(HIDAPI_SOURCES)
endif()
###
# Sensable "OpenHaptics" HDAPI/HLAPI
###
find_package(OpenHaptics)
option_requires(VRPN_USE_HDAPI
"Allow SensAble Phantom support through HDAPI/HLAPI - VRPN_USE_PHANTOM_SERVER must still be set"
${DEFAULT_OFF_IF_SUBPROJECT}
OPENHAPTICS_FOUND)
if(VRPN_USE_HDAPI)
set(PHANTOM_POSSIBLE ON)
endif()
###
# Sensable GHOST
###
if(NOT VRPN_USE_HDAPI)
find_package(GHOST)
option_requires(VRPN_USE_GHOST
"Allow SensAble Phantom support through GHOST - VRPN_USE_PHANTOM_SERVER must still be set"
${DEFAULT_OFF_IF_SUBPROJECT}
GHOST_FOUND)
if(VRPN_USE_GHOST)
if(NOT ${GHOST_LIBRARIES} MATCHES ".*40.*")
message(STATUS "GHOST pre-4.0 detected - calling it 3.1.")
set(VRPN_USE_GHOST_31 ON)
endif()
set(PHANTOM_POSSIBLE ON)
endif()
endif()
###
# Sensable PHANToM Support - Overall Option
###
option_requires(VRPN_USE_PHANTOM_SERVER
"Build with SensAble Phantom support"
${DEFAULT_OFF_IF_SUBPROJECT}
PHANTOM_POSSIBLE)
if(VRPN_USE_PHANTOM_SERVER)
if(VRPN_USE_HDAPI)
include_directories(${OPENHAPTICS_INCLUDE_DIRS})
list(APPEND SERVER_EXTRA_LIBS ${OPENHAPTICS_LIBRARIES})
else()
# VRPN_USE_GHOST
include_directories(${GHOST_INCLUDE_DIRS})
list(APPEND SERVER_EXTRA_LIBS ${GHOST_LIBRARIES})
endif()
endif()
###
# WiiUse
###
find_package(WiiUse)
option_requires(VRPN_USE_WIIUSE
"Build with WiiUse library support (makes servers GPL)"
${DEFAULT_OFF_IF_SUBPROJECT}
WIIUSE_FOUND)
if(VRPN_USE_WIIUSE)
include_directories(${WIIUSE_INCLUDE_DIRS})
list(APPEND SERVER_EXTRA_LIBS ${WIIUSE_LIBRARIES})
endif()
###
# JsonCpp
##
## Setting up the local JSONCPP was handled above, in the submodules directory
if(NOT VRPN_USE_LOCAL_JSONCPP)
find_package(JsonCpp)
endif()
option_requires(VRPN_USE_JSONNET
"Build with JSONCPP (for Android widgets and other UDP JSON-based APIs)"
${DEFAULT_OFF_IF_SUBPROJECT}
JSONCPP_FOUND)
if(VRPN_USE_JSONNET)
include_directories(${JSONCPP_INCLUDE_DIRS})
list(APPEND SERVER_EXTRA_LIBS ${JSONCPP_LIBRARIES})
else()
set(JSONCPP_SOURCES)
endif()
###
# libnifalcon
###
find_package(LibNifalcon)
option_requires(VRPN_USE_LIBNIFALCON
"Build with libnifalcon support to access Novint Falcon devices"
${DEFAULT_OFF_IF_SUBPROJECT}
LIBNIFALCON_FOUND)
if(VRPN_USE_LIBNIFALCON)
include_directories(${LIBNIFALCON_INCLUDE_DIRS})
list(APPEND SERVER_EXTRA_LIBS ${LIBNIFALCON_LIBRARIES})
endif()
###
# DirectInput and XInput
###
if(WIN32)
find_package(DirectX)
option_requires(VRPN_USE_DIRECTINPUT
"Build with Microsoft DirectInput support"
${DEFAULT_OFF_IF_SUBPROJECT}
DIRECTX_DXGUID_LIBRARY
DIRECTX_DINPUT_LIBRARY
DIRECTX_DINPUT_INCLUDE_DIR
DIRECTX_SDK_SUPPORTS_COMPILER)
if(VRPN_USE_DIRECTINPUT)
include_directories(${DIRECTX_INCLUDE_DIRS})
list(APPEND
SERVER_EXTRA_LIBS
${DIRECTX_DXGUID_LIBRARY}
${DIRECTX_DINPUT_LIBRARY})
if(MSVC)
# Delay-load DirectInput DLL
# TODO is this always the right name
# TODO how to do this with MinGW? Can we? Do we need to?
list(APPEND SERVER_LINK_FLAGS "/DELAYLOAD:dinput8.dll")
list(APPEND SERVER_EXTRA_LIBS "delayimp.lib")
endif()
endif()
# XInput - enhanced API for XBOX 360 controllers and more.
find_directx_include(DIRECTX_XINPUT_INCLUDE_DIR
xinput.h)
option_requires(VRPN_USE_WINDOWS_XINPUT
"Build with Microsoft XInput support"
${DEFAULT_OFF_IF_SUBPROJECT}
DIRECTX_XINPUT_INCLUDE_DIR
DIRECTX_XINPUT_LIBRARY
DIRECTX_SDK_SUPPORTS_COMPILER) #TODO will this be a valid check here?
if(VRPN_USE_WINDOWS_XINPUT)
list(APPEND
SERVER_EXTRA_LIBS
${DIRECTX_XINPUT_LIBRARY})
mark_as_advanced(DIRECTX_XINPUT_INCLUDE_DIR)
# Get name of DLL to delay-load.
include(GetDefineString)
get_define_string(NAME XINPUT_DLL
INCLUDES windows.h xinput.h
DEFINES "-D_WIN32_WINNT=${WIN_MIN_VER}"
INCLUDE_DIRS ${DIRECTX_DINPUT_INCLUDE_DIR} ${DIRECTX_XINPUT_INCLUDE_DIR}
RESULT VRPN_XINPUT_DLL)
if(VRPN_XINPUT_DLL AND MSVC)
# Delay-load XInput DLL
# TODO how to do this with MinGW? Can we? Do we need to?
list(APPEND SERVER_LINK_FLAGS "/DELAYLOAD:${VRPN_XINPUT_DLL}")
list(APPEND SERVER_EXTRA_LIBS "delayimp.lib")
endif()
endif()
# ATL is used for the vrpn_Tracker_zSight (which is based on DirectInput)
# to provide a smart pointer, but ATL isn't always available.
include(CheckIncludeFileCXX)
check_include_file_cxx(atlbase.h VRPN_HAVE_ATLBASE)
endif()
###
# DirectShow
###
# Note that header removal makes this harder for VS10 and later - you need an earlier
# version of MSVC also installed or an older Windows/Platform SDK with qedit.h in it.
if(MSVC)
if(MSVC_VERSION GREATER 1500)
set(DIRECTSHOW_OFF_BY_DEFAULT OFF_BY_DEFAULT)
else()
set(DIRECTSHOW_OFF_BY_DEFAULT)
endif()
find_package(DirectShow)
option_requires(VRPN_USE_DIRECTSHOW
"Build with Microsoft DirectShow support"
${DIRECTSHOW_OFF_BY_DEFAULT}
DIRECTSHOW_FOUND)
option_requires(VRPN_BUILD_DIRECTSHOW_VIDEO_SERVER
"Enable to build DirectShow Video Server (Windows)"
${DEFAULT_OFF_IF_SUBPROJECT}
VRPN_BUILD_DIRECTSHOW_VIDEO_SERVER
DIRECTSHOW_FOUND)
endif()
###
# GPM
###
if(UNIX)
find_package(GPM)
option_requires(VRPN_USE_GPM_MOUSE
"Build with GPM Linux mouse interface support (makes servers GPL)"
${DEFAULT_OFF_IF_SUBPROJECT}
GPM_FOUND)
endif()
if(VRPN_USE_GPM_MOUSE)
list(APPEND SERVER_EXTRA_LIBS ${GPM_LIBRARIES})
endif()
###
# INTERSENSE
###
find_package(InterSense)
option_requires(VRPN_INCLUDE_INTERSENSE
"Build with InterSense support"
${DEFAULT_OFF_IF_SUBPROJECT}
INTERSENSE_FOUND)
if(VRPN_INCLUDE_INTERSENSE)
include_directories(${INTERSENSE_INCLUDE_DIRS})
list(APPEND SERVER_EXTRA_LIBS ${INTERSENSE_LIBRARIES})
endif()
###
# NIDAQMX
###
find_package(NIDAQmx)
option_requires(VRPN_USE_NATIONAL_INSTRUMENTS_MX
"Build with National Instruments NIDAQMX support"
${DEFAULT_OFF_IF_SUBPROJECT}
NIDAQMX_FOUND)
if(VRPN_USE_NATIONAL_INSTRUMENTS_MX)
include_directories(${NIDAQMX_INCLUDE_DIRS})
list(APPEND SERVER_EXTRA_LIBS ${NIDAQMX_LIBRARIES})
endif()
###
# Arrington Research ViewPoint EyeTracker
###
find_package(ViewPoint)
option_requires(VRPN_USE_VIEWPOINT
"Build with support for ViewPoint EyeTracker"
${DEFAULT_OFF_IF_SUBPROJECT}
VIEWPOINT_FOUND)
if(VRPN_USE_VIEWPOINT)
include_directories(${VIEWPOINT_INCLUDE_DIRS})
list(APPEND SERVER_EXTRA_LIBS ${VIEWPOINT_LIBRARIES})
# Needed for the config file, apparently - it was added to the non-CMake one.
get_filename_component(VRPN_VIEWPOINT_LIB_PATH
"${VIEWPOINT_LIBRARY}"
PATH)
file(TO_CMAKE_PATH
"${VRPN_VIEWPOINT_LIB_PATH}"
VRPN_VIEWPOINT_LIB_PATH)
endif()
###
# Adrienne timecode boards
###
if(WIN32 OR CYGWIN)
find_package(Adrienne)
option_requires(VRPN_INCLUDE_TIMECODE_SERVER
"Build with support for Adrienne timecode server"
${DEFAULT_OFF_IF_SUBPROJECT}
ADRIENNE_FOUND)
else()
set(VRPN_INCLUDEE_TIMECODE_SERVER OFF)
endif()
if(VRPN_INCLUDE_TIMECODE_SERVER)
set(VRPN_ADRIENNE_INCLUDE_FILENAME "${ADRIENNE_INCLUDE_FILENAME}")
set(VRPN_ADRIENNE_INCLUDE_HAS_EXTERN_C
${ADRIENNE_INCLUDE_HAS_EXTERN_C})
endif()
###
# Linux kernel joystick interface
###
if(${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
check_include_file_cxx(linux/joystick.h HAVE_LINUX_JOYSTICK_H)
option_requires(VRPN_USE_JOYLIN
"Build with support for Linux kernel joystick interface (Uses kernel header - may make servers GPL)"
${DEFAULT_OFF_IF_SUBPROJECT}
HAVE_LINUX_JOYSTICK_H)
else()
set(VRPN_USE_JOYLIN OFF)
endif()
###
# /dev/input kernel joystick interface
###
if(${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
check_include_file_cxx(linux/input.h HAVE_LINUX_INPUT_H)
option_requires(VRPN_USE_DEV_INPUT
"Build with flags to enable the use of DevInput. (Uses kernel header - may make servers GPL)"
${DEFAULT_OFF_IF_SUBPROJECT}
HAVE_LINUX_INPUT_H)
else()
set(VRPN_USE_DEV_INPUT OFF)
endif()
###
# Perl, for vrpn_rpc_gen
###
if(NOT WIN32)
# TODO - a bit of a compatibility hack
# MiKTeX 2.9's perl is broken - missing libgcc-s-sjlj-1.dll -
# and can't seem to work around it without popping up dialogs
# which is no fun for automated builds.
find_package(Perl)
find_package(PerlModules COMPONENTS Parse::RecDescent)
endif()
option_requires(VRPN_BUILD_TEST_RPC_GENERATION
"Build VRPN RPC generation"
${DEFAULT_OFF_IF_SUBPROJECT}
PERL_FOUND
PERLMODULES_FOUND)
###
# Polhemus PDI library
###
# TODO Generalize this to use a FindPDI.cmake - someone with access
# to this library must do it.
# Make this also work with debug (use PDID)
option(VRPN_USE_PDI
"Build with flags to enable the use of Polhemus DVI library."
OFF)
if(VRPN_USE_PDI)
include_directories("C:/Program Files (x86)/Polhemus/PDI/PDI_90/Inc")
list(APPEND
SERVER_EXTRA_LIBS
"C:/Program Files (x86)/Polhemus/PDI/PDI_90/Lib/Win32/PDI.lib")
endif()
###
# PhaseSpace API
###
# TODO Actually do a proper search for the PhaseSpace API headers and libraries
# and not use link_directories.
option(VRPN_INCLUDE_PHASESPACE
"Build with PhaseSpace library support"
OFF)
set(PHASESPACE_INCLUDE_DIR "${CMAKE_SOURCE_DIR}/phasespace" CACHE PATH "location of PhaseSpace headers")
set(PHASESPACE_LIBRARY_DIR "${CMAKE_SOURCE_DIR}/phasespace" CACHE PATH "location of PhaseSpace libraries (libowlsock.so, etc")
if(VRPN_INCLUDE_PHASESPACE)
include_directories(${PHASESPACE_INCLUDE_DIR})
link_directories(${PHASESPACE_LIBRARY_DIR})
if(WIN32)
list(APPEND SERVER_EXTRA_LIBS libowlsock)
else()
list(APPEND SERVER_EXTRA_LIBS owlsock)
endif()
endif()
###
# Hillcrest Labs' Freespace
###
find_package(LibFreespace)
option_requires(VRPN_USE_FREESPACE
"Build with Hillcrest Labs' Freespace devices support"
${DEFAULT_OFF_IF_SUBPROJECT}
LIBFREESPACE_FOUND)
if(VRPN_USE_FREESPACE)
include_directories(${LIBFREESPACE_INCLUDE_DIRS})
list(APPEND SERVER_EXTRA_LIBS ${LIBFREESPACE_LIBRARIES})
endif()
###
# MotionNode tracker support. Loads shared library dynamically if available
###
option(VRPN_USE_MOTIONNODE
"Build with MotionNode tracker support"
OFF)
if(VRPN_USE_MOTIONNODE)
list(APPEND SERVER_EXTRA_LIBS ${CMAKE_DL_LIBS})
endif()
###
# XXX Other libraries needing detection and handling (TODO)
###
# National Instruments Nidaq traditional
# US Digital SEI/A2
# microscribe3D library
#
# All include paths should be moved out of at least vrpn_Configure.h.cmake_in
# as well as all #pragma comment (lib, "" ) lines, since cmake replaces
# them more flexibly (include_directories and target_link_libraries)
# Configuration options controlling what gets included in the build.
# These are the default options for libraries we can't yet detect -
# if a library can be detected above it will be pre-set to an appropriate
# value by default.
option(VRPN_USE_NATIONAL_INSTRUMENTS
"Build with National Instruments (old library) support"
OFF)
option(VRPN_USE_NIDAQ "Build with NIDAQ support ca. 1999" OFF)
option(VRPN_USE_USDIGITAL
"Build with US Digital SEI/A2 library support"
OFF)
option(VRPN_USE_MICROSCRIBE
"Build with MicroScribe3D library support"
OFF)
option(VRPN_USE_TRIVISIOCOLIBRI
"Build with support for TrivisioColibri tracker"
OFF)
if(WIN32)
option(VRPN_USE_WINSOCK2
"Use Winsock2 library, rather than Winsock."
OFF)
option(VRPN_USE_SHARED_LIBRARY
"Enable to use DLLs on Windows (see vrpn_Configure.h for more info)"
OFF)
endif()
if(UNIX)
option(VRPN_BUILD_PROFILING_SUPPORT
"Build with flags to enable profiling."
OFF)
if(VRPN_BUILD_PROFILING_SUPPORT)
include(EnableProfiling)
globally_enable_profiling()
endif()
endif()
option(VRPN_USE_STATIC_ASSERTIONS "Use some compile-time assertions" ON)
option(VRPN_BUILD_EXTRA_COMPILER_WARNINGS
"Build with flags to enable extra warnings."
OFF)
if(VRPN_BUILD_EXTRA_COMPILER_WARNINGS)
include(EnableExtraCompilerWarnings)
globally_enable_extra_compiler_warnings()
if(NOT MSVC)
# shadowing virtual functions is pretty much unavoidable with the
# multiple inheritance design and methods like "report_changes"
check_cxx_compiler_flag(-Wno-overloaded-virtual SUPPORTS_WNO_OVERLOADED_VIRTUAL_FLAG)
if(SUPPORTS_WNO_OVERLOADED_VIRTUAL_FLAG)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-overloaded-virtual")
endif()
endif()
endif()
set(VRPN_CLIENT_ONLY)
if(VRPN_BUILD_CLIENT_LIBRARY AND NOT VRPN_BUILD_SERVER_LIBRARY)
# We can define VRPN_CLIENT_ONLY in the header in this case!
set(VRPN_CLIENT_ONLY ON)
endif()
#-----------------------------------------------------------------------------
# configure a header file to pass some of the CMake settings
# to the source code
configure_file("${PROJECT_SOURCE_DIR}/vrpn_Configure.h.cmake_in"
"${PROJECT_BINARY_DIR}/vrpn_Configure.h")
file(RELATIVE_PATH
VRPN_PATH_TO_CMAKE_CONFIG
"${CMAKE_CURRENT_SOURCE_DIR}"
"${PROJECT_BINARY_DIR}/vrpn_Configure.h")
add_definitions("-DVRPN_USING_CMAKE=\"${VRPN_PATH_TO_CMAKE_CONFIG}\"")
if(SUBPROJECT)
set(BUILD_TESTING FALSE)
endif()
if(APPLE)
if(NOT CMAKE_OSX_ARCHITECTURES OR CMAKE_OSX_ARCHITECTURES STREQUAL "")
if(_CMAKE_OSX_MACHINE MATCHES "ppc")
set(CMAKE_OSX_ARCHITECTURES
"ppc;ppc64"
CACHE
STRING
"Build architectures for OS X"
FORCE)
else()
set(CMAKE_OSX_ARCHITECTURES
"i386;x86_64"
CACHE
STRING
"Build architectures for OS X"
FORCE)
endif()
endif()
set(CMAKE_INCLUDE_SYSTEM_FLAG_C "-isystem ")
set(CMAKE_INCLUDE_SYSTEM_FLAG_CXX "-isystem ")
if(NOT CMAKE_INSTALL_NAME_DIR)
set(CMAKE_INSTALL_NAME_DIR "${CMAKE_INSTALL_PREFIX}/lib")
endif()
message(STATUS
"Building ${CMAKE_PROJECT_NAME} for ${CMAKE_OSX_ARCHITECTURES}")
endif()
#-----------------------------------------------------------------------------
# Build the library itself and declare what bits need to be installed
set(VRPN_CLIENT_SOURCES
vrpn_Analog.C
vrpn_Analog_Output.C
vrpn_Auxiliary_Logger.C
vrpn_BaseClass.C
vrpn_Button.C
vrpn_Connection.C
vrpn_Dial.C
vrpn_FileConnection.C
vrpn_FileController.C
vrpn_ForceDevice.C
vrpn_Forwarder.C
vrpn_ForwarderController.C
vrpn_FunctionGenerator.C
vrpn_Imager.C
vrpn_LamportClock.C
vrpn_Mutex.C
vrpn_Poser.C
vrpn_RedundantTransmission.C
vrpn_Serial.C
vrpn_SerialPort.C
vrpn_Shared.C
vrpn_SharedObject.C
vrpn_Sound.C
vrpn_Text.C
vrpn_Tracker.C)
set(VRPN_CLIENT_PUBLIC_HEADERS
"${PROJECT_BINARY_DIR}/vrpn_Configure.h"
vrpn_Analog.h
vrpn_Analog_Output.h
vrpn_Auxiliary_Logger.h
vrpn_BaseClass.h
vrpn_Button.h
vrpn_Connection.h
vrpn_ConnectionPtr.h
vrpn_Dial.h
vrpn_FileConnection.h
vrpn_FileController.h
vrpn_ForceDevice.h
vrpn_ForwarderController.h
vrpn_Forwarder.h
vrpn_FunctionGenerator.h
vrpn_Imager.h
vrpn_LamportClock.h
vrpn_Log.h
vrpn_MainloopContainer.h
vrpn_MainloopObject.h
vrpn_Mutex.h
vrpn_RedundantTransmission.h
vrpn_SendTextMessageStreamProxy.h
vrpn_Serial.h
vrpn_SerialPort.h
vrpn_Shared.h
vrpn_SharedObject.h
vrpn_Sound.h
vrpn_Text.h
vrpn_Tracker.h
vrpn_Types.h)
set(VRPN_SERVER_SOURCES
${VRPN_CLIENT_SOURCES}
vrpn_3DConnexion.C
vrpn_3DMicroscribe.C
vrpn_3Space.C
vrpn_5DT16.C
vrpn_ADBox.C
vrpn_Analog_5dt.C
vrpn_Analog_5dtUSB.C
vrpn_Analog_Radamec_SPI.C
vrpn_Analog_USDigital_A2.C
vrpn_Atmel.C
vrpn_BiosciencesTools.C
vrpn_Button_NI_DIO24.C
vrpn_Button_USB.cpp
vrpn_CerealBox.C
vrpn_CHProducts_Controller_Raw.C
vrpn_Contour.C
vrpn_DevInput.C
vrpn_DirectXFFJoystick.C
vrpn_DirectXRumblePad.C
vrpn_DreamCheeky.C
vrpn_Dyna.C
vrpn_Event_Analog.C
vrpn_Event.C
vrpn_Event_Mouse.C
vrpn_Flock.C
vrpn_Flock_Parallel.C
vrpn_ForceDeviceServer.C
vrpn_Freespace.C
vrpn_FunctionGenerator.C
vrpn_Futaba.C
vrpn_GlobalHapticsOrb.C
vrpn_Griffin.C
vrpn_HumanInterface.C
vrpn_IDEA.C
vrpn_Imager_Stream_Buffer.C
vrpn_ImmersionBox.C
vrpn_inertiamouse.C
vrpn_JoyFly.C
vrpn_Joylin.C
vrpn_Joywin32.C
vrpn_Keyboard.C
vrpn_LUDL.C
vrpn_Logitech_Controller_Raw.C
vrpn_Magellan.C
vrpn_Microsoft_Controller_Raw.C
vrpn_Mouse.C
vrpn_NationalInstruments.C
vrpn_Nidaq.C
vrpn_nikon_controls.C
vrpn_OmegaTemperature.C
vrpn_Poser_Analog.C
vrpn_Poser_Tek4662.C
vrpn_raw_sgibox.C
vrpn_Retrolink.C
vrpn_Saitek_Controller_Raw.C
vrpn_sgibox.C
vrpn_Spaceball.C
vrpn_Tng3.C
vrpn_Tracker_3DMouse.C
vrpn_Tracker_AnalogFly.C
vrpn_Tracker_ButtonFly.C
vrpn_Tracker_Crossbow.C
vrpn_Tracker_DTrack.C
vrpn_Tracker_Fastrak.C
vrpn_Tracker_Filter.C
vrpn_Tracker_GameTrak.C
vrpn_Tracker_GPS.C
vrpn_Tracker_isense.C
vrpn_Tracker_Isotrak.C
vrpn_Tracker_JsonNet.C
vrpn_Tracker_Liberty.C
vrpn_Tracker_MotionNode.C
vrpn_Tracker_NDI_Polaris.C
vrpn_Tracker_NovintFalcon.C
vrpn_Tracker_OSVRHackerDevKit.C
vrpn_Tracker_PDI.C
vrpn_Tracker_PhaseSpace.C
vrpn_Tracker_RazerHydra.C
vrpn_Tracker_SpacePoint.C
vrpn_Tracker_Wintracker.C
vrpn_Tracker_TrivisioColibri.C
vrpn_Tracker_WiimoteHead.C
vrpn_Tracker_zSight.C
vrpn_Tracker_ViewPoint.C
vrpn_UNC_Joystick.C
vrpn_VPJoystick.C
vrpn_Wanda.C
vrpn_WiiMote.C
vrpn_XInputGamepad.C
vrpn_Xkeys.C
vrpn_Tracker_LibertyHS.C
vrpn_YEI_3Space.C
vrpn_Zaber.C
server_src/vrpn_Generic_server_object.C
${HIDAPI_SOURCES}
${JSONCPP_SOURCES}
${PDI_SOURCES})
set(VRPN_SERVER_PUBLIC_HEADERS
${VRPN_CLIENT_PUBLIC_HEADERS}
vrpn_3DConnexion.h
vrpn_3DMicroscribe.h
vrpn_3Space.h
vrpn_5DT16.h
vrpn_ADBox.h
vrpn_Analog_5dt.h
vrpn_Analog_5dtUSB.h
vrpn_Analog_Radamec_SPI.h
vrpn_Analog_USDigital_A2.h
vrpn_Atmel.h
vrpn_BiosciencesTools.h
vrpn_Button_NI_DIO24.h
vrpn_Button_USB.h
vrpn_CerealBox.h
vrpn_CHProducts_Controller_Raw.h
vrpn_Contour.h
vrpn_DevInput.h
vrpn_DirectXFFJoystick.h
vrpn_DirectXRumblePad.h
vrpn_DreamCheeky.h
vrpn_Dyna.h
vrpn_Event_Analog.h
vrpn_Event.h
vrpn_Event_Mouse.h
vrpn_Flock.h
vrpn_Flock_Parallel.h
vrpn_ForceDeviceServer.h
vrpn_Freespace.h
vrpn_FunctionGenerator.h
vrpn_Futaba.h
vrpn_GlobalHapticsOrb.h
vrpn_Griffin.h
vrpn_HashST.h
vrpn_HumanInterface.h
vrpn_IDEA.h
vrpn_Imager_Stream_Buffer.h
vrpn_ImmersionBox.h
vrpn_inertiamouse.h
vrpn_JoyFly.h
vrpn_Joylin.h
vrpn_Joywin32.h
vrpn_Keyboard.h
vrpn_Logitech_Controller_Raw.h
vrpn_LUDL.h
vrpn_Magellan.h
vrpn_MessageMacros.h
vrpn_Microsoft_Controller_Raw.h
vrpn_Mouse.h
vrpn_NationalInstruments.h
vrpn_Nidaq.h
vrpn_nikon_controls.h
vrpn_OmegaTemperature.h
vrpn_OneEuroFilter.h
vrpn_Poser_Analog.h
vrpn_Poser.h
vrpn_Poser_Tek4662.h
vrpn_raw_sgibox.h
vrpn_Retrolink.h
vrpn_Saitek_Controller_Raw.h
vrpn_sgibox.h
vrpn_Spaceball.h
vrpn_Tng3.h
vrpn_Tracker_3DMouse.h
vrpn_Tracker_AnalogFly.h
vrpn_Tracker_ButtonFly.h
vrpn_Tracker_Crossbow.h
vrpn_Tracker_DTrack.h
vrpn_Tracker_Fastrak.h
vrpn_Tracker_Filter.h
vrpn_Tracker_GameTrak.h
vrpn_Tracker_GPS.h
vrpn_Tracker_isense.h
vrpn_Tracker_Isotrak.h
vrpn_Tracker_JsonNet.h
vrpn_Tracker_Liberty.h
vrpn_Tracker_MotionNode.h
vrpn_Tracker_NDI_Polaris.h
vrpn_Tracker_NovintFalcon.h
vrpn_Tracker_OSVRHackerDevKit.h
vrpn_Tracker_PDI.h
vrpn_Tracker_PhaseSpace.h
vrpn_Tracker_RazerHydra.h
vrpn_Tracker_SpacePoint.h
vrpn_Tracker_Wintracker.h
vrpn_Tracker_TrivisioColibri.h
vrpn_Tracker_WiimoteHead.h
vrpn_Tracker_zSight.h
vrpn_Tracker_ViewPoint.h
vrpn_UNC_Joystick.h
vrpn_VPJoystick.h
vrpn_Wanda.h
vrpn_WiiMote.h
vrpn_XInputGamepad.h
vrpn_Xkeys.h
vrpn_Tracker_LibertyHS.h
vrpn_YEI_3Space.h
vrpn_Zaber.h
server_src/vrpn_Generic_server_object.h)
set(VRPN_SERVER_LIBRARY)
set(VRPN_CLIENT_LIBRARY)
if(VRPN_BUILD_SERVER_LIBRARY)
add_library(vrpnserver
${VRPN_SERVER_SOURCES}
${VRPN_SERVER_PUBLIC_HEADERS})
target_link_libraries(vrpnserver ${EXTRA_LIBS} ${SERVER_EXTRA_LIBS})
set(VRPN_CLIENT_LIBRARY vrpnserver)
set(VRPN_SERVER_LIBRARY vrpnserver)
set_property(TARGET
vrpnserver
PROPERTY
PUBLIC_HEADER
${VRPN_SERVER_PUBLIC_HEADERS})
set_property(TARGET
vrpnserver
PROPERTY
PROJECT_LABEL
"Core VRPN Server Library")
set_property(TARGET
vrpnserver
PROPERTY
FOLDER
"Library")
set_property(TARGET
vrpnserver
PROPERTY
LINK_FLAGS
${SERVER_LINK_FLAGS})
if(UNIX)
add_subdirectory(atmellib)
target_link_libraries(vrpnserver vrpn_atmel)
endif()
add_subdirectory(gpsnmealib)
target_link_libraries(vrpnserver gpsnmea)
if(VRPN_INSTALL)
install(TARGETS
vrpnserver
ARCHIVE
DESTINATION
lib
COMPONENT
serversdk
PUBLIC_HEADER
DESTINATION
include
COMPONENT
serversdk)
endif()
add_cppcheck(vrpnserver STYLE UNUSED_FUNCTIONS)
endif()
if(VRPN_BUILD_CLIENT_LIBRARY)
add_library(vrpn ${VRPN_CLIENT_SOURCES} ${VRPN_CLIENT_PUBLIC_HEADERS})
target_link_libraries(vrpn ${EXTRA_LIBS})
set(VRPN_CLIENT_LIBRARY vrpn)
set_property(TARGET
vrpn
PROPERTY
PUBLIC_HEADER
${VRPN_CLIENT_PUBLIC_HEADERS})
if(NOT VRPN_CLIENT_ONLY)
set_property(TARGET
vrpn
PROPERTY
COMPILE_DEFINITIONS
"VRPN_CLIENT_ONLY")
endif()
set_property(TARGET
vrpn
PROPERTY
PROJECT_LABEL
"Core VRPN Client Library")
set_property(TARGET
vrpn
PROPERTY
FOLDER
"Library")
if(VRPN_INSTALL)
install(TARGETS
vrpn
ARCHIVE
DESTINATION
lib
COMPONENT
clientsdk
PUBLIC_HEADER
DESTINATION
include
COMPONENT
clientsdk)
endif()
add_cppcheck(vrpn STYLE UNUSED_FUNCTIONS)
endif()
add_subdirectory(client_src)
#-----------------------------------------------------------------------------
# Set some internal cache variables to make life easier if we're a subproject
set(VRPN_DEFINITIONS "-DVRPN_USING_CMAKE=\"${CMAKE_CURRENT_BINARY_DIR}/vrpn_Configure.h\""
CACHE INTERNAL "Definition to add if using as a subproject" FORCE)
set(VRPN_CLIENT_LIBRARY ${VRPN_CLIENT_LIBRARY} CACHE INTERNAL "" FORCE)
set(VRPN_SERVER_LIBRARY ${VRPN_SERVER_LIBRARY} CACHE INTERNAL "" FORCE)
set(VRPN_SERVER_LINK_FLAGS ${SERVER_LINK_FLAGS} CACHE INTERNAL "" FORCE)
set(VRPN_INCLUDE_DIRS
"${CMAKE_CURRENT_BINARY_DIR}"
"${VRPN_SOURCE_DIR}"
"${VRPN_SOURCE_DIR}/atmellib"
"${VRPN_SOURCE_DIR}/quat"
CACHE INTERNAL "" FORCE)
#-----------------------------------------------------------------------------
# Build the server applications if we've been asked to and we didn't build
# the library client-only.
if(VRPN_BUILD_SERVERS AND VRPN_BUILD_SERVER_LIBRARY)
add_subdirectory(server_src)
endif()
#-----------------------------------------------------------------------------
# Build the RPC generation if we've been asked to
if(VRPN_BUILD_TEST_RPC_GENERATION)
add_subdirectory(util/gen_rpc)
endif()
if(VRPN_BUILD_CLIENTS)
add_subdirectory(util/printStream)
endif()
#-----------------------------------------------------------------------------
# Create documentation
if(NOT SUBPROJECT)
add_subdirectory(doxygen)
endif()
#-----------------------------------------------------------------------------
# Python wrappers
add_subdirectory(python_vrpn)
add_subdirectory(python)
#-----------------------------------------------------------------------------
# Java wrappers
add_subdirectory(java_vrpn)
#-----------------------------------------------------------------------------
# HID Gui
if(VRPN_BUILD_HID_GUI)
add_subdirectory(hid_gui)
endif()
#-----------------------------------------------------------------------------
# Testing applications that live in the main directory.
if(VRPN_BUILD_SERVERS AND VRPN_BUILD_SERVER_LIBRARY AND BUILD_TESTING AND WIN32)
foreach(SOURCE time_test.cpp)
get_filename_component(APP ${SOURCE} NAME_WE)
add_executable(${APP} ${SOURCE})
target_link_libraries(${APP} vrpnserver)
set_target_properties(${APP} PROPERTIES FOLDER Tests)
if(VRPN_INSTALL)
install(TARGETS ${APP} RUNTIME DESTINATION bin COMPONENT tests)
endif()
endforeach()
endif()
#-----------------------------------------------------------------------------
# Do a little check for GPL and GPL-incompatible libraries
# What flags cause us to link against GPL libraries?
# TODO: Figure out about the kernel headers we use.
# Conflicting stories:
# ML post by Linus: https://lkml.org/lkml/2003/12/5/13
# Interview of Linus: http://www.itworld.com/open-source/140916/android-sued-microsoft-not-linux
set(ALL_GPL_SERVER_FLAGS
#VRPN_USE_DEV_INPUT # Kernel header: GPL2
#VRPN_USE_JOYLIN # Kernel header: GPL2
VRPN_USE_GPM_MOUSE # GPL2+
VRPN_USE_WIIUSE # GPL3
)
# What flags cause us to link against GPL-incompatible libraries?
set(ALL_GPLINCOMPAT_SERVER_FLAGS
VRPN_INCLUDE_INTERSENSE
VRPN_INCLUDE_TIMECODE_SERVER
VRPN_USE_PHANTOM_SERVER)
set(GPL_SERVER_FLAGS)
foreach(POSSIBLE_GPL_FLAG ${ALL_GPL_SERVER_FLAGS})
if(${POSSIBLE_GPL_FLAG})
list(APPEND GPL_SERVER_FLAGS "${POSSIBLE_GPL_FLAG}")
endif()
endforeach()
set(GPLINCOMPAT_SERVER_FLAGS)
foreach(POSSIBLE_GPLINCOMPAT_FLAG ${ALL_GPLINCOMPAT_SERVER_FLAGS})
if(${POSSIBLE_GPLINCOMPAT_FLAG})
list(APPEND GPLINCOMPAT_SERVER_FLAGS "${POSSIBLE_GPLINCOMPAT_FLAG}")
endif()
endforeach()
if(GPL_SERVER_FLAGS)
# Some GPL options are enabled
message(STATUS "")
message(STATUS
"NOTE: The following build options may produce a GPL-licensed server library/binary.")
message(STATUS " ${GPL_SERVER_FLAGS}")
message(STATUS
"NOTE: I am not a lawyer, and this is not legal advice!")
option(VRPN_GPL_SERVER
"Check this to accept the possibility of linking GPL libraries with the server."
OFF)
endif()
if(GPLINCOMPAT_SERVER_FLAGS)
# Some GPL-incompatible options are enabled
message(STATUS "")
message(STATUS
"NOTE: The following build options may produce a server library/binary")
message(STATUS
" that is incompatible with the GPL/undistributable if linked with GPL libraries.")
message(STATUS " ${GPLINCOMPAT_SERVER_FLAGS}")
message(STATUS
"NOTE: I am not a lawyer, and this is not legal advice!")
endif()
# Check for errors.
if(VRPN_BUILD_SERVER_LIBRARY)
if(GPL_SERVER_FLAGS AND NOT VRPN_GPL_SERVER)
message(STATUS "")
message(STATUS "Selected build options produce a GPL server library.")
message(STATUS
"You may disable them, otherwise set VRPN_GPL_SERVER to acknowledge this and build anyway.")
message(FATAL_ERROR
"Need VRPN_GPL_SERVER to build server library with GPL options enabled!")
endif()
if(GPL_SERVER_FLAGS AND GPLINCOMPAT_SERVER_FLAGS)
message(STATUS "")
message(STATUS "IMPORTANT LICENSING NOTE!")
message(STATUS
"Building with the current settings may produce a legally non-distributable server binary!")
message(STATUS
"NOTE: I am not a lawyer, and this is not legal advice!")
endif()
endif()
#-----------------------------------------------------------------------------
# Enable testing/dashboards
create_dashboard_scripts("${CMAKE_CURRENT_SOURCE_DIR}/DashboardBuildInitialCache.cmake.in")
#-----------------------------------------------------------------------------
# If we succeeded, we can go on and include packaging!
if(VRPN_INSTALL)
include(CPack)
cpack_add_component(serversdk
DISPLAY_NAME
"VRPN Server Library and C++ Headers")
cpack_add_component(clientsdk
DISPLAY_NAME
"VRPN Client Library and C++ Headers")
cpack_add_component(tests DISPLAY_NAME "Test applications")
cpack_add_component(clients DISPLAY_NAME "Client applications")
cpack_add_component(servers DISPLAY_NAME "Server applications")
cpack_add_component(mainserver
DISPLAY_NAME
"VRPN main server application")
cpack_add_component(python DISPLAY_NAME "Python bindings")
cpack_add_component(java DISPLAY_NAME "Java bindings")
cpack_add_component(doc DISPLAY_NAME "C++ API Documentation")
endif()
2010-07-15 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Types.h : Making the "Need to compile with C++
error message more verbose.
2010-07-15 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Button.C : Change to make this compile under Visual Studio
6.0 submitted by Andrei State.
* vrpn_Mouse.C : Same.
2010-07-02 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Tracker_isense.C : Modified to compile with the latest version
of the Intersense library based on comments from Andrew Roth at
York University, Toronto based on info from Rand Kmiec at
Intersense.
* vrpn_Tracker_isense.h : Same.
2010-06-25 David Marshburn <marshbur@cs.unc.edu>
* vrpn_Connection.C (get_log_names): does not attempt to return
names for NULL input parameters.
* vrpn_FunctionGenerator.h/c: uses vrpn_Callback_List.
2010-03-16 David Marshburn <marshbur@cs.unc.edu>
* vrpn_FunctionGenerator.C: correctly NULL-terminates decoded
script and description strings.
2010-03-08 David Marshburn <marshbur@cs.unc.edu>
* vrpn_FunctionGenerator.h (vrpn_FunctionGenerator_function_script::getConstScript):
new, const accessor for the script string.
* vrpn_FunctionGenerator.C (vrpn_FunctionGenerator_Remote::encode_channel):
encodes the correct, desired channel.
2010-02-18 David Marshburn <marshbur@cs.unc.edu>
* vrpn_FunctionGenerator.h/C: a few tweaks and additions,
including: the ability for servers to keep up with the number
of channels they're really using, the ability to copy functions,
and some additional, correct const-ing.
2010-01-15 Russell M. Taylor II <taylorr@cs.unc.edu>
* CMakeLists.txt : Added -fPIC option submitted by Sheldon
Andrews from McGill to non-Windows builds. This was
important for his 64-bit Java code.
* vrpn_DreamCheeky.C : Makes it not try to compile except
under Windows, Cygwin, Apple.
* vrpn_DreamCheaky.h : Same.
2010-01-14 David Marshburn <marshbur@cs.unc.edu>
* vrpn_FunctionGenerator.h/C: various bug fixes and additions,
mostly involved with sending and receiving channel messages.
2010-01-05 David Marshburn <marshbur@cs.unc.edu>
* vrpn_FunctionGenerator.h/C: added error-reporting handlers
for remote objects. also, explicitly defined value for the
enumeration of error codes.
2009-12-30 David Marshburn <marshbur@cs.unc.edu>
* vrpn_FunctionGenerator.h/C: added error-reporting capabilities
for servers (intended to be used for script malfunctions).
2009-12-29 David Marshburn <marshbur@cs.unc.edu>
* vrpn_FunctionGenerator.h/C: added another constructor to
vrpn_FunctionGenerator_function_script and removed the pure-virtual
specifier from the method generateValues.
2009-12-27 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_DreamCheeky.h : Added support for the Dream Cheeky USB
roll-up drum kit, which is a HID device.
* vrpn_DreamCheeky.C : Same.
* CMakeLists.txt : Same.
* Makefile : Same.
* vrpn.vcproj : Same.
* vrpndll.vcproj : Same.
2009-12-19 Russell M. Taylor II <taylorr@cs.unc.edu>
All changes here are from Ryan Pavlik. I'm just adding them in.
* CMakeLists.txt : Adds vrpn_Configure.h into developer files.
* README.Compiling : Describes building using Cmake.
* vrpn_Configure.h : Added note telling about Cmake build/config.
* vrpn_Configure.h.cmake_in : Same.
* vrpn_HumanInterface.h : Adds default for non-Cmake compilation.
2009-12-15 Russell M. Taylor II <taylorr@cs.unc.edu>
* CmakeLists.txt : Major version number now 7.25.
* vrpn_Connection.C : Same.
2009-12-15 Russell M. Taylor II <taylorr@cs.unc.edu>
* CmakeLists.txt : Improved version from Ryan Pavlik.
2009-12-15 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Configure.h : Removed #pragmas calling for linking with the
libraries because it breaks things when running Cmake. All
app builds will need to explicitly link with VRPN now.
* vrpn_Configure.h.cmake_in : Same.
2009-12-15 Russell M. Taylor II <taylorr@cs.unc.edu>
* CMakeLists.txt : Remove un-needed vrpn_TypeDispatcher.[hC]
* vrpn_TypeDispatcher.h : Removed (included in vrpn_Connection.h).
* vrpn_TypeDispatcher.C : Removed (included in vrpn_Connection.C).
2009-12-15 Russell M. Taylor II <taylorr@cs.unc.edu>
* CMakeLists.txt : Improved version from Ryan Pavlik. Refactored to make
them cleaner and updated them to more modern Cmake usage. Also
added CPack descriptions.
* cmake : New directory in support of the above.
* FindDirectShow.cmake : Moved to cmake/ subdirectory.
* FindHDAPI.cmake : Same.
* Findquatlib.cmake : Same.
* vrpn_Atmel.C : Added newline at end of file.
* vrpn_Configure.h : Commented definition of VRPN_USE_PHANTOM_SERVER.
* vrpn_HumanInterface.C : Mac version-agnostic type definition.
* vrpn_Nidaq.C : Turns off inclusion of function when USE_NIDAQ not there.
* vrpn_Nidaq.h : Same.
2009-11-27 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_3DConnexion.C : Replaced MACOSX with __APPLE__ to make things compile
on more Mac platforms.
* Findquatlib.cmake : Knows to look one directory up from the present one
to find quatlib.
* vrpn_Button.C : Patch from Hans Labermont to make it compile under 64-bit
Windows.
2009-11-24 David Marshburn <marshbur@cs.unc.edu>
* vrpn_FunctionGenerator.h: added VRPN_CALLBACK to the callback type definitions.
2009-11-23 Russell M. Taylor II <taylorr@cs.unc.edu>
* CMakeLists.txt : Added code to compile the DirectShow video
server and the gen_rpc tests.
* FindDirectShow.cmake : Same.
2009-11-23 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_CerealBox.C : Picking lint found by a new compiler (const declarations
and printf format changes).
* vrpn_JoyFly.C : Same.
* vrpn_Magellan.C : Same.
* vrpn_Mutex.C : Same.
* vrpn_RedundantTransmission.C : Same.
* vrpn_Tracker_Crossbow.C : Same.
* vrpn_Tracker_NDI_Polaris.C : Same.
2009-11-21 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Button.C : Type conversions to remove compiler warnings.
* vrpn_Connection.C : Same.
2009-11-21 Russell M. Taylor II <taylorr@cs.unc.edu>
* CMakeLists.txt : Removing duplicate entries.
* Findquatlib.cmake : To Unix line endings.
* time_test.cpp : Compiles under Linux.
* vrpn_FunctionGenerator.C : same.
2009-11-21 Russell M. Taylor II <taylorr@cs.unc.edu>
* CMakeLists.txt : File to describe to the Cmake build system how
to compile VRPN.
* FindHDAPI.cmake : Same.
* Findquatlib.cmake : Same.
* vrpn_Configure.h.cmake_in : Same, plus letting user set things to
be compiled in using the Cmake interface. This needs to be
improved -- it overwrites the vrpn_Configure.h file now.
* time_test.cpp : Include adjustments to make it compile on Windows.
* vrpn_Atmel.C : Make it compile on Windows.
* vrpn_Shared.C : Disabled spurious compiler warning on Windows.
2009-11-13 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_HumanInterface.C : Patch from Bruno Raffin from imag.fr that
makes it compile cleanly on macosx.
2009-10-30 Russell M. Taylor II <taylorr@cs.unc.edu>
* Makefile : Making this compile under Linux using new 0.4 version of
libfreespace; patch from Phil Black.
* vrpn_Freespace.C : Same.
* vrpn_Freespace.h : Same.
2009-10-22 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Configure.h : Changed to always link with the release version
of the libfreespace, even in debug mode, to avoid manifes problems.
* vrpndll.vcproj : Making vrpn_Freespace.C compile as C++ code in debug
mode.
2009-10-22 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_3DConnexion.C : Put in patch from Ian Curington to work
with devices that have more than 8 buttons.
2009-10-22 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Freespace.h : Added code from Phil Black at Hillcrest Labs to
run their Freespace devices in VRPN.
* vrpn_Freespace.C : Same.
* vrpn_Configure.h : Same.
* vrpn.vcproj : Same.
* vrpndll.vcproj : Same.
* vrpn.sln : Same.
* Makefile : Putting the files into the server library. Still
won't compile on anything but Windows.
2009-10-16 David Marshburn <marshbur@cs.unc.edu>
* vrpn_FunctionGenerator.C (register_types): corrected a typo
in the message IDs
2009-09-24 Russell M. Taylor II <taylorr@cs.unc.edu>
* Makefile : Turned "-g" flag into "$(DEBUG_FLAGS)" throughout.
* vrpn_3DConnexion.C : Patch from Hans Lambermont to make the
3DConnexion and HID drivers work on MacOSX.
* vrpn_3DConnexion.h : Same.
* vrpn_HumanInterface.C : Same.
* vrpn_HumanInterface.h : Same.
* vrpn_Shared.C : Same.
2009-09-22 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Tracker_DTrack.C : Changes by Kurt Achatz to enable enhanced
timing support and new device support.
* vrpn_Tracker_DTrack.h : Same.
2009-09-02 David Marshburn <marshbur@cs.unc.edu>
* vrpn_FunctionGenerator.h, .C: removed all the specific functions
(sine, degauss, ramp, etc.). now, there's just a "script" function,
which is interpreted by the server to generate values. removed
various support facilities for the specific functions.
* added destructor for vrpn_FunctionGenerator_function_script
2009-08-31 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Mouse.C : Added fix by Chris VanderKnyff to the mouse code on
Windows to make it work when there are multiple screens.
2009-08-03 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Imager.C : Fixed a bug in region decoding when a region less
than the whole image was loaded and the repeat count on the
pixel output was more than 1.
2009-07-29 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Tracker_Isotrak.h : Adds an Isotrak tracker driver
submitted by Burno Herbelin from the Sensorama Laboratory
at AAlborg University.
* vrpn_Tracker_Isotrak.C : Same.
* vrpn.dsp : Same.
* vrpndll.dsp : Same.
* vrpn.vcproj : Same.
* vrpndll.vcproj : Same.
* Makefile : Same.
2009-07-20 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn.sln : Added a run_auxiliary_logger test program that
lets you connect and ask for a log file for some
duration.
* vrpn.dsw : Same.
2009-06-19 Russell M. Taylor II <taylorr@cs.unc.edu>
Version 07.21 released.
* vrpn_Connection.C : Changed version number higher so that compiles
will be above current release number.
2009-06-19 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_BaseClass.h : Added deep-copy operator to the callback list
class, so that it would work properly with the tracker code.
* vrpn_Tracker.h : Added deep-copy operator to the callback list
class, so that it would work with the copy-then-delete
approach to allocating more handlers in the tracker code.
2009-06-18 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_3DConnexion.C : Added fix by Joseph Newman to let this compile
under Mac OSX.
2009-06-16 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Shared.C : Removed a spurious #endif that was left
behind from my previous commit.
2009-06-10 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Shared.C : Added fix to semaphore code on the mac sent in
by Simon Julier.
* vrpn.sln : Converted back to correct line endings so it can be
opened by Visual Studio.
2009-05-18 David Marshburn <marshbur@cs.unc.edu>
* vrpn.sln: made the vrpn project depend on quatlib, so quatlib
will always be rebuilt when needed.
* vrpn_ForceDevice.h: removed an unnecessary include of quat.h
2009-05-15 Ryan Schubert <res@cs.unc.edu>
* vrpn_Imager.C : Fixed 16->8 bit transcoding.
2009-04-17 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_3DConnexion.C : Patch from Hans Lambermont to make the
Linux version read all of the messages in the buffer from
the device. Also fixed both Windows and Linux versions
to both send all messages found in a buffer, rather than
just the last set. (Not yet tested this second set of
fixes).
2009-03-02 David Marshburn <marshbur@cs.unc.edu>
* vrpn_Tracker.C (ensure_enough_unit2sensors): initializes
the new elements of the new arrays rather than the non-existant
elements of the old arrays.
2009-02-28 Russell M. Taylor II <taylorr@cs.unc.edu>
* Makefile : Add in vrpn_WiiMote files to server library.
* vrpn_WiiMote.C : Define min() before use.
2009-02-19 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Connection.C : Increasing version number after release.
2009-02-19 Russell M. Taylor II <taylorr@cs.unc.edu>
Version 07.20 release.
* vrpn_Connection.C : Moved the connection manager class to the .h file
so that FileConnection can access it in its constructor and
destructor.
* vrpn_Connection.h : Same.
* vrpn_FileConnection.C : Adds itself to the list of open connections in
constructor and removes itself in destructor, so that multiple
devices opening the same file share the same connection.
* vrpn_FileConnection.h : Changed parameter name to make it more clear
what it does.
* vrpn_Tracker.C : Removed spurious ":" that had worked its way into one
of the tracker report strings (for acceleration).
2009-01-21 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Tracker.C : Removed the upper limit on the number of
sensors per tracker. The client now dynamically updates
the list to provide sufficient entries until it runs out
of memory.
* vrpn_Tracker.h : Same.
2009-01-16 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_WiiMote.C : Fixed a bug that caused the buttons on the
Classic controller and Guitar Hero controller to be ignored
by the driver.
2009-01-15 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_3DConnexion.C : Making this work with Cygwin.
* vrpn_3DConnexion.h : Same.
* vrpn_HumanInterface.C : Same.
* vrpn_HumanInterface.h : Same.
2009-01-15 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_3DConnexion.C : Fixed #defines so that it compiles under Cygwin.
* vrpn.vcproj : Removed entry for isense.h (not always present)
* vrpndll.vcproj : Same.
2009-01-14 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_ForceDevice.h : Bug fix sent in by Bruno Raffin, where
<quat.h> should have been used but "../quat/qua.h" was.
2008-12-24 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Configure.h : Added a comment about where to find a different
library for dxerr8.lib, which has vanished in newer versions of
the SDK from Microsoft.
2008-12-23 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Connection.C : Raised version number after releasing version
7.19.
2008-12-23 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_3DConnexion.C : Making it also compile under Windows.
2008-12-23 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_3DConnexion.C : Patch from Hans Lambermont from Virtual Proteins
to light up the 3DConnexion when the server runs.
* vrpn_3DConnexion.h : Same.
2008-12-23 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Tracker_Fastrak.C : Added fix sent in by Roger Hoang to
keep things working with both Fastrak and IS900s with buttons.
2008-12-23 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_WiiMote.C : Driver for the WiiMote device using the WiiUse
library. Tested under Windows; also supposed to work under
Linux. Handles accelerometers, buttons, and raw IR values.
Should handle nunchuck, classic remote, and guitar hero 3
attachments (not tested).
* vrpn_WiiMote.h : Same.
* vrpn.vcproj : Same.
* vrpn_Configure.h : Same.
* vrpndll.vcproj : Same.
* vrpn.sln : Added rumble test program.
2008-12-22 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_XInputGamepad.C : Chris VanderKnyff's implementation of the Xbox 360
game controller.
* vrpn_XInputGamepad.h : Same.
* vrpn.vcproj : Same.
* vrpndll.vcproj : Same.
2008-10-21 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Connection.C : Adds some more checks and deletion to make
things a bit more stable when connections try to overwrite
existing log files.
2008-10-01 Ian Curington <ianc@acm.org>
* vrpn_3DConnexion.C/h:
Added 3DConnexion Spaceball 5000 device support
2008-09-29 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_3DConnexion.C : Patch from Ian Curington to get around a
GCC 2.3 bug in converting shorts to doubles.
2008-09-05 Ryan Schubert <res@cs.unc.edu>
* vrpn_Imager.C : Looked like 16->8 transcoding was never
committed.
2008-08-28 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Connection.C : Changed out a horrible hack where a
structure was being packed using memcpy (and a structure
with a pointer in it at that) into one where it is
explicitly marshalled and unmarshalled to the log files.
This fixes a bug where log files generates on 64-bit
machines were unreadiable on 32-bit machines and vice-versa.
* vrpn_FileConnection.C : Same.
2008-07-16 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Imager.c : Modified the unsigned 16 decode routine
to fix a bug where it was crashing when trying to read
from the wrong part of memory.
2008-07-12 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Tracker_AnalogFly.C : Fixed the order of rotations
when using the clutch on orientation.
2008-07-09 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Connection.C : Updating version after release of 7.16.
2008-07-09 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Connection.C : Removed debug printout.
2008-07-09 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn.sln : Added dependencies in quatlib to servers.
* vrpn_Connection.C : Fixed a bug in the determination of
the machine name where it was being truncated for the
case of tcp:// names.
2008-07-09 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Tracker_AnalogFly.C : Removed a redundant copy from a
redundant temporary variable.
2008-06-19 David Marshburn <marshbur@cs.unc.edu>
* vrpn_Poser.h, .C: added the capability for remote objects
to make relative pose & velocity requests and for servers to
receive these requests.
2008-06-06 Russell M. Taylor II <taylorr@cs.unc.edu>
* Adding python_vrpn port from Thiebaut Mochel at the
University of Strasborg.
2008-05-26 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Tracker_AnalogFly.h : Setting clutch name to NULL in the
constructor; it was not set before, causing a crash later.
2008-05-09 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Tracker_PhaseSpace.C : Added updates from Lawrence K.
at PhaseSpace.
* vrpn_Tracker_PhaseSpace.h : Same.
2008-04-14 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Configure.h : Changing comments on when to define the
various NATIONAL_INSTRUMENTS flavors.
* vrpn.vcproj : Pointing at the new location for NI MX header
files.
* vrpndll.vrproj : Same.
2008-04-04 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Imager.C : Fixed a signed vs unsigned copy of characters in the
non-unity-stride 8-bit copy function.
2008-04-02 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_3DConnexion.h : Added patch from Mike Weiblen to
add SpaceExplorer.
* vrpn_3DConnexion.C : Same.
2008-03-09 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn.vcproj : Added Polaris tracker to VS 2005 project.
* vrpndll.vcproj : Same.
* vrpndll.dsp : Same.
2008-03-09 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn.dsp : Adding vrpn_Tracker_NDI_Polaris driver submitted
by Sharif Razzaque from InnerOptic.
* Makefile : Same.
* vrpn_Tracker_NDI_Polaris.C : Same.
* vrpn_Tracker_NDI_Polaris.h : Same.
2008-03-09 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_JoyWin32.C : Added another error check submitted by
M. Casas Sanchez at Space Application Services in
Belgium.
2008-03-09 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Connection.h : Making it so that specifying a blank
NIC name results in opening the default NIC.
* vrpn_Connection.C : Same.
2008-03-04 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Connection.h : Added another optional parameter to the
helper version of vrpn_create_server_connection() so
that it matches the constructor arguments from the old
vrpn_Connection() server constructor to make it easier to
port existing servers.
2008-03-04 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Configure.h : Turned off DIRECTSHOW in the default
configuration.
2008-03-04 Russell M. Taylor II <taylorr@cs.unc.edu>
WARNING: The changes made in this commit require any code that
created a vrpn_Connection (server connection) using its
constructor to be changed to use the new function
vrpn_create_server_connection() instead. This is required
because a base-class constructor cannot create and return
an object of a derived class.
* vrpn_Connection.h : Pulling the IP-specific portions of the
vrpn_Connection object into a separate class so that we
can add an MPI implementation.
- Added another parameter to vrpn_get_connection_by_name
to force it to open a new connection even if there was
already one there.
- Should no longer create a vrpn_Connection directly; either
create a specific subclass (vrpn_Connection_IP) or else
use the vrpn_create_server_connection() function to make
one of arbitrary type.
- Made vrpn_Connection_Generic the base type.
* vrpn_Connection.C : Same.
* vrpn_Mutex.C : Makes an IP-based connection to listen on.
* vrpn_ForwarderController.C : Makes an IP-based connection to
forward on.
* vrpn_FileConnection.C : Modified to use the new base class.
* vrpn_Imager_Stream_Buffer.C : Calls vrpn_get_connection_by_name
rather than calling base-class constructor.
* vrpn_Auxilliary_Logger.C : Same.
2008-03-03 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_3DConnexion.C : Fixed a bug reported by Patric Schmitz
where multiple-report packets from the device were not
being treated correctly.
2008-02-26 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Configure.h : Added a configuration entry to enable VRPN
to link with a Message-Passing Interface (MPI) library and
communicate over it between a group of processes. This is
a fast and low-latency communications mechanism available
on clusters. So far, only the definition is in there; the
implementation will be committed in steps as the TCP and UDP
parts are teased out of the general Connection object.
* vrpn_Connection.h : Teasing the IP-specific (TCP, UDP) portions
of the vrpn_Endpoint out into a separate base class. The
basic Connection object has been modified to use the IP
version in all cases (it is effectively an IP connection).
Next up will be teasing the non-IP-specific parts of the
Connection out.
* vrpn_Connection.C : Same.
2008-02-08 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Connection.C : Modified to make the tcp: connection
method reconnect after a connection drops (and retry
if the initial connection is not made). Also cleaned
up some names.
* vrpn_Connection.h : Same.
2007-12-28 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Connection.C : Changing version number to 7.15 for
release.
2007-12-28 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Shared.C : Making this compile on the mac by removing
a spurious extra if statement left over from a bad
patch attempt. Removing a second deletion of an
already-destroyed semaphore.
* Makefile : Switching mac compiler from gcc to g++.
2007-12-10 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Connection.C : Finally tracked down and squashed
that horrible bug where the UDP packets would not
go on the same interface as the TCP packets sometimes
on hosts with multiple interfaces. Did it by using
the same connection for UDP that was established for
TCP unless there was an explicit override in the
constructor.
2007-12-05 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Tracker_Liberty.C : Patch from Michael Adrian that
makes this work with more versions of the tracker.
2007-12-05 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_3DCOnnexion.C : Patch from Patrick Hartling
to make this compile on the Mac.
* vrpn_Shared.C : Patch from Patrick Hartling to
make this work with the most recent Apple compiler.
2007-12-04 Russell M. Taylor II <taylorr@cs.unc.edu>
* Makefile : Making it include the vrpn_Tracker_MotionNode.
2007-12-04 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Configure.h : Added entry for MotionNode Tracker.
This compiles under Visual Studio 2005 (not 6.0).
* vrpn.dsp : Same.
* vrpn.vcproj : Same.
* vrpn_Tracker_MotionNode.C : Vendor-supplied server code.
* vrpn_Tracker_MotionNode.h : Same.
* vrpndll.dsp : Same.
* vrpndll.vcproj : Same.
2007-11-29 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Configure.h : Removed the paths for DirectX and
replaced them with instructions for how to put the
include and lib directories into the Visual Studio
options.
* vrpn_Shared.C : Whitespace cleanup
* vrpn.sln : Adding required dependency.
2007-11-21 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Tracker_Liberty.C : Added patch from Eric Griffith
to include control of a stylus.
* vrpn_Tracker_Liberty.h : Same.
2007-11-21 Russell M. Taylor II <taylorr@cs.unc.edu>
* Makefile : Included definitions needed to compile with
the InterSense library.
2007-11-20 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_3DConnexion.C : Picking some lint.
2007-11-20 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_3DConnexion.C : Made this compile under Linux.
Had to add in a structure definition that was not
in the system header files.
* vrpn_3DConnexion.h : Same.
2007-11-20 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_3DConnexion.C : Added code to run with the event
interface on non-Windows platforms. This was sent
in by Jan Ciger.
* vrpn_3Dconnexion.h : Same.
* vrpn_Configure.h : Removed vrpn_USE_HID; this turned
into checks for _WIN32 all over the place.
* vrpn_HumanInterface.C : Pulling out the non-Windows-
specific parts so that all of the acceptor code
can be used.
* vrpn_HumanInterface.h : Same.
* vrpn_Xkeys.C : Switched to checking for _WIN32 rather than
vrpn_USE_HID
* vrpn_Xkeys.h : Same.
2007-11-20 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Joywin32.C : Allows more than two joysticks
to be opened.
2007-11-20 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Flock.C : Uses 36" rather than 144" as the
range when not using the extended-range
transmitter. Fix submitted by Jo Skjermo.
2007-11-20 Russell M. Taylor II <taylorr@cs.unc.edu>
* Makefile : Renamed Auxilliary to Auxiliary.
Moved Keyboard_Mouse to Keyboard.
* vrpn_Mouse.C : Added required include file.
2007-11-19 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Button.C : Moved the serial-mouse button code
into the vrpn_Mouse.C file to have all of the
mice in one place.
* vrpn_Button.h : Same. Made the MAX_BUTTONS and BUF_SIZE
values 256, rather than 100, to support the keyboard
class.
* vrpn_Mouse.C : Added Windows interface to the class.
Changed Windows interface to report mouse position
in fraction of screen rather than pixels, so
that the Windows and Linux implementations match.
Moved the serial mouse-button class into this file
so all of the mice are here.
* vrpn_Mouse.h : Same.
* vrpn_Keyboard.C : Pared-down version of vrpn_KeyMouse
that only implements the keyboard portion.
* vrpn_Keyboard.h : Same.
* vrpn_KeyMouse.C : Removed.
* vrpn_KeyMouse.h : Removed.
* vrpn_AnalogFly.C : Added a clutch button that causes
the differential tracker to only move when the
button is pressed and causes an absolute tracker
to behave like a mouse, also only moving when the
button is down.
* vrpn.dsp : Removed vrpn_KeyMouse. Added vrpn_Keyboard.
* vrpndll.dsp : Same.
* vrpn.vcproj : Same.
* vrpndll.vcproj : Same.
2007-11-13 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Configure.h : Toook out NationalInstruments.
Reverted to old version of Microsoft DirectX
SDK (let the tug-of-war begin).
* vrpn.dsp : Changed name of Auxilliary to Auxiliary.
* vrpndll.dsp : Same.
2007-11-12 David Marshburn <marshbur@cs.unc.edu>
* corrected the spelling of Auxilliary to Auxiliary
2007-10-19 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Connection.C : Making an fprintf() with the
machine IP address work under Linux.
2007-10-11 David Marshburn <marshbur@cs.unc.edu>
* vrpn_Imager_Stream_Buffer.h/C: implemented
handle_request_logging_status
(vrpn_Imager_Stream_Shared_State): this now keeps around
the log-file-name results. added appropriate memory management
for that. added lots of NULL tests. added an accessor for
log file names, get log file names, which doesn't depend on
whether the file names are unqueried. added comments.
2007-10-02 David Marshburn <marshbur@cs.unc.edu>
* vrpn_Log.h (vrpn_Log::getName): new, returns the
log file name.
* vrpn_Connection.h (vrpn_Connection::get_log_names):
returns the names of the local/remote in/out log files.
* vrpn_Connection.C:
implementation of vrpn_Connection::get_log_names
and vrpn_Log::getName.
* vrpn_Auxilliary_Logger.h/C: added code for a
"request logging status" message, including an example
in the generic server.
2007-09-18 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpndll.vcproj : Added preprocessor definitions that
make VRPN build the files needed to link in the
DLL state.
* vrpn.sln : Making it come much closer to being able to
build DLL.
* vrpn_Connection.h : Removed redundant check for #ifdef.
2007-09-18 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_3DConnexion.C : Added SpaceMouse code from
Lode Vanacken.
* vrpn_3DConnexion.h : Same.
2007-09-17 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Imager_Stream_Buffer.C : const casts so that we
can delete buffers without the VC 6.0 compiler
complaining.
2007-09-14 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Connection.C : Added the name of the endpoint to
the data structure so we get a reasonable error
message when connections fail.
* vrpn_Connection.h : Whitespace change.
* vrpn_Imager_Stream_Buffer.C : Initialized a variable so
we don't get a race condition when making logging
connections.
2007-09-01 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Imager.C : Does transcoding for the simple case
of an 8-bit input image going to a 16-bit output
image by shifting left 8 bits.
2007-08-29 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_GlobalHapticsOrb.C : Removing things that were not
needed. Replacing member variables that start with
underscore with those that start with d_. Code
cleaning that should leave the behavior unchanged.
* vrpn_GlobalHapticsOrb.h : Same.
* vrpn_VPJoystick.C : Same.
* vrpn_VPJoystick.h : Same.
* vrpn_Zaber.C : Same.
* vrpn_Zaber.h : Same.
2007-08-29 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Imager_Stream_Buffer.C : Deletes the buffer for
each message that has been passed to the initial
thread from the real-time thread. Not doing this
caused a massive memory leak. The comments said
to do it but the code didn't.
2007-08-29 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Imager.h : Added friend reference to the imager
stream buffer to enable passing values from one
thread to the other.
* vrpn_Imager_Stream_Buffer.C : Now passes the channel
descriptions from the real-time logging thread up
to the client-management thread so that it can send
correct descriptions when multiple clients connect.
* vrpn_Imager_Stream_Buffer.h : Same.
2007-08-25 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Connection.C : Changed version number to 7.13
for new release.
2007-08-25 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Analog_Output.C : Moved some methods from public
to protected. Added a new derived class for the server
that calls user-level callbacks when things change.
This was needed for MegaWatt Solar's tracker drive.
* vrpn_Analog_Output.h : Same.
* vrpn_Connection.C : Comment change.
* vrpn_Analog.h : Removed blank line.
2007-08-20 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Connection.C : Changed version number to 7.12
(for some reason it was 7.10, even though version
7.11 has been out for a while).
2007-08-17 Russell M. Taylor II <taylorr@cs.unc.edu>
* Makefile : Patch from Patrick Hartling for compilation
under 64-bit Windows.
* vrpn_Tracker_DTrack.h : Same.
* vrpn_Tracker_DTrack.C : Same.
* vrpn_HumanInterface.h : Added carriage return to last line.
* vrpn_XKeys.h : Same.
* vrpn_3DConnexion.h : Same.
2007-08-17 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Connection.h : Adding more clarifying comments.
* vrpn_Imager.C : Removed line that set throttle drop count
to zero when it should not have.
* vrpn_Imager_Stream_Buffer.C : Completed the implementation
and debugging.
* vrpn_Imager_Stream_Buffer.h : Same.
2007-08-13 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_3DConnexion.C : Thanks to Chris V's new HID class, I
was able to write a driver for the Space Traveler and
Space Navigator from 3DConnexion. These are a $55 and
$200 replacement for the Magellans.
* vrpn_3DConnexion.h : Same.
* vrpn.dsp : Same.
* vrpn.vcproj : Same.
* vrpndll.dsp : Same.
* vrpndll.vcproj : Same.
* vrpn.dsw : Added new project from Chris VanderKnyff that
prints out the values from a HID device, enabling you
to figure out how to write a driver for it. That's what
I used to figure out the bytes from the 3DConnexions.
2007-08-12 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Configure.h : Added option to enable compilation
of the HID devices (including the Xkeys devices).
This will only work on Windows for now.
* vrpn_HumanInterface.C : Chris VanderKnyff's implementation
of a generic HID device interface for Windows.
* vrpn_HumanInterface.h : Same.
* vrpn_Xkeys.C : Chris VanderKnyff's implementation of a
driver for four of the X-Keys devices from P.I.
Engineering
* vrpn_Xkeys.h : Same.
* vrpn.dsp : Adding HID and XKeys to project.
* vrpn.vcproj : Same.
* vrpndll.dsp : Same.
* vrpndll.vcproj : Same.
2007-08-05 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn.dsp : Added vrpn_Imager_Stream_Buffer.
* vrpndll.dsp : Same.
2007-08-05 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Imager_Stream_Buffer.h : Class that provides
full-rate logging of a vrpn_Imager stream while
forwarding a subset of the stream to a client.
This is for the UNC NSRG research group to enable
scientists to log microscope video data at full
camera rates of 120 frames/second while previewing
live during the experiment. The implementation is
not yet complete, but this version has all of the
logging and logfile-switching code working with
multiple threads so I wanted to check it in before
doing the next step.
* vrpn_Imager_Stream_Buffer.C : Same.
* Makefile : Adding vrpn_Imager_Stream_Buffer class.
* vrpn.vcproj : Same.
* vrpndll.vcproj : Same.
* vrpn_Imager.h : Comment improvements.
* vrpn_Shared.h : Comment fixes.
2007-07-22 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_DirectXRumblePad.C : Changes by Chris VanderKnyff to
make this work correctly on Visual Studio .NET and 6.
* vrpn_DirectXRumblePad.h : Same.
2007-07-20 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn.sln : Organizing the various projects into folders
within the solution to make it easier to figure out
what is what.
2007-07-20 Russell M. Taylor II <taylorr@cs.unc.edu>
* Makefile : Adding the vrpn_Auxilliary_Logger under
Linux.
2007-07-20 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Auxilliary_Logger.h : New class that lets a client
request an additional log file to be started on a
local or remote server. Intended for logging on
scientific instruments in the UNC NSRG group but
there is a generic server for use elsewhere.
* vrpn_Auxilliary_Logger.C : Same.
* vrpn.dsp : Added to project.
* vrpndll.dsp : Same.
* vrpn.vcproj : Same.
* vrpndll.vcproj : Same.
* vrpn.dsw : Added build project for test program.
* vrpn.sln : Same.
* vrpn_Analog_Output.h : White space change.
* vrpn_Connection.C : Modified the pack_log_description()
function to remove the fixed-buffer-length hack that
had been in there. It now allocates a buffer that is
large enough and frees it when it is done.
Modified code to handle empty-string ("") names for
log files meaning "no log file" in addition to
NULL pointers.
Comment changes. Fixing error
messages to work properly with perror().
2007-07-18 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Connection.C : Comment and white-space changes.
Converting from C-style casts to static_cast<>
in several locations.
2007-07-10 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Shared.C : This version compiles and runs under
Linux again (removed an &).
2007-07-10 Russell M. Taylor II <taylorr@cs.unc.edu>
* Makefile : More fixes to get the atmellib compiling
correctly.
* vrpn_Share.h : Changes to make this work on the Mac, which
uses a different Posix open/close call than Linux. Also
changed to using a semaphore pointer rather than a
semaphore under Posix, which requried new and delete.
Works under mac and Windows. Needs to be tested
under Linux.
* vrpn_Shared.C : Same.
2007-07-09 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Shared.h : Added VRPN_API where needed for the
Thread code to compile under DLL linkage.
2007-07-09 Russell M. Taylor II <taylorr@cs.unc.edu>
* Makefile : Fixing problems put in when I added the atmellib
stuff; it was not making the client library as client-
only code any more.
* vrpn_Shared.C : Bug fixes in the Semaphore and Thread code.
Made the interface to them a bit cleaner (fewer
pointers). Added test routine that make sure the
Semaphore and Thread code is working.
* vrpn_Shared.h : Same.
2007-07-06 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Shared.C : Fixed the thread code to be Posix-compliant,
and not specify pthread_t as unsigned long; this makes
it work on mac as well as Linux.
* vrpn_Shared.h : Same.
2007-07-03 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_DirectXRumblePad.C : This code is broken (Chris
V. verified this). The constructor now reports that
it is broken. Once we get a bug fix, we can let the
constructor construct one again.
2007-07-03 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Tracker_DTrack.C : Changed type of a struct so that it
has vrpn_ prepended to the name (don't want anything in
the library that can be seen globally to have a name that
doesn't start with vrpn_ to avoid name-collisions.
* vrpn_Tracker_DTrack.h : Same.
2007-07-03 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Tracker_DTrack.C : Patch from Kurt Achatz to build for new
version of A.R.T. DTrack, which supports the new Flystick2
input device. The patch was necessary to support the new
(additional) DTrack output format called '6df2'; the driver
still understands the former output format '6df', so that
it can work with any existing DTrack installation too.
Note that there was a change how buttons of a 'Flystick'
device are sorted; this was done to fit DTrack's standards
described in A.R.T. documentation. For backward
compatibility the driver uses the old sorting when using
the old output format '6df'.
* vrpn_Tracker_DTrack.h : Same.
2007-07-03 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_inertiamouse.h : Removing iostream and std::vector class
from the code. It turns out that the standard template
libraries don't work across all platforms VRPN is built
upon, which keeps folks from using (linking to) it if it
has these references. Totally horrible, but true; someone
had trouble linking as soon as this was added.
* vrpn_inertiamouse.C : Same.
2007-07-02 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Connection.C : White space, comment, and error message
editing.
* vrpn_Log.h : Same.
2007-07-02 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Connection.C : Fixed bug in the recent patch.
Updated version number.
2007-07-02 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Connection.C : Applied patch from Mike Weiblen that
doesn't restrict the number of file descriptors to
32, but rather uses as many as are needed based
on the actual file descriptor being used.
* vrpn_Joylin.C : Same.
* vrpn_Mouse.C : Fix from Mike Weiblen to code cleanup that
I did that broke the Mouse class.
2007-06-30 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Atmel.C : Making it also compile on Mac Universal.
* vrpn_Event.C : Same.
2007-06-28 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Shared.C : Extra includes to work on non-Windows
machines.
2007-06-28 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_DirectXFFJoystick.C : Comment fixed.
* vrpn_Shared.h : Added vrpn_Semaphore and vrpn_Thread classes
based on Hans Weber's classes. These are to support an
upcoming vrpn_Imager_Logger class that will enable full-
bandwidth logging while subsetting the images to a
client across the network.
* vrpn_Shared.C : Same.
2007-06-25 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Connection.C : Updated version number.
* Makefile : Adding a number of devices from Bauhaus University Weimar
submitted by Jan Springer, including some helper classes
used by their code.
* vrpn_Atmel.C : Same.
* vrpn_Atmel.h : Same.
* vrpn_Event.C : Same.
* vrpn_Event.h : Same.
* vrpn_Event_Analog.C : Same.
* vrpn_Event_Analog.h : Same.
* vrpn_Event_Mouse.C : Same.
* vrpn_Event_Mouse.h : Same.
* vrpn_Joylin.C : Adding typecasts to time reads.
* vrpn_atmellib.h : Same.
* vrpn_atmellib_errno.h : Same.
* vrpn_atmellib_helper.h : Same.
* vrpn_atmellib_helper.C : Same.
* vrpn_atmellib_iobasic.C : Same.
* vrpn_atmellib_openclose.C : Same.
* vrpn_atmellib_register.C : Same.
* vrpn_atmellib_tester.C : Same.
* vrpn_interiamouse.C : Same.
* vrpn_interiamouse.h : Same.
2007-06-22 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Serial.C : Attempting to fix some problems with RTS/CTS that
came in when we switched to termios serial control in version
7 of VRPN. There was a bug introduced in the Windows clear
call that has been fixed. Trying out a new way to control
the RTS/CTS that should work across Linux and Mac platform;
hope it works!
2007-06-21 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Connection.C : Changed to version 7.07.
2007-06-21 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn.dsp : Adding vrpn_DirectXRumblePad driver submitted by
Chris VanderKnyff and Jeff Feasel.
* vrpndll.dsp : Same.
* vrpn.vjproj : Same.
* vrpndll.vjproj : Same.
* vrpn_DirectXRumblePad.C : Same.
* vrpn_DirectXRumblePad.h : Same.
* vrpn_BaseClass.C : Added a public "shutup" boolean member that
makes an object not print that it cannot connect to its
server counterpart when set to "true". This functionality
is deprecated from the start; we need to figure out a good
functional interface for this. Leaving it in so as not to
break EVE code while a new version is implemented.
* vrpn_BaseClass.h : Same.
* vrpn_Flock.C : Added the ability to set the hemisphere for the
Flock (code from Jeff Feasel).
* vrpn_Flock.h : Same.
2007-06-19 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn.vcproj : Making all of the .C files compile with the C++
compiler.
* vrpndll.vcproj: Adding the Poser_Tek4662 file.
2007-06-19 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn.dsp : Removed dependencies on vrpn.lib and vrpndll.lib,
because they are handled indirectly and through lines in
vrpn_Configure.h.
* vrpn.dsw : Same.
* vrpndll.dsp : Added Poser_Tek4662 source files to the project.
* vrpn_Mouse.h : Added VRPN_API to class definition (needed for
DLL linkage).
* vrpn_Mouse.C : Comment clean-up.
* vrpn_Tracker_3DMouse.h : Added VRPN_API to class definition
(needed for DLL Linkage).
* vrpn_Configure.h : Whitespace changes.
2007-06-19 Russell M. Taylor II <taylorr@cs.unc.edu>
* Makefile : Adding patch submitted by Patrick Hartling from
Infiscape.com for making this compile on MacOSX
to create universal binaries.
2007-06-19 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Configure.h : Fixing the path to the PhaseSpace libraries.
2007-06-12 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn.dsp : Adding PhaseSpace driver submitted by
Lawrence Kwan.
* vrpndll.dsp : Same.
* vrpndll.vcproj : Same.
* vrpn_Configure.h : Fixing the path to the include files.
2007-06-12 Russell M. Taylor II <taylorr@cs.unc.edu>
* Makefile : Compiles with PhaseSpace driver submitted by
Lawrence Kwan.
* vrpn.vcproj : Same.
* vrpn_Tracker_PhaseSpace.h : Same.
* vrpn_Tracker_PhaseSpace.C : Same.
2007-05-11 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn.sln : It was building the release configuration as
Debug for some reason. So changed that.
2007-04-05 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_DirectXFFJoystick.C : Made the joystick report at the
requested rate, whether or not there have been changes
to its analog values.
2007-04-05 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_DirectXFFJoystick.C : Uncommenting the lines that make sure
not to send force commands or read values at a rate greater
than was asked for. No idea why these had been commented
out, but it broke the case where you opened a non-FF
joystick with a zero force update rate.
2007-03-18 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Connection.C : Changing version number to 07.05.
2007-03-17 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Shared.h : Made both the vrpn_big_endian and the
htond() code use the same test to see what the
endianness is.
* vrpn_Shared.C : It turns out that some ARM processors have
a mixed-endian double format, where you have to both
swap the bytes and then swap the two words that make
up the double. Horrible. This checks for that and
does it if needed.
2007-03-17 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Mouse.C : Removing the mouse library except when the
new VRPN_USE_GPM_MOUSE definition is specified in
vrpn_Configure.h
* vrpn_Configure.h : Added entry to let us use the GPM mouse
under linux.
* Makefile : Added a build environment description for cross-
compiling to ARM from PCs running Cygwin
2007-03-03 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Mouse.C : Removing the mouse library when compiling
for the ARM, which is the embedded version of the
OS. This device was not present (at least not on
the ARM development I'm working on now).
2007-02-20 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn.sln : Adding required dependencies on quatlib and two
new files that were added to the VS 6.0 files.
* vrpn.vcproj : Same.
* vrpndll.vcproj : Same.
2007-01-23 David Borland <borland@cs.unc.edu>
* vrpn_DirectXFFJoystick.C : Removed DIENVELOPE struct when
creating the force effect. This was causing a buzzing when
applying forces, as the force was ramped down and then back
up again.
2007-01-23 David Borland <borland@cs.unc.edu>
* vrpn_DirectXFFJoystick.h : Now handles changed force field
messages. Currently, just assuming a constant force. The center,
jacobian, and radius are ignored.
* vrpn_DirectXFFJoystick.C : Same.
2007-01-21 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Tracker_isense.C : Changed the interpretation of the
Intersense Quaternion to match that of VRPN/Quatlib.
This lets us translate the positions directly, rather
than scrambled. Thanks to Christian Odom for the
fix!
* vrpn_Connection.C : Updated version number to 7.04.
2006-11-21 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn.dsp : Adding new objects to the project to support
the two new devices.
* vrpndll.dsp : Same.
* vrpn_Analog_USDigital_A2.C : Modified to use the device
#define in vrpn_Configure.h rather than WIN32.
* vrpn_Button_NI_DIO24.C : same.
* vrpn_Button_NI_DIO24.h : same.
2006-11-21 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Analog_USDigital_A2.h : New device driver submitted
by William West from Disney VR Studios.
* vrpn_Analog_USDigital_A2.h : Same.
* vrpn_Button_NI_DIO24.h : Same.
* vrpn_Button_NI_DIO24.C : Same.
* Makefile : Added the above files.
* vrpn_Configure.h : Adds configuration option for these
devices and paths needed.
2006-10-04 Russell M. Taylor II <taylorr@cs.unc.edu>
* time_test.vcproj : Updated to use the August 2006 version
of the DirectX SDK and the Microsoft Platform SDK
for Windows Server 20003 R2.
* vrpn.vcproj : Same.
* vrpndll.vcproj : Same.
* vrpn.sln : Added projects needed to do a DirectShow video
camera vrpn_Imager server. Updated to latest DirectX
SDK and Platform SDK.
* vrpn_FunctionGenerator.C : Removed ambiguity about the
pow() operator by casting one of its inputs.
2006-08-23 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn.dsw : Added projects needed to implement a DirectShow
video imager server.
* vrpn_Configure.h : Added entry to tell whether to include
DirectShow video in the build. This must be defined
to build the DirectShow video imager server.
2006-08-23 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Configure.h : Switched to most recent version of
DirectX SDK. Moved include into config file so
everything can be edited in one location.
* vrpn_DirectXFFJoystick.h : Same.
2006-08-28 David Marshburn <marshbur@cs.unc.edu>
* vrpn_FunctionGenerator.C: correct version of the file.
2006-08-28 David Marshburn <marshbur@cs.unc.edu>
* vrpn_FunctionGenerator.h,C: moved the definition of the
message-type strings into the C file. they should have
always been here.
2006-08-21 David Marshburn <marshbur@cs.unc.edu>
* vrpn_FunctionGenerator.h,C: fixed up a few things for
vrpn_FunctionGenerator_function_degauss -- constructor and
the way cycleTime is calculated.
2006-08-14 David Marshburn <marshbur@cs.unc.edu>
* vrpn_FunctionGenerator.h,C: added a new function,
vrpn_FunctionGenerator_function_degauss. also, made the data
members of the other functions protected and added accessors for
them all.
2006-07-12 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_BaseClass.h : Edited some comments.
* vrpn_Connection.h : Added functions to tell the connection to only
handle a finite number of messages per mainloop() call.
* vrpn_Connection.C : Same.
* vrpn_FileConnection.h : Re-implemented the limit_messages_played_back
function and its functionality using the new capability in the
vrpn_Connection object (from which FileConnection derives).
2006-07-06 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Tracker.h : Increased the maximum number of
tracker sensors from 100 to 500. This is to support
more reported beads in the CISMM Video Spot Tracker
program.
2006-06-21 Russell M. Taylor II <taylorr@cs.unc.edu>
* Makefile : Added install and uninstall targets.
2006-06-21 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Configure.h : Added HL library when compiling Phantom
driver with HDAPI library.
* vrpn_Connection.C : Increased version number.
2006-05-04 David Marshburn <marshbur@cs.unc.edu>
* vrpn_Configure.h: undoing the change i accidentally committed.
2006-05-02 David Marshburn <marshbur@cs.unc.edu>
* vrpn_Connection.[h,C]: added get_time, which returns the
current UTC time in the steam (as opposed to elapsed time, or
time since the connection was opened).
* vrpn_FileConnection.h: same.
2006-04-03 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Connection.C : Increased version number for new
release.
2006-03-13 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpndll.dsp : Added Button_USB and Keyboard_Mouse.
* vrpndll.vcproj : Same.
2006-03-13 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Connection.C : Changing version number for new release.
2006-03-13 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Button_USB.cpp : Code from Tom De Weyer to handle USB
buttons on Windows.
* vrpn_Button_USB.h : Same.
* vrpn.dsp : Adding vrpn_Button_USB.cpp and .h.
* vrpn.vcproj : Same.
* vrpn_Keyboard_Mouse.C : Updates to export analogs rather than tracker.
* vrpn_Keyboard_Mouse.h : same.
2006-03-12 Russell M. Taylor II <taylorr@cs.unc.edu>
* time_test.cpp : Added type-cast.
* vrpn_Keyboard_Mouse.C : Added required library.
* vrpn_Tracker_DTrack.C : Changed from WIN to _WIN check.
* vrpn.sln : Visual C++ 2005 solution file for VRPN.
* *.vcproj : Visual C++ 2005 project files for VRPN.
2006-02-23 David Marshburn <marshbur@cs.unc.edu>
* vrpn_FileConnection.C: the bookmarking mechanism used when searching
through vrpn logs for start/end times did not correctly handle the
end-of-file case (NULL d_currentLogEntry) in the case of !preload and
!accumulate. store_stream_bookmark and return_to_bookmark now
correctly handle going to/from the end of file (without preload and
accumulate).
2006-02-22 David Marshburn <marshbur@cs.unc.edu>
* vrpn_Imager.h: added is_description_valid() to vrpn_Imager_Remote.
this function says whether the imager has received a description
message yet.
2006-02-13 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn.dsp : Removing vrpn_Router.[hC]
* vrpndll.dsp : Same.
2006-02-13 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Router.h : Removing the Sierra Router Server and its
associated files. It was coded in a style that used
the serial messages directly, rather than defining its
own message types. It is no longer being used at UNC,
and I don't know that it has ever been used elsewhere.
A user asked that it be removed.
* vrpn_Router.C : Same.
2006-02-08 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Configure.h : Making the C: drive the default in preparation
for release of version 7.00.
2006-01-27 David Marshburn <marshbur@cs.unc.edu>
* vrpn_File_Connection.h (get_replay_rate): new. there
was no accessor for replay rate, only a way to set it.
2005-12-21 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Connection.C : Added newline to end of error print.
* vrpn_raw_sgibox.C : Removed spurious checks that caused
compiler warnings under Cygwin. Isn't it great to
compile under multiple architectures -- it catches
so many silly things!
2005-12-19 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Configure.h : Switching to HDAPI default.
* Makefile : Fixed to compile under Cygwin.
2005-12-02 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_HashST.h : Removed function setting non-existent
member variable.
* vrpn_Keyboard_Mouse.C : Moved definitions to make them
legal in modern compilers.
* vrpn.dsp : Added vrpn_HashST.h to the files.
2005-10-11 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn.dsp : Adding vrpn_Keyboard_Mouse.[hC] into the build.
* vrpn_Keyboard_Mouse.C : Fixing bugs I introduced when making
it compile under Linux.
* vrpn_Keyboard_Mouse.h : Same.
2005-10-11 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Keyboard_Mouse.h : Lets us use Windows keyboard to fly.
From Tom De Weyer at EDM-Uhasselt from Belgium.
* vrpn_Keyboard_Mouse.C : Same.
* Makefile : Same.
2005-10-10 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Tracker.h : Made some parameters const that can be.
* vrpn_Tracker.C : Same.
2005-10-04 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Connection.h : Making a protected method public to expose
it; it used to be exposed by calling the same method on
the vrpn_Synchronized_Connection class, which no longer
exists.
2005-10-04 Russell M. Taylor II <taylorr@cs.unc.edu>
* Makefile : Added target for 64-bit Intel-based SGI compilation.
2005-09-30 Russell M. Taylor II <taylorr@cs.unc.edu>
MAJOR VERSION NUMBER CHANGED TO 7.0 because the vrpn_ForceDevice
protocol values have changed. It is now possible to include trimeshes
that are in a tree structure, and move individual ones around, as
part of the GHOST build. The HDAPI build still builds, but doesn't
have trimeshes in it yet.
These changes were sent in by Tom De Weyer's group in Belgium after
several rounds of discussion and design.
* Makefile : Added vrpn_ForceDeviceServer.[hC}
* vrpn.dsp : Same.
* vrpndll.dsp : Same (plus added others needed).
* vrpn_Configure.h : Rearranged entries.
* vrpn_Connection.C : Upgraded version number.
* vrpn_DirectXFFJoystick.h : Now derived from ForceDeviceServer, and
includes stubbed member functions that needed to be defined.
* vrpn_DirectXFFJoystick.C : Same.
* vrpn_ForceDevice.h : Redone to enable multiple objects in a
hierarchy in the scene. The hierarchy handling stuff on
the server side is wrapped into vrpn_ForceDeviceServer.
* vrpn_ForceDevice.C : Same.
* vrpn_ForceDeviceServer.h : Implements the hierarchy-figuring
stuff on the server side. All servers should now derive
from this class.
* vrpn_ForceDeviceServer.C : Same.
* vrpn_HashST.h : Helper class for ForceDeviceServer.
2005-09-29 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn.dsp : Added the 5DT16 analog and button drivers.
2005-09-29 Russell M. Taylor II <taylorr@cs.unc.edu>
* Makefile : Adding 5DT16 driver along with button driver
to convert from its analog outputs to button
outputs.
* vrpn_5DT16.h : Same.
* vrpn_5DT16.C : Same.
2005-09-29 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn.dsp : Added the Microscribe.
2005-09-29 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_3DMicroscribe.C : Added driver from Tom de Weyer's group
in Belgium for the Microscribe.
* vrpn_3DMicroscribe.h : Same.
* vrpn_Configure.h : Same.
* Makefile : Same, but only works on Unix whereas the scribe
only works on Windows and Mac (need to modify things
to make it link correctly on these).
2005-09-29 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Tracker_Crossbow.h : Removing a function no longer needed.
* vrpn_Tracker_Crossbow.C : Same.
2005-09-28 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_3Space.C : Fixing up type-casts.
* vrpn_Connection.C : Removing typecasts that are not needed
* vrpn_Joylin.C : Fixing type cast that was a bug under the
C++ standard, and on some compilers.
* vrpn_Tracker_Fastrak.C : Fixing up typecasts.
2005-09-22 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn.dsw : Modified all applications to also depend on
VRPN library, in addition to "make_vrpn_build." This
is going to break things for those who want to build
DLLs, but not having it meant that the apps would not
re-link with the library when only library files were
changed. This was debugging hell.
2005-09-22 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_ForceDevice.C : Fixed a bug in the line-mode
constraint code. Involved remembering lots of
linear algebra. Eigenstuff that I always wondered
why I would use it when I had it in course. Also
modified both line and plane codes to normalize the
direction vectors they are passed in. This avoids
unexpected scaling of the forces.
2005-09-02 Kalpit Desai <kvdesai@cs.unc.edu>
* vrpn_Text.h: Modified the signature of send_message() method to expect 4th argument (time stamp) which may be supplied.
* vrpn_Text.C: Modified the definition of send_message() method to send the user specified timestamp when supplied.
2005-08-23 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_BaseClass.h : Whitespace change.
* vrpn_Connection.C : Fixed a bug where a zero-time select()
during an interrupt was not setting the stop time, so
would return with an inconsistent state. Also, whitespace
changes.
* vrpn_Shared.h : Whitspace changes.
2005-08-13 David Marshburn <marshbur@cs.unc.edu>
* vrpn.dsw: makes vrpn_Phantom project depend on vrpn project
2005-08-05 Kalpit Desai <kvdesai@cs.unc.edu>
* vrpn_Poser.h: Added register_change_handler routines and vrpn_POSERCB
template that provides a way to call back user-routines.
* vrpn_Poser.C: Modified handle_change_message routine of server to
pack the information in vrpn_POSERCB format and then callback
the registered user-routines.
2005-07-23 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn.dsw : Added a clock drift estimator project to the list
of available projects.
* vrpn_Connection.C : Modified the getservicename function so that
it doesn't seg fault if passed a NULL pointer.
2005-07-14 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Serial.C : Debugged and tested on a mac. Tested on
Linux box. Only tested with the serial mouse, so
more testing should be done before we're entirely
certain that the port worked.
2005-07-09 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Serial.C : Switched over to the termios-style commands
from the termio/ioctl() style. This lets things compile
on the Mac platform and should retain backwards compatibility
with the other Unix/Linux platforms. The code does indeed
compile on linux, sgi, and sparc. Not yet tested.
2005-07-07 Russell M. Taylor II <taylorr@cs.unc.edu>
* time_test.dsp : Added include directories on $(SYSTEMDRIVE)
and lib directories also on $(SYSTEMDRIVE) so that the
apps can build correctly with only edits in the
vrpn_Configure.h file if things are installed in standard
locations.
* vrpn.dsp : Same.
* vrpn_Configure.h : Same.
* vrpndll.dsp : Same.
2005-07-06 Russell M. Taylor II <taylorr@cs.unc.edu>
* Makefile : Removed vrpn_Clock.C and .h, which are
no longer needed.
2005-07-06 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn.dsp : Removed vrpn_Clock.C and .h files from those needed.
* vrpndll.dsp : Same.
* vrpn_BaseClass.C : Removed option to not count an object when
doing reference counting. This was only in there for the
synchronized connections, which are now gone.
* vrpn_BaseClass.h : Same.
* vrpn_Clock.C : Removed.
* vrpn_Clock.h : Removed.
* vrpn_Connection.C : Removed references to vrpn_Clock, and the
implementation of vrpn_Synchronized_Connection. This is
going to break every server ever compiled for VRPN, but the
fix is to change to using a vrpn_Connection wherever there
was a vrpn_Synchronized_Connection before. If you were
including the parameters for the clock frequency and
interval, remove them.
* vrpn_Connection.h : Same.
* vrpn_ForwarderController.C : Removed Synchronized.
* vrpn_Mutex.C : Same.
2005-07-06 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn.dsp : Adding vrpn_Mouse to Windows build.
* vrpndll.dsp : Same.
* vrpn_Mouse.C : Modified so that it will compile on Windows.
2005-07-06 Russell M. Taylor II <taylorr@cs.unc.edu>
* Makefile : Including vrpn_Mouse class in the server build.
* vrpn_Mouse.h : Linux GPM-based mouse driver submitted by
Mike Weiblen at 3DLabs.
* vrpn_Mouse.C : Same.
2005-07-06 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn.dsp : Adding Logitech 3DMouse into the Windows build.
* vrpndll.dsp : Same.
* vrpn_Tracker_3DMouse.C : Switching to C++ type casts and putting
in some more to prevent compile-time warnings on Windows.
2005-07-06 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Tracker_3DMouse.C : Driver for Logitech 3D Mouse
provided by Jinseok Seo from the VR Lab of
POSTECH in Korea.
* vrpn_Tracker_3DMouse.h : Same.
* Makefile : Added the 3D mouse into the build.
2005-07-06 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn.dsp : Adding Crossbow into the set of files built
into VRPN.
* vrpndll.dsp : Same.
* vrpn_Tracker_Crossbow.C : Changed warning pragmas to work
with VC6.0.
2005-07-06 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Tracker_Crossbow.h : Driver from Chris V. for a
Crossbow accelerometer and rate gyro server.
* vrpn_Tracker_Crossbow.C : Same.
2005-06-23 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Serial.C : Fixed type on GNUC define pointed out by
Chris V.
2005-06-07 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Imager.C : Added transcoding from float32
to uint8 to enable testing the receipt of
different image servers.
2005-05-24 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Connection.C : Adds patch for compile on Mac submitted
by Patrick Hartling.
2005-05-24 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Clock.h : Added "class" keyword so it would compile on
Linux.
2005-05-24 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_BaseClass.C : Changes from Jeff Feasel to fix a
bug I introduced when I put the reference-counting
stuff in without his earlier patch. This makes the
Clock object behave differently. It also hides the
clock objects away so that users don't create them
and cause reference-count problems. Also adds
comments describing why we need both unique and
non-unique base classes.
* vrpn_BaseClass.h : Same.
* vrpn_Clock.C : Same.
* vrpn_Clock.h : Same.
* vrpn_Connection.C : Same. Also bumps minor version number.
* vrpn_Connection.h : Same.
* vrpn_Forwarder.C : Adds reference-counting to this class, which
is not derived from BaseClass.
* vrpn_Forwarder.h : Same.
* vrpn_ForwarderController.C : Same.
* vrpn_ForwarderController.h : Same.
* vrpn_Mutex.C : Same.
* vrpn_RedundantTransmission.C : Same.
* vrpn_SharedObject.C : Same.
2005-05-19 Russell M. Taylor II <taylorr@cs.unc.edu>
* Makefile : Removing HMD directory stuff that is no
longer useful, and might cause permission
problems on builds at UNC.
2005-04-07 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_ForceDevice.h : Replaced the callback list code
with new code based on the template. This file
was missed in the mass conversion 12/14/2004.
* vrpn_ForceDevice.C : Same.
2005-04-05 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Configure.h : Moved the location to look for DirectX
SDK to where the Feb 2005 installer puts it. This
version works with release but not debug code. How
Nice of them :-)
* vrpn_NationalInstruments.h : Removed a redundant place to
store the number of output channels. There is already
a member variable for this is the AnalogOutput class;
having another one here just causes fragility.
* vrpn_NationalInstruments.C : Same.
2005-04-05 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_NationalInstruments.C : Marked one particular
error return code as not a problem for AO_Configure.
This makes the new NI module work like the old
NI_Output. It is almost certainly something to
fix for real later.
* vrpn.dsw : Added dependencies to make the server
rebuild when library does.
2005-02-25 Russell M. Taylor II <taylorr@cs.unc.edu>
* Makefile : Removed -LANG:std from compile, no streams
used in the code anymore.
2005-02-02 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Analog_Output.C : Whitespace change.
* vrpn_Analoh_Output.h : Same.
* vrpn_Poser_Analog.C : By default, a poser will not send
updates until it gets a request from a client. Also,
it sends them only when they arrive, not every
time through mainloop().
* vrpn_Poser_Analog.h : Same.
* vrpn_nikon_controls.h : Guard definitions to enable
multiple inclusion.
* vrpn_NationalInstruments.C : Replacement for the
vrpn_Analog_Output_NI.C file that makes a more-
general read/write server.
* vrpn_NationalInstruments.h : Replacement for the
vrpn_Analog_Output_NI.h file that makes a more-
general read/write server.
* vrpn.dsp : Modified to use new files.
* vrpndll.dsp : Modified to use new files.
* Makefile : Changed NI files to NationalInstruments.
2005-02-01 Russell M. Taylor II <taylorr@cs.unc.edu>
* Makefile : Added John Stone's definitions to make
things compile under 64-bit Linux.
2005-01-26 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_BaseClass.C : Removing last vestiges of STREAMS from VRPN.
* vrpn_BaseClass.h : Same.
* vrpn_Clock.C : Same.
* vrpn_Configure.h : Same.
* vrpn_Shared.h : Same.
2005-01-11 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Imager.C : Removed all references to the ill-planned
RGB and BGR formats.
* vrpn_Imager.h : Same.
2004-12-14 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_3Space.C : Turned on a higher level of warnings in
Windows and then went through and fixed all of the
warnings, except a few on FunctionGenerator (which
has an uncompleted function) and on Sound (which has
a bunch of uncompleted functions). Fixed a few bugs
that turned up along the way. Ripped out every trace
of iostream (old or new type) from the base library.
Also removed VRPN_NO_STREAMS, which was obviated by
this.
* vrpn_ADBox.C : Same.
* vrpn_Analog.C : Same.
* vrpn_Analog.h : Same.
* vrpn_Analog_5dt.h : Same.
* vrpn_Analog_Output_NI.C : Same.
* vrpn_Analog_Output_NI.h : Same.
* vrpn_Analog_Radamec_SPI.C : Same.
* vrpn_BaseClass.C : Same.
* vrpn_BaseClass.h : Same.
* vrpn_Button.C : Same.
* vrpn_CerealBox.C : Same.
* vrpn_Configure.h : Same.
* vrpn_Connection.C : Same.
* vrpn_DirectXFFJoystick.C : Same.
* vrpn_Dyna.C : Same.
* vrpn_FileConnection.C : Same.
* vrpn_Flock.C : Same.
* vrpn_FunctionGenerator.C : Same.
* vrpn_FunctionGenerator.h : Same.
* vrpn_Imager.C : Same.
* vrpn_Imager.h : Same.
* vrpn_ImmersionBox.C : Same.
* vrpn_ImmersionBox.h : Same.
* vrpn_Joywin32.C : Same.
* vrpn_Joywin32.h : Same.
* vrpn_Mutex.C : Same.
* vrpn_Poser_Analog.h : Same.
* vrpn_Poser_Tek4662.C : Same.
* vrpn_Serial.C : Same.
* vrpn_Shared.C : Same.
* vrpn_Shared.h : Same.
* vrpn_SharedObject.C : Same.
* vrpn_Sound.C : Same.
* vrpn_Spaceball.C : Same.
* vrpn_Tng3.C : Same.
* vrpn_Tracker_DTrack.C : Same.
* vrpn_Tracker_Fastrak.C : Same.
* vrpn_Tracker_Liberty.C : Same.
* vrpn_UNC_Joystick.C : Same.
* vrpn_VPJoystick.C : Same.
* vrpn_Wanda.C : Same.
* vrpn_Zaber.C : Same.
* vrpn_nikon_controls.C : Same.
* vrpn_raw_sgibox.C : Same.
2004-12-14 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_BaseClass.h : Guarding the #pragma that turns off
the warning so that it only happens on Windows,
so that the SGI compiler doesn't complain about
every file.
2004-12-14 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_BaseClass.h : Added a template class to deal with
callback list handling. This does not use STL, to
avoid the problems with having incompatible STL
versions on some systems. It generated a warning
message when using DLLs that seemed to make no sense,
and the test code still works in DLL mode (tested),
so I turned the warning off. This change removes
a lot of duplicate code from derived classes, and
ensures proper clean-up of lists at destruction.
* vrpn_Analog.C : Modified to use templated callbacks.
* vrpn_Analog.h : Same.
* vrpn_Button.C : Same.
* vrpn_Button.h : Same.
* vrpn_Clock.C : Same.
* vrpn_Clock.h : Same.
* vrpn_Connection.C : Same (modified Clock callback).
* vrpn_Dial.C : Same.
* vrpn_Dial.h : Same.
* vrpn_Imager.C : Same.
* vrpn_Imager.h : Same.
* vrpn_Router.C : Same.
* vrpn_Router.h : Same.
* vrpn_Text.C : Same.
* vrpn_Text.h : Same.
* vrpn_Tracker.C : Same.
* vrpn_Tracker.h : Same.
* vrpndll.dsp : Must have tweaked a compiler flag.
2004-12-08 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Connection.C : Changes from Patrick Hartling to make
VRPN compile under FreeBSD.
* vrpn_Types.h : Same.
2004-12-07 Russell M. Taylor II <taylorr@cs.unc.edu>
* Makefile : Switched out TempImager for Imager
* vrpn.dsw : Changed to test_imager from test_tempimager
* vrpn_Imager.h : Added #include needed on Unix
2004-12-07 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn.dsp Added vrpn_Imager.[hC] and removed
vrpn_TempImager.[hC].
* vrpndll.dsp Same.
* vrpn.dsw Added vrpn_testimager_server.dsp
* vrpn_Imager.C Final design, partial implementation of
VRPN Imager class. Pulls the image pose out as a
separate class and adds throttle capability to the
client code (implemented in server by dropping frames
rather than sending them). Adds count of frames
dropped to alert client application. Adds 12-in-16
data type. Transcoding between types not yet
implemented. Client-side selection of data types to
send not yet implemented. RGB and BGR packed formats
not yet implemented.
* vrpn_Imager.h Same.
2004-11-10 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Connection.C : Whitespace changes.
2004-11-03 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Dyna.C : Added changes from Uni-Hamburg to also work with
the SeeReal D4D stereo Display, which is an older version.
This still works with the newer DynaSight at UNC.
* vrpn_Tracker_Liberty.C : Also works with the Patriot, which
sends a slightly different record format. This version
comes from Uni-Hamburg. Roland Schroeder-Kroll sent
these fixes in from Steffi Beckhaus' group there.
2004-11-03 Russell M. Taylor II <taylorr@cs.unc.edu>
* Happy Birthday to me!
* Makefile : Added John Stone's additions to make it compile on
64-bit Solaris
2004-11-02 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Analog.C : Fixed a bug where a specified time value never
got stored into the timestamp before sending.
2004-10-20 David Marshburn <marshbur@cs.unc.edu>
* vrpn_TempImager.h: added VRPN_CALLBACK to the friend function
declaration of java_vrpn_handle_region_change in
vrpn_TempImager_Region
2004-10-05 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Types.h : Added a flag to tell the file not to throw an error
when compiled with a C compiler rather than a C++ compiler.
Useful to programs that want to hide things behind a C
interface.
2004-10-01 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_DirectXFFJoystick.C : Fixed a crash bug when you didn't have
a joystick open.
2004-09-16 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Button.C : Adding a couple more VRPN_CALLBACKs that I thought
we didn't need but we do.
* vrpn_raw_sgibox.C : same.
* vrpn_Configure.h : Changing back to the C: drive for normal users
(I've got everything installed on D:).
2004-09-16 Russell M. Taylor II <taylorr@cs.unc.edu>
Adding Chris VanderKnyff's changes that enable DLL linkage
for applications. Heading towards enabling C# and other language
support.
* ChangeLog : Fixing date on my earlier message, reordering.
* Makefile : Adding new source-code files.
* make_vrpn_libs_build.dsp : New project file to make
dependency on both VRPN and VRPNDLL.
* time_test.dsp : Making it depend on the project that causes
both VRPN and VRPNDLL projects to be built, rather
than on VRPN. If you try to make it depend on both
VRPN and VRPNDLL, you get linking trouble.
* vrpn.dsp : Same. Also, defining things needed to make DLL
linkage work correctly.
* vrpn.dsw : Adding make_vrpn_libs.build project. Adding
dependencies.
* vrpn_Configure.h : Added an entry for compiling with DLL linkage.
Added definitions needed to make this work for the three
cases (library DLL, library static, application).
* vrpn_Connection.C : Removed iostream. Chris made error output
go to stderr rather than stdout.
* vrpn_Router.C : Moved external functions into static member
functions to avoid cluttering the name space.
* vrpn_Types.h : Changed to #error from ad-hoc error generator.
* vrpn_3Space.h : Making all classes defined with VRPN_API.
Making all callbacks use VRPN_CALLBACK. Making all
external functions and structures VRPN_API.
* vrpn_ADBox.h : Same.
* vrpn_Analog.h : Same.
* vrpn_Analog_5dt.h : Same.
* vrpn_Analog_Output.h : Same.
* vrpn_Analog_Output_NI.h : Same.
* vrpn_Radamec_SPI.h : Same.
* vrpn_BaseClass.h : Same.
* vrpn_Button.h : Same.
* vrpn_CerealBox.h : Same.
* vrpn_Clock.h : Same.
* vrpn_Connection.h : Same.
* vrpn_Dial.h : Same.
* vrpn_DirectXFFJoystick.h : Same.
* vrpn_Dyna.h : Same.
* vrpn_FileConnection.h : Same.
* vrpn_FileController.h : Same.
* vrpn_Flock.h : Same.
* vrpn_Flock_Parallel.h : Same.
* vrpn_ForeceDevice.h : Same.
* vrpn_ForwarderController.h : Same.
* vrpn_FunctionGenerator.h : Same.
* vrpn_GlobalHapticsOrb.h : Same.
* vrpn_ImmersionBox.h : Same.
* vrpn_JoyFly.h : Same.
* vrpn_Joylin.h : Same.
* vrpn_Joywin32.h : Same.
* vrpn_LamportClock.h : Same.
* vrpn_Log.h : Same.
* vrpn_Magellan.h : Same.
* vrpn_Mutex.h : Same.
* vrpn_Nidaq.h : Same.
* vrpn_Poser.h : Same.
* vrpn_Poser_Analog.h : Same.
* vrpn_Poser_Tek4662.h : Same.
* vrpn_RedundantTransmission.h : Same.
* vrpn_Router.h : Same.
* vrpn_Serial.h : Same.
* vrpn_Shared.h : Same.
* vrpn_SharedObject.h : Same.
* vrpn_Sound.h : Same.
* vrpn_Spaceball.h : Same.
* vrpn_TemImager.h : Same.
* vrpn_Text.h : Same.
* vrpn_Tng3.h : Same.
* vrpn_Tracker.h : Same.
* vrpn_Tracker_AnalogFly.h : Same.
* vrpn_Tracker_ButtonFly.h : Same.
* vrpn_Tracker_DTrack.h : Same.
* vrpn_Tracker_Fastrak.h : Same.
* vrpn_Tracker_Liberty.h : Same.
* vrpn_Tracker_isense.h : Same.
* vrpn_TypeDispatcher.h : Same.
* vrpn_UNC_Joystick.h : Same.
* vrpn_VPJoystick.h : Same.
* vrpn_Wanda.h : Same.
* vrpn_Zaber.h : Same.
* vrpn_nikon_controls.h : Same.
* vrpn_raw_sgibox.h : Same.
* vrpn_sgibox.h : Same.
2004-09-15 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Tracker.h : Bumped the maximum number of sensors per tracker
from 20 to 100.
* vrpn_BaseClass.C : Making the d_servicename and d_connection
code only run once for a multiple-inheritance tree.
Moved the deletion code into the Unique base class
destructor to avoid crashing due to accessing already-
deleted connection object.
* vrpn_Connection.C : Prettifying.
* time_test.dsp : Switching back to DLL-based linkage
* vrpn.dsp : Same.
2004-09-01 David Marshburn <marshbur@cs.unc.edu>
* vrpn_FunctionGenerator.[h,C]: first commit of a new device
type, and function generator
* vrpn.dsp: includes function generator files
2004-08-31 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Serial.C : Added John Stone's fix to make it compile on macs.
2004-08-31 Russell M. Taylor II <taylorr@cs.unc.edu>
* Makefile : Adding build for vrpn_Poser_Tek4662 in server library.
* time_test.dsp : Changing code generation to use multithreaded
non-DLL for both debug and release. This turns out to have
always been the proper setting to use. Unfortunately, all
apps have to be rebuild with new settings, and all libraries
have to use the same setting.
* vrpn.dsp : Same.
* vrpn_Analog.C : Whitespace changes.
* vrpn_Poser.C : Same.
* vrpn_Poser.h : Same.
* vrpn_CerealBox.C : Comment correction.
* vrpn_Connection.C : Setting values to NULL to avoid multiple
deletion attempts on clock object at shutdown.
* vrpn_Serial.C : Declared const parameter when appropriate.
* vrpn_Serial.h : Same.
* vrpn_Nikon_Controls.C : Error message correction.
* vrpn_Nikon_Controls.h : Uppercased "com1" for Windows.
2004-08-06 Russell M. Taylor II <taylorr@cs.unc.edu>
Adding changes made by Jeff Feasel to include reference counting
in the vrpn_Connection object so that they would be deleted when
all objects using them are deleted (and when all objects opening
them with vrpn_get_connection_by_name() remove their references.
* vrpn_BaseClass.C : Adds reference-counting for vrpn_Connections.
* vrpn_Clock.C : Same.
* vrpn_Connection.C : Same.
* vrpn_Connection.h : Same.
* vrpn_Mutex.h : Same. Also fixed a bug whereby the number of
allocated connections was not being properly incremented.
2004-08-05 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn.dsp : Adds possibility that NI files are on D:
* vrpn_Button.C : Moving global constants not starting with vrpn_
from header file to source file.
* vrpn_Button.h : Same.
2004-08-05 Russell M. Taylor II <taylorr@cs.unc.edu>
Changes submitted by Kurt Achatz at A.R.T.
* Makefile : Adding vrpn_Tracker_DTrack.[Ch] to server.
* vrpn_Analog.C : Fixing time-comparison bug.
* vrpn_Configure.h : No longer need to configure the
DTrack driver -- all needed files are built in.
* vrpn_Tracker_DTrack.C : Updated to not switch target ID
numbering. Now supports up to for A.R.T. Flysticks.
* vrpn_Tracker.DTrack.h : Same.
2004-07-27 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_FileConnection.C : Made all of the deletes for
arrays of characters use the [] version of
delete on (char *). Very scary that it didn't
used to do this.
2004-07-27 Russell M. Taylor II <taylorr@cs.unc.edu>
* Makefile : Adding in recent files. Deleting commented-out
rules.
* vrpn_Poser.C : removing unused variables.
* vrpn_Poser.h : Adding newline at end of file.
2004-07-22 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn.dsw : Added project file for forcedevice test client.
* vrpn_Configure.h : Added entry for using the HDAPI library from
SensAble Technologies in place of the older GHOST library.
2004-07-07 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Connection.C : Added port number to printed comment.
2004-06-11 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Configure.h : Turns off streams when compiling for the
Phantom server.
* vrpn_TempImager.C : Adds functions to send using pointers to
the data to be sent, rather than pointer to the whole
image. Added functions to set the resolution and range.
* vrpn_TempImager.h : Same. Increased number of channels.
2004-05-23 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Analog_Output_NI.C : Removed debug print statements.
* vrpn_Poser_Analog.C : Changed the parameters so that it can
use a different analog output device for each channel.
This is going to break code that uses the Posers, but it
was needed to split it up for the case where some channels
were driven by one device and others by a different
device. It now behaves more like an AnalogFly in terms
of parameters.
* vrpn_Poser_Analog.h : Same.
2004-05-22 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Analog_Output_NI.h : Analog output that uses National
Instruments board.
* vrpn_Analog_Output_NH.C : Same.
* vrpn.dsp : Added NI-DAQ to library path, files to project.
Enable/disable using vrpn_Configure.h.
* vrpn.dsw : Added tracker_to_poser project (client_src).
* vrpn_Configure.h : Added entry for National Instruments
board. Also loads libraries if NI is configured.
* vrpn_Poser.C : Made several things const that should have
been.
* vrpn_Poser.h : Same.
* vrpn_Poser_Analog.C : Added comment.
* vrpn_TempImager.C : Checks to make sure we have sent the
description before sending any regions. Removed an
unused parameter.
* vrpn_TempImager.h : Added comments for improvements. Added
some functions. Still a work in progress.
2004-05-05 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_TempImager.C : Implemented another of the decode functions.
2004-04-22 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_ButtonC : Modified the reset command for the Pinchglove
so that it works more reliably (fixed timeout bug
and reworked logic). Tested by offsite user who
had problems with the original version.
* vrpn_ForceDevice.C : Making it compile under Cygwin.
* vrpn_Serial.C : Making it compile undre Cygwin.
* vrpn_Tracker.h : Describing the format of the values to be returned.
* vrpn_Types.h : Making it compile under Cygwin.
2004-04-15 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Button.h : Returns the port argument for the parallel
button device to an int to make error checking work.
Points to the web page where the Python button is
described.
2004-04-13 David Marshburn <marshbur@cs.unc.edu>
* vrpn_FileConnection.h: adds new data members to track earliest
and latest user-message times and functions for finding these times.
Adds a function, jump_to_filetime, that jumps the current time in
a vrpn stream to a specified absolute time. Adds an internal
class, vrpn_FileBookmark, used when jumping around in a stream.
* vrpn_FileConnection.C: this should no longer cause repeated
or missed message when (internally) jumping around in streams.
Also, elapsed time is computed based on the earliest-timed user
message. As a result, functions that query elapsed time or
stream length will cause vrpn to examine the entire stream once.
2004-04-08 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Shared.C : Added check for old/new streams.
* vrpn_BaseClass.C : Same.
2004-04-08 Russell M. Taylor II <taylorr@cs.unc.edu>
* Makefile : Adding flag to SGI compile in the hope that it would
fix things and let us use the new streams libraries. It
got us part of the way there on my system.
* vrpn_BaseClass.C : Added Patrick Hartling's changes to make VRPN
compile with Visual Studio.NET, which required switching to
new streams, which required retrofitting SGIs to use old
streams (using yet another define in vrpn_Configure.h).
* vrpn_BaseClass.h : Same.
* vrpn_Clock.C : Same.
* vrpn_Configure.h : Same.
* vrpn_Connection.C : Same.
* vrpn_ImmersionBox. : Same.
* vrpn_Shared.C : Same.
* vrpn_TempImager.h : Same.
* vrpn_Tng3.C : Same.
* vrpn_Tracker_AnalogFly : Adding Patrick Hartlings changes to make
it compile with Visual Studio.NET, in this case a type cast
to let the compiler know which function to call.
* vrpn_Tracker_ButtonFly : Same.
2004-04-07 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Shared.C : Modified all of VRPN to use calls to a new
function vrpn_gettimeofday() rather than the standard
gettimeofday() to avoid exporting gettimeofday(). On
all but Windows with WINSOCK, this is defined back to
gettimeofday(). On Windows with WINSOCK, it is the
function that implements gettimeofday(). By editing
a flag in vrpn_Configure.h, VRPN will still export
gettimeofday; otherwise, it no longer does on any
operating system.
* vrpn_Shared.h : Same.
* vrpn_Configure.h : Modified to include an optional parameter
that will export vrpn_gettimeofday() as gettimeofday() and also
'struct timezone' when it is set, but not otherwise.
* time_test.cpp : Using vrpn_gettimeofday() not gettimeofday()
* vrpn_3Space.C : Same.
* vrpn_ADBox.C : Same.
* vrpn_Analog.C : Same.
* vrpn_Analog_3dt.C : Same.
* vrpn_Analog_Output.C : Same.
* vrpn_Analog_Radamec_SPI.C : Same.
* vrpn_BaseClass.C : Same.
* vrpn_Button.C : Same.
* vrpn_CerealBox.C : Same.
* vrpn_Clock.C : Same.
* vrpn_Connection.C : Same.
* vrpn_Dial.C : Same.
* vrpn_DirectXFFJoystick.C : Same.
* vrpn_Dyna. : Same.
* vrpn_FileController.C : Same.
* vrpn_Flock.C : Same.
* vrpn_Flock_Parallel.C : Same.
* vrpn_ForceDevice.C : Same.
* vrpn_ForewardController.C : Same.
* vrpn_GlobalHapticsOrb.C : Same.
* vrpn_ImmersionBox.C : Same.
* vrpn_Joylin.C : Same.
* vrpn_Joywin32.C : Same.
* vrpn_Magellan.C : Same.
* vrpn_Mutex.C : Same.
* vrpn_Nidaq.C : Same.
* vrpn_Nidaq.h : Same.
* vrpn_Poser.C : Same.
* vrpn_Poser_Analog.C : Same.
* vrpn_RedundantTransmission.C : Sam.e
* vrpn_Router.C : Same.
* vrpn_Serial.C : Same.
* vrpn_SharedObject.C : Same.
* vrpn_Sound.C : Same.
* vrpn_Spaceball.C : Same.
* vrpn_TempImager.C : Same.
* vrpn_Text.C : Same.
* vrpn_Tng.C : Same.
* vrpn_Tracker.C : Same.
* vrpn_Tracker_AnalogFly.C : Same.
* vrpn_Tracker_ButtonFly.C : Same.
* vrpn_Tracker_DTrack.C : Same.
* vrpn_Tracker_Fastrak.C : Same.
* vrpn_Tracker_Liberty.C : Same.
* vrpn_Tracker_isense.C : Same.
* vrpn_UNC_Joystick.C : Same.
* vrpn_Wanda.C : Same.
* vrpn_Zaber.C : Same.
* vrpn_nikon_controls.C : Same.
* vrpn_FileConnection.C : Same. Also, modified some calls to
advance_currentLogEntry() so that they were function
calls so that the code would compile. Not sure how
they compiled before...
2004-03-21 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_CerealBox.C : Fixed a bug that encoded the negative tick
incorrectly.
* vrpn_Joywin32.h : Added credits.
* vrpn_Tracker.C : Closes the serial device when the tracker's
destructor is called.
* vrpn_Tracker.h : Same.
2004-02-16 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Connection.C : Closes file handle that is no longer needed.
* vrpn_RedundantTransmission.C : Same.
* vrpn_FileConnection.h : Added three new global flags that
control the state of buffering when a FileConnection
reads a log file. PRELOAD controls whether it grabs
the whole file into memory when it starts. ACCUMULATE
controls whether it keep the file in memory as it reads
it. SKIP_TO_USER_MESSAGES tells whether it should jump
over all initial system messages in a file when it is
loaded or rewound.
* vrpn_FileConnection.C : Major changes throughout to implement
the flexibility described above. Also lots of code
factoring and consolidation so that there is only one
function to do each particular operation that is called
by all other functions requiring the operation. Tested
with Nano, Video_spot_tracker, and vrpnLogToMatlab in
several different states of operation.
2004-02-12 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Tracker_isense.C : Added change by David Nahon to make
the units correct (meters rather than centimeters).
2004-02-12 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn.dsw : Removed separate library for DTrack.
* vrpn_Tracker.DTrack.C : Includes the necessary .c file from
dtracklib to avoid having to load a library.
2004-02-12 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn.dsp : Told the release version where to find Dtrack.h.
* vrpn_Tracker_DTrack.C : Modified the order of includes so that
it can compile properly when VRPN_USE_DTRACK is defined.
Initialized some member variables correctly.
* vrpn_Tracker.DTrack.h : Same.
2004-02-12 Russell M. Taylor II <taylorr@cs.unc.edu>
Adding changes from David Nahon at Virtools.
* vrpn.dsp : Added DTrack files and includes and project.
* vrpn.dsw : Same.
* vrpn_Configure.h : Added configuration setting to enable
building the DTrack code from Advanced Realtime
Tracking CmbH.
* vrpn_Tracker_isense.C : Modified this to return the orientation
with the axes permuted in a way that makes it match
what other trackers report.
2004-02-04 David Marshburn <marshbur@cs.unc.edu>
* vrpn_Connection.C (handle_sender_message): auto-registers
unknown senders.
2004-01-28 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Tracker.C : Added initialization of the watchdog timer
in the constructor to keep it from accidentally taking
over and causing infinite-reset problems on all but
the Liberty.
2003-12-17 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Flock.h : Added an optional flag to tell whether to invert
the Quaternion orientation report before sending it back.
This has been done always in the past, but it was probably
a hack to make the sensors work in the wrong hemisphere.
* vrpn_Flock.C : Same.
* vrpn_Flock_Parallel.h : Same.
* vrpn_Flock_Parallel.C : Same.
2003-12-11 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Analog_5dt.h : Added optional parameter to make it try
10 bytes per message rather than 9. This is because one
group has one that does this.
* vrpn_Analog_5dt.C : Same. Also fixed some bugs reported by
Sebastien Maraux.
2003-12-11 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Serial.h : Added calls to raise and lower RTS line.
Should work on Windows. Not sure it will work on Linux/Unix.
Not tested on any.
* vrpn_Serial.C : Same.
* vrpn_Flock.C : Changed to use the new RTS raise/lower calls
in vrpn_Serial.C to reset the tracker. This should enable
Flocks to work even with serial connectors that have all
the wires connected.
2003-12-10 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Clock.C : Plugging memory leaks.
* vrpn_Connection.C : Plugging memory leaks.
2003-12-10 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Tracker_Liberty.h : Adds driver submitted by Daniel Myall
from Westco for the Polhemus Liberty tracker.
* vrpn_Tracker_Liberty.C : Same.
* vrpn_Tracker.h : Same.
* vrpn_Tracker.C : Same.
* vrpn.dsp : Same.
* Makefile : Same.
2003-11-22 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Analog.C : report() : Added parameter to tell the timestamp
that should be used by the Analog for the report. Both
for vrpn_Analog and vrpn_Analog_Server.
: report_changes() : Same.
* vrpn_Analog.h : Same. Also added default time parameter. Also
re-ordered where include files happen.
2003-11-17 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Tracker.h : Modified so that you can set the class of
service in the vrpn_Tracker_Server.
* vrpn_Tracker.C : Same.
2003-11-14 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Configure.h : I messed up the commented-out config for UNC
with the last commit. Fixed here.
2003-11-14 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Connection.C : Compiler warning on SGI caught this! There
was an = rather than == where we were checking for the
existence of a local type. No harm done, but this avoids
extra checking.
2003-11-14 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Connection.C : Exposing constructor with stern warning
against using it.
2003-11-14 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Flock.C : Added changes so that the use o the extended-range
transmitter is optional, rather than required as it was
before.
* vrpn_Flock.h : Same.
2003-11-14 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Tracker_isense.C : Added changed by David Nahon that lets
the user specify whether to do a boresight reset at startup.
Also changes the sensor numbers to be zero-indexed like all
other VRPN trackers. Also changes units to meters and
radians to match other VRPN trackers.
* vrpn_Tracker_isense.h : Same.
2003-11-05 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Configure.h : Changes the default port number one more time,
to the one given to us by the Internet Address Naming
Authority.
2003-10-31 David Marshburn <marshbur@cs.unc.edu>
* vrpn_Connection.h (vrpn_Endpoint): new methods setConnection and
getConnection, and a new data member d_parent of type vrpn_Connection*.
* vrpn_Connection.C (vrpn_Endpoint::handle_type_message): message
type auto-registration. If the type from the remote side is unknown,
register the type locally. This enables generic stream examiners
and editors.
(vrpn_Connection::connect_to_client): call vrpn_Endpoint::
setConnection after creating an endpoint.
(vrpn_Connection::vrpn_Connection): same
(vrpn_Connection::server_check_for_incoming_connections): same
2003-10-17 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Tracker.C : Fixed a bug that was added in the code that
unregisters handlers in the destructor. It needed to pass
another parameter, which it does here, to work in the
general case. This bug caused nano to hang at exit,
repeatedly tryin to unregister the same (wrong) handler.
2003-09-26 Matt Harvey <m.j.harvey@ucl.ac.uk>
* Makefile : Added VPJoystick driver.
* vrpn.dsp : Same.
* vrpn_VPJoystick.h : Driver for a commercial joystick.
* vrpn_VPJoystick.C : Same.
* vrpn_raw_sgibox.C : Modified to remove #defines from the header
file that didn't start with vrpn_
* vrpn_raw_sgibox.h : Same.
2003-09-26 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Connection.h : Rearranged order of functions so that
it would compile on HPUX.
* vrpn_ForceDevice.C : Made it compile on HPUX.
* vrpn_ForceDevice.h : Rationalized const vs. non-const params.
* vrpn_Shared.h : Moved hack to make it compile on HPUX.
2003-09-26 Russell M. Taylor II <taylorr@cs.unc.edu>
* time_test.cpp : Compiles without warnings (commented out
unused variables).
* time_test.dsp : Making it build on Release setting.
* vrpn_ForceDevice : Changed types to prevent compiler warnings.
2003-09-26 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Tracker.C : Cleans up memory in the destructor to
prevent it leaking when remote tracker objects
are created and destroyed.
2003-09-26 Sebastien MARAUX <maraux@ondim.fr>
* vrpn_ForceDevice.C : Added custom effect to ForceDevice,
in particular a buzzing effect whose amplitude
and frequency can be set.
* vrpn_ForceDevice.h : Same.
* vrpn_Serial.C : Change to make it compile on SGI.
2003-09-17 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Tracker_isense.h : Fixing things that broke the build.
Bad Russ. No Cookie!
* vrpn_Tracker_isense.C : Same. Still no cookie.
2003-09-16 Blair MacIntyre <blair@cc.gatech.edu>
* vrpn_Tracker_isense.h : Added code to add Wands and other
devices to the tracker like the Fastrak version of
the Intersense driver could.
* vrpn_Tracker_isense.C : Same.
2003-09-02 Blair MacIntyre <blair@cc.gatech.edu>
* Makefile : Makes it work on MacOSX with Intersense.
* vrpn_ADBox.C : Compiles on Mac.
* vrpn_Serial.C : Compiles on Mac.
* vrpn_Tracker_isense.C : Calls required function in constructor.
* vrpn_Tracker_isense.h : Works on Mac.
2003-08-26 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn.dsp : Includes the new files for Joywin32.
2003-08-26 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Serial.C : Added include needed on Linux
* vrpn_Joywin32.C : Code from Sebastien Maraux to read
from joysticks without going through DirectX.
* vrpn_Joywin32.h : Same.
2003-08-07 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Shared.C : Removed #ifdef'd out code.
2003-08-07 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Shared.C : Fixed the code that handles high-resolution
Windows timing. This version always has time moving
forwards.
* time_test.cpp : Modified to test the monotonicity of time.
* time_test.dsp : Same.
* vrpn.dsw : Same.
2003-08-04 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_DirectXFFJoystick.C : Made not crash when it couldn't
open a joystick.
2003-07-31 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Connection.C : Prints a more useful error message when
the bind() function call fails.
2003-07-24 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Configure.h : Added configurable default port, no longer
set to 4500 (which is being used by VPN and Microsoft).
* vrpn_Connection.h : Same.
* vrpn_Connection.C : Uses non-interruptable version of select,
which is more general for apps that have interrupts.
* vrpn_Serial.C : Switches to interrupt-savvy version of read.
2003-07-24 Matt McCallus <mccallus@cs.unc.edu>
* vrpn_Sound.C : Added a "look at/look up" call for setting
orientation, rather than quaternions. Later will
either remove quaternion one or (better) reimplement
in terms of at/up (or vice-versa).
* vrpn_Sound.h : Same.
2003-07-21 Sascha Scholz <sascha.scholz@imk.fraunhofer.de>
* Makefile : Removed un-needed include directories that caused
problems with non-standard Linux compiler installation.
2003-07-15 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Button.C : Turns on a second bit to work with the HiBall.
This is a fix from Ben Elgin.
2003-07-15 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn.dsp : Added support for compiling ADBox/CubicMouse driver.
* vrpn_ADBox.C : Removed definitions that exclude Windows.
2003-07-07 Sascha Scholz <sascha.scholz@imk.fraunhofer.de>
* Makefile : added ADBox/CubicMouse driver
* vrpn.C : Same.
* vrpn_ADBox.C : Same.
* vrpn_ADBox.h : Same.
2003-06-20 David Marshburn <marshbur@cs.unc.edu>
* vrpn_Configure.h: adds a (commented-out) option to use Ghost 3.1
2003-06-20 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Configure.h : Removed syntax error that kept it from compiling.
2003-06-20 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn.dsp : Changes to include Intersense files in ../isense.
* vrpn_Configure.h : Describes how to link with InterSense library.
* vrpn_Tracker_isense.C : Updated to newer version of InterSense
library. Now works with USB trackers.
2003-05-30 David Marshburn <marshbur@cs.unc.edu>
* vrpn_Configure.h: change the default path for the Ghost library
to point to version 4.0.
2003-05-21 David Marshburn <marshbur@cs.unc.edu>
* vrpn_Connection.C:
(vrpn_Endpoint::setLogNames): set the in or out log-file name only
if each is non-NULL
(vrpn_Connection::handle_log_message): correctly handle the case in
which only one log file has been requested (in or out). previously
assumed both would be requested.
2003-05-05 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_TempImager.C : Fixes bug by which a new imager client would
not get the region description message, causing it to never
get region callbacks.
2003-05-01 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Configure.h : Added configuration entry for Intersense driver.
* vrpn_Tracker_isense.C : Made it include the Intersense-supplied
C file that interacts with the DLL code. Note that this
does not compile with the currently-supplied SDK from
InterSense. I don't have any trackers to test it on if I
mess with it, so decided to leave it alone.
2003-04-29 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_raw_sgibox.C : Fixed bug on analog code that read from the
dials, where the 16-bit integer was not read in the correct
order and not sign-extended. Added Dial interface, so that
the dial box reports both analog and dial values.
* vrpn_raw_sgibox.h : Same.
2003-04-24 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn.dsw : Removed phan_server project. Added vrpn_phantom.lib
dependency to the vrpn_server project.
* vrpn_Configure.h : Added configuration for using Phantom.
2003-04-01 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Configure.h : Added definitions to control which version of
the system clock is used in Windows.
* vrpn_Shared.C : Added Haris' code to use the system performance
clock, guarded by VRPN_WINDOWS_CLOCK_V2. Tested using
the Analogfly test program.
* vrpn_Tracker_AnalogFly.C : Comment change.
2003-01-21 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Configure.h : Put back the uncommented #pragma for library loads
and added comments describing how to change them in the
future.
* vrpn_DirectXCCJoystick.C : Added casts to get rid of compiler
warnings, white space changes, comments.
* vrpn_Shared.h : Uncommented definition in Windows CE compile.
2003-01-15 Alexandra Bokinsky <bokinsky@cs.unc.edu>
* vrpn_Configure.h : Commented out DirectX library load #pragmas.
* vrpn.dsw : Added force-feedback joystick server.
* vrpn_Shared.h : Commented out definition for Windows CE compile.
* vrpn_DirectXFFJoystick.C : Changed startup parameters for force and
made the force command average the last three values before
sending them to the joystick.
2003-01-12 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_GlobalHapticsOrb.C : Server for the Global Haptics GeoOrb device.
* vrpn_GlobalHapticsOrb.h : Same.
* vrpn_Tracker_ButtonFly.C : Server for a device that lets you fly
or teleport using button devices.
* vrpn_Tracker_ButtonFly.g : Same.
* Makefile : Adding GlobalHapticsOrb and ButtonFly servers.
* vrpn.dsp : Same.
* vrpn_Tng3.h : Comment fix.
* vrpn_Tracker_AnalogFly.C : Switched to autodeleted handler, rather
than registering and unregistering the handler.
2003-01-08 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Tracker_Fastrak.C : Installing fix from Sascha Scholz to make
the fastrak work with a fastrak stylus. I couldn't test the
code I put in the previous commit.
2003-01-02 David Marshburn <marshbur@cs.unc.edu>
* vrpn_Analog_Output.h: uniform formatting, new data members for
num-channel report and new-connection message types, plus:
(vrpn_Analog_Output::getNumChannels): new
(vrpn_Analog_Output::encode_to): removed, unused.
(vrpn_Analog_Output_Server::setNumChannels): note about expected use.
(vrpn_Analog_Output_Server::vrpn_Analog_Output_Sever): added a third
parameter which specifies the number of active channels. defaults
to vrpn_CHANNEL_MAX.
(vrpn_Analog_Output_Server::handle_got_connection): new
(vrpn_Analog_Output_Server::report_num_channels): new
(vrpn_Analog_Output_Server::encode_num_channels_to): new
(vrpn_Analog_Output_Remote::handle_report_num_channels): new
* vrpn_Analog_Output.C: the functions noted above, plus:
(vrpn_Analog_Output::register_types): register "number of channels"
and "new connection" message types.
(vrpn_Analog_Output_Server::vrpn_Analog_Output_Server): register
handler for new-connection messages.
(vrpn_Analog_Output_Server::handle_request_message): sends a text
error message to the client if it tries to set an invalid/inactive
channel.
(vrpn_Analog_Output_Server::handle_request_channels_message): same.
also catches the case in which the number of channels to change is
negative.
(vrpn_Analog_Output_Remote::vrpn_Analog_Ouput_Remote): register
handler for "number of active channels" message.
(vrpn_Analog_Output_Remote::request_change_channels): uses a
statically declared buffer instead of one dynamically declared.
2003-01-02 David Marshburn <marshbur@cs.unc.edu>
* vrpn_Analog.h:
(vrpn_Analog::getNumChannels): new
(vrpn_Analog_Server::numChannels): removed
(vrpn_Analog_Server::setNumChannels): added a note about expected use.
(vrpn_Analog_Server::vrpn_Analog_Server): added a third parameter
which specifies the number of active channels. defaults to
vrpn_CHANNEL_MAX.
(vrpn_Clipping_Analog_Server::vrpn_Clipping_Analog_Server): same
* vrpn_Analog.C: changes corresponding to the above, plus:
(vrpn_Analog::encode_to): initializes buflen correctly, to
be of size vrpn_CHANNEL_MAX+1. Also, uses sizeof(vrpn_float64)
instead of sizeof(double).
(vrpn_Analog::report): create the buffer to be of length
vrpn_CHANNEL_MAX+1.
(vrpn_Analog_Remote::handle_change_message): updates num_channel
2002-12-21 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Tracker_Fastrak.h : Added return type to member function.
* vrpn_DirectXFFJoystick.h : Added newline at end of file.
2002-12-21 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Tracker_Fastrak.h : Added Deepak's code to handle the fastrak
with a stylus that has a button.
* vrpn_Tracker_Fastrak.C : Same.
* vrpn_UNC_Joystick.h : Changed return type to say if got report.
* vrpn_UNC_Joystick.C : Changed server to read multiple reports from
the joystick if they are available.
2002-12-06 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_TempImager.h : Removed duplicate definition. Note to self,
always try compiling after update before commit.
2002-12-06 Russell M. Taylor II <taylorr@cs.unc.edu>
* time_test.dsp : DSP files have been modified to not do definitions of
VRPN_NO_STREAMS and other constants directly, rather these are
now set by editing vrpn_Configure.h. Also, made projects
compile in both debug and release versions.
* vrpn.dsp : Same.
* vrpn.dsw : Removed vrpn_server_with_timecode project because you
can now build vrpn_server.exe with the proper definition in
the vrpn_Configure.h file to do this.
* vrpn_Analog.h : Added structure names to help offsite users not
have to include all of the VRPN header files when building.
* vrpn_Button.h : Same.
* vrpn_Clock.h : Same.
* vrpn_Dial.h : Same.
* vrpn_ForceDevice.h : Same.
* vrpn_Router.h : Same.
* vrpn_Text.h : Same.
* vrpn_Tracker.h : Same.
* vrpn_Analog_Output.h : White space changes.
* vrpn_Connection.C : Modified the read-with-timeout routine to try
and read all characters at once; should only be used with
a socket. Removed commented-out printfs. Whitespace changes.
* vrpn_Connecton.h : Comment change.
* vrpn_DirectXFFJoystick.C : Reordered #includes to work with the
vrpn_Configure.h file. Comment corrections. Made the
joystick opened for exclusive access even if it is only going
to be used as a joystick (was causing problems with VMD, which
also opened the joystick and then the two programs would fight
over it.
* vrpn_DirectXFFJoystick.h : Reordered #includes to work with
vrpn_Configure.h.
* vrpn_Poser.C : Removed reporting calls that were duplicates of the
vrpn_Tracker calls. Now a server that wants to report its
poses should use a vrpn_Tracker to report them and the Poser
only to set them.
* vrpn_Poser.h : Same. Whitespace changes.
* vrpn_Poser_Analog.C : Modified to work with the reduced-function
vrpn_Poser class: now opens a vrpn_Tracker as well to report
the new poses.
* vrpn_Poser_Analog.h : Same.
* vrpn_TempImager.C : Changed all member variables to begin with
"d_" rather than just "_" ("_" violates C++ rules).
* vrpn_TempImager.h : Same.
* vrpn_Types.h : Includes vrpn_Configure.h (so that it will be included
by every VRPN include file).
2002-11-25 <marshbur@cs.unc.edu>
* vrpn_TempImager.C: makes the function java_vrpn_handle_region_change
a friend of class vrpn_TempImager_Region (so it can copy directly from
the value array). Also, moves the declarations of vrpn_IMAGERREGIONCB,
vrpn_IMAGERREGIONHANDLER and vrpn_IMAGERDESCRIPTIONHANDLER forward
in the file.
2002-11-24 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Analog.C : Inlined the channels() function.
* vrpn_Analog.h : Same.
* vrpn_Connection.h : Whitespace changes.
* vrpn_Shared.C : changed variables to constants for speed.
* vrpn_TempImager.C : Major modifications to reduce the number of
copies from three down to one when going through the imager.
On the server side, there is a reformatting copy into a
buffer for VRPN, then the VRPN buffer copy. On the client
side, there is a reformatting copy right from the VRPN
buffer. Made it so that several different message types
can be sent for regions; the receiver code will do
transcoding to make it right (not yet implemented). Uses
memcpy() when it can to increase throughput. Several
functions collapsed into send_region_using_base_pointer().
* vrpn_TempImager.h : Same.
2002-11-20 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Connection.h : Made Connection constructor public.
2002-11-15 Russell M. Taylor II <taylorr@cs.unc.edu>
* Makefile : Changes to work with Cygwin on Windows 2000.
2002-11-14 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Shared.h : Added const boolean vrpn_big_endian that tells if
the machine the program is running on is big-endian.
* vrpn_TempImager.h : Uses memcpy() on little-endian machines to
copy data, rather than vrpn_buffer() and vrpn_unbuffer().
This switches the endian-ness from normal VRPN, but makes
the copies much faster.
* vrpn_testimager_client.C : Increased the sleep length to make the
image reads faster when both client and server are on the
same machine.
2002-11-13 Russell M. Taylor II <taylorr@cs.unc.edu>
* Makefile : Added vrpn_Analog_Output.[Ch] to server build.
2002-11-13 Russell M. Taylor II <taylorr@cs.unc.edu>
* Makefile : Put back in 'endif' that was deleted by accident.
2002-11-13 Russell M. Taylor II <taylorr@cs.unc.edu>
* Makefile : Inserted changes from John Stone to make the code compile
on Mac's running OS/X.
* vrpn_Connection.C : Changed function return type in declaration
to match definition. Added things from John Stone that make
it compile on Mac's running OS/X.
* vrpn_Connection.h : Changed function declaration types to match
function definition.
* vrpn_Serial.C : Added changes by John Stone to make it compile
on Mac's running OS/X.
* vrpn_Shared.C : Same.
* vrpn_Types.h : Same.
2002-10-27 Charalampos Fretzagias <fretzagi@cs.unc.edu>
* vrpn_TempImager.C : The 16bit version of fill_region will no
longer use offset or scale unless they are really needed
* testimager_client.C : Added some optimizations, removed call to
glutPostRedisplay() which has some bug. It will also not
sleep when idle.
2002-09-27 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn.dsw : Adds testimager_client project from client_src.
2002-09-26 Russell M. Taylor II <taylorr@cs.unc.edu>
* Makefile : Added to compile on ARM
* vrpn_TempImager.C : Added include needed on Linux.
2002-09-26 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Magellan.h : Added 'altreset' parameter to constructor.
* vrpn_Magellan.C : Alternate reset command for older Magellans added.
2002-09-26 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_TempImager.h : Only send region message to user if description gotten.
* vrpn_TempImager.C : Same.
2002-09-19 David Borland <borland@cs.unc.edu>
* vrpn_Tracker.C : implemented the request_workspace method in
vrpn_Tracker_Remote.
2002-09-18 David Borland <borland@cs.unc.edu>
* vrpn_Analog_Output.C : wasn't regestering callbacks in the sample
server. Changed this.
2002-09-18 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Analog_Output.h : Comment changes, cosmetic changes.
* vrpn_Analog_Output.C : Cosmetic changes.
* vrpn_Zaber.C : Switches to using vrpn_Analog_Output (multi-channel).
* vrpn_Zaber.h : Switches to using vrpn_Analog_Output (multi-channel).
* vrpn_nikon_controls.C : Switches to using vrpn_Analog_Output.
* vrpn_nikon_controls.h : Switches to using vrpn_Analog_Output.
2002-09-18 David Borland <borland@cs.unc.edu>
* vrpn_Poser.C : cosmetic changes
* vrpn_Poser_Analog.C : wasn't registering callbacks. Changed this.
2002-09-17 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Serial.C (vrpn_flush_input_buffer) : Changed to return 0 or -1
on Windows the same way it does on Unix.
2002-09-13 David Borland <borland@cs.unc.edu>
* vrpn_Poser.[Ch] : Changed some data member names so that if
we want to derive from a poser and a tracker, there won't be
a naming ambiguity. Made some small changes to the Poser_Server
sample class. Added print functions.
* vrpn_Poser_Analog.[Ch] : Changed so that the Poser_Analog is now
derived from Poser, not Poser_Server. Poser_Server is only a sample
server.
2002-09-13 David Borland <borland@cs.unc.edu>
* vrpn_Analog_Output.[Ch] : Minor changes to the sample
vrpn_Analog_Output_Server class
2002-09-12 David Borland <borland@cs.unc.edu>
* vrpn_Analog_Output.[Ch] : New classes for analog devices that
write values. vrpn_Analog was getting overloaded with both
input and output functions, so these have been factored into
the old vrpn_Analog, which does analog input, and the new
vrpn_Analog_Output, which does analog output.
* vrpn_Analog.[Ch] : took out the output functionality
* vrpn_Poser_Analog.[Ch] : changed so that it now uses a
vrpn_Analog_Output_Remote
* vrpn_Zaber.[Ch] : now derived from vrpn_Serial_Analog and
vrpn_Analog_Output
* vrpn_nikon_controls.[Ch] : now derived from vrpn_Serial_Analog
and vrpn_Analog_Output
* vrpn.dsp : added the vrpn_Analog_Output files
2002-09-11 David Marshburn <marshbur@cs.unc.edu>
* vrpn_TempImager.h (getNumVals): new, returns the number of
entries in the 'vals' array.
2002-09-07 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_TempImager.h : Changed a lot a debugged to make test program work.
* vrpn_TempImager.C : Same.
2002-09-06 David Borland <borland@cs.unc.edu>
* vrpn_Poser_Analog.[Ch] : Changed the Poser_Analog to have a
vrpn_Analog_Server member instead of a vrpn_Analog_Remote.
Therefore, the server code must open up a vrpn_Analog_Remote
connection. This seems counter-intuitive, but it is correct for
the Poser, since we are sending analog values, not receiving them.
2002-09-04 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_TempImager.h : Temporary Imager class until the new cool one arrives.
Not yet tested, but compiles on PCs and SGIs.
* vrpn_TempImager.C : Same.
* vrpn.dsp : Adds vrpn_TempImager classes.
* Makefile : Adds vrpn_TempImager classes. Removed obsolete "NEW_LIB" stuff.
* vrpn_Analog.h : White space cleanup.
2002-09-04 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_nikon_controls.h : Control for the focus stage of a Nikon
optical microscope. Later may include other controls as
well. This is a pretty specialized driver for the 3DFM
project at UNC.
* vrpn_nikon_controls.C : Same.
* Makefile : Includes the Nikon files in server source build.
* vrpn.dsp : Same.
2002-08-15 David Borland <borland@cs.unc.edu>
* vrpn_Analog.[Ch] : fixed some bugs from the last commit
* vrpn_Poser_Analog.[Ch] : fixed some bugs from the last commit
2002-08-15 David Borland <borland@cs.unc.edu>
* vrpn_Analog.[Ch] : added functions for sending requests to
change a range of channels at once.
* vrpn_Poser_Analog.[Ch] : created new vrpn_Poser_Analog class that is
used when we wish to "pose" an analog device. Still in testing
phase.
* vrpn_Poser.[Ch] : moved some code from here to vrpn_Poser_Analog
2002-08-14 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_DirectXFFJoystick.C : Changed the way the lateral force is
computed to be the slope rather than the component of the
normal vector pointing in that direction. Clip forces in
a way that preserves direction.
2002-08-12 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_DirectXFFJoystick.h : Added force feedback.
* vrpn_DirectXFFJoystick.C : Added force feedback.
2002-08-12 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn.dsp : Add in definition of VRPN_USE_DIRECTINPUT to enable the
compilation of force-feedback joystick code under DirectX (this
first implementation doesn't use force feedback, just reads from
the joystick). Remove this definition from VRPN and from
vrpn_server to compile without the DirectX 8.0 SDK.
* vrpn_DirectXFFJoystick.h : Driver for Force Feedback joystick.
* vrpn_DirectXFFJoystick.C : Driver for Force Feedback joystick.
2002-08-12 David Borland <borland@cs.unc.edu>
* vrpn_Poser.[Ch] : Incorporating an Analog Device into the Poser
class. Not finished, but want to do some tests.
2002-08-02 David Borland <borland@cs.unc.edu>
* vrpn_Poser.[Ch] : files for the new Poser class. A Poser
is basically the inverse of a Tracker. It takes pose requests for
a device and will (eventually) drive the device to the given pose.
Right now, we can give pose and velocity requests on the client
side and receive them on the server side. Just performing this
commit for some testing purposes.
2002-07-19 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Serial.C (vrpn_drain_output_buffer) : Changed return value to
match what it was supposed to be.
2002-07-10 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_UNC_Joystick.C : Changed memcpy() to normal assignment
to avoid segfault.
2002-07-09 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Serial.C (vrpn_open_commport) : Sets the DTR line to be
on while the port is open. Windows XP turns this off.
The TNG3 uses this line for power, so goes dead when
opened on XP unless this is done.
* vrpn_Serial.C (read_available_characters) : The timeout was
coded incorrectly so that it waited zero time when
passed a NULL pointer to the timeout; it should wait
an infinite time in this case. Pass it a structure
with zeroes to get a zero timeout (or use the other
function of the same name).
* vrpn_Serial.C (vrpn_flush_output_buffer) : The flush and drain
routines were backwards for Windows. Flush now throws
out the characters and drain waits for them to get out
the port.
* vrpn_Serial.C (vrpn_drain_output_buffer) : The flush and drain
routines were backwards for Windows. Flush now throws
out the characters and drain waits for them to get out
the port.
* vrpn_Tng3.h : Made timeout named _timeout to show that it is
a member variable.
* vrpn_Tng3.C : Made timout named _timeout to match header.
Changed error message to say "TNG3" rather than
"Cerealbox" (cut-and-paste error).
2002-07-09 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Connection.C : Reordered functions (for HP build).
* vrpn_Shared.h : Hack to get bools to work on old HP compiler.
2002-07-08 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_FileConnection.C : Include needed for Linux.
2002-07-08 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Clock.h : Cosmetic changes.
* vrpn_Connection.C : Adds hostname to error messages.
Only reports broken connection message once/second.
* vrpn_FileConnection.C : Comment changes. Only print out
error messages once per second.
* vrpn_Tracker.h : Changed array sizes to use the defined
constant meant for that purpose.
2002-06-24 David Marshburn <marshbur@cs.unc.edu>
* vrpn_ForceDevice.[h,C]: constructors now take the name of
the connection as a const char* argument.
2002-06-17 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Button.C : Fixing "for (int i = 0;" initialization.
2002-05-17 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Tng3.C : Cosmetic + fixing infinite-loop bug by turning it from
hanging waiting for characters to polling for any
available characters.
* vrpn_Tng3.h : Same.
2002-05-16 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Tracker_isense.C : Code to interface to Intersense trackers
using their library. By default, it is not built (requires
proprietary library) but instead prints an error message.
* vrpn_Tracker_isense.h : Same.
* Makefile : Added Zaber and Isense drivers to the server library.
* vrpn.dsp : Added Zaber and Isense drivers to the server library.
2002-05-07 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Zaber.C : Code to handle report types 20 and 255. Added code
to tell the
remote device its values upon initial connection. Code to
tell it to start off more slowly and have a smaller maximum
speed (to help with torque). Fixed timeout code so that it
will reset correctly if devices are unplugged and replugged.
* vrpn_Zaber.h : Code to tell the remote device its values upon
initial connection
2002-05-03 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Analog.C : Added capability to send requests from an analog
remote to an analog server for it to change a channel to the
requested value. Modified the example server to respond by
setting its channels to this. This is done to enable the
Zaber linear actuator to be moved to requested positions.
* vrpn_Analog.h : Same.
* vrpn_Zaber.h : Code to control a Zaber linear actuator.
* vrpn_Zaber.C : Code to control a Zaber linear actuator.
* vrpn.dsw : Added vrpn_Zaber.[hC] to compile code for Windows.
It should work for any architecture.
2002-04-16 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Dial.C (vrpn_Dial_Remote::mainloop) : Calls client_mainloop()
2002-03-20 Aron Helser <helser@cs.unc.edu>
* time_test.dsp : Moved here so it is next to the code it
compiles. Standardized settings, see below.
* vrpn.dsp : standardized settings, see below.
* vrpn.dsw : Changed location of many dsp files, and made
standardized settings for all Debug and Release
builds. VRPN_NO_STREAMS defined by default. All object files and
compiler-generated files go in vrpn/pc_win32 directory, in a
subdirectory that matches the source directory or executable
name.
2002-03-18 David Marshburn <marshbur@cs.unc.edu>
* vrpn_Button.C (read): change in Python's read method to allow
compilation on the SGI.
2002-03-15 Aron Helser <helser@cs.unc.edu>
* *.dsp: Added VRPN_COMPILE_DEF environment variable to
preprocessor definitions of all projects. Allows nano to define
VRPN_NO_STREAMS from the environment, as needed.
2002-03-15 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Button.C (read): Sets the debounce on the Python to check
over 30 reads rather than just 3, also makes the code
general so that you change one constant and it checks
that number of readings. This is to make the foot pedal
for the 3DFM not bounce.
2002-03-13 Aron Helser <helser@cs.unc.edu>
* vrpn_Connection.C (setControlMsgTimeOffset): new method to
assist writing a stream file with artibrary time stamps inside.
(d_controlMsgTimeOffset): new, same.
(drop_connection): Use d_controlMsgTimeOffset
* vrpn_Spaceball.C: compiler warning fix.
2002-02-01 David Marshburn <marshbur@cs.unc.edu>
* vrpn.dsp: added vrpn_LamportClock.[C,h]
2002-01-28 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Spaceball.C : Code to drive Spaceballs (from John Stone).
* vrpn_Spaceball.h : Code to drive Spaceballs (from John Stone).
* Makefile : Include files needed to drive Spaceballs (from John Stone).
* vrpn.dsp : Include files needed to drive Spaceballs (from John Stone).
2002-01-04 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Tracker.C : Adding vrpn_Tracker_Server (utility class for apps)
* vrpn_Tracker.h : Adding vrpn_Tracker_Server (utility class for apps)
2002-01-04 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Wande.C : Changing istream messages into stdio messages
so that it can compile without the streams library.
2002-01-03 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_3Space.C (vrpn_Tracker_3Space::get_report) : Decodes the
orientation bytes correctly for all orientations. Fixes
a bug. This code is still too specific, it looks like it
will only work on machines with the same byte order as
PCs, and with machines that allow unaligned access.
2002-01-03 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Button.C (vrpn_Button_SerialMouse::read) : Checks more
carefully for unwanted characters. More comments to
describe what is happening.
2002-01-03 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Tracker_Fastrak.C (reset) : Some IS900 trackers report
a status message with only 54 bytes, rather than the 55 bytes
for a Fastrak. This code is generalized to handle both.
2002-01-02 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Tracker_Fastrak.C (get_report) : Added a call to report
the changes in IS900 analogs. The semantics of mainloop()
on the analog server had changed so that it no longer calls
report() each time through, and this change had not been
filtered into the servers that relied on it calling
report(). Since sometimes you want report(), and sometimes
you want report_changes(), and sometimes you want neither,
this is more general.
2001-12-28 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Button.C (client_msg_handler) : Made the parsing of the admin
message match the encoding of it, so that filtered buttons
will respond to requests to set buttons toggle/momentary.
This fixes a bug.
2001-12-10 David Marshburn <marshbur@cs.unc.edu>
* vrpn_Connection.C (vrpn_Log::open): added some more diagnostic
output when this fails to open a log file.
2001-11-10 Russell M. Taylor II <taylorr@cs.unc.edu>
* time_test.cpp : Program to compare two ways of reading time on Windows.
* vrpn.dsw : Added project file to compile time_test application.
* vrpn_Analog.C : Modify to compile under Windows CE development environment.
* vrpn_BaseClass.C : Modify to compile under Windows CE development environment.
* vrpn_BaseClass.h : Modify to compile under Windows CE development environment.
* vrpn_Button.C : Modify to compile under Windows CE development environment.
* vrpn_Button.h : Modify to compile under Windows CE development environment.
* vrpn_Clock.C : Modify to compile under Windows CE development environment.
* vrpn_Connection.C : Modify to compile under Windows CE development environment.
* vrpn_FileConnection.C : Modify to compile under Windows CE development environment.
* vrpn_Serial.C : Modify to compile under Windows CE development environment.
* vrpn_Shared.C : Modify to compile under Windows CE development environment.
* vrpn_Shared.h : Modify to compile under Windows CE development environment.
Note that VRPN_NO_STREAMS is defined whenever Windows CE is being
used (they don't have I/O streams!) This same definition can be used
at any time to build a VRPN library that uses FILE * rather than streams.
* vrpn_Tracker.C : Modify to compile under Windows CE development environment.
* vrpn_Tracker.h : Modify to compile under Windows CE development environment.
* vrpn_embedded : Directory containing workspace and project files to build
VRPN library under Windows CE. I can't get the application to build,
but am checking this in so that it will start to track other changes.
2001-11-08 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Analog_5dt.C (vrpn_5dt::get_report) :
Changed it to expect 10 characters per report, since
that is what they are getting in France (they are the
only group that has the glove, and they wrote the
driver, so I does what they sez.
2001-11-04 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Connection.C (vrpn_TranslationTable::addRemoteEntry) :
The check put in below causes the system to fail when
reading from tracker log files. This is scary, but I'm
taking the check back out until I can debug this
properly.
2001-11-04 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Connection.C (vrpn_TranslationTable::addRemoteEntry) :
Check added to see if there is already an entry in the
table. If so, error printed and returned.
2001-10-23 Adam Seeger <seeger@cs.unc.edu>
* vrpn_SharedObject.C (vrpn_Shared_String::set): fixed some bad
logic here that was causing a memory bug - was comparing strings
by comparing the pointers for those strings despite the fact that
string values were being put into newly allocated arrays
2001-09-07 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn.dsw : Adds a DAQ driver server for the UNC 3D Force Microscope
* vrpn_Types.h : Comment clarification
2001-08-10 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn.dsw : Makes all libraries in Phantom server use same style
* vrpn_Connection.C (vrpn_Endpoint::send_pending_messages) :
Better handling of this check to avoid problems.
2001-08-07 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn.dsw : Added vrpn_print_devices project file
* vrpn_Connection.C (vrpn_Endpoint::send_pending_messages) :
Check for valid connection before doing anything
2001-07-30 David Marshburn <marshbur@cs.unc.edu>
* server_src\vrpn_phantom.dsp: changed the include directories
to ghost3.1 and ghost-stl.
2001-07-29 Tom Hudson <hudson@cs.unc.edu>
* vrpn_Connection.C (vrpn_Endpoint::drop_connection) :
Fix parentheses on d_connectionCounter reference.
(vrpn_Endpoint::finish_new_connection) : Same.
* vrpn_Connection.C (vrpn_Synchronized_Connection::mainloop) :
Partially fix logic for calling clock server/remote.
* vrpn_Mutex.C (vrpn_Mutex_Remote::requestIndex) : Add verbose
debugging printfs.
(vrpn_Mutex_Remote::request) : Same.
(vrpn_Mutex_Remote::release) : Same.
(vrpn_Mutex_Remote::handle_initialize) : Same.
2001-07-25 Tom Hudson <hudson@cs.unc.edu>
* vrpn_Log.h : New file.
* vrpn_Connection.C (vrpn_Log declaration) : Moved to new file.
* vrpn_File_Connection.C (play_to_user_message) : Log "incoming"
messages.
(playone_to_filetime) : Same.
(read_cookie) : Log cookie.
2001-07-03 David Marshburn <marshbur@tungsten-cs.cs.unc.edu>
* vrpn_Shared.h, C: added vrpn_TimevalEqual
* vrpn_SharedObject.C:
(shouldAcceptUpdate) changed the logic of shouldAcceptUpdate
in regard to timing. Changes were formerly ignored if the
timestamp of the update was <= the time of the last update.
Due to poor time resolution, the "=" part of this comparison
is a bug. Now, we only reject an update if the time of the
current and last updates are equal, and we are not the
serializer, and the update is of a local source.
(vrpn_SharedObject) made d_isSerializer initialized to vrpn_TRUE,
so shared object will by default accept changes having equal
timestamps.
(vrpn_Shared_int32::shouldAcceptUpdate) removed test of
Lamport clock, so that we only ever test the standard timevals.
The implementation of vrpn_LamportClock is incomplete.
(useLamportClock) disabled so that Lamport clocks can't be
accidentally turned on.
- Also removed a bunch of commented-out print statements.
2001-06-29 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Flock_Parallel.h : Spoof Master ID directly, removed un-needed
re-registry of IDs by using inherited function to send the
tracker reports. The previous version was sending messages
with bogus ID because of recent refactoring of the Serial
Tracker classes.
* vrpn_Flock_Parallel.C : Same.
2001-06-29 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Serial.C : Removed dynamic allocation of comm handles,
which was causing seg faults.
* vrpn_Tracker.C : Added check for negative sensor number in callback
handler (this happened when connected to a malfunctioning
tracker server).
2001-06-27 Adam Seeger <seeger@cs.unc.edu>
* vrpn_Connection.C (vrpn_Endpoint::drop_connection): removed a hack
that had been put in to ensure that the "connection dropped" timestamp
was at least as late as the last message in the log (this had
caused problems in translating some old files but I don't remember how)
2001-06-26 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_3Space.C : Massive cleanup
* vrpn_3Space.h : Massive cleanup
* vrpn_Analog.C : Massive cleanup
* vrpn_Analog.h : Massive cleanup
* vrpn_Analog_5dt.C : Massive cleanup
* vrpn_Analog_Radamec_SPI.C : Massive cleanup
* vrpn_Analog_Radamec_SPI.h : Massive cleanup
* vrpn_BaseClass.h : Massive cleanup
* vrpn_Button.C : Massive cleanup
* vrpn_Button.h : Massive cleanup
* vrpn_CerealBox.C : Massive cleanup
* vrpn_CerealBox.h : Massive cleanup
* vrpn_Clock.C : Massive cleanup
* vrpn_Connection.C : Massive cleanup
* vrpn_Connection.h : Massive cleanup
* vrpn_Dial.h : Massive cleanup
* vrpn_Dyna.C : Massive cleanup
* vrpn_Dyna.h : Massive cleanup
* vrpn_Flock.C : Massive cleanup
* vrpn_Flock.h : Massive cleanup
* vrpn_Flock_Parallel.C : Massive cleanup
* vrpn_Flock_Parallel.h : Massive cleanup
* vrpn_ForceDevice.C : Massive cleanup
* vrpn_ImmersionBox.C : Massive cleanup
* vrpn_ImmersionBox.h : Massive cleanup
* vrpn_Joylin.C : Massive cleanup
* vrpn_Magellan.C : Massive cleanup
* vrpn_Mutex.C : Massive cleanup
* vrpn_Serial.C : Massive cleanup
* vrpn_Sound.C : Massive cleanup
* vrpn_Tng3.C : Massive cleanup
* vrpn_Tng3.h : Massive cleanup
* vrpn_Tracker.C : Massive cleanup
* vrpn_Tracker.h : Massive cleanup
* vrpn_Tracker_Fastrak.C : Massive cleanup
* vrpn_Tracker_Fastrak.h : Massive cleanup
* vrpn_Types.h : Massive cleanup
* vrpn_UNC_Joystick.C : Massive cleanup
* vrpn_Wanda.C : Massive cleanup
* vrpn_raw_sgibox.C : Massive cleanup
2001-06-05 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Connection.C : Bumped minor version number
* vrpn_Shared.C : Put back Perf code, guarded by VRPN_UNSAFE_WINDOWS_CLOCK
2001-06-04 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Flock.C : Modified to print an error when trying to open a Flock
that has a transmitter other than as unit 1. The code doesn't
work in this case, and it is good to tell the user what's up.
2001-06-04 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Shared.C (gettimeofday) : Modified the PC version to always use the
_ftime() call, rather than attempting to use the performance counter.
This means only 6ms accuracy on timing, but the other code was fragile
and didn't work across operating systems (98, NT, 2000).
2001-06-02 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Button.h (vrpn_Button_Parallel) : Moving default parameter into
header file and out of C file
* vrpn_Button.C (vrpn_Button_Parallel) : same
2001-06-02 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_3Space.C (mainloop) : Made it so that it tries to read a record
before checking for timeout (to prevent infinite resets when there
are two trackers or other devices running on same server).
* vrpn_Analog_5dt.C (mainloop) : Same
* vrpn_Analog_Radamec_SPI.C (mainloop) : Same
* vrpn_CerealBox.C (mainloop) : Same
* vrpn_Analog_.C (mainloop) : Same
* vrpn_Dyna.C (mainloop) : Same
* vrpn_Flock.C (mainloop) : Same
* vrpn_Flock_Parallel.C (mainloop) : Same
* vrpn_ImmersionBox.C (mainloop) : Same
* vrpn_Tracker_Fastrak.C (mainloop) : Same
* vrpn_Button.h : Added entry to read from the buttons on a mouse that
is treated as a serial device.
* vrpn_Button.C : Same
* vrpn_Tng3.h : Code to run a "Totally Neat Gadget", or at least its
buttons. Driver by Rob King at NRL.
* vrpn_Tng3.C : Same
* Makefile : Modified to load the Tng drivers into servers.
2001-06-01 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Analog_5dt.h : Driver for 5DT data glove (5 fingers, roll, pitch)
* vrpn_Analog_5dt.C : Same
* vrpn_Button.h : Added Bel Elgin's changes from 3rdTech to allow the
hex specification of the parallel port address as a 4th argument.
* vrpn_Button.C : Same plus ability to set an output bit on the port to
1 to driver power to an external button device.
* vrpn_Joylin.h : Driver for PC joysticks under Linux, written by Harald
Barth.
* vrpn_Joylin.C : Same
2001-06-01 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Connection.h (vrpn_Endpoint) : Adds d_tcp_only member, which tells
the endpoint not to try and communicate with its peer using any
other mechanism.
* vrpn_Connection.C : Removed commented-out things left hanging around.
(vrpn_Connection) : Made parsing of "tcp:" names more robust and
made it so that an endpoint created using the "tcp:" URL is
told not to communicate except via TCP.
(header_len) : Const helper routine for the following
(vrpn_copy_machine_name) : Uses more-robust helper routine
(vrpn_get_port_number) : Same
(vrpn_copy_rsh_program) : Same
(vrpn_copy_rsh_arguments) : Same
(server_check_for_incoming_connections) : Tells the endpoint not
to open a UDP link if it was created on a server that was
connected to with a TCP connection (presumably going through
a firewall or NAT).
(finish_new_connection_setup) : Doesn't open UDP port if it is a
TCP-only endpoint. Otherwise, it does.
(connect_udp_to) : Same.
2001-05-01 Adam Seeger <seeger@cs.unc.edu>
* vrpn_Mutex.C (vrpn_Mutex_Remote::requestIndex): now packs the IP
address and process id into this message
(vrpn_Mutex_Remote::handle_initialize): checks to see if the
index message is tagged with the same IP address and process id that
was included in the requestIndex message; this also handles the case
when other clients that may use an older version of the code
do not provide this unique identifier and ignores index assignments
designated for those clients
(vrpn_Mutex_Server::handle_requestIndex): now packs whatever was
in the requestIndex message from the client so it gets echoed back
and the client can figure out which index belongs to it
(presumably the client put some unique identifier into the
requestIndex message)
2001-04-30 Tom Hudson <hudson@cs.unc.edu>
* vrpn_Mutex.C (handle_gotConnection) : Fix logic error to request
a new ID if one hasn't been set already. Has known failure modes
(?), but fewer than when this was incorrect.
2001-04-30 Tom Hudson <hudson@cs.unc.edu>
* vrpn_Tracker_AnalogFly.C (d_reportChanges) : new member variable
recording whether we're reporting at the full update_rate or at the
rate at which changes actually happen
(shouldReport) : new function
(mainloop) : call shouldReport()
2001-04-24 Adam Seeger <seeger@cs.unc.edu>
* vrpn_Mutex.hC : added a new message to let the client request
the initialization message instead of having the server
send this automatically on getting a connection - the problem
with the old method is that if the connection was opened before
creating the vrpn_Mutex_Remote then the message could be
received before the vrpn_Mutex_Remote's callback was registered
Now, when creating a vrpn_Mutex_Remote with an already-
connected vrpn_Connection, a request for initialization is sent
immediately. Otherwise, the vrpn_Mutex_Remote requests
initialization when its got_connection callback is
triggered.
* vrpn_Tracker.C : changed checks for sensor > TRACKER_MAX_SENSOR_LIST
to sensor >= TRACKER_MAX_SENSOR_LIST because a sensor index
equal to TRACKER_MAX_SENSOR_LIST is also illegal
2001-03-25 Aron Helser <helser@cs.unc.edu>
* vrpn_Analog.C : Tweak of message types to make them more uniform
an easy to automatically generate. Class name is first, followed
by space, followed by message type.
* vrpn_BaseClass.C : same
* vrpn_Button.C : same
* vrpn_Clock.C : same
* vrpn_Connection.C : same
* vrpn_Dial.C : same
* vrpn_FileConnection.C : same
* vrpn_FileController.C : same
* vrpn_ForceDevice.C : same
* vrpn_ForwarderController.C : same
* vrpn_Mutex.C : same
* vrpn_RedundantTransmission.C : same
* vrpn_Router.C : same
* vrpn_SharedObject.C : same
* vrpn_Sound.C : same
* vrpn_Tracker.C : same
2001-03-25 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Analog.C : Removed spaces and other characters not available in
C variable names from the message type and sender descriptions
so that Aron's Perl script could be used to generate all of
these objects (or a program to print them).
* vrpn_BaseClass.C : same
* vrpn_Button.C : same
* vrpn_Clock.C : same
* vrpn_Connection.C : same
* vrpn_Dial.C : same
* vrpn_FileConnection.C : same
* vrpn_FileController.C : same
* vrpn_ForceDevice.C : same
* vrpn_ForwarderController.C : same
* vrpn_Mutex.C : same
* vrpn_RedundantTransmission.C : same
* vrpn_Router.C : same
* vrpn_SharedObject.C : same
* vrpn_Sound.C : same
* vrpn_Tracker.C : same
2001-03-01 Aron Helser <helser@cs.unc.edu>
* vrpn_BaseClass.h: Fixed D'Oxygen comments.
2001-02-15 Tom Hudson <hudson@cs.unc.edu>
* vrpn_Connection.h (vrpn_Connection::vrpn_Connection) : change
logfile arguments for both server and client constructors.
(vrpn_Synchronized_Connection::vrpn_Synchronized_Connection) : same.
(vrpn_get_connection_by_name) : same.
(vrpn_Endpoint) : replace remote_log_name with two names, one for
incoming and one for outgoing; replace d_log with two vrpn_Logs,
add d_ convention to remote_log_mode.
(vrpn_Endpoint::setLogNames) : new function.
(vrpn_Endpoint::openLogs) : same.
* vrpn_Connection.C (vrpn_Connection::vrpn_Connection) : handle
changed method of log specification.
(vrpn_Synchronized_Connection::vrpn_Synchronized_Connection) : pass
changed arguments to Connection constructor.
(vrpn_get_connection_by_nbame) : same.
(vrpn_Endpoint::vrpn_Endpoint) : initialize both log names.
(vrpn_Endpoint::init) : create both logs.
(vrpn_Endpoint::pack_log_description) : pass both log names.
(vrpn_Endpoint::handle_log_message) : unpack both log names.
* vrpn_FileConnection.h (vrpn_File_Connection::vrpn_File_Connection) :
change logfile arguments for constructor.
* vrpn_FileConnection.C (vrpn_File_Connection::vrpn_File_Connection) :
same.
2001-02-12 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_shared.C : vrpn_unbuffer ( ) {All of them} Modified to handle
conversions from unaligned buffers. This was causing problems with
the code being used to read from serial buffers in tracker drivers.
I give up on trying to save the extra copy.
2001-02-09 Kwan Torrich Skinner <skinner@cs.unc.edu>
* vrpn.dsp : removes references to vrpn_DelayedConnection.[C,h]
2001-02-07 Kwan Torrich Skinner <skinner@cs.unc.edu>
* vrpn_Connection.C : increased minor version number.
* Changelog : fixed Tom's (and my own) dates to be 2001 and not y2k.
2001-02-05 Tom Hudson <hudson@cs.unc.edu>
(vrpn_Connection::server_check_for_incoming_connections) :
Change one type to compile on the PC
2001-02-05 Tom Hudson <hudson@cs.unc.edu>
* vrpn_Connection.h: add vrpn_Connection::listen_tcp_sock
vrpn_Connection.C
(open_tcp_socket) : Add portno argument just like open_udp_socket;
default to NULL
(vrpn_Endpoint::connect_tcp_to) : Refactor into two functions
(vrpn_Connection::server_check_for_incoming_connections) :
Add check for TCP connections
(vrpn_Connection server constructor) : Add initialization,
opening, and listen() call for tcp socket
(vrpn_Connection client constructor) : Check for "tcp:"
station name; if found, initiate a TCP connection instead
of sending UDP message asking the server to initiate on
2001-01-07 Kwan Torrich Skinner <skinner@cs.unc.edu>
* vrpn_MTd.dsp: added vrpn_RedundantTransmission to the project
file so topo will compile.
2000-12-6 Tom Hudson <hudson@cs.unc.edu>
* Makefile: remove vrpn_DelayedConnection.C, vrpn_DelayedConnection.h
* vrpn_RedundantTransmission.C
(vrpn_RedundantTransmission::mainloop) : rewrite deletion routine
so it doesn't occasionally crash for no apparent reason on PCs
(vrpn_RedundantTransmission::pack_message) : add new parameter;
handle special cases and boundary conditions better
* vrpn_Tracker.C (vrpn_Tracker_NULL::mainloop) : pass new parameter
to vrpn_RedundantTransmission::pack_message
(vrpn_RedundantTransmission) : new data member d_isEnabled
(vrpn_RedundantTransmission::isEnabled) : new function
(vrpn_RedundantTransmission::enable) : same
(vrpn_RedundantController_Protocol::encode_enable) : same
(vrpn_RedundantController_Protocol::decode_enable) : same
(vrpn_RedundantController::handle_enable) : same
(vrpn_RedundantRemote::enable) : same
(vrpn_RedundantController constructor) : add handler registration
(vrpn_RedundantReceiver) : new class
2000-11-13 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Flock_Parallel.C (mainloop) : Made the code close and then
reopen the serial ports (like it used to do before I turned
it off because of a buggy Linux kernel).
2000-11-03 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Shared.C (gettimeofday) : Turned off hi-perf clock for Win98
(vrpn_AdjustFrequency) : Removed buggy clock-check code
2000-11-01 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_FileConnection.C : Fixed parsing of file://.
* vrpn_Connection.C : Removed more of the WINDOWS_GETHOSTBYNAME hack
2000-11-01 Aron Helser <helser@cs.unc.edu>
* vrpn_Connection.Ch (vrpn_Log::close): calls saveLogSoFar then
closes file.
(vrpn_Log::saveLogSoFar): Incremental save of log file whenever
called.
(vrpn_Connection::save_log_so_far): calls vrpn_Log::saveLogSoFar
on all open endpoints.
2000-10-20 Aron Helser <helser@cs.unc.edu>
* vrpn_Connection.C (connect_tcp_to): Don't call gethostbyname if
machine name provided is an IP number.
(vrpn_connect_udp_port): same
(connect_tcp_to): same
(connect_udp_to): comment out, replaced with call to
vrpn_connect_udp_port
* vrpn_Mutex.C (getmyIP): Don't call gethostbyname if machine name
provided is an IP number. Fixes byte-order problem with return
value on win32.
* vrpn_BaseClass.C (~vrpn_TextPrinter): Fix compiler warnings.
2000-10-18 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Serial.C (vrpn_drain_output_buffer) :
Called drain function, rather than flush.
2000-10-18 Tom Hudson <hudson@cs.unc.edu>
* vrpn_Connection.C (vrpn_Connection) : add data members
d_endpointAllocator, d_updateEndpoint
(vrpn_Connection client constructor) : add endpoint allocator
as extra argument, call (*d_endpointAllocator) & set d_updateEndpoint
instead of calling allocateEndpoint()
(vrpn_Connection server constructor) : same
(vrpn_Synchronized_Connection client constructor) : add endpoint
allocator as extra argument
(vrpn_Synchronized_Connection server constructor) : same
(vrpn_Connection::updateEndpoints) : new function
(vrpn_Connection::allocateEndpoint) : change from virtual to static
(vrpn_Connection::connect_to_client) : replace call to
allocateEndpoint() with (*d_endpointAllocator), set d_updateEndpoint
(vrpn_Connection::server_check_for_incoming_connections) : same
(vrpn_Connection::mainloop) : call updateEndpoints() if
d_updateEndpoint is true
(vrpn_Endpoint::dispatch) : make virtual
* vrpn_DelayedConnection.C (vrpn_DelayedEndpoint) : new data
members d_delayListEnd, d_delayAllTypes, d_typeIsDelayed
(vrpn_DelayedConnection) : new data members d_delayAllTypes,
d_typeIsDelayed
(vrpn_DelayedEndpoint constructor) : remove timeval parameter,
initialize d_typeIsDelayed
(vrpn_DelayedEndpoint::delayAllTypes) : new function
(vrpn_DelayedEndpoint::delayType) : same
(vrpn_DelayedEndpoint::enqueue) : same
(vrpn_DelayedEndpoint::updateEndpoints) : same
(vrpn_DelayedEndpoint::dispatch) : don't delay system messages;
TCP/UDP connections will timeout otherwise
(vrpn_DelayedConnection constructor) : initialize d_typeIsDelayed
(vrpn_DelayedConnection::delayAllTypes) : new function
(vrpn_DelayedConnection::delayType) : same
(vrpn_RelativeDelayEndpoint) : new class
(vrpn_RelativeDelayConnection) : new class
* vrpn_RedundantTransmission.C
(vrpn_RedundantTransmission::mainloop) : detect & clean-up after
error states
2000-10-16 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Connection.C : Deleted commented-out code.
2000-10-16 Tom Hudson <hudson@cs.unc.edu>
* vrpn_RedundantTransmission.C (defaultInterval) : new function
(defaultRetransmissions) : same
2000-10-11 Tom Hudson <hudson@cs.unc.edu>
* vrpn_Connection.C (vrpn_TranslationTable::addRemoteEntry) :
add details to error output
* vrpn_Tracker.C (vrpn_Tracker_NULL::mainloop) : add support for
vrpn_RedundantTransmission
(vrpn_Tracker_NULL::setRedundantTransmission) : new function
* vrpn_RedundantTransmission.h : new file
* vrpn_RedundantTransmission.C : new file
2000-10-10 Adam Seeger <seeger@cs.unc.edu>
* vrpn_FileConnection.hC (vrpn_File_Connection::get_filename) :
new function that lets you easily find out what the name of the
file was that vrpn opened (you could also do this using
vrpn_copy_file_name with the name passed in originally)
2000-10-09 Aron Helser <helser@cs.unc.edu>
* vrpn_Connection.C (server_check_for_incoming_connections): A
server used to get NIC for tcp connection from information in the
UDP message sent by the client. Instead, use the NIC the UDP
message came in on, ignoring NIC information in the UDP
message. Allows us to handle multiple NICs more gracefully,
because client can't easily discover the right NIC to put in the
message.
Other comment and verbose printout changes.
2000-10-08 Adam Seeger <seeger@cs.unc.edu>
* vrpn_FileConnection.C (vrpn_File_Connection::vrpn_File_Connection):
sets d_start_time to be the first time after playing to the first
user message to avoid problems with log files that have system
messages with messed up timestamps
2000-10-05 Sang-Uok Kum <kumsu@cs.unc.edu>
* vrpn_Shared.h: Fixed a mistake which made it not work in VC++.
sleep is still not defined in VC++.
2000-10-04 Sang-Uok Kum <kumsu@cs.unc.edu>
* vrpn_Button.C : Include files and #ifdefs changed so in cygwin v1.1
it always uses unix sockets instead of window sockets. (The vrpn library
compiled but gave run time errors.) This was only tested for vrpn
client.
* vrpn_Clock.C : same
* vrpn_Connection.C : same
* vrpn_FileConnection.C : same
* vrpn_FileController.C : same
* vrpn_ForwarderController.C : same
* vrpn_Serial.C : same
* vrpn_Shared.C : same
* vrpn_Shared.h : same
2000-10-02 Tom Hudson <hudson@cs.unc.edu>
* vrpn_SharedObject.h : Uncommented initial #include of
vrpn_Shared.h, which is necessary for compiling under
Cygwin 1.1; code still compiles under VC++ and Cygwin 1.0
2000-10-02 Adam Seeger <seeger@cs.unc.edu>
* vrpn_Shared.C (vrpn_buffer, vrpn_unbuffer) : added these functions
for vrpn_int16 and vrpn_uint16 - also, had to remove the one for
vrpn_bool because a vrpn_bool is a vrpn_int16
2000-09-26 Tom Hudson <hudson@cs.unc.edu>
* Makefile : now that we're using makedepend, got rid of rebuild
of entire library whenever any header file changed.
* vrpn_DelayedConnection.C
(vrpn_DelayedEndpoint::send_pending_reports) : implemented
(vrpn_DelayedEndpoint::dispatch) : same
(vrpn_DelayedEndpoint::dispatchPending) : same
(vrpn_DelayedEndpoint::setDelay) : new function
(vrpn_DelayedEndpoint::deletePending) : same
(vrpn_DelayedConnection::setDelay) : same
2000-09-25 Tom Hudson <hudson@cs.unc.edu>
* connection : new directory, to be populated later today
* vrpn_Connection.C (vrpn_Endpoint::dispatch) : new function
(vrpn_Connection::allocateEndpoint) : new function
(vrpn_Endpoint::getOneTCPMessage) : call dispatch()
(vrpn_Endpoint::getOneUDPMessage) : same
(vrpn_Connection::connectToClient) : call allocateEndpoint()
(vrpn_Connection::server_check_for_incoming_connections) : same
(vrpn_Connection::server constuctor) : same
(vrpn_Connection::client constuctor) : same
* vrpn_DelayedConnection.C : new file
2000-09-22 Adam Seeger <seeger@cs.unc.edu>
* vrpn_Connection.C (vrpn_Log::lastLogTime) : new function to
return the last timestamp for a logged message
* vrpn_Connection.C (vrpn_Endpoint::drop_connection) : Since we
read the actual time here to log dropped connection message, this
was setting back the time for programs that used the logging
mechanism for translation of old data into new log files. Now, in the
case of logging and when the current time is less than the last log
time, this function records the dropped_connection message with
the previous log time instead
* vrpn_Connection.C (vrpn_Synchronized_Connection::client constructor):
this function now calls pack_sender_description for vrpn_CONTROL and
pack_type_description for vrpn_got_connection, vrpn_dropped_connection,
vrpn_got_first_connection, vrpn_dropped_last_connection so that they
will get put into a log file even if the endpoint is not connected
(needed for translation) - (At least I think this is why they aren't
getting put into the log file)
2000-09-21 Tom Hudson <hudson@cs.unc.edu>
(vrpn_SharedObject::handle_gotConnection) : small fix for
non-serialized use
2000-09-18 Tom Hudson <hudson@cs.unc.edu>
* vrpn_SharedObject.C:
(class vrpn_SharedObject)
d_isNegotiatingSerializer : new data member
(vrpn_SharedObject::becomeSerializer) : test & set
d_isNegotiatingSerializer
(vrpn_SharedObject::handle_requestSerializer) : same
(vrpn_SharedObject::handle_grantSerializer) : clear
d_isNegotiatingSerializer
(vrpn_SharedObject::handle_assumeSerializer) : same
(vrpn_SharedObject::postBindConnection) : check for NULL connection,
moved code from serverPostBindConnection
(vrpn_SharedObject::serverPostBindConnection) : same
(vrpn_SharedObject::handle_gotConnection) : generalized,
renamed from handle_gotConnectionToRemote
2000-09-17 Tom Hudson <hudson@cs.unc.edu>
* vrpn_SharedObject.C:
(class vrpn_SharedObject)
d_serverId, d_remoteId, d_peerId, d_update_type, d_lamportUpdate_type :
new data members
d_updateFromServer_type, d_updateFromRemote_type, d_myUpdate_type,
d_updateFromServerLamport_type, d_updateFromRemoteLamport_type :
remove
(vrpn_SharedObject::postBindCleanup) : new function
(vrpn_SharedObject::serverPostBindCleanup) : same
(vrpn_SharedObject::remotePostBindCleanup) : same
(vrpn_SharedObject::sendUpdate) : same
(vrpn_SharedObject::handleUpdate) : same
(vrpn_SharedObject::handle_gotConnectionToRemote) : same
(vrpn_SharedObject::handle_update) : same
(vrpn_SharedObject::becomeSerializer) : simplify
(vrpn_SharedObject::handle_requestSerializer) : simplify
(vrpn_SharedObject::handle_grantSerializer) : simplify
(vrpn_SharedObject::handle_assumeSerializer) : simplify
(vrpn_Shared_int32::sendUpdate) : remove first parameter
(vrpn_Shared_float64::sendUpdate) : same
(vrpn_Shared_String::sendUpdate) : same
(vrpn_Shared_int32::handleUpdate) : new function
(vrpn_Shared_float64::handleUpdate) : same
(vrpn_Shared_String::handleUpdate) : same
2000-09-15 Tom Hudson <hudson@cs.unc.edu>
* vrpn_LamportClock.h : changed <> on include to ""
2000-09-12 Tom Hudson <hudson@cs.unc.edu>
* vrpn_BaseClass.h : made some of the comments 80-column correct
so I could read them.
* vrpn_SharedObject.h: (becomeSerializer) : new function
d_requestSerializer_type, d_grantSerializer_type,
d_assumeSerializer_type : new data members
d_queueSets : new data member (probably unnecessary)
d_becomeSerializer_type : removed old data member
(handle_requestSerializer) : new function
(handle_grantSerializer) : renamed from handle_becomeSerializer
(handle_assumeSerializer) : new function
(vrpn_SerializerPolicy) : renamed vrpn_DENY to vrpn_DENY_REMOTE,
added vrpn_DENY_LOCAL
* vrpn_SharedObject.C: (vrpn_SharedObject constructor) :
default values for new data members, d_lClock.
(vrpn_SharedObject::becomeSerializer) : new function
(vrpn_SharedObject::handle_requestSerializer) : new function
(vrpn_SharedObject::handle_grantSerializer) :
renamed from handle_becomeSerializer
(vrpn_SharedObject::handle_assumeSerializer) : new function
(vrpn_Shared_int32_Server::bindConnection) : added registration
of handler for requestSerializer
(vrpn_Shared_float64_Server::bindConnection) : added registration
of handler for requestSerializer
(vrpn_Shared_String_Server::bindConnection) : added registration
of handler for requestSerializer
(vrpn_Shared_int32::shouldAcceptUpdate) : added handling for
vrpn_DENY_LOCAL
(vrpn_Shared_float64::shouldAcceptUpdate) : same
(vrpn_Shared_String::shouldAcceptUpdate) : same
2000-09-11 Adam Seeger <seeger@cs.unc.edu>
* vrpn_FileConnection.C (vrpn_File_Connection::reset) :
Added call to d_endpoints[0]->drop_connection() to clear all state for
replaying the file from the beginning.
* vrpn_FileConnection.C (vrpn_File_Connection::mainloop) :
returns -1 if there is an error reading from the file
2000-09-11 Adam Seeger <seeger@cs.unc.edu>
* vrpn_Mutex.C (vrpn_Mutex_Server::~vrpn_Mutex_Server) : added
unregister messages to correspond to register messages in the
constructor (should be fixed using vrpn_BaseClass later)
* vrpn_Mutex.C (vrpn_Mutex_Remote::~vrpn_Mutex_Remote) : added
unregister messages to correspond to register messages in the
constructor (should be fixed using vrpn_BaseClass later)
* vrpn_FileConnection.C (vrpn_File_Connection::constructor) :
took out code that set the first message to the first
user message because when we later get a message that clears
the translation table there is no way to rewind and rebuild
the translation table because the initial system messages
don't get replayed (left in the part that actually skips to the
first user message though because this is apparently useful in
order to avoid timing problems)
* vrpn_FileConnection.C (vrpn_File_Connection::reset) :
added code from constructor to skip to the first user message
2000-09-07 Adam Seeger <seeger@cs.unc.edu>
* vrpn_Connection.C (vrpn_TranslationTable::clear) : changed this
to do delete [] instead of delete on d_entry[i].name since a
cName (its type) is a typedef for an array
2000-09-06 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Magellan.C (vrpn_write_slowly) : Added parameter for how long
wait.
(get_report) : Returns 1 if a full report found
(mainloop): Retries reading when a full report is found
so that the buffer is cleared of all reports
* vrpn_Router.C : #include string.h to compile on Linux
2000-09-01 Adam Seeger <seeger@cs.unc.edu>
* vrpn_Connection.h (check_vrpn_file_cookie) : Now this will work
if the version is >= 4.0 and <= the current version
2000-09-01 Adam Seeger <seeger@cs.unc.edu>
* vrpn_Connection.h (check_vrpn_file_cookie) : This only worked if
the version was 4.0, now it works if the version is the current one
or less
2000-08-31 Tom Hudson <hudson@cs.unc.edu>
* vrpn_Connection.C (vrpn_TranslationTable): Removed a lot of
#if 1/#if 0 clauses that have become set.
* vrpn_Connection.C (vrpn_TranslationTable::addLocalID): Added
a guard to strcmp to make sure we weren't comparing against NULL.
2000-08-28 Adam Seeger <seeger@cs.unc.edu>
* vrpn_Router.[hC] (vrpn_Router, ~vrpn_Router) : Made it so that
the big arrays in this class get dynamically allocated instead
of statically allocated so we don't have to use the huge_objects
flag with Visual C++
2000-08-28 Russell M. Taylor II <taylorr@cs.unc.edu>
* Makefile : Added Brown patches to compile under AIX.
Cleaned up RANLIB and some dependencies.
* vrpn_Shared.h : Added INVALID_SOCKET defs for Win32.
* vrpn_Types.h : Added AIX definitions.
2000-08-28 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Wanda.h : New file
* vrpn_Wanda.C : New file
* Makefile : Add Wanda to server library
2000-08-27 Jeffrey Juliano <juliano@cs.unc.edu>
* .cvsignore: Add sgi_irix.n32.mips3 to ignore list.
2000-08-24 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_BaseClass.C (~vrpn_TextPrinter) : Hack to remove segfaults
* vrpn_Router.C : New file
* vrpn_Router.h : New file
* Makefile : Added vrpn_Router compilation
2000-08-22 Kwan Skinner <skinner@cs.unc.edu>
* vrpn_Connection.C (check_vrpn_file_cookie) : New function
* vrpn_Connection.h (check_vrpn_file_cookie) : New function
* vrpn_FileConnection.C (read_cookie) : Now calls check_vrpn_file_cookie
2000-08-21 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Connection.C (connect_to_client) : Bug fix
Remove parameter that is now obsolete.
2000-08-15 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Mutex.C (vrpn_Mutex_Remote) : Type cast
2000-08-14 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Analog_Radamec.C (int_to_pan) : Fix negative rotations
2000-08-12 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Analog_Radamec.C (send_command) : Removed slow writes
(int_to_pan) : Conversion fixed
(reset) : Chopped out large parts that didn't work but should
(get_report) : Set to ignore commands in case they are sent
* vrpn_Tracker_AnalogFly.h : Added "absolute" and offset
* vrpn_Tracker_AnalogFly.C : Added "absolute" and offset
2000-08-11 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn_Analog_Radamec_SPI.C : Changed some warnings into errors
(mainloop) : Added a watchdog timer
* vrpn_Connection.C (vrpn_Log::setCompoundName): added 'const'
* vrpn_Serial.C (vrpn_open_commport): Adds input baud to SGI code
* vrpn_Tracker_Fastrak.C (get_report): Flushes buffer when resynching
* vrpn_ImmersionBox.h : New file
* vrpn_ImmersionBox.C : New file
2000-08-10 Russell M. Taylor II <taylorr@cs.unc.edu>
* vrpn.dsp: Adds a driver for the Radamec Serial Position Interface
(Camera tracker)
* vrpn.dsw: same
* vrpn_Analog_Radamec_SPI.h: same
* vrpn_Analog_Radamec_SPI.C: same
* vrpn_Serial.h (vrpn_open_commport): Adds bit length and parity to
the optional parameters to the serial-port open.
* vrpn_Serial.C (vrpn_open_commport): same
* vrpn_Analog.C (vrpn_Serial_Analog::vrpn_Serial_Analog): same
* vrpn_Analog.h (vrpn_Serial_Analog::vrpn_Serial_Analog): same
* vrpn_Tracker.C: Modified the packing code to use vrpn_buffer()
and vrpn_unbufer(). Removed the redundant change handlers for all
sensors, by replacing them with ones that have optional parameters.
* vrpn_Tracker.h: same
* vrpn_AnalogFly.C (vrpn_AnalogFly::vrpn_AnalogFly): Sets the reset
button to NULL by default so that the code won't blow up if you don't
have one.
# Project configuration settings
set(VRPN_USE_PHANTOM_SERVER "@VRPN_USE_PHANTOM_SERVER@" CACHE BOOL "")
set(VRPN_INCLUDE_TIMECODE_SERVER "@VRPN_INCLUDE_TIMECODE_SERVER@" CACHE BOOL "")
set(VRPN_INCLUDE_INTERSENSE "@VRPN_INCLUDE_INTERSENSE@" CACHE BOOL "")
set(VRPN_USE_NATIONAL_INSTRUMENTS "@VRPN_USE_NATIONAL_INSTRUMENTS@" CACHE BOOL "")
set(VRPN_USE_NATIONAL_INSTRUMENTS_MX "@VRPN_USE_NATIONAL_INSTRUMENTS_MX@" CACHE BOOL "")
set(VRPN_USE_NIDAQ "@VRPN_USE_NIDAQ@" CACHE BOOL "")
set(VRPN_USE_USDIGITAL "@VRPN_USE_USDIGITAL@" CACHE BOOL "")
set(VRPN_USE_MICROSCRIBE "@VRPN_USE_MICROSCRIBE@" CACHE BOOL "")
set(VRPN_INCLUDE_PHASESPACE "@VRPN_INCLUDE_PHASESPACE@" CACHE BOOL "")
set(VRPN_USE_MOTIONNODE "@VRPN_USE_MOTIONNODE@" CACHE BOOL "")
set(VRPN_USE_WIIUSE "@VRPN_USE_WIIUSE@" CACHE BOOL "")
set(VRPN_USE_FREESPACE "@VRPN_USE_FREESPACE@" CACHE BOOL "")
set(VRPN_USE_DIRECTINPUT "@VRPN_USE_DIRECTINPUT@" CACHE BOOL "")
set(VRPN_USE_DIRECTSHOW "@VRPN_USE_DIRECTSHOW@" CACHE BOOL "")
set(VRPN_USE_SHARED_LIBRARY "@VRPN_USE_SHARED_LIBRARY@" CACHE BOOL "")
set(VRPN_USE_GPM_MOUSE "@VRPN_USE_GPM_MOUSE@" CACHE BOOL "")
set(VRPN_GPL_SERVER "@VRPN_GPL_SERVER@" CACHE BOOL "")
# Root directories to search for dependencies
set(WIIUSE22_ROOT_DIR "@WIIUSE_ROOT_DIR@" CACHE PATH "")