mirror of https://github.com/nirenjan/libx52.git
				
				
				
			
		
			
				
	
	
		
			36 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Markdown
		
	
	
			
		
		
	
	
			36 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Markdown
		
	
	
LibUSB X52 stub library
 | 
						|
=======================
 | 
						|
 | 
						|
The libusbx52 stub library is a convenience library to help test the libusb
 | 
						|
functions used by libx52 and associated code. It simulates the behavior of the
 | 
						|
libusb functions used by the libx52 library, but doesn't actually control any
 | 
						|
real hardware, and simply updates a few in-memory data structures.
 | 
						|
 | 
						|
The idea behind `libusbx52.so` is to use it as an LD_PRELOAD library, where it
 | 
						|
will override the real functions used by `libx52.so`. The use case for this
 | 
						|
scenario is in an automated testing environment, where a test runner could set
 | 
						|
up the list of devices manually and simulate various scenarios.
 | 
						|
 | 
						|
# Design Overview
 | 
						|
 | 
						|
Unfortunately, the automake infrastructure does not support the use of
 | 
						|
LD_PRELOAD because it is deemed "non-portable" in the automake sense. As a
 | 
						|
result, this is now up to a test runner application to implement a method to
 | 
						|
control the data passed between two processes.
 | 
						|
 | 
						|
# Data Structures
 | 
						|
 | 
						|
The server process is responsible for setting up the initial set of USB devices.
 | 
						|
As far as libx52 is concerned, the only fields that it uses in the USB
 | 
						|
descriptor are the idVendor and idProduct fields. These are written to a file
 | 
						|
that is read by the libusbx52 stubs to populate the device list.
 | 
						|
 | 
						|
Once the file has been written by the server, the libusb_init stub function in
 | 
						|
the client can read the file and populate the internal data structures as
 | 
						|
necessary.
 | 
						|
 | 
						|
The client can also write to a separate file to record the USB communication
 | 
						|
sent across to the simulated device.
 | 
						|
 | 
						|
 |