Beispiel #1
0
/* -------------------------------------------------------------------------- */
static void usbhid_print(t_usbhid *x)
{
	if(x->debug_level) post("usbhid_print");
	t_int i;
	char string_buffer[STRING_BUFFER_LENGTH];
/* 	t_atom event_data[3]; */

	for ( i = 0 ; ( hid_id[i] != NULL ) ; i++ )
	{
		if( hid_id[i] != NULL )
			post("hid_id[%d]: %s",i,hid_id[i]);
	}
	if(get_device_string(x->x_hidinterface,string_buffer))
		post("%s is currently open",string_buffer);

	x->x_hid_return = hid_dump_tree(stdout, x->x_hidinterface);
	if (x->x_hid_return != HID_RET_SUCCESS) {
		fprintf(stderr, "hid_dump_tree failed with return code %d\n", x->x_hid_return);
		return;
	}
	
/* 	SETSYMBOL(event_data, gensym(type));	   /\* type *\/ */
/* 	SETSYMBOL(event_data + 1, gensym(code));	/\* code *\/ */
/* 	SETSYMBOL(event_data + 2, value);	         /\* value *\/ */
//	outlet_list(x->x_status_outlet, &s_list,
}
Beispiel #2
0
/* -------------------------------------------------------------------------- */
static void usbhid_close(t_usbhid *x) 
{
	if(x->debug_level) post("usbhid_close");
	t_int ret;
	char string_buffer[STRING_BUFFER_LENGTH];

	if ( hid_is_opened(x->x_hidinterface) ) 
	{
		ret = get_device_string(x->x_hidinterface,string_buffer);
		x->x_hid_return = hid_close(x->x_hidinterface);
		if (x->x_hid_return == HID_RET_SUCCESS) 
		{
			if (ret) 
				post("[usbhid]: closed %s",string_buffer);
			else
				post("[usbhid]: closed device");
			reset_output(x);
			add_float_to_output(x,0);
			outlet_anything(x->x_status_outlet, gensym("open"), 
							x->output_count, x->output);
		}
		else
		{
			error("[usbhid] could not close %d, error #%d",x->x_device_number,x->x_hid_return);
		}
	}
}
Beispiel #3
0
/* -------------------------------------------------------------------------- */
static void usbhid_open(t_usbhid *x, t_symbol *vendor_id_hex, t_symbol *product_id_hex)
{
	if(x->debug_level) post("usbhid_open");
	char string_buffer[STRING_BUFFER_LENGTH];

	if( init_libhid(x) != HID_RET_SUCCESS ) return;

/* convert hex symbols to ints */
	x->vendor_id = (unsigned short) strtol(vendor_id_hex->s_name, NULL, 16);
	x->product_id = (unsigned short) strtol(product_id_hex->s_name, NULL, 16);
 	if( hid_is_opened(x->x_hidinterface) ) 
	{
		if( (x->vendor_id == x->x_hidinterface->device->descriptor.idVendor) &&
			(x->product_id == x->x_hidinterface->device->descriptor.idProduct))
		{
			post("[usbhid] device already opened");
			return;
		}
		else
		{
			usbhid_close(x);
		}
	}

 	if( !hid_is_opened(x->x_hidinterface) ) 
	{
		HIDInterfaceMatcher matcher = { x->vendor_id, 
										x->product_id, 
										NULL, 
										NULL, 
										0 };
		x->x_hid_return = hid_force_open(x->x_hidinterface, 0, &matcher, 3);
		if (x->x_hid_return == HID_RET_SUCCESS) 
		{
			if (get_device_string(x->x_hidinterface,string_buffer))
				post("[usbhid]: opened %s",string_buffer);
			reset_output(x);
			add_float_to_output(x,1);
			outlet_anything(x->x_status_outlet, gensym("open"), 
							x->output_count, x->output);
		}
		else
		{
			error("[usbhid] hid_force_open failed with return code %d\n", 
				  x->x_hid_return);
		}
	}
}
Beispiel #4
0
int HID_API_EXPORT_CALL hid_get_serial_number_string(hid_device *dev, wchar_t *string, size_t maxlen)
{
	return get_device_string(dev, "serial", string, maxlen);
}
Beispiel #5
0
int HID_API_EXPORT_CALL hid_get_product_string(hid_device *dev, wchar_t *string, size_t maxlen)
{
	return get_device_string(dev, "product", string, maxlen);
}
Beispiel #6
0
int HID_API_EXPORT_CALL hid_get_manufacturer_string(hid_device *dev, wchar_t *string, size_t maxlen)
{
	return get_device_string(dev, "manufacturer", string, maxlen);
}
Beispiel #7
0
int HID_API_EXPORT_CALL hid_get_serial_number_string(hid_device *dev, wchar_t *string, size_t maxlen)
{
	return get_device_string(dev, DEVICE_STRING_SERIAL, string, maxlen);
}
Beispiel #8
0
int HID_API_EXPORT_CALL hid_get_product_string(hid_device *dev, wchar_t *string, size_t maxlen)
{
	return get_device_string(dev, DEVICE_STRING_PRODUCT, string, maxlen);
}
Beispiel #9
0
int HID_API_EXPORT_CALL hid_get_manufacturer_string(hid_device *dev, wchar_t *string, size_t maxlen)
{
	return get_device_string(dev, DEVICE_STRING_MANUFACTURER, string, maxlen);
}