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.
|
|
|
|
|