Skip to content
This repository was archived by the owner on Jul 10, 2024. It is now read-only.
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions examples/unix/test.c
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ int main(int argc, char **argv)
fd_set rdset;
union spndev_event ev;
const char *s;
int led=0;

signal(SIGINT, sighandler);

Expand Down Expand Up @@ -58,6 +59,12 @@ int main(int argc, char **argv)
printf("button %d ", ev.bn.num);
}
puts(ev.bn.press ? "pressed" : "released");

if (ev.bn.press) {
spndev_set_led(dev, led);
led = !led;
}

break;

default:
Expand Down
9 changes: 5 additions & 4 deletions src/dev.h
Original file line number Diff line number Diff line change
Expand Up @@ -21,20 +21,21 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "spnavdev.h"

struct axisprop {
char *name;
const char *name;
int minval, maxval, deadz;
};

struct spndev {
char *name, *path;
int usb_vendor, usb_product;
unsigned short usb_vendor, usb_product;
unsigned internal_id;

int fd; /* UNIX file descriptor */
void *handle; /* Win32 handle */

int num_axes, num_buttons;
struct axisprop *aprop;
char **bn_name;
const char **bn_name;
int led;

void *uptr, *drvdata;
Expand All @@ -47,7 +48,7 @@ struct spndev {
};


int spndev_usb_open(struct spndev *dev, const char *devstr, int vend, int prod);
int spndev_usb_open(struct spndev *dev, const char *devstr, unsigned short vend, unsigned short prod);
int spndev_ser_open(struct spndev *dev, const char *devstr);


Expand Down
10 changes: 5 additions & 5 deletions src/spnavdev.c
Original file line number Diff line number Diff line change
Expand Up @@ -23,14 +23,14 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
struct spndev *spndev_open(const char *devstr)
{
struct spndev *dev;
unsigned int vendor = 0xffffffff, product = 0xffffffff;
unsigned short vendor = 0xffff, product = 0xffff;

if(!(dev = malloc(sizeof *dev))) {
perror("spndev_open: failed to allocate device structure");
return 0;
}

if(!devstr || sscanf(devstr, "%x:%x", &vendor, &product) == 2) {
if(!devstr || sscanf(devstr, "%hx:%hx", &vendor, &product) == 2) {
if(spndev_usb_open(dev, devstr, vendor, product) == -1) {
free(dev);
return 0;
Expand Down Expand Up @@ -92,23 +92,23 @@ const char *spndev_axis_name(struct spndev *dev, int axis)
if(axis < 0 || axis >= dev->num_axes) {
return 0;
}
return dev->axis_name[axis];
return dev->aprop[axis].name;
}

int spndev_axis_min(struct spndev *dev, int axis)
{
if(axis < 0 || axis >= dev->num_axes) {
return 0;
}
return dev->minval[axis];
return dev->aprop[axis].minval;
}

int spndev_axis_max(struct spndev *dev, int axis)
{
if(axis < 0 || axis >= dev->num_axes) {
return 0;
}
return dev->maxval[axis];
return dev->aprop[axis].maxval;
}

int spndev_num_buttons(struct spndev *dev)
Expand Down
Loading