Improvement: More efficient SPI transfers
Currently, SPI transfers use the CP2130::spiRead(), CP2130::spiWrite() and CP2130::spiWriteRead() overloaded functions where no endpoints are specified. However, these functions will have to determine which endpoints to use each time they are called, which in turn requires additional control transfers per call, and that costs execution time.
In order to avoid multiple calls to CP2130::getEndpointInAddr() and CP2130::getEndpointOutAddr() per session, the endpoint addresses should be obtained only once, when the device is first accessed. The addresses are then kept and reused.
P.S.: This will be especially beneficial if the 4096B limit gets removed, because such will require multiple transfers of the same type in one go, instead of just a single transfer, in order to avoid timeout (operations cannot take longer than 500ms). Note that the use of CP2130::spiWriteRead() is not limited by such, because the algorithm already does multiple small transfers what are well within the timeout limits.