5.1 Design
The API is implemented as a C language library (hereafter referred to as the "API" or "library"). The main purpose of this API is to provide a generalized procedure-call interface between any hardware-specific drivers on the mobile device and the applications running on that mobile device. Wherever possible, the library is recommended to be a dynamic load library (e.g., Google Android™ supports "shared object" [.so] files) but on some platforms a static library is required (e.g., Apple iOS™ only supports "static linking" [.a] files).
Each vendor implementation must have built-in interface) with the underlying physical layers (hardware) supported by the particular vendor. Information about the vendor libraries present as well as the protocols and devices supported by each implementation can be retrieved through INI files.
The end-user (or sometimes the application program) will choose the adapter to be used. Then the application will load that library through the use of either statically linked function calls or dynamically loading using the platform specific load calls.