mirror of
https://github.com/erjiang/usbscale.git
synced 2025-06-29 09:30:59 -06:00
Updated Makefile for usbscale.c
This commit is contained in:
parent
ec693d0d6b
commit
cc1d6950b3
6
Makefile
6
Makefile
@ -2,5 +2,11 @@ LD=-lusb-1.0
|
||||
CC=gcc
|
||||
CFLAGS=-Os
|
||||
|
||||
usbscale: usbscale.c scales.h
|
||||
$(CC) usbscale.c -o usbscale $(CFLAGS) $(LD)
|
||||
|
||||
lsscale: lsscale.c scales.h
|
||||
$(CC) lsscale.c -o lsscale $(CFLAGS) $(LD)
|
||||
|
||||
lsusb: lsusb.c
|
||||
$(CC) lsusb.c -o lsusb $(CFLAGS) $(LD)
|
||||
|
13
scales.h
Normal file
13
scales.h
Normal file
@ -0,0 +1,13 @@
|
||||
/*
|
||||
* This file is a list of all currently-recognized scales,
|
||||
* by their vendor and product IDs.
|
||||
*
|
||||
* For example, the USB product 1446:6173 becomes {0x1446, 0x6173}
|
||||
*/
|
||||
|
||||
// array length
|
||||
int scalesc = 1;
|
||||
|
||||
uint16_t scales[][] = {
|
||||
{0x1446, 0x6173} // Stamps.com USB scale
|
||||
}
|
74
usbscale.c
Normal file
74
usbscale.c
Normal file
@ -0,0 +1,74 @@
|
||||
#include <stdio.h>
|
||||
#include <sys/types.h>
|
||||
|
||||
#include <libusb-1.0/libusb.h>
|
||||
#include "scales.h"
|
||||
|
||||
#define DEBUG 1
|
||||
|
||||
static void print_devs(libusb_device **devs)
|
||||
{
|
||||
|
||||
if(DEBUG)
|
||||
libusb_set_debug(null, 3);
|
||||
|
||||
libusb_device *dev;
|
||||
int i = 0;
|
||||
|
||||
while ((dev = devs[i++]) != NULL) {
|
||||
struct libusb_device_descriptor desc;
|
||||
int r = libusb_get_device_descriptor(dev, &desc);
|
||||
if (r < 0) {
|
||||
fprintf(stderr, "failed to get device descriptor");
|
||||
return;
|
||||
}
|
||||
int i;
|
||||
for (i = 0; i < scalesc; i++) {
|
||||
if(desc.idVendor == scales[i][0] &&
|
||||
desc.idProduct == scales[i][1]) {
|
||||
if(DEBUG) {
|
||||
printf("Found scale %04x:%04x (bus %d, device %d)\n",
|
||||
desc.idVendor, desc.idProduct,
|
||||
libusb_get_bus_number(dev), libusb_get_device_address(dev));
|
||||
|
||||
printf("It has descriptors:\n\tmanufc: %d\n\tprodct: %d\n\tserial: %d\n",
|
||||
desc.iManufacturer,
|
||||
desc.iProduct,
|
||||
desc.iSerialNumber);
|
||||
}
|
||||
unsigned char string[256];
|
||||
|
||||
libusb_device_handle* hand;
|
||||
|
||||
libusb_open(dev, &hand);
|
||||
|
||||
r = libusb_get_string_descriptor_ascii(hand, desc.iManufacturer,
|
||||
string, 256);
|
||||
printf("Manufacturer: %s\n", string);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int main(void)
|
||||
{
|
||||
libusb_device **devs;
|
||||
int r;
|
||||
ssize_t cnt;
|
||||
|
||||
r = libusb_init(NULL);
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
cnt = libusb_get_device_list(NULL, &devs);
|
||||
if (cnt < 0)
|
||||
return (int) cnt;
|
||||
|
||||
print_devs(devs);
|
||||
libusb_free_device_list(devs, 1);
|
||||
|
||||
libusb_exit(NULL);
|
||||
return 0;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user