Revision: 7266
http://playerstage.svn.sourceforge.net/playerstage/?rev=7266&view=rev
Author: thjc
Date: 2009-01-11 18:48:00 +0000 (Sun, 11 Jan 2009)
Log Message:
-----------
Applied patch 2303195:
joystick interface expansion
Also re enables the joystick proxies
Modified Paths:
--------------
code/player/trunk/client_libs/libplayerc/CMakeLists.txt
code/player/trunk/client_libs/libplayerc/dev_joystick.c
code/player/trunk/client_libs/libplayerc/playerc.h
code/player/trunk/client_libs/libplayerc++/CMakeLists.txt
code/player/trunk/client_libs/libplayerc++/playerc++.h
code/player/trunk/libplayercore/interfaces/049_joystick.def
code/player/trunk/server/drivers/joystick/linuxjoy.cc
Added Paths:
-----------
code/player/trunk/client_libs/libplayerc++/joystickproxy.cc
Modified: code/player/trunk/client_libs/libplayerc/CMakeLists.txt
===================================================================
--- code/player/trunk/client_libs/libplayerc/CMakeLists.txt 2009-01-11
18:43:03 UTC (rev 7265)
+++ code/player/trunk/client_libs/libplayerc/CMakeLists.txt 2009-01-11
18:48:00 UTC (rev 7266)
@@ -27,6 +27,7 @@
dev_health.c
dev_imu.c
dev_ir.c
+ dev_joystick.c
dev_laser.c
dev_limb.c
dev_localize.c
Modified: code/player/trunk/client_libs/libplayerc/dev_joystick.c
===================================================================
--- code/player/trunk/client_libs/libplayerc/dev_joystick.c 2009-01-11
18:43:03 UTC (rev 7265)
+++ code/player/trunk/client_libs/libplayerc/dev_joystick.c 2009-01-11
18:48:00 UTC (rev 7266)
@@ -1,4 +1,4 @@
-/*
+/*
* libplayerc : a Player client library
* Copyright (C) Andrew Howard 2002-2003
*
@@ -20,8 +20,8 @@
/*
* Player - One Hell of a Robot Server
* Copyright (C) Andrew Howard 2003
- *
*
+ *
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
@@ -37,19 +37,28 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
/***************************************************************************
- * Desc: Joystick device proxy
+ * Desc: joystick proxy.
* Author: Andrew Howard
- * Date: 13 May 2002
+ * Date: 26 May 2002
* CVS: $Id$
**************************************************************************/
+#if HAVE_CONFIG_H
+ #include "config.h"
+#endif
#include <math.h>
#include <stdlib.h>
#include <string.h>
+#include <netinet/in.h>
#include "playerc.h"
#include "error.h"
+// Local declarations
+void playerc_joystick_putmsg(playerc_joystick_t *device,
+ player_msghdr_t *header,
+ player_joystick_data_t *data,
+ size_t len);
// Create a new joystick proxy
playerc_joystick_t *playerc_joystick_create(playerc_client_t *client, int
index)
@@ -59,9 +68,8 @@
device = malloc(sizeof(playerc_joystick_t));
memset(device, 0, sizeof(playerc_joystick_t));
playerc_device_init(&device->info, client, PLAYER_JOYSTICK_CODE, index,
- (playerc_putdata_fn_t)
playerc_joystick_putdata,NULL,NULL);
+ (playerc_putmsg_fn_t) playerc_joystick_putmsg);
-
return device;
}
@@ -71,8 +79,6 @@
{
playerc_device_term(&device->info);
free(device);
-
- return;
}
@@ -91,13 +97,26 @@
// Process incoming data
-void playerc_joystick_putdata(playerc_joystick_t *device, player_msghdr_t
*header,
- player_joystick_data_t *data, size_t len)
+void playerc_joystick_putmsg(playerc_joystick_t *device, player_msghdr_t
*header,
+ player_joystick_data_t *data, size_t len)
{
- device->px = (double) (int16_t) ntohs(data->xpos) / (double) (int16_t)
ntohs(data->xscale);
- device->py = (double) (int16_t) ntohs(data->ypos) / (double) (int16_t)
ntohs(data->yscale);
- device->buttons = ntohs(data->buttons);
-
+ int i;
+ if((header->type == PLAYER_MSGTYPE_DATA) &&
+ (header->subtype == PLAYER_JOYSTICK_DATA_STATE))
+ {
+
+ device->buttons = data->buttons;
+ device->axes_count = data->axes_count;
+ for (i = 0; i < data->axes_count ; i++)
+ device->pos[i] = data->pos[i];
+
+
+ }
+ else
+ PLAYERC_WARN2("skipping joystick message with unknown type/subtype:
%s/%d\n",
+ msgtype_to_str(header->type), header->subtype);
return;
}
+
+
Modified: code/player/trunk/client_libs/libplayerc/playerc.h
===================================================================
--- code/player/trunk/client_libs/libplayerc/playerc.h 2009-01-11 18:43:03 UTC
(rev 7265)
+++ code/player/trunk/client_libs/libplayerc/playerc.h 2009-01-11 18:48:00 UTC
(rev 7266)
@@ -51,7 +51,7 @@
#ifndef PLAYERC_H
#define PLAYERC_H
-#include <netinet/in.h> // need this for struct sockaddr_in
+#include <netinet/in.h> /* need this for struct sockaddr_in */
#include <stdio.h>
#include <playerconfig.h>
@@ -64,7 +64,7 @@
typedef void * GEOSGeom;
#endif
-// Get the message structures from Player
+/* Get the message structures from Player*/
#include <libplayercore/playercommon.h>
#include <libplayercore/player.h>
#include <libplayercore/error.h>
@@ -332,10 +332,10 @@
const char *playerc_error_str(void);
/** Get the name for a given interface code. */
-//const char *playerc_lookup_name(int code);
+/*const char *playerc_lookup_name(int code);*/
/** Get the interface code for a given name. */
-//int playerc_lookup_code(const char *name);
+/*int playerc_lookup_code(const char *name);*/
/** Add new entries to the XDR function table. */
int playerc_add_xdr_ftable(playerxdr_function_t *flist, int replace);
@@ -344,13 +344,13 @@
/***************************************************************************/
-// Forward declare types
+/* Forward declare types*/
struct _playerc_client_t;
struct _playerc_device_t;
-// forward declaration to avoid including <sys/poll.h>, which may not be
-// available when people are building clients against this lib
+/* forward declaration to avoid including <sys/poll.h>, which may not be
+ available when people are building clients against this lib*/
struct pollfd;
@@ -365,7 +365,7 @@
@{
*/
-// Items in incoming data queue.
+/* Items in incoming data queue.*/
typedef struct
{
player_msghdr_t header;
@@ -373,36 +373,36 @@
} playerc_client_item_t;
-// Multi-client data
+/* Multi-client data*/
typedef struct
{
- // List of clients being managed
+ /* List of clients being managed*/
int client_count;
struct _playerc_client_t *client[128];
- // Poll info
+ /* Poll info*/
struct pollfd* pollfd;
- // Latest time received from any server
+ /* Latest time received from any server*/
double time;
} playerc_mclient_t;
-// Create a multi-client object
+/* Create a multi-client object*/
playerc_mclient_t *playerc_mclient_create(void);
-// Destroy a multi-client object
+/* Destroy a multi-client object*/
void playerc_mclient_destroy(playerc_mclient_t *mclient);
-// Add a client to the multi-client (private).
+/* Add a client to the multi-client (private).*/
int playerc_mclient_addclient(playerc_mclient_t *mclient, struct
_playerc_client_t *client);
-// Test to see if there is pending data.
-// Returns -1 on error, 0 or 1 otherwise.
+/* Test to see if there is pending data.
+ Returns -1 on error, 0 or 1 otherwise.*/
int playerc_mclient_peek(playerc_mclient_t *mclient, int timeout);
-// Read incoming data. The timeout is in ms. Set timeout to a
-// negative value to wait indefinitely.
+/* Read incoming data. The timeout is in ms. Set timeout to a
+ negative value to wait indefinitely.*/
int playerc_mclient_read(playerc_mclient_t *mclient, int timeout);
/** @} */
@@ -739,11 +739,11 @@
*/
void *playerc_client_read(playerc_client_t *client);
-// Read and process a packet (nonblocking)
-// returns 0 if no data recieved, 1 if data recieved and -1 on error
+/* Read and process a packet (nonblocking)
+ returns 0 if no data recieved, 1 if data recieved and -1 on error*/
int playerc_client_read_nonblock(playerc_client_t *client);
-// Read and process a packet (nonblocking), fills in pointer to proxy that got
data
-// returns 0 if no data recieved, 1 if data recieved and -1 on error
+/* Read and process a packet (nonblocking), fills in pointer to proxy that got
data
+ returns 0 if no data recieved, 1 if data recieved and -1 on error*/
int playerc_client_read_nonblock_withproxy(playerc_client_t *client, void **
proxy);
/** @brief Set the timeout for client requests.
@@ -908,10 +908,10 @@
/** Device info; must be at the start of all device structures. */
playerc_device_t info;
- /// The number of valid analog inputs.
+ /* The number of valid analog inputs.*/
uint8_t voltages_count;
- /// A bitfield of the current digital inputs.
+ /* A bitfield of the current digital inputs.*/
float *voltages;
} playerc_aio_t;
@@ -1035,7 +1035,7 @@
/** @brief Set the speed of a joint (-1 for all joints) for all subsequent
movement commands. */
int playerc_actarray_speed_config(playerc_actarray_t *device, int joint, float
speed);
-// Set the accelration of a joint (-1 for all joints) for all subsequent
movement commands
+/* Set the accelration of a joint (-1 for all joints) for all subsequent
movement commands*/
int playerc_actarray_accel_config(playerc_actarray_t *device, int joint, float
accel);
@@ -1440,10 +1440,10 @@
/** Device info; must be at the start of all device structures. */
playerc_device_t info;
- /// The number of valid digital inputs.
+ /*/ The number of valid digital inputs.*/
uint8_t count;
- /// A bitfield of the current digital inputs.
+ /*/ A bitfield of the current digital inputs.*/
uint32_t digin;
} playerc_dio_t;
@@ -1844,10 +1844,10 @@
/** Device info; must be at the start of all device structures. */
playerc_device_t info;
- // data
+ /* data*/
player_ir_data_t data;
- // config
+ /* config*/
player_ir_pose_t poses;
} playerc_ir_t;
@@ -1878,7 +1878,47 @@
/***************************************************************************/
+/***************************************************************************/
+/** @ingroup playerc_proxies
+ * @defgroup playerc_proxy_joystick joystick
+The joystick proxy can be used to get images from a joystick.
+
+...@{
+*/
+
+/** @brief joystick proxy data. */
+typedef struct
+{
+ /** Device info; must be at the start of all device structures. */
+ playerc_device_t info;
+ int32_t axes_count;
+ int32_t pos[8];
+ uint32_t buttons;
+ int * axes_max;
+ int * axes_min;
+ double * scale_pos;
+
+
+} playerc_joystick_t;
+
+
+/** @brief Create a joystick proxy. */
+playerc_joystick_t *playerc_joystick_create(playerc_client_t *client, int
index);
+
+/** @brief Destroy a joystick proxy. */
+void playerc_joystick_destroy(playerc_joystick_t *device);
+
+/** @brief Subscribe to the joystick device. */
+int playerc_joystick_subscribe(playerc_joystick_t *device, int access);
+
+/** @brief Un-subscribe from the joystick device. */
+int playerc_joystick_unsubscribe(playerc_joystick_t *device);
+
+/** @} */
+/**************************************************************************/
+
+
/***************************************************************************/
/** @ingroup playerc_proxies
* @defgroup playerc_proxy_laser laser
@@ -3299,8 +3339,8 @@
playerc_device_t info;
char *rawText;
- // Just estimating that no more than 20 words will be spoken between updates.
- // Assuming that the longest word is <= 30 characters.
+ /* Just estimating that no more than 20 words will be spoken between updates.
+ Assuming that the longest word is <= 30 characters.*/
char **words;
int wordCount;
} playerc_speechrecognition_t;
Modified: code/player/trunk/client_libs/libplayerc++/CMakeLists.txt
===================================================================
--- code/player/trunk/client_libs/libplayerc++/CMakeLists.txt 2009-01-11
18:43:03 UTC (rev 7265)
+++ code/player/trunk/client_libs/libplayerc++/CMakeLists.txt 2009-01-11
18:48:00 UTC (rev 7266)
@@ -173,6 +173,7 @@
healthproxy.cc
imuproxy.cc
irproxy.cc
+ joystickproxy.cc
laserproxy.cc
limbproxy.cc
localizeproxy.cc
Added: code/player/trunk/client_libs/libplayerc++/joystickproxy.cc
===================================================================
--- code/player/trunk/client_libs/libplayerc++/joystickproxy.cc
(rev 0)
+++ code/player/trunk/client_libs/libplayerc++/joystickproxy.cc 2009-01-11
18:48:00 UTC (rev 7266)
@@ -0,0 +1,94 @@
+ /*
+ * Player - One Hell of a Robot Server
+ * Copyright (C) 2000-2003
+ * Brian Gerkey, Kasper Stoy, Richard Vaughan, & Andrew Howard
+ *
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+ /********************************************************************
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ ********************************************************************/
+
+ /*
+ * $Id: linuxjoystickproxy.cc 4227 2007-10-24 22:32:04Z thjc $
+ */
+
+ #include "playerc++.h"
+
+ using namespace PlayerCc;
+
+ LinuxjoystickProxy::LinuxjoystickProxy(PlayerClient *aPc, uint32_t aIndex)
+ : ClientProxy(aPc, aIndex),
+ mDevice(NULL)
+ {
+ Subscribe(aIndex);
+ // how can I get this into the clientproxy.cc?
+ // right now, we're dependent on knowing its device type
+ mInfo = &(mDevice->info);
+ }
+
+ LinuxjoystickProxy::~LinuxjoystickProxy()
+ {
+ Unsubscribe();
+ }
+
+ void
+ LinuxjoystickProxy::Subscribe(uint32_t aIndex)
+ {
+ scoped_lock_t lock(mPc->mMutex);
+ mDevice = playerc_joystick_create(mClient, aIndex);
+ if (NULL==mDevice)
+ throw PlayerError("LinuxjoystickProxy::LinuxjoystickProxy()", "could not
create");
+
+ if (0 != playerc_joystick_subscribe(mDevice, PLAYER_OPEN_MODE))
+ throw PlayerError("LinuxjoystickProxy::LinuxjoystickProxy()", "could not
subscribe");
+ }
+
+ void
+ LinuxjoystickProxy::Unsubscribe()
+ {
+ assert(NULL!=mDevice);
+ scoped_lock_t lock(mPc->mMutex);
+ playerc_joystick_unsubscribe(mDevice);
+ playerc_joystick_destroy(mDevice);
+ mDevice = NULL;
+ }
+
+ std::ostream&
+ std::operator << (std::ostream &os, const PlayerCc::LinuxjoystickProxy &c)
+ {
+ os << "#Linuxjoystick (" << c.GetInterface() << ":" << c.GetIndex() << ")"
<< std::endl;
+ for (unsigned int i = 0; i < c.GetAxesCount(); ++i)
+ os << i << ": " << c[i] << std::endl;
+ return os;
+ }
+
+
Modified: code/player/trunk/client_libs/libplayerc++/playerc++.h
===================================================================
--- code/player/trunk/client_libs/libplayerc++/playerc++.h 2009-01-11
18:43:03 UTC (rev 7265)
+++ code/player/trunk/client_libs/libplayerc++/playerc++.h 2009-01-11
18:48:00 UTC (rev 7266)
@@ -1230,7 +1230,56 @@
};
+/**
+The @p LinuxjoystickProxy class is used to control a @ref interface_joystick
+device. The most recent joystick range measuremts can be read from the
+range attribute, or using the the [] operator.
+*/
+class LinuxjoystickProxy : public ClientProxy
+{
+ private:
+ void Subscribe(uint32_t aIndex);
+ void Unsubscribe();
+
+ // libplayerc data structure
+ playerc_joystick_t *mDevice;
+
+ public:
+ /// constructor
+ LinuxjoystickProxy(PlayerClient *aPc, uint32_t aIndex=0);
+ /// destructor
+ ~LinuxjoystickProxy();
+
+ /// return the sensor count
+ uint32_t GetButtons() const { return GetVar(mDevice->buttons); };
+
+ /// return a particular scan value
+ double GetAxes(uint32_t aIndex) const
+ { if (GetVar(mDevice->axes_count) <= (int32_t)aIndex) return -1.0;
return GetVar(mDevice->pos[aIndex]); };
+ /// This operator provides an alternate way of access the scan data.
+ /// For example, LinuxjoystickProxy[0] == LinuxjoystickProxy.GetRange(0)
+ double operator [] (uint32_t aIndex) const { return GetAxes(aIndex); }
+
+ /// Number of valid joystick poses
+ uint32_t GetAxesCount() const { return GetVar(mDevice->axes_count); };
+
+ /// Linuxjoystick poses (m,m,radians)
+// player_pose3d_t GetPose(uint32_t aIndex) const
+// { return GetVar(mDevice->poses[aIndex]); };
+
+ // Enable/disable the joysticks.
+ // Set @p state to 1 to enable, 0 to disable.
+ // Note that when joysticks are disabled the client will still receive
joystick
+ // data, but the ranges will always be the last value read from the
joysticks
+ // before they were disabled.
+ //void SetEnable(bool aEnable);
+
+ /// Request the joystick geometry.
+// void RequestGeom();
+};
+
+
/**
The @p LocalizeProxy class is used to control a @ref
interface_localize device, which can provide multiple pose
@@ -2563,6 +2612,7 @@
std::ostream& operator << (std::ostream& os, const PlayerCc::IrProxy& c);
std::ostream& operator << (std::ostream& os, const PlayerCc::LaserProxy& c);
std::ostream& operator << (std::ostream& os, const PlayerCc::LimbProxy& c);
+ std::ostream& operator << (std::ostream& os, const
PlayerCc::LinuxjoystickProxy& c);
std::ostream& operator << (std::ostream& os, const PlayerCc::LocalizeProxy&
c);
std::ostream& operator << (std::ostream& os, const PlayerCc::LogProxy& c);
std::ostream& operator << (std::ostream& os, const PlayerCc::MapProxy& c);
Modified: code/player/trunk/libplayercore/interfaces/049_joystick.def
===================================================================
--- code/player/trunk/libplayercore/interfaces/049_joystick.def 2009-01-11
18:43:03 UTC (rev 7265)
+++ code/player/trunk/libplayercore/interfaces/049_joystick.def 2009-01-11
18:48:00 UTC (rev 7266)
@@ -13,14 +13,17 @@
/** @brief Data: state (@ref PLAYER_JOYSTICK_DATA_STATE)
The joystick data packet, which contains the current state of the
-joystick */
-typedef struct player_joystick_data
-{
+ joystick */
+ typedef struct player_joystick_data
+ {
/** Current joystick position X, Y and Yaw (unscaled) */
- int32_t pos[3];
- /** Scaling factors for X, Y and Yaw */
- int32_t scale[3];
- /** Button states (bitmask) */
- uint32_t buttons;
-} player_joystick_data_t;
+ int32_t pos[8];
+ /** Scaling factors for X, Y and Yaw --- not using these yet*/
+ int32_t scale[8];
+ /** Button states (bitmask) */
+ uint32_t buttons;
+ /** Nunber of axes */
+ uint32_t axes_count;
+ } player_joystick_data_t;
+
Modified: code/player/trunk/server/drivers/joystick/linuxjoy.cc
===================================================================
--- code/player/trunk/server/drivers/joystick/linuxjoy.cc 2009-01-11
18:43:03 UTC (rev 7265)
+++ code/player/trunk/server/drivers/joystick/linuxjoy.cc 2009-01-11
18:48:00 UTC (rev 7266)
@@ -229,6 +229,7 @@
#define XAXIS 1
#define YAXIS 2
#define YAWAXIS 0
+#define SLIDER 3
#define MAX_XSPEED 0.5
#define MAX_YSPEED 0.5
@@ -276,11 +277,12 @@
private: player_devaddr_t joystick_addr;
private: const char *dev;
private: int fd;
- private: int16_t pos[3];
- private: uint16_t buttons;
- private: int axes_max[3];
- private: int axes_min[3];
- private: double scale_pos[3];
+ private: int axes_count;
+ private: int32_t pos[4];
+ private: uint32_t buttons;
+ private: int axes_max[4];
+ private: int axes_min[4];
+ private: double scale_pos[4];
private: double timeout;
private: struct timeval lastread;
@@ -289,8 +291,8 @@
private: player_position2d_data_t pos_data;
// These are used when we send commands to a position device
- private: double max_speed[3];
- private: int axes[3];
+ private: double max_speed[4];
+ private: int axes[4];
private: int deadman_button;
private: player_devaddr_t cmd_position_addr;
private: Device * position;
@@ -360,9 +362,14 @@
}
this->dev = cf->ReadString(section, "port", "/dev/js0");
+// partially implementing axes_count
+ this->axes_count=4;
this->axes[0] = cf->ReadTupleInt(section,"axes", 0, XAXIS);
this->axes[1] = cf->ReadTupleInt(section,"axes", 1, YAXIS);
this->axes[2] = cf->ReadTupleInt(section,"axes", 2, YAWAXIS);
+ this->axes[3] = cf->ReadTupleInt(section,"axes", 3, SLIDER);
+
+
this->deadman_button = cf->ReadInt(section,"deadman", -1);
this->axes_max[0] = cf->ReadTupleInt(section, "axes_maxima", 0, XAXIS_MAX);
this->axes_max[1] = cf->ReadTupleInt(section, "axes_maxima", 1, YAXIS_MAX);
@@ -445,7 +452,7 @@
}
}
- this->pos[0] = this->pos[1] = this->pos[2] = 0;
+ this->pos[0] = this->pos[1] = this->pos[2] = this->pos[3] = 0;
return 0;
}
@@ -571,6 +578,7 @@
fd.events = POLLIN | POLLHUP;
fd.revents = 0;
+
count = poll(&fd, 1, 10);
if (count < 0)
PLAYER_ERROR1("poll returned error [%s]", strerror(errno));
@@ -590,10 +598,12 @@
// Update buttons
if ((event.type & ~JS_EVENT_INIT) == JS_EVENT_BUTTON)
{
+
if (event.value)
this->buttons |= (1 << event.number);
else
this->buttons &= ~(1 << event.number);
+
}
// ignore the startup events
@@ -625,6 +635,13 @@
this->pos[2] = 0;
GlobalTime->GetTime(&this->lastread);
}
+ else if(event.number == this->axes[3])
+ {
+ this->pos[3] = event.value;
+ if(abs(this->pos[3]) < this->axes_min[3])
+ this->pos[3] = 0;
+ GlobalTime->GetTime(&this->lastread);
+ }
}
break;
}
@@ -638,16 +655,22 @@
// Send new data out
void LinuxJoystick::RefreshData()
{
+ int i;
if(this->joystick_addr.interf)
{
memset(&(this->joy_data),0,sizeof(player_joystick_data_t));
- this->joy_data.pos[0] = this->pos[0];
- this->joy_data.pos[1] = this->pos[1];
- this->joy_data.pos[2] = this->pos[2];
+
+ this->joy_data.buttons = this->buttons;
+ this->joy_data.axes_count = this->axes_count;
+ for (i = 0; i < joy_data.axes_count ; i++)
+ this->joy_data.pos[i] = this->pos[i];
+
+
this->joy_data.scale[0] = this->axes_max[0];
this->joy_data.scale[1] = this->axes_max[1];
this->joy_data.scale[2] = this->axes_max[2];
- this->joy_data.buttons = this->buttons;
+ this->joy_data.scale[3] = this->axes_max[3];
+
this->Publish(this->joystick_addr,
PLAYER_MSGTYPE_DATA, PLAYER_JOYSTICK_DATA_STATE,
(void*)&this->joy_data, sizeof(this->joy_data), NULL);
This was sent by the SourceForge.net collaborative development platform, the
world's largest Open Source development site.
------------------------------------------------------------------------------
Check out the new SourceForge.net Marketplace.
It is the best place to buy or sell services for
just about anything Open Source.
http://p.sf.net/sfu/Xq1LFB
_______________________________________________
Playerstage-commit mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/playerstage-commit