HIDresponder

/**

2006  Till Bovermann, Alberto deCampo (IEM)

*/



Register a function to be called upon receiving a specific command from a specific HID location ID.


(

// plug in a HID device and start HIDDeviceService

q = q ? ();

HIDDeviceService.buildDeviceList;


// get first responding device

q.device = HIDDeviceService.devices.first

)


// HIDresponder seperates HIDs by their locID (which is a unique id of the USB port...)

q.device.locID;


/* load HID and run eventloop; Do _not_ unplug your HID device now until calling

HIDresponder.releaseAll

*/

HIDresponder.load;


HIDresponder.locDict.inspect


h = HIDresponder(q.device.locID, 4, { |val, spec, resp| [val, spec, resp].postcs }, [0, 100].asSpec);

h.add

h.remove


HIDresponder.respond(q.device.locID, 4, 1)


// use Specs

i = HIDresponder(q.device.locID, 4, { |val, spec| spec.unmap(val).postcs }, [1, 0].asSpec).add;


k = HIDresponder(q.device.locID, 17, { |val, spec| postf("upDown: %\n", spec.unmap(val)) }, [0, 255].asSpec).add;

k.add

// oneShot

j = HIDresponder(q.device.locID, 4, { |val, spec| postf("Boooom: %\n", spec.unmap(val)) }, [1, 0].asSpec).add.removeWhenDone;




HIDresponder.releaseAll



//////////////////////////////////////////


h = HIDresponder(123, 4, { |val, spec, resp| [val, spec, resp].postcs }, [0, 100].asSpec);

i = HIDresponder(123, 4);

h == i


h.value(1);




h = HIDresponder(123, 4, { |val, spec, resp| [val, spec, resp].postcs }, [0, 100].asSpec);

h.add



HIDresponder.respond(123, 5, 100);

HIDresponder.respond(123, 4, 100);


HIDresponder.locDict.inspect


///////////////////////////////////////

)